作者:Jonald Fyookball 文章来源:闪电HSL

规范交易排序(CTOR)是一项计划在2018年11月比特币现金协议升级时做出的更改。比特币现金社区对这项更改进行了大量的讨论。 我之前发表过一篇文章简要说明过这项更改是什么。 尽管那篇文章解答了部分读者的疑问,并说服了他们CTOR并不危险,但其他人仍有微词并想知道这项更改是不是必要的。 许多人提出的问题是:“我们为什么要规范交易排序?我们为什么现在要规范排序?有没有其他同样可以完成规范交易排序的方案?” 我试图在本文中回答这些问题。 CTOR是一个全面的技术路线图的组成部分,旨在推动比特币现金成为全球性的点对点电子现金。更具体来说,CTOR的主要好处是可以提高区块传播的速度。同时还附带一些小的好处。 遗憾的是,很多关于CTOR的技术讨论都是在谈区块验证而不是区块传播,这让整个争论变得非常的复杂和混乱。

回顾4种不同的交易排序方案 让我们首先回顾一下4种不同的比特币现金交易排序方案。

1.TTOR 拓扑交易排序规则 这是比特币现金当前的共识规则。交易有一个部分排序规则。交易可以任意排序但是必须要进行拓扑排序,即母交易要放在子交易的前面。 2.ATOR 任意交易排序规则 这个排序规则将会移除现在的TTOR,允许交易自由排序。这个排序规则曾被当作是CTOR排序规则的替代方案进行讨论过,也是CTOR的前身。 3. GTOR加文(Gavin)的交易排序规则 这是2014年加文·安德鲁森(Gavin Andresen)提出来的。本质上就是一种规范交易排序,但是这个排序并不是强制执行的(非共识层的)且还会保留当前的TTOR规则。 4. CTOR 规范交易排序规则 这是本文提到的方案。“规范”指的是规定只允许一种排序规则。这种方案是“词典式(lexical)”或是“字典式(lexicographic)”,也就是说,除了coinbase交易外,区块里的所有交易都要按照字典顺序排序。有些人在讨论时将其称之为LTOR。 为了简明,即使从某个点来看更符合词典编撰的属性,下文也统一把这个方案称为CTOR。 区块传播 让我们从头开始说起。2014年,加文提出一个新的区块传播方式,他的想法是规范区块里的交易排序。他提案里的“秘诀”是让节点通过使用可逆的布隆查找表(IBLT) 来相互沟通,以让节点识别内存池里的交易集和其他节点之间的差别。 这个想法后来成为现在著名的石墨烯(Graphene)协议的基础。 当前所有的BCH实现方案都没有采用加文最初的排序方案,但是说明这个想法的历史根源很重要,因为CTOR目前最明显的应用就是有助于更好地实现石墨烯(Graphene)。 关于为什么要有独特的排序,一个更直观的解释就是,可以加快传播速度,节省带宽,你只需要广播遗漏的交易,不用沟通区块里已排好序的交易。规范排序有助于其他区块链传播方案的实现,例如极瘦区块(Xthin),它的好处并不仅限于石墨烯(Graphene)。 有一名开发者发表了一篇评论文章表示,CTOR对于改善区块传播并没有太大用处,因为矿工可以根据当前的规则,选择对自己的交易进行重新排序。但是,并没有解释这样如何提高效率,只给了一个帖子的链接,帖子称:“……剩下的交易完全可以随意进行重新排序。例如,按照txid进行排序……” 换句话说,不规范排序的话,矿工就可以自由选择一种规范排序? 如果他的点在于自由选择,我们稍后会再讨论这个问题。 还值得注意的是,这篇评论文章的作者(Awemany)发表文章和参加曼谷矿工会议后,改变了他对CTOR的观点……他强调,任何一项提案都不值得分裂BCH。 区块验证 CTOR方案的一个好处是简化并行区块验证。这是移除拓扑交易排序规则的结果。但是,并行验证并不是一个。即使按照当前的拓扑排序的方案,也可以并行验证。 关于区块验证的整个争论有点像是(并非出于本意的)障眼法,因为区块传播的瓶颈要比区块验证大得多。 我们重新回顾下这个话题的主要论点可能会有助于读者理解。最初辩论的过程是这样的: 反对CTOR的人认为,(至少在一个简单实现里)节点根据TTOR可以更快地验证交易,因为每笔交易的前置项都是已经处理过的。而CTOR支持者则认为,拓扑的限制是一个需要验证的额外负担(换句话说,你不能简单地把区块里的交易进行分区,然后并行处理。) Jonathan Toomim接着发布了一个算法,演示如何通过先处理output,再处理input(例如OTI),使用现行的拓扑排序完成并行验证。 OTI的方法可以适用于TTOR和CTOR。如果是TTOR,需要在第一个循环生成每笔交易的定位图,第二个循环要确保每一笔交易只发比它自身更早的币。这里必须要进行多个循环,这使得TTOR在简单实现里的优势变成一个有争议的问题。 总的来说,TTOR和CTOR都可以并行验证。最初的测试表现大致相同。但是需要重申的是,这是次要的问题,因为CTOR显然有助于解决区块传播这个更重要的瓶颈问题。 CTOR的其他好处 CTOR还有其他一些好处。UTXO的处理也许会得到改善,因为按次序插入可以利用树结构让UTXO缓存更高效,同时提高UTXO证明(UTXO commitments)的可能性。 SPV/轻钱包可以从不包含某笔交易的证明获得好处。CTOR也可以允许使用梅克尔树结构和验证来实现路由分片。 不过第二大好处应该是简化代码。让交易自由排序,就必须要支持所有排序, 会让代码变得更加复杂。相比之下,按照字典顺序排序,区块结构每次都是相同的,测试会变得更加简单。 TTOR vs ATOR vs CTOR 有些关于区块验证的论点并不是专门针对CTOR的;更像是一个TTOR vs ATOR的问题。换句话说,我们是否应该保留这种拓扑交易排序规则,还是该移除? 有些专家已经指出,从本质上来说,交易排序并没有什么内在价值。我对此的理解是,虽然拓扑排序处理从属项是事实,但最开始创建这种排序是需要(时间)成本的。大部分开发者并不反对移除TTOR。甚至nChain那些领导开发者也是这么认为的。 另外,拓扑排序规则被移除,对于规范排序来说是一个很小的变化。这是CTOR方案背后的原则之一。在ABC实现里,在ATOR的顶部添加CTOR就是20行代码的事。 反对“中央计划” 反对CTOR的其中一个观点(似乎不成立)是,矿工应该自由选择如何排序,他们应该“竞争”用最好的方式构建区块,强迫他们执行一项命令就等于是“中央计划”。 我是所有形式的自由市场的坚定支持者。但是,矿工应该在交易排序上竞争这个想法,与在交易格式、ECDSA曲线参数,或是许多协议细节上竞争相比没有什么差别。 协议的特定部分就相当于基础设施里的“管道”。它可能会对系统产生反作用,因为所有节点也必须支持一个低效的排序方式。 反对“优化优先”原则 有些开发者(尤其是Tom Zander)表示希望继续用拓扑排序优化代码。他们不想升级或改进交易排序,因为他们认为应该探索和穷尽当前方案的所有可能性。 协议的开发不应该仅仅是因为某个开发者想要继续按照特定轨道进行探索这个理由而停滞不前。 尽管优化现行代码可能也是一种方法,但这未必是最好的方法。我们最终必须选择一条明确的道路,即使这意味着要放弃其他的道路。 更重要的是,这种方法优先考虑在选择正确数据结构上进行优化,这与计算机编程的最佳实践背道而驰的。18 发展路线图 Bitcoin ABC发布了一个技术路线图,详述了如何改进协议,以实现我们的目标,让BCH更好地扩容、拥有更好的实用性和可扩展性。 CTOR在这张路线图上是一个很小但很重要的组成部分。 尽管比特币现金社区的规模要比Bitcoin ABC大得多,但应该指出的是,自2017年11月召开多方会议后,ABC的发展路线图与其他各个团队发表的路线图声明是一致的。实际上,规范交易排序方案与nChain在2017年12月提出的路线图完全一样的。20
从整体出发的方法也许是最好的 我们不应该把CTOR当作一个独立的协议更改来进行评估,而是当作Bitcoin ABC作先锋计划周详的技术方案里一个不可缺少的组成部分。 BCH协议扩容不是只有一种方法,但采用一种从整体出发的合理方案更可行,而不是采用基于相互孤立的更改和“hacky”fixes的方案。 例如,我们可以使用GTOR得到规范交易排序所带来的一些好处,但是它需要在重建石墨烯区块的过程中进行一次拓扑排序,这样会变得更加复杂。 还可以选择实现OTI算法,在使用拓扑排序的情况下进行并行验证,但是如果CTOR就能做到这点,提供切实的好处并简化代码,那么为什么要采取这种迂回的方式呢?

