博客
关于我
比特币现金社区推出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学习总结(57)——MySQL查询当天、本周、本月、上周、本周、上月、距离当前现在6个月数据
查看>>
Mysql学习总结(58)——深入理解Mysql的四种隔离级别
查看>>
Mysql学习总结(59)——数据库分库分表策略总结
查看>>
Mysql学习总结(5)——MySql常用函数大全讲解
查看>>
Mysql学习总结(60)——并发量大、数据量大的互联网业务数据库设计规范总结
查看>>
Mysql学习总结(61)——MySQL优化之DBA级优化整理汇总
查看>>
Mysql学习总结(62)——MySQL连接com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link问题
查看>>
Mysql学习总结(63)——Mysql数据库架构方案选择与分析
查看>>
Mysql学习总结(64)——Mysql配置文件my.cnf各项参数解读
查看>>
Mysql学习总结(65)——项目实战中常用SQL实践总结
查看>>
Mysql学习总结(66)——设置MYSQL数据库编码为UTF-8
查看>>
Mysql学习总结(67)——MYSQL慢查询日志
查看>>
Mysql学习总结(68)——MYSQL统计每天、每周、每月、每年数据 SQL 总结
查看>>
Mysql学习总结(69)——Mysql EXPLAIN 命令使用总结
查看>>
Mysql学习总结(6)——MySql之ALTER命令用法详细解读
查看>>
Mysql学习总结(70)——MySQL 优化实施方案
查看>>
Mysql学习总结(71)——MySQL 重复记录查询与删除总结
查看>>
Mysql学习总结(71)——数据库介绍(MySQL安装 体系结构、基本管理)再回顾
查看>>
Mysql学习总结(72)——MySQL 开发者开发,设计规范再总结
查看>>
Mysql学习总结(73)——MySQL 查询A表存在B表不存在的数据SQL总结
查看>>