最近,比特币铭文再次引发争议。一位名叫William Casarin的Bitcoin Core开发者兼Nostr开发者,公开表达了对铭文的反对意见,甚至称其为对数字黄金的一种“攻击”。
推广Casarin的观点并非空穴来风,他深入研究了铭文的工作原理,并指出它利用了比特币反垃圾邮件机制中的漏洞。这究竟是怎么回事呢?
长期以来,向比特币添加数据的“标准”方法是使用OP_RETURN操作码。比特币开发者们早就注意到,有人试图通过大型多重签名交易将数据(比如比特币白皮书)存储在UTXO集合中。但问题在于,这个集合是不可修剪的,长期下来可能会无限膨胀。而OP_RETURN输出则被证明是可修剪的,不会导致UTXO的过度增长。
早在2014年,Bitcoin Core的开发者们就强调过,OP_RETURN的引入并非鼓励大家在区块链上存储数据,而是为了避免出现某些数据存储方案(比如将图像存储在永远无法使用的交易输出中),导致比特币的UTXO数据库膨胀。他们明确表示,在区块链上存储任意数据仍然不是一个好主意,将非金融数据存储在其他地方成本更低,效率更高。
Bitcoin Core团队一直致力于确保比特币系统以去中心化的方式运行,实现其最初的目的,即使有人试图滥用它来存储数据。毕竟,比特币的设计初衷不是用来存储图像和数据的,而是为了在网络空间中转移数字货币。
为了防止人们“乱来”,OP_RETURN交易被设置为非标准交易,需要满足以下条件才能被其他节点和矿工转发:
只能推送40个字节的数据(后来增加到80、83字节,据推测是为了支持更大的root Merkle哈希)。
比特币还引入了一个名为“-datacarriersize”的选项,限制了用户中继或挖掘的此类输出的总字节数。
铭文通过OP_IF块内的OP_PUSH将数据伪装成比特币脚本程序数据,绕过了数据载体大小(datacarriersize)的限制。由于铭文不使用OP_RETURN,也不受数据载体大小的限制,因此节点运行者和矿工目前对他们希望中继并包含在区块中的数据的总大小的控制有限。
更糟糕的是,铭文还利用了SegWit v1(见证人折扣)和v2/Taproot(无任意脚本大小限制)中的功能。见证人折扣的目的是降低花费多个输出的成本,从而有助于减少UTXO集合的大小。然而,铭文却利用这一折扣来存储伪装成比特币脚本的图片。Casarin认为,只要比特币开发者不小心让数据存储变得廉价且易于转发,这就应该被视为一种漏洞,并期待它能够得到修复,或者至少为节点运行者提供对抗这种垃圾邮件的工具。
这个故事最有趣的地方在于,人们似乎对存储在比特币区块链上的图像赋予了价值,并且愿意为此付费。一些矿工和用户乐于收取费用并继续推进,并不关心比特币的健康和去中心化。
Casarin认为,数据不应该享受折扣,如果有人想存储数据,就应该支付全价。他们应该只使用OP_RETURN和哈希值,或者其他合理的在比特币中存储数据的协议。
经过一番分析,Casarin得出结论,铭文是一种非常糟糕的数据垃圾邮件攻击,比特币开发者应该致力于寻找解决方案。他对比特币社区中像Luke这样的开发者表示赞赏,认为他们真正关心比特币网络的健康和去中心化。