CTOR是一项安全且经过验证的协议更改吗? 正如在“ELI5 article”文中解释的,从根本上来说,使用不同的交易排序并不是一项重大改变。 虽然进行更多的测试和基准测试是好事,但是建立正确的数据结构,我们才能着手下一步的开发工作。几个团队花数个月的时间在不保证以后还会存在的协议更改基础上进行开发工作,这是不切实际的。 大部协议更改都要在风险与回报之间做取舍。我曾看到过一条误导人的评论,更改应该在测试网上经过3-5年的验证才能进行部署。但是,过度谨慎,超出了合理的范围,想要以此来降低风险,这并不是个明智的做法。 我们正在与传统的支付方案以及其他的加密货币在竞争,我们还在与自身竞争,要在区块奖励减半之前扩大交易量。我们需要深思熟虑预测可能带来的风险,但是这也可能会让我们停滞不前。 CTOR添加到路线图上已经有近1年的时间,并且多年来已经进行过大量的讨论。 作为一个对现行系统的挑战者,我们必须要优于这个系统一个数量级。我们必须要尽早为扩容建立技术基础,这样企业和应用才会有信心选择BCH这个平台。 最后,BCH压力测试期间收集到的数据里可以找到确凿的证据,证明石墨烯(Graphene)将极大从CTOR受益。 结论 CTOR提案引发了大量的争论、讨论和混乱。重新审视之后,CTOR看起来是一项明智的更改,有明显的好处,没有明显的缺陷。它是经过规划的BCH扩容发展路线图的组成部分。矿工、开发者、用户以及企业都应该支持将其加入到2018年11月进行的协议升级。

