​​BCH告别了5月的纷扰,迎来了新的篇章。对于BCH来说,一年中有两件大事,一是5月15日的升级,二是11月15日的升级。上半年的网络升级已经顺利完成并告一段落,下半年的升级工作正在被BCH开发者写入到日程中。

5月29日,BCH开发者在bitcoincashorg的github上提交了2019年11月15日升级提案草案规范的帖子,旨在将此作为下一次升级讨论的基地以及正在审议的项目的聚集地。

与此同时,名为EyeOfPython 开发者提交了将OP_REVERSE添加到脚本的提议。OP_REVERSE和之前的BCH网络中添加的所有的OP-code一样,属于协议底层的脚本操作码。了解BCH的都知道,BCH在去年5月以及11月份的升级中都引进了一些OP-code,在这些OP-code的作用下,BCH的功能变得日益完善,也为一些应用的开发提供了帮助。尤其在智能合约方面有了非常大的突破,而OP_REVERSE的引入也是为了能够进一步优化智能合约功能。

根据介绍,OP_REVERSE的作用是反转顶部堆栈项的字节。之所以会添加OP_REVERSE,开发者的理由如下:

比特币的协议几乎只使用little-endian编码,脚本提供的各种工具也是用于little-endian排序,诸如OP_NUM2BIN和OP_BIN2NUM。使用OP_CHECKDATASIG构建的合约,我们可以创建复杂的智能合约,并且脚本已经拥有大量的算术运算符(操作码139到165)来强制执行,例如如何关联交易的输入和输出数量。

但是,许多协议并不使用little-endian编码,并且也不清楚其中一个是否优于另一个。例如,AMQP 和Apache Thrift 都使用 big-endian编码。SLP协议也使用 big-endian编码。Bitdb在使用hN元素时,返回的堆栈项的格式可以直接解释为base16 big-endian编码的数字,要使用这个特性,必须能够将值编码为big-endian。

此外,现在是可以使用OP_CHECKDATASIG的oracles,它可以用于检索数字数据,假设所有的oracles将使用little-endian编码则是不必要的限制。

在编码的过程中,如果编码的大小既固定又不太大,则可以将值转换为big-endian编码。目前,Script仅支持32位整数,并且可以只使用OP_SPLIT,OP_SWAP和OP_CAT以big-endian编码:

从以上代码看出,该过程是比较复杂的。如果使用OP_REVERSE,这将变得简单:只需保存11个字节(9个操作和3个pushdata)。

除了更加简单,采用OP_REVERSE操作码还有更好的特点:

· 合约和循环脚本通常将preimage 的脚本代码作为输入,这意味着每个操作都会计算两次:一次是包含脚本代码的堆栈项,一次是P2SH脚本堆栈项。对于转换为8字节的big-endian,这将为每次转换节省32个字节,如果在脚本中有三个转换,那么它已经达到了96个字节 ——对于交易来说,这个字节数有点多。

 · 使用上面较大的片段开发脚本,对于开发者的认知负荷产生不必要地增加。手动或使用诸如宏或Spedn等工具开发脚本已经给开发人员带来了很多认知负担,而错误对社区来说可能是毁灭性的。这种失败的一个突出例子是以太坊链上的有争议性硬分叉,那就是由DAO智能合约中的一个错误引起的。

· 第一个版本假定脚本使用32位数字,一旦实现了具有更大宽度的整数,脚本将随着每个附加字节线性地变长(4 bytes/byte) 。对于256位数字,它需要124个字节(93个操作和31个pushdata)才能转换为big-endian。由于当前的操作码限制为201,因此不会为其他操作留下太多空间。相反,<N> OP_NUM2BIN OP_REVERSE始终将整数编码为N字节的big-endian,并且具有与N无关的常量脚本大小。

· 另外,假设oracle返回1字节项的有序列表(例如索引),但是如果脚本要求字节处于相反的顺序,那么OP_REVERSE将允许这样做。

关于OP_REVERSE的提议,BCH的开发者也对其进行了深入的讨论。针对是否有必要引入OP_REVERSE相关的一系列问题进行了提问。诸如:为什么SLP不使用little-endian?为什么在与“比特币之外的协议”交互时,big-endian与little-endian的转换不会发生在链外?除了字节序转换之外,是否有其他用例?EyeOfPython也对此进行了解释。

目前关于OP_REVERSE是否会被添加到BCH在11月15日的升级内容中暂时还未确定。不过,OP_REVERSE的提出对于BCH接下来的升级起着抛砖引玉的作用。在接下的时间中,会有更多的升级方案被提出。BCH开发者将会对每一个方案进行讨论和把关,将最有必要的更改通过升级带到BCH的协议中。

相信在BCH的协议开发者以及社区中的开发人员的共同努力下,BCH会拥有越来越完善的功能,竞争力远远超过其他的加密货币。

关于OP_REVERSE更多内容可以查看:

https://github.com/bitcoincashorg/bitcoincash.org/pull/358​​​​

