博客
关于我
比特币现金社区推出OP_RETURN的4字节前缀指南
阅读量:141 次
发布时间:2019-02-28

本文共 1331 字,大约阅读时间需要 4 分钟。

u=733445390,715658593&fm=11&gp=0.jpg

从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项目的某种支持。

转载地址:http://rkvc.baihongyu.com/

你可能感兴趣的文章
MYSQL中TINYINT的取值范围
查看>>
MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
查看>>
Mysql中varchar类型数字排序不对踩坑记录
查看>>
MySQL中一条SQL语句到底是如何执行的呢?
查看>>
MySQL中你必须知道的10件事,1.5万字!
查看>>
MySQL中使用IN()查询到底走不走索引?
查看>>
Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
查看>>
MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
查看>>
mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
查看>>
mysql中出现Unit mysql.service could not be found 的解决方法
查看>>
mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
查看>>
Mysql中各类锁的机制图文详细解析(全)
查看>>
MySQL中地理位置数据扩展geometry的使用心得
查看>>
Mysql中存储引擎简介、修改、查询、选择
查看>>
Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
查看>>
mysql中实现rownum,对结果进行排序
查看>>
mysql中对于数据库的基本操作
查看>>
Mysql中常用函数的使用示例
查看>>
MySql中怎样使用case-when实现判断查询结果返回
查看>>
Mysql中怎样使用update更新某列的数据减去指定值
查看>>