b10c...eb5d 玩了哪些「梗」?

本文最后更新于 2024年9月1日 晚上

也许是比特币网络上最酷的一笔交易

b10c0000004da5a9d1d9b4ae32e09f0b3e62d21a5cce5428d4ad714fb444eb5d 应该是迄今为止最酷的一笔交易。这笔交易处处都是彩蛋,几乎浓缩了整个比特币网络的发展历史。老实说,在这样一个 Bot 横行的年代,我本以为这样的交易可能没人会注意到。但当我看到 stacker.news 上的讨论,我真心感到十分吃惊。尽管作者后面已经给出了对交易的解释,但是对比特币协议了解不足的人恐怕并不足以充分了解到这笔交易的有趣之处。这笔交易不好好聊聊真是太可惜了,所以下面对这笔交易埋藏的彩蛋做更深一层的介绍。


  • 交易高度:850000。臭名昭著的门头沟事件,交易所 Mt. Gox 被黑客盗取 850000 枚比特币!这件事直接导致了比特币和交易所的信任危机,比特币的价格直接跌去了三分之二。

  • Lock Time (用于确定交易何时可以被添加到区块链中):1231006505。该时间戳对应 Sat Jan 03 2009 18:15:05 GMT+0000,即 创世区块

  • TXID: b10c0000004da5a9d1d9b4ae32e09f0b3e62d21a5cce5428d4ad714fb444eb5d。靓号,0xB10C 是比特币开发者,他做过有 类似 TXID 靓号的交易

  • Witness:0000000001d549a7df6bb3346ab8d390ea517bb284fc0c081647068f9b72e641。靓号,多个前置 0。

  • 交易使用了每一种可能的标准交易脚本类型:

    • P2PK(Pay-to-Pub-Key):<sig> <pubKey> | OP_CHECKSIG,老版本的挖矿软件使用,新版本基本使用 P2PKH;
    • P2PKH(Pay-to-Public-Key-Hash):<sig> <pubKey> | OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG, 该类型的交易脚本占比特币交易脚本的大多数;
    • P2MS(Pay-to-Multisig):OP_0 <Sig1> ... <SigM> | OP_M <PublicKey 1>... <PublicKey N> OP_N OP_CHECKMULTISIG,裸多签,N 最多为 3,基本被 P2SH 取代;
    • P2SH(Pay-to-Script-Hash):BIP 16 软分叉引入的产物,由接收者构建赎回脚本,并将赎回脚本的哈希发送给发送者作为交易的输出。满足赎回脚本中的转出条件才能花费,因此可以构建多签。
    • 这里还包括封装后的版本(为了隔离见证的前向兼容将 P2WPKH 和 P2WSH 封装为 P2SH);
    • P2WPKH(Pay-to-Witness-Public-Key-Hash):SegWit 软分叉引入的产物,基于 SegWit 实现了 P2PKH 认证;由于 SegWit 将锁定脚本与解锁脚本中的部分内容从交易中分离出来,放入一个独立的数据结构中,所以手续费更低;
    • P2WSH(Pay-to-Witness-Script-Hash):同样是 SegWit 软分叉引入的产物,基于 SegWit 实现了 P2SH 认证,手续费更低;
    • P2TR(Pay-to-Taproot):Taproot 软分叉引入的产物,地址基于 Schnorr 签名和 MAST 结构生成,实现了更好的隐私性和扩展性;
    • 这里包括密钥路径和脚本路径两种;
    • OP_RETURN:将交易输出标记为无效,相当于备注,可以用来销毁 BTC;
    • 2 字节的 SegWit v1:基于 临时锚点提案 实现,由于隔离见证的 witness program 大小在 2-40 字节,所以这应该是最小的 witness program 了;
  • 输入中有多个多签名脚本和闪电通道相关脚本

    • P2MS 是 2-of-3 多签名;
    • legacy P2SH 是 3-of-5 多签名;
    • 封装的 P2WSH(P2SH) 是一个撤销的闪电通道 HTLC(通过撤销交易密钥广播撤销交易);
    • P2WSH 是一笔撤销的闪电通道强制关闭(即「罚没交易」,证明对方节点的不当行为触发罚没),且具备一个脚本层面的相对时间锁(42 个区块,其中 42 是「生命、宇宙以及任何事情的终极答案」);
    • P2TR 脚本路径使用的是一个 5-of-7 多签名(既是为了延续质数模式,也是为了引用「5/7」梗);

「5/7」梗:
来自 2015 的陈年老梗,某位名叫 Brendan 的 Facebook 用户遇到了名叫 Robert 的乐子人,后者经常会以评论他的 Facebook 评论为乐。