11月15日BCH协议升级提案又双叒啜来了,请查收!相关推荐

  1. Tether销毁5亿USDT;BCH将于11月15日硬分叉,SV-Pool已向普通矿工开放

    注1:CBT20是指24小时内市值排名前20的数字货币. 注2:图2是数字货币市场总市值在24小时内的走势变化,该走势反应了当前大盘的总体表现情况. 注3:图中数据来源于coinmarketcap. ...

  2. 互联网晚报 | 11月14日 星期日 | 好未来宣布关闭K9学科类业务;京东工业品推出“智能移动仓”;北交所11月15日正式开市...

    ‍ 今日看点 ✦ 好未来:义务教育阶段的学科类校外培训服务将于12月31日截止 ✦ 天猫双11菜鸟物流绿色减碳1.8万吨,120万人参与快递箱回收 ✦ 京东工业品推出"智能移动仓" ...

  3. 北交所开市工作准备就绪 定于2021年11月15日开市

    11月12日消息,北交所发布公告称,目前,北交所开市各项工作已准备就绪,定于2021年11月15日开市. 2021年11月12日,北交所发布<北京证券交易所合格境外机构投资者和人民币合格境外机构 ...

  4. 【历史上的今天】11 月 15 日:全球首款商用微处理器;微软进军游戏界;ICQ 诞生

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 11 月 15 日,在 1982 年的今天,我国第一家婚姻介绍所成立:在 80 年代初," ...

  5. 2014年11月15日SIE赛意公司面试

    2014年11月15日SIE赛意公司面试 昨晚收到SIE(赛意)公司的面试通知,群面+单面共2个小时,今天中午就屁颠屁颠得跑到体育中心了.话休烦絮,直接进入正题. 1点半的面试,到公司门口已经1点15 ...

  6. 时空召唤今天服务器维护吗,时空召唤11月15日维护更新预告 全新地图全面开放...

    时空召唤为让玩家们更好的游戏体验将于11月15日更新全新版本,届时将上线全新地图.龙灵传说皮肤等,下面就跟小编一起来了解更多更新内容吧! 阅读推荐:时空召唤新英雄魔术师乔克即将来袭 新皮肤降临 预告内 ...

  7. 长城证券:信达证券、天弘基金等2家机构于11月15日调研我司

    2021年11月29日长城证券(002939)发布公告称:信达证券王舫朝 王锐.天弘基金孙高睿于2021年11月15日调研我司. 本次调研主要内容: 问:财富管理业务的组织架构是怎样的? 答:财富管理 ...

  8. 方舟服务器自动维护,方舟生存进化11月15日转服系统维护服务器驯服调整

    方舟生存进化将于11月15日对转服系统进行维护,所有转服门票需在11月15日维护前使用掉,维护完成后,之前已购买的转服门票将会自动销毁: 以下维护修改仅限联机服务器,单机不受影响: 官方将于11月13 ...

  9. 剑侠世界手游服务器维护公告,《剑侠世界》手游11月15日iOS安卓停服维护公告...

    亲爱的少侠: 为了优化体验保证服务质量,<剑侠世界>手游iOS全服将于11月15日8:00停服维护,预计维护2小时.具体的维护内容和开服时间,根据实际维护情况而定,如未能完成维护相关事宜, ...

最新文章

  1. 记java关键词_Java关键词及含义
  2. Eclipse 小插件
  3. intellij_使用IntelliJ ..已经2周了,到目前为止还算不错
  4. xml凭证模板的一般制作
  5. 面向对象实验一(类与对象)
  6. Hadoop详解(八):MapReduce深度分析
  7. java 冒泡排序的三种写法_冒泡排序的三种实现(Java)
  8. qq空间登陆 cookie_把这篇 Session、Cookie、Token看完,和面试官随便谈人生
  9. [转载]SIFT(尺度不变特征变换)算法小结
  10. Ora-19804: Cannot reclaim 45561856 bytes disk space from 8589934592 limit
  11. azure云数据库_配置Azure SQL数据库防火墙
  12. 择师论(怎么有效的向别人学习)
  13. hive中的lateral view的解析
  14. NTKO OFFICE文档控件技术资料(转载)
  15. 【深度优先搜索】网格类问题:牛客网:机器人的运动范围
  16. Vegas的新功能——触摸编辑
  17. linux(ubuntu) 搭建java程序运行环境
  18. 手把手教你制作R包(一)
  19. 视觉SLAM十四讲 第9讲 卡尔曼滤波
  20. 【HTML5】嵌入另一张HTML文档、通过插件嵌入内容、嵌入数字表现形式

热门文章

  1. Laravel 集成 JPush 极光推送指北
  2. 131、ThreadLocal (转载)
  3. 手把手教你看懂并理解Arduino PID控制库——调参改变
  4. H5前端性能测试快速入门
  5. C#的委托事件在winform窗体中实现传值备忘
  6. freebsd 编译核心
  7. 超级网管员原有QQ群己满,现增加新群
  8. C#正则表达式:移除文本中所有方括号和其中的内容
  9. Android的UI调优
  10. 4.Ext JS Ext.data.Store本地过滤