阅读 137

比特币现金社区推出OP_RETURN的4字节前缀指南

作者:闻币知天下

从5月15日比特币现金顺利完成硬分叉升级到现在已经有一个多星期的时间。我们都知道在比特币现金的这次升级中有一个改动就是将OP_RETURN的大小扩充到220字节。这一改动已经给一些应用如Memo、Blockpress等带来了好处。通过这一改变用户能够在上面发布更长的内容。而且现在用户在Memo和Blockpress发布的内容已经能够在blockchair.com区块浏览器中通过搜索文本查找出来。

虽然OP_RETURN容量的增加给比特币现金带来了很多活力,但是Lokad的创始人也就是比特币现金Terab项目的主要负责人Joannes Vermorel 却为了比特币现金的长远发展提出了“OP_RETURN的4字节前缀指南”。他认为,区块链是共享资源,虽然BCH的可扩展性是一个可以解决的问题,但是社区需要一些原则来避免一些不必要的复杂情况。由于OP_RETURN数据在所有的参与者之间都是共享的,但这并不能保证每一个参与者都会默认保留这些数据。因此OP_RETURN的4字节前缀指南的存在将能够帮助用户根据指定的4字节前缀选择性地保留消息。

OP_RETURN的4字节前缀指南是什么?

OP_RETURN的4字节前缀指南又称为协议标识符(或协议ID)。主要内容是:所有使用Bitcoin Cash实现的协议在使用OP_RETURN时应该首先指定一个唯一的4字节前缀,作为自己协议的ID,以后所有与自己的协议相关的消息中都会被预先添加这4字节前缀。通过这个方案可以根据协议的不同对OP_RETURN上的信息进行分类,而且还可以简化协议之间的可操作性。随着OP_RETURN使用的增长,协议之间的冲突将会增加。虽然这些冲突不会危及BCH本身,但是可以避免因为协议覆盖而进行的一些不必要的操作。

详细的4字节前缀: OP_RETURN操作码配合OP_PUSHDATA序列: OP_RETURN OP_PUSHDATA [data] ... OP_PUSHDATA [data] 在BCH中,多个OP_PUSHDATA被视为标准交易。 这个指南建议插入0x04 [protocol ID]作为指定协议标识符的第一个元素。即: OP_RETURN 0x04 [protocol ID] OP_PUSHDATA [data] ... OP_PUSHDATA [data]

为了提高区块链上的过滤性能,协议ID将出现在前面:首先选择协议ID将能够尽快的跳过数据。

此外,协议ID值的位数必须高于0x00 00 00 0F且低于0x10 00 00 00。保留较低的范围是因为标识符会与特殊的推送代码相冲突,并且会对一小段协议提供有利的处理。保留较高的范围是为了未来这个指南调整之后能够兼容现行指南。

为什么前缀要用4字节?该指南表示选择4字节作为前缀一是因为4字节能够允许比特币现金拥有超过2.6亿个不同的协议,这个数量已经是足够的,二是4字节占用的空间较小,对OP_RETURN的整体可用性影响小。

最后要强调的一点是OP_RETURN的4字节前缀指南并不是一个强制性的方案,而是可选择的,可以遵循也可以不遵循。如果使用该方案,还将会获得来自Terab项目的某种支持。

参考链接:

https://github.com/Lokad/Terab/blob/master/spec/opreturn-prefix-guideline.md

注:BCH升级后将OP_RETURN扩大到220字节,不知笔者用223字节是否有错误或者其他原因,最终小编依旧采用的是220字节。