小技巧:问教链,试试看👉【刘教链有问有答】
* * *
周四 BTC 在 86-87k 区间横盘小幅震荡。2025 年 3 月份眼瞅着就要过去了。3 月份过去,一季度也就要结束了。正如今日 3.27 教链内参说的,这个一季度《或许是 2018 年来最差的一季度》。
时光如水,岁月如歌。BTC 就是时光奏响的乐章。但是在早年,具体说来是 2013 年之前,乐章中出现了一些不和谐的音符。这些不和谐的音符,就是重复的币基交易(铸币交易)。
所谓币基交易(铸币交易),又称 coinbase 交易,是 BTC 每个新生成的区块中的第一条交易。挖到该区块的矿工通常会使用这笔交易把区块奖励发送到自己的地址里去。
众所周知,BTC 的普通交易是不能重复的。因为普通交易都必须花费已经存在的一笔交易的未花费的输出,即所谓 UTXO,教链将其比作“硬币”,这些硬币各不相同,因此各笔花费这些硬币的交易肯定也各不相同。如果一个硬币被两笔交易给花费了,那就成了所谓“双重花费”(double-spending),这是 BTC 严格禁止的。
但是,一个例外出现了。那就是币基交易。币基交易是铸币交易,所以不需要花费 UTXO 硬币,而是可以直接从空气中创造出新的 BTC 来,以此作为发给矿工的奖励。
如果一个矿工接连挖到了多个区块,并且在构造币基交易数据的时候,使用了完全相同的信息,比如接收地址和其他附加信息等,那么就可能构造出完全相同的两笔交易出来。体现在区块链就是这两笔位于不同区块内的币基交易,却拥有着相同的交易数据和哈希值。
这就是重复的币基交易。
这个比特币的 bug 真实存在。以下就是两个真实例子,大家可以打开 BTC 的任意区块链浏览器验证:
区块高度 91812 和区块高度 91842,拥有哈希值完全相同的两笔币基交易。
区块高度 91722 和区块高度 91880,拥有哈希值完全相同的两笔币基交易。
好消息是,从未有人利用这种重复的币基交易,花费它们,构造出同样是相同的后续普通交易,从而污染整个 UTXO 空间。在 2012 年 3 月 15 号通过一次软分叉实施了 BIP-30 之后,这种重复的交易就不能被使用了。
更进一步的,2013 年 3 月又激活了 BIP-34 软分叉,给币基交易的构造中添加了区块高度信息作为“版本号”,从而使得币基交易的哈希值不可能再重复了。
具体的,从技术细节上,是在币基交易的 scriptSig 开头添加区块高度,第一字节是区块高度数值的字节数——目前是 0x03,意思是后续 3 个字节表示本币基交易所在区块高度。币基交易里的这个 scriptSig 又被称为 coinbase script,是矿工可自由自定义的字段,早期允许写入任意数据,比如中本聪就是在这个字段写入《泰晤士报》标题的。
对比一下更直观些。我们先来看下出现重复币基交易问题的区块#91812 的币基交易的 scriptSig 是:0456720e1b00(OP_PUSHBYTES_4 56720e1b OP_0)。
而教链现在写这篇文章时刚刚产出的一个区块#889678 的币基交易 scriptSig 则是:034e930d044260e5672f466f756e6472792055534120506f6f6c202364726f70676f6c642f23648154608b150000000000(OP_PUSHBYTES_3 4e930d OP_PUSHBYTES_4 4260e567 OP_PUSHBYTES_47)。
开头是 0x03,后续三个字节是43930d,表示其所在区块高度是十六进制的 0x0d934e,即十进制的 889678。
坏消息是,在 2013 年修复之前,已经生成的币基交易中,也有一些它们的 scriptSig 开头碰巧是 0x03!这就让未来这些当年的矿工有可能利用这一点来故意构造重复的币基交易。
举个具体的例子吧。区块#164384 的 coinbase script 就是 0x03 开头的:03d6441e014b0136(OP_PUSHBYTES_3 d6441e OP_PUSHBYTES_1 4b OP_PUSHBYTES_1 36)。
我们不知道当时这位矿工写的这个脚本是何用意。但是我们可以知道的是,他有机会利用这个漏洞,在未来尝试构造出与之完全相同的币基交易出来。
具体是什么时间呢?我们需要简单推算一下。
根据 BIP-34 的定义,0x03 后面 3 个字节表示区块高度。对上面这个例子而言就是d6441e,也就是十六进制的 0x1e44d6,即十进制的 1983702。
而区块#1983702 大概会在什么时间产出呢?根据 BTC 大约每 10 分钟产出一个区块,很容易推算出,从现在的区块#889678 到未来的#1983702,还需 (1983072 - 889678)/6/24/365 = 20.8 年,也就是大约 2046 年的时候。
坏消息是,这样的区块还有不少。下面是全表:
block_height,coinbase_height,equal
164384,1983702,TRUE
169895,3708179,TRUE
170307,3709183,TRUE
171896,3712990,TRUE
172069,3713413,TRUE
172357,3714082,TRUE
172428,3714265,TRUE
174151,5208854,TRUE
176684,490897,TRUE
183669,3761471,TRUE
196988,4275806,TRUE
201577,5327833,TRUE
206039,7299941,TRUE
206354,7299941,TRUE
209920,209921,TRUE
从上面柱状图可以看出,2078 年左右是风险最多的时间。
好消息是,在目前很大、未来更大的全网算力下,就算当年的矿工有这想法,它也很难刚好抢到那个高度的那个区块的打包权(生成权、挖矿权)。
而且,矿工得有多吃饱了撑的,才会去用费劲抢到挖矿权,构造一笔再也不能花掉的、模仿早年数据的交易,从而让自己白白遭受损失呢?
因此,结论就是,重复的币基交易这个 bug,不能说已经被 100% 完美解决,但也不太可能掀起什么大的浪花。
* * *
阅读更多内参,请加入刘教链的 VIP 会员:
* * *
延伸阅读更多刘教链精彩内容:
内参:或许是 2018 年来最差的一季度 2025.3.27
存够几个 BTC 就敢主动失业? 2025.3.26
内参:以太坊的中年危机 2025.3.26
中轨彷徨 2025.3.25
内参:大饼正沿 30 周均线向上爬行 2025.3.25
做高容错性投资 2025.3.24
内参:市场冷冷清清,信念愈发坚定 2025.3.24
不信者恒不信 2025.3.23
内参:第 11 周 市场横盘低位震荡 看牛看熊观点分歧 2025.3.23
( 公众号:刘教链。加入会员:公众号回复"会员"或"VIP")
( 免责声明:本文内容均不构成任何投资建议。加密货币为极高风险品种,有随时归零的风险,请谨慎参与,自我负责。)
喜欢本文就请点赞转发支持哦
👇👇👇
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。