博客
关于我
比特币现金社区推出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/

你可能感兴趣的文章
node.js模块、包
查看>>
node.js的express框架用法(一)
查看>>
Node.js的交互式解释器(REPL)
查看>>
Node.js的循环与异步问题
查看>>
Node.js高级编程:用Javascript构建可伸缩应用(1)1.1 介绍和安装-安装Node
查看>>
nodejs + socket.io 同时使用http 和 https
查看>>
NodeJS @kubernetes/client-node连接到kubernetes集群的方法
查看>>
NodeJS API简介
查看>>
Nodejs express 获取url参数,post参数的三种方式
查看>>
nodejs http小爬虫
查看>>
nodejs libararies
查看>>
nodejs npm常用命令
查看>>
nodejs npm常用命令
查看>>
Nodejs process.nextTick() 使用详解
查看>>
NodeJS yarn 或 npm如何切换淘宝或国外镜像源
查看>>
nodejs 中间件理解
查看>>
nodejs 创建HTTP服务器详解
查看>>
nodejs 发起 GET 请求示例和 POST 请求示例
查看>>
NodeJS 导入导出模块的方法( 代码演示 )
查看>>
nodejs 开发websocket 笔记
查看>>