저자: Vojtěch Strnad
번역자 주: 이 기사는 비트코인 프로토콜 자체의 복잡성과 유연성을 보여주는 특별히 제작된 이상한 거래에 대해 설명합니다.
Twitter나 Stacker News에 시간을 보내신다면 메인넷에 나타난 이상한 비트코인 거래에 대해 사람들이 논의하는 것을 보셨을 것입니다.
https://mempool.space/tx/b10c0000004da5a9d1d9b4ae32e09f0b3e62d21a5cce5428d4ad714fb444eb5d
그것은 많은 관심을 끌었고 사람들은 이 이상한 거래를 만든 사람이 누구인지 알고 싶어했습니다. 어떤 비밀이 숨겨져 있나요?
이 두 가지 질문에 대한 답을 공개하겠습니다.
정보:
Transaction b10c0000004da5a9d1d9b4ae32e09f0b3e62d21a5cce5428d4ad714fb444eb5d was created by Vojtěch Strnad.
주소:
1J7SZJry7CX4zWdH3P8E8UJjZrhcLEjJ39
징후:
H6WHgwnYtggJH5yqVpeL9NRxWJ+8hqUW31Mc1J9e9Q3cZGEdDjixYT6jnPpIHM2FVHDbeEstP8KzDsj5U01BNSo=
이 서명을 직접 확인하려면(강력히 권장함) 호텔 Wi-Fi에서 Bitcoin Core 또는 Electrum을 사용하지 마십시오.
이 문제가 해결된 후 이번 거래의 모든 이스터 에그를 공개하겠습니다. 내가 아는 한, 이 중 마지막 두 가지는 이 글을 쓰는 시점에서 누구도 알아차리지 못했습니다.
- 해당 거래는 850000 블록에서 처음 확인되었습니다.
- 이 거래의 잠금 시간은 비트코인 생성 블록의 타임스탬프입니다. (번역자 주: locktime은 트랜잭션 수준에서 절대 시간 잠금을 구현하는 방법입니다. 여기서는 제네시스 블록이 나타난 후에만 트랜잭션을 확인할 수 있다는 의미입니다.)
- 이 거래에는 화려한 TXID와 WTXID가 있습니다. TXID의 시작은
b10c0000004da5...
이며, 이는 비트코인 개발자 0xB10C의 개인 홈페이지입니다. 그는 한때 유사한 TXID로 거래를 한 적이 있습니다( https://b10c.me/7 참조). WTXID의 시작은0000000001d54...
이며, 이는 블록 해시 값과 마찬가지로 일련의 0입니다. - 이 트랜잭션은 P2PK, P2PKH, P2MS(네이키드 다중 서명), P2SH, P2WPKH, P2WSH, P2TR, OP_RETURN 및 2바이트 SegWit v1 출력("임시 앵커"에서 빌린 스크립트 사용) 등 가능한 모든 표준 입력 및 출력 유형을 사용합니다. 규약). 일부 유형은 입력에서 여러 번 사용됩니다. P2SH는 기존 P2SH, 캡슐화된 P2WPKH 및 캡슐화된 P2WSH로 나뉘며, P2TR은 키 경로 비용과 스크립트 경로 비용의 두 가지 경우로 나뉩니다. (역자 주: 비트코인 네트워크에서 노드는 기본적으로 특정 특성을 가진 트랜잭션을 전파하며 "표준 입력/출력"이 그러한 특성 중 하나입니다. 입력/출력 유형은 이를 잠그는 데 사용되는 자금 유형을 나타냅니다. "템플릿 " 스크립트의; 서로 다른 자금 자체가 서로 독립적이기 때문에 서로 다른 템플릿을 사용하는 스크립트에 약간 다른 검증 규칙을 적용할 수 있습니다. 이것이 비트코인 소프트 포크 업그레이드의 소위 "캡슐화" 가능성의 근원입니다. "P2WPKH/ P2WSH"는 아직 Segregated Witness 기능을 지원하지 않는 이전 지갑이 Segregated Witness 중에 Segregated Witness 스크립트로 자금을 보낼 수 있도록 하기 위해 Segregated Witness 스크립트가 P2SH 스크립트처럼 작동하도록 특별히 설계된 유형입니다.
- 입력에는 다중 다중 서명 스크립트와 Lightning 채널 관련 스크립트가 있습니다. 기본 다중 서명 입력은 2/3 다중 서명 장치를 사용하고 기존 P2SH는 3/5 다중 서명이며 캡슐화된 P2WSH는 취소된 라이트닝 채널 HTLC이고, P2WSH는 비정상적으로 짧은 CSV 지연(42블록)을 갖는 역 라이트닝 채널 강제 폐쇄(종종 "페널티 트랜잭션"이라고 함)이며, P2TR 스크립트 경로는 5/7 멀티를 사용합니다. -signature (소수 패턴을 계속 유지하고 "5/7" 밈을 참조하기 위해). (번역자 주: CSV는 스크립트 수준의 상대 시간 잠금입니다.)
- 입력된 금액에는 특별한 의미가 있습니다. 6102는 미국 행정명령 6102(역자 주: 금에 대한 개인 저축 금지)를 의미하며, 1913년은 연방준비은행(Fed)이 설립된 시기, 1971년은 미국이 제도를 폐지한 시기입니다. 금 본위제, 2010은 비트 마지막으로 반감 것으로 예상되는 시간(블록 보조금이 0으로 떨어질 때), 5139는 CVE-2010-5139(비트코인 가치 오버플로 취약점)을 의미하고, 3220은 CVE-2013-3220(2013년 포크 사고), 17144는 CVE-2018-17144(미사용 인플레이션 취약성)을 의미하고, 8149는 Segregated Witness를 구현하기 위한 비트코인의 PR 번호를 의미하며, 9001은 "9000개 이상의 이모티콘!"을 의미합니다. 패키지, 19953은 Bitcoin Core의 Taproot 구현에 대한 PR 번호를 나타냅니다.
- 출력량은 각 출력 유형에 대한 더스트 임계값을 보여줍니다. 압축된 공개 키를 사용한 P2PK 출력은 576 사토시, P2PKH는 546 사토시, 압축된 공개 키를 사용한 1-of-1 베어 다중 서명 출력은 582 사토시, P2SH는 582입니다. satoshis 540 Satoshi, 20바이트 SegWit 출력(P2WPKH)은 294 Satoshi, 32바이트 SegWit 출력(P2WSH 및 P2TR)은 330 Satoshi, 2바이트 SegWit 출력은 240 Satoshi, OP_RETURN은 0 Satoshi입니다.
- 입력된 시퀀스 번호에는 특별한 의미가 있습니다. 20090103은 제네시스 블록이 생성된 날짜를 나타내고, 20081031은 백서 발행 시간을 나타내며, 19750504는 사토시 나카모토 공개한 생년월일을 나타내며, 16은 BIP-16(P2SH 업그레이드)을 나타냅니다. ), 141은 BIP-141(SegWit 업그레이드)을 나타내며, 0xdeadbeef는 잘 알려진 매직 넘버(여기서는 캡슐화된 P2WSH의 80비트 보안에 대한 설명으로 사용됨), 21000000은 우리 모두가 알고 사랑하는 숫자, 0xf9beb4d9입니다. 는 비트코인 P2P 프로토콜에 사용되는 매직넘버로, 341은 BIP-341(Taproot 업그레이드), 342는 BIP-342(Tapscript)를 의미합니다.
- 이 트랜잭션은 71바이트, 70, 69, 68, 67, 66, 65, 59, 58, 57 등 다양한 길이의 DER로 인코딩된 ECDSA 서명을 사용합니다. 서명의 길이는 일반적으로 71바이트 또는 72바이트이지만 반복적인 시도를 통해 더 짧은 서명을 얻을 수 있습니다. 이를 "서명 그라인딩"이라고 합니다. 마지막 3개는 secp256k1 곡선에서 알려진 짧은 r 값을 사용하기 때문에 특히 짧습니다.
- 이 트랜잭션은 SIGHASH_DEFAULT, SIGHASH_ALL, SIGHASH_NONE, SIGHASH_SINGLE, SIGHASH_ALL | SIGHASH_ANYONECANPAY, SIGHASH_ANYONECANPAY 및 SIGHASH_ANYONECANPAY | (번역자 주: Sighash 태그를 사용하면 서명이 거래의 특정 부분에 바인딩될 수 있습니다. 바인딩된 부분을 변경하면 서명이 무효화되고 바인딩되지 않은 부분을 변경하면 서명의 유효성에 영향을 미치지 않습니다. 예를 들어 SIGHASH_ALL은 다음을 나타냅니다. 서명은 거래의 모든 부분에 바인딩되어 있으며 입력/출력을 변경하면 서명이 무효화됩니다. 반면, Sighash를 사용하면 서명자가 서명하려는 거래인지 확인할 수 있습니다.
- OP_RETURN 출력에는 초기 텍스트 푸시 이후 0부터 16까지의 푸시 opcode가 포함됩니다. 출력 볼륨이 한도를 초과하지 않는 한 여러 번 눌러도 표준 규칙을 위반하지 않습니다.
- 압축되지 않은 공개 키는 여러 입력에 사용되며, 다중 서명 스크립트에는 압축된 공개 키와 압축되지 않은 공개 키가 혼합되어 사용됩니다. (역자 주: 공개 키는 타원 곡선의 한 점이므로 두 가지 표현이 있습니다. 하나는 x 좌표와 y 좌표이고, 다른 하나는 x 좌표와 y 값의 패리티입니다(또는 추가로 만듭니다). y 값의 패리티에 대한 필수 배열) 전자를 압축되지 않은 형식이라고 하고 후자를 압축된 형식이라고 합니다. 초기 비트코인은 압축되지 않은 형식을 사용했으며 나중에는 점차적으로 압축된 형식(체인 공간을 절약할 수 있음)을 의무화했습니다. ).).
- P2MS와 기존 P2SH 입력에서 사용되지 않은 다중 서명 공개 키는 제네시스 블록의 코인베이스 공개 키, 블록 9의 코인베이스 키, 최초의 비트코인 거래 에서 Hal Finney가 사용한 공개 키입니다. P2TR 스크립트 지출 다중 서명 장치에서 사용되지 않은 2개의 공개 키는 최초의 P2TR 스크립트 지출 거래 에서 나온 2개의 공개 키입니다. P2TR 스크립트 지출의 내부 공개 키는 백서 의 SHA-256 해시입니다. 마지막으로 HTLC 스크립트의 20바이트 해시 값은 2010년 값 오버플로 취약점에서 사용된 주소 17TASsYPbdLrJo3UDxFfCMu5GXmxFwVZSW에 해당합니다. 공격에 사용된 0.5 BTC는 현재까지 이동하지 않았습니다.
- P2TR 스크립트는 깊이 21의 머클 트리를 입력으로 사용하는데, 이는 이전에 볼 수 있었던 것보다 더 깊습니다(이전 기록은 7레벨이었습니다). 제어 블록에 공개된 Merkle 분기 값은 임의의 해시 값이 아니라 비트코인 기록에 중요한 영향을 미치는 21개 거래의 TXID입니다.
- 2009-01-03 제네시스 블록의 코인베이스 거래:
4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b - 2009-01-12 최초의 비코인베이스 거래(사토시 나카모토 Hal에게 전송):
f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16 - 2009-01-16 P2PKH 스크립트로 전송된 첫 번째 트랜잭션:
6f7cf9580f1c2dfb3c4d5d043cdbb128c640e3f20161245aa7372e9666168516 - 2010-05-22 Laszlo Hanyecz의 피자 거래(10,000 BTC 상당):
a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d - 2010-11-14 TXID가 겹치는 첫 번째 거래(BIP-30에 대한 첫 번째 예외):
d5d27987d2a3dfc724e359870c6644b40e497bdc0589a033220fe15429d88599 - 2010-11-15 TXID가 중복되는 첫 번째 거래(BIP-30에 대한 두 번째 예외):
e3bf3d07d4b0375638d5f1db5255fe07ba2c4cb067cd81b84ee974b6585fb468 - 2011-11-16 현재까지 가장 큰 비트코인 거래(550,000 BTC):
29a3efd3ef04f9153d47a990bd7b048a4b2d213daaa5fb8ed670fb85f13bdbcf - 2013-04-06 비트코인 백서 전체가 포함된 거래:
54e48e5f5c656b26c3bca14a8c95aa583d07ebe84dde3b7dd4a78f4e4186e713 - 2013-11-05 Rickroll 거래:
d29c9c0e8e4d2a9790922af73f0b8d51f0bd4bb19940d9cf910ead8fbe85bc9b - 2015-07-07 F2Pool의 "Megatransaction"은 확인하는 데 25초가 걸립니다(자세한 내용은 Rusty Russell이 작성한 블로그 참조).
bb41a757f405890fb0f5856228e23b715702d714d59bf2b1feb70d8b2b4e3e08 - 2015-07-11 Greg Maxwell과 협력하여 F2Pool이 작성한 또 다른 유사한 트랜잭션은 SIGHASH_SINGLE 버그를 사용하여 확인하기 쉽고 짧은 r 값 트릭을 사용하여 더 작은 서명을 얻습니다.
9fdbcf0ef9d8d00f66e47917f67cc5d78aec1ac786e2abb8d2facb4e4790aad6 - 2016-04-26 지금까지 처리 수수료가 가장 높은 단일 거래(291 BTC):
cc455ae816e6cdafdb58d54e35d4f46d860047458eacf1c7405dc634631c570d - 2017-02-23 SHA-1 충돌 보너스를 수령하다 거래:
8d31992805518fd62daa3bdd2a5c4fd2cd3054c9b3dca1d78055e9528cff6adc - 2017-08-24 첫 번째 SegWit 지출 거래:
8f907925d2ebe48765103e6845c06f1f2bb77c6adc1cc002865865eb5cfd5c1c - 2021-07-23 누구나 쓸 수 있는 0xB10C P2TR 거래 (자세한 내용은 https://b10c.me/7 참조):
b10c007c60e14f9d087e0291d4d0c7869697c6681d979c6639dbd960792b4d41 - 2021-11-14 첫 번째 Taproot 지출 거래:
33e794d097969002ee05d336686fc03c9e15a597c1b9827669460fac98799036 - 2021-11-14 첫 번째 Taproot 스크립트 지출 거래:
37777defed8717c581b4c0509329550e344bdc14ac38f71fc050096887e535c8 - 2021-12-07 Wang Chun이 Luke Dashjr에게 1 BTC를 기부했습니다(변동량은 8999 BTC):
fd456524104a6674693c29946543f8a0befccce5a352bda55ec8559fc630f5f3 - 2022-10-09 Burak의 998/999 다중 서명 지출, LND 깨기:
7393096d97bfee8660f4100ffd61874d62f9a65de9fb6acf740c4c386990ef73 - 2022-11-01 Burak은 LND의 거래를 다시 파기합니다.
73be398c4bdc43709db7398106609eea2a7841aaf3a4fa2000dc18184faa2a7e - 2023-11-23 법정화폐로 가장 높은 수수료를 받는 거래(86 BTC 또는 313만 달러):
b5a2af5845a8d3796308ff9840e567b14cf6bb158ff26c999e6f9a1f5448f9aa
- 2009-01-03 제네시스 블록의 코인베이스 거래:
전체 프로젝트를 완료하는 데 1년 이상이 걸렸습니다. 처음에는 단지 다양한 블록탐색기의 기능을 비교하기 위한 참조 트랜잭션으로 가능한 모든 입력 및 출력 유형을 포함하는 트랜잭션을 만들고 싶었지만 아이디어가 점점 많아지면서 복잡성이 폭발하여 결국에는 그렇게 되었습니다. 알다시피. 저는 비트코인 프로토콜뿐만 아니라 비트코인의 역사에 대해서도 많은 것을 배웠습니다. 나는 TypeScript와 BitcoinJS에서 트랜잭션을 생성하는 코드를 작성했습니다. 성능에 민감한 몇 가지 부분은 나중에 이 목적을 위해 특별히 배운 언어인 Rust로 작성되었습니다.
내 거래를 생성한 지 불과 몇 시간 만 에 내 거래를 가장 먼저 알아차리고 TXID의 중요성을 가장 먼저 알아차린 mononaut에게 감사드립니다. 그런 다음 Super Testnet은 당시 알려진 모든 이스터 에그를 나열하는 Stacker News 게시물을 작성했습니다(그리고 이 중 많은 것을 발견한 최초의 사람). 마지막으로 부활절 달걀을 찾아주신 다른 분들에게도 감사드립니다: Sebastian Falbesoner, Rob Hamilton, Tom Honzik, iWarp, Jiří Jakeš, Portland.HODL, pycan, Gregory Sanders, Tomer Strolight 및 Peter Todd.
비트코인 개발자 커뮤니티, 비트코인 기술 작가, 비트코인 스택 교환에 대한 질문에 답변해주신 모든 분들께 깊은 감사를 드립니다. 이 프로젝트는 모두가 없었다면 불가능했을 것입니다. 또한 이 거래에 대해 감사를 표한 사람들에게도 매우 감사하며 이는 나에게 큰 의미가 있습니다.
아직 궁금한 점이 있으시면 기꺼이 답변해 드리겠습니다. 질문이 다른 사람들이 대답할 수 있는 것이라면, 다른 독자들에게 더 도움이 될 수 있는 Bitcoin Stack Exchange에 게시하는 것을 고려해 보십시오.
(위에)