其中有个评论是 Brendan 将电影《搏击俱乐部》评为 5/7。当 Robert 质疑这个评分时,Brendan 生气地表示他认为「这电影是完美的」。这导致 Robert 找到了乐子,宣称:对于 Brendan 来说,「5 等于 7」。

  • 每笔输入金额:
    • 6102:6102 号行政令,该令禁止美国人私人持有黄金
    • 1913:美联储于 1913 年成立
    • 1917:美国废除金本位
    • 2140:比特币最后一次减半,此后区块奖励变为 0
    • 5139:指 CVE-2010-5139,整数溢出漏洞攻击,导致出现了一笔巨额交易,最后通过分叉解决
    • 3220:指 CVE-2013-3220,不同版本的客户端 Berkeley DB 锁定机制不一致,导致了意外分叉
    • 17144:指 CVE-2018-17144,该漏洞可导致通货膨胀,不过并未触发(因为起初按照拒绝服务漏洞疲劳)
    • 8149:实现隔离见证的 PR 号
    • 9001:龙珠梗,“超过 9000 了”(国内的“战五渣”梗也是类似起源)
    • 19953:实现 Taproot 的 PR 号
  • 每笔输出金额,都是粉尘限额(低于该限额可能被验证节点视为粉尘攻击而拒绝):

    • 576:使用压缩公钥的 P2PK
    • 546:P2PKH
    • 582:使用压缩公钥的 1-of-1 裸多签名
    • 540:P2SH
    • 294:20 字节的隔离见证(P2WPKH)
    • 330:32 字节的隔离见证(P2WSH 和 P2TR)
    • 240:2 字节的隔离见证
    • 0:OP_RETURN
  • 交易输入的 nsequence 字段,用于替代签名和时间锁。类似于以太坊的 nonce 字段。

    • 20090103:创世区块产生的日期
    • 20081031:指的是白皮书的发布时间
    • 19750504 指的是中本聪自曝的出生日期
    • 16:BIP-16(P2SH 升级)
    • 141:BIP-141(隔离见证升级)
    • 0xdeadbeef:魔数,在嵌入式系统中常用于标示软件崩溃或是死锁(在这里用作作者对封装的 P2WSH 的 80 比特安全性的评论)
    • 21000000:比特币上限是2100 枚(实际是 20999999.97690000)
    • 0xf9beb4d9:用在比特币 P2P 协议中的魔数
    • 341 :BIP-341(Taproot 升级)
    • 342 :BIP-342(Tapscript)
  • 这笔交易使用了不同长度的 DER 编码的 ECDSA 签名:71 、70、69、68、67、66、65、59、58 和 57 字节。签名一般长 71 或 72 字节,但可以通过重复签名来获得较短的签名;这叫做 “签名研磨(signature grinding)”。后面三个尤其短,因为它们使用了 secp256k1 曲线上一个已知的短 r 值

  • 这笔交易使用了所有种类的 SIGHASH 标签,这个标签用于表示交易的哪一部分由 ECDSA 签名签名:SIGHASH_DEFAULT、SIGHASH_ALL、SIGHASH_NONE、SIGHASH_SINGLE、SIGHASH_ALL | SIGHASH_ANYONECANPAY、SIGHASH_NONE | SIGHASH_ANYONECANPAY 和 SIGHASH_SINGLE | SIGHASH_ANYONECANPAY

  • OP_RETURN 包括 OP_0、OP_PUSHNUM_1 到 OP_PUSHNUM_16。(只要输出作为一个整体保持在大小限制之下,多次 PUSH 操作就不会违反任何标准)

  • 在多个输入中使用了非压缩公钥,并且在多签名脚本中混合使用压缩公钥和非压缩公钥。压缩公钥包括椭圆曲线上点 (x,y) 的坐标,非压缩公钥仅包括 x 坐标和用于表示 y 坐标奇偶的前缀。早期的比特币用非压缩公钥65字节,现在由于区块数据越来越大,基本上都用压缩公钥33字节。

  • 在 P2MS 以及 legacy P2SH 输入中,未使用的多签名公钥是创世区块的 coinbase 公钥、高度 9 区块的 coinbase 公钥以及 Hal Finney 用在有史以来第一笔比特币交易中的公钥。P2TR 脚本路径的多签中的两个未使用的公钥是来自有史以来第一笔 P2TR 交易中的两个靓号公钥(5f4237bd7…)。P2TR 脚本路径中的内部密钥是白皮书的SHA-256哈希。最后,HTLC 脚本中的 20 字节哈希对应的地址是 17TASsYPbdLrJo3UDxFfCMu5GXmxFwVZSW,该地址在 2010 年的数值溢出漏洞中使用,用于攻击的 0.5 BTC 至今未被花费。

  • P2TR 脚本路径输入的 Merkle 树深度为 21,这比之前的任何深度都多得多(之前的记录是 7)。控制块中揭示的 Merkle 分支不仅仅是随机哈希,而是对比特币历史具有重要意义的 21 笔交易的 TXID:

    • 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b:2009-01-03,创世区块的 coinbase 交易
    • f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16:2009-01-12,第一笔非 coinbase 交易(中本聪发给 Hal Finney )
    • 6f7cf9580f1c2dfb3c4d5d043cdbb128c640e3f20161245aa7372e9666168516:2009-01-16,第一笔发送到 P2PKH 脚本的交易
    • a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d:2010-05-22,Laszlo Hanyecz 花费 10000 BTC 的披萨交易
    • d5d27987d2a3dfc724e359870c6644b40e497bdc0589a033220fe15429d88599:2010-11-14,第一笔具有相同 TXID 的交易(BIP-30 的第一个例外)
    • e3bf3d07d4b0375638d5f1db5255fe07ba2c4cb067cd81b84ee974b6585fb468:2010-11-15,第二笔具有相同 TXID 的交易(BIP-30 的另一个例外)
    • 29a3efd3ef04f9153d47a990bd7b048a4b2d213daaa5fb8ed670fb85f13bdbcf:2011-11-16,有史以来单笔交易发送的最大金额(550,000 BTC)
    • 54e48e5f5c656b26c3bca14a8c95aa583d07ebe84dde3b7dd4a78f4e4186e713:2013-04-06,包含整个白皮书的交易
    • d29c9c0e8e4d2a9790922af73f0b8d51f0bd4bb19940d9cf910ead8fbe85bc9b:2013-11-05,Rickroll 交易(著名的 《Never Gonna Give You Up》
    • bb41a757f405890fb0f5856228e23b715702d714d59bf2b1feb70d8b2b4e3e08:2015-07-07,F2Pool 的超大交易,需要 25 秒来验证。这篇博客解释了细节
    • 9fdbcf0ef9d8d00f66e47917f67cc5d78aec1ac786e2abb8d2facb4e4790aad6:2015-07-11,F2Pool 与 Greg Maxwell 合作完成的另一笔类似交易,使用 SIGHASH_SINGLE bug 易于验证,并且通过使用短 r 值获得了较小的签名:
    • cc455ae816e6cdafdb58d54e35d4f46d860047458eacf1c7405dc634631c570d:2016-04-26,有史以来支付最高手续费(291 BTC)的单笔交易
    • 8d31992805518fd62daa3bdd2a5c4fd2cd3054c9b3dca1d78055e9528cff6adc:2017-02-23,开发者 Peter Todd 发起的赏金破解哈希算法活动(SHA1,SHA256,RIPEMD160,RIPEMD-160(SHA-256()),SHA256(SHA256()))中的 SHA1 碰撞挑战得到破解
    • 8f907925d2ebe48765103e6845c06f1f2bb77c6adc1cc002865865eb5cfd5c1c:2017-08-24,第一笔隔离见证花费交易
    • b10c007c60e14f9d087e0291d4d0c7869697c6681d979c6639dbd960792b4d41:2021-07-23,开发者 0xB10C 制造的任何人都可花费的 P2TR 交易
    • 33e794d097969002ee05d336686fc03c9e15a597c1b9827669460fac98799036:2021-11-14,第一笔 Taproot 花费交易
    • 37777defed8717c581b4c0509329550e344bdc14ac38f71fc050096887e535c8:2021-11-14,第一笔 Taproot 脚本花费交易
    • fd456524104a6674693c29946543f8a0befccce5a352bda55ec8559fc630f5f3:2021-12-07,F2Pool 的创始人 Chun Wang 给开发者 Luke Dashjr 捐赠的 1 BTC(这笔交易找零了 8999 BTC)
    • 7393096d97bfee8660f4100ffd61874d62f9a65de9fb6acf740c4c386990ef73:2022-10-09,Burak 的 998-of-999 多签交易,引发了 LND(Lightning Network Daemon)的 Bug
    • 73be398c4bdc43709db7398106609eea2a7841aaf3a4fa2000dc18184faa2a7e:2022-11-01,Burak 另一笔引发了 LND 漏洞的交易,交易中包括 500,001 条空 PUSH 操作,使用了所有的输入金额作为费用,仅用 OP_RETURN 输出一条 you'll run cln. and you'll be happy.
    • b5a2af5845a8d3796308ff9840e567b14cf6bb158ff26c999e6f9a1f5448f9aa:023-11-23,有史以来以法币计最高手续费(86 BTC 或 313 万美元)的单笔交易

这笔交易花费了作者近一年来构造,基于 TypeScript、BitcoinJS 和 Rust 实现。在这里你可以看到它的实现代码 bitcoin-easter-egg-tx。这笔交易几乎是比特币网络发展史的一个缩影,而 Geek 用最炫酷的手段将这一点展现得淋漓尽致。对我而言,区块链最迷人的地方就在于它让我们得以窥见互联网早期 Geek 精神的延续。

向这些 Geek 们致敬 🫡。


b10c...eb5d 玩了哪些「梗」?
https://justloseit.top/b10ceb5d玩梗/
作者
Mobilis In Mobili
发布于
2024年8月7日
更新于
2024年9月1日
许可协议