论CTOR添加到11月BCH协议升级相关推荐

  1. 11月15日BCH协议升级提案又双叒啜来了,请查收!

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

  2. Bitcoin ABC发布11月BCH升级要点,快看做了哪些改变?

    比特币现金在11月份即将到来的升级一直都是大家关注的重点.针对此次升级的方向,BCH社区也进行过多次的讨论.上个月,比特币现金的主要开发团队Bitcoin ABC针对2018年11月15日即将到来的升 ...

  3. 11月百度凤巢升级后的变化

    11月份百度凤巢升级,此次升级对于做搜索引擎广告的人来说,变化比较大!现在我和大家分享11月百度凤巢升级后的变化! 变化主要有以下几个方面: 1. 账户内部分之前是1星.2星的关键词调整为3星,原先3 ...

  4. BCH协议升级倒计时——超过68%的BCH全节点已支持升级

    在11月15日下午12点后,比特币现金(BCH)将执行新规则协议的网络升级.锁定升级后,下一个区块将在脚本中强制执行MINIMALDATA.操作码OP_Checkmultisig和OP_Checkmu ...

  5. 11月第2周要闻回顾:漏洞修补缓慢遭质疑 反恶软行业标准推出

    本文同时发布在:[url]http://netsecurity.51cto.com/art/200811/98087.htm[/url] 本周(081110至081116)安全行业热闹不断.微软本月补 ...

  6. 今年天猫双11从光棍节变成双节棍:可买4天,11月1日开买

    10月20日,天猫正式发布新一代「天猫双11全球狂欢季」,代号:双节棍. 此次升级最大的变化是:不只在11月11日一天爆发,消费者可分两波购买,11月1日-3日是第一波,11月11日为第二波. 这意味 ...

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

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

  8. BCH升级日期将至,社区组织开始为11月“硬分叉”做准备

    随着比特币现金计划升级的日期临近,其相关机构正在为硬分叉做准备.比如Coin Dance这样的数据网站已经添加了功能支持.升级投票和公众意见的统计.与此同时,由Nchain支持的SV-Pool已正式宣 ...

  9. BCH应无惧11月,奋力求发展

    最近伴随着BCH币价的上涨,BCH的生态也迎来了一波小的提升.不仅获得了交易所.商家企业的很多支持,BCH社区中也推出了一些新的客户端和应用程序.这种局面是BCH支持者们最希望看到的.BCH似乎回到了 ...

最新文章

  1. 人工智能呼唤社会科学家
  2. 21位花朵数 C语言(执行时间小于16s)
  3. 《中国人工智能学会通讯》——2.31 跨环境抽象(Abstracting Across Environments)
  4. 刷新,开启云信下一个 5 年:专注做技术长跑里,最重要的事
  5. Android热更新开源项目Tinker集成实践总结
  6. C++基础与深度解析第三章:数组、vector与字符串
  7. word2007文档无法编辑怎么办
  8. centos系统mysql连接workbench
  9. 分享几个在记账本中快速删除收支明细的技巧
  10. 《我是个怪圈》读书笔记
  11. CocosCreator 微信小游戏、Android 和 iOS 使用 protobuf
  12. Dubbo2.6.5入门——简单的HelloWorld
  13. 递推算法—逆推案例(大学生存款)(C语言)
  14. 手工彻底清除各种顽固性 Trojan Horse ***的方法
  15. 2022年计算机视觉产业链全景图谱,一文读懂计算机视觉产业链全局
  16. vue 登录界面无法跳转问题
  17. RS232转Profinet网关的常规数据
  18. 百分数转bigd_[转]BigDecimal使用(整理)
  19. 让看代码成为一种享受! 使用Carbon生成漂亮的代码图片
  20. 51单片机的延时计算

热门文章

  1. 华为荣耀手表GS3 评测怎么样
  2. 全国计算机等级考试怎么分级,【海贝推荐】全国计算机等级考试分级介绍
  3. 1907 Problem A 吃糖果
  4. 爬虫技术:携程爬虫阳光问政数据
  5. 搭建智能语音交互系统重要点那些
  6. java语言学术报告厅,文理学院举办java编程语言公开课
  7. c语言逗女生小程序代码,求一个示爱的小程序 C语言
  8. Redis_数据类型(常用)
  9. 关于给hexo博客增加视频vlog页面(主要引入哔哩哔哩视频)
  10. android 画布心形,用CANVAS实现的心形动画效果