通常情况下,摩尔定律是适用于比特币现金扩容的,作为比特币现金如何随着未来使用量的增加而扩容的论据。的确,过去晶体管的数量变化符合摩尔定律。但是,值得注意的是,当前单核的时钟频率(主频,指CPU的运行速度)没有增加——这是由于物理限制。相反,CPU制造商增加了并行处理的内核数量。

这意味着为了使比特币现金的扩容符合摩尔定律,区块构造和验证必须使用额外的CPU内核。为了有效地使用额外的内核,CPU内核使用的数据必须是局部处理的。组织数据用于局部处理的过程称为分片。

然而,比特币现金目前使用的数据结构阻止了数据的局部化。通过规范化(canonicalization)来改变哈希树计算的顺序,可以对数据进行分片。对于一个包含通过散列按字典顺序排列的4个交易的区块(其中TX_A HASH <TX_B HASH,从左到右类推),新的哈希树将按如下过程计算。要注意的是,哈希树的重新排序仍然允许梅克尔证明(Merkle proof)具有与原排序时相同的安全性。

图1 哈希树计算

如果我们可以将交易排序到规范交易排序(canonical ordering of transactions)的范围内,我们可以使用两个独立的进程计算子树B和子树C的哈希值。这些计算的结果可以返回到集合器中以产生子树A。而子树A又可以与coinbase hash组合以产生区块模板的有效哈希树。

目前,必须根据按拓扑顺序排列的交易列表来计算区块的哈希树。但是,分片必须基于一致的范围来维护数据。由于数据在分片系统中的可能位置与子树哈希必须要计算的数据集之间不匹配,因此各个分片无法在没有大量同步的情况下预先计算子树哈希。为了解决这个问题,必须要对哈希树进行组织,从而让哈希树能够以多个子树哈希集合的方式进行计算,而子树哈希可以由单个分片计算。

规范化交易顺序的另一个有用属性是,mempool acceptance(接受进入等待确认的交易集合)也可以在多个进程间进行分片。这可以通过在多个mempool处理器前面放置多个交易“路由器”来完成。

在这种架构中,路由器1和路由器2可以在相同的范围内向先前商定的mempool接收器发送交易。使用类似的方法,mempool接受器可以相互查询,也能查询UTXO数据库,以确保父交易(对应子交易,上一级的交易)存在且可用。

图2 mempool acceptance并行构架 随着mempool在多个进程间被分片,API请求处理器可以查询各个哈希子树的哈希值。在图(1)中,我们可以向子树B和子树C发送请求。然后,我们可以继续将它们集合到哈希树中。

为了构建具有上述架构的节点,必须首先在区块链中使用适当的数据结构。在适用于分片的数据结构建立之前,不能轻易编写软件来使用分片。规范化交易排序应在创建任何此类软件之前进行。

这就是Bitcoin ABC当前提倡这些变化的原因。我们必须为未来的需求做好准备,这意味着我们需要开始工作,让节点能够很好地处理极大的区块——这不是一项容易的任务,需要数年时间才能完成。

有些人要求ABC制定这种优化如何运行的性能基准。如上所述,这样的基准是不可能制定的,因为必须先有分片的软件(现在没有)。由于这将花费多年时间,因此无法制定基准——必须事先进行真正的工程设计才能进行规划。工程工作的概况已经在上文给出。

为了支持平滑的协议升级,当前版本必须能够产生和验证两种类型的区块——结果则是区块模板的生成更慢,对验证产生一些小的影响。实际上,由于需要在初始的拓扑排序后重新对交易排序,因此当前版本的Bitcoin-ABC v0.18.0在创建区块模板时会稍微慢一些。这是有意的,将在CTO之后重构代码并最终能够激活哈希树时解决。

如果我们希望比特币现金可以根据摩尔定律进行扩容,那么可能不会选择分片。单个CPU的速度不会明显加快。专用硬件不能单独解决这个问题。 协议必须便于具备水平扩容能力的节点软件的实施,因为垂直扩容在区块大小超过大约1GB后就行不通了。 而且,改变要发生在比特币现金的lay 1中,从而让矿工可以在全局范围内收取费用,因为必须要维持比特币现金的激励。

BCH扩容的摩尔定律——为什么BCH目前不选择分片?相关推荐

  1. BCH专属“谷歌地图”凸显BCH魅力

    2019独角兽企业重金招聘Python工程师标准>>> 在我们的日常生活中,地图作为一种工具给我们带来了很多便利.尤其是类似于谷歌地图.百度地图这些电子地图不仅仅有地图的功能,能为我 ...

  2. Bitsocket——BCH实时API,为BCH带来无限可能

    Unwriter是BCH社区的一个程序员,他开发了很多基于BCH的应用,例如Chainfeed,一个名为@_Opreturn的Twitter机器人,Read.cash,Bitdb.network等等. ...

  3. bch纠错码 码长8_密码学BCH纠错编码算法

    1 日止 实验目的 : 通过实验熟练掌握 BCH 纠错编码算法, 学会 BCH 纠错编码算法程序设计, 提高 C++ 程序设计能 力 . 实验要求 : 开发环境要求 : 软件环境: windows98 ...

  4. 越来越多BCH全节点客户端对BCH意味着什么?

    最近,BCH社区继推出使用GO语言编写的哥白尼项目的全节点客户端之外,又推出了两个使用GO语言编写的全节点客户端--Gocoin-cash和BCHD. Gocoin-cash是由counterpart ...

  5. BCH粉必转 | 围绕BCH建立的相关项目和应用列表汇总

    近期,Bitcoin.com网站整理了一份围绕BCH建立的相关项目和应用列表汇总,列表共分为9个方面,分别是:工具和服务.游戏.开发.钱包.小费和众筹.支付网关.商家和购物.赚取BCH.社交网络,每个 ...

  6. 【BCH码1】系统BCH码编码原理及MATLAB实现(不使用MATLAB库函数)

    关注公号[逆向通信猿]更精彩!!! BCH编码原理 设一个 ( n , k ) (n,k) (n,k)循环码的生成多项式为 g

  7. Bitpay宣布支持BCH付款,助推BCH支付布局

    Bitpay博客在本周三宣布,Bitpay商家现在可以接受BCH付款,称这将是Bitpay推动区块链支付的另一项重要推进,公司正不断扩大商家使用Bitpay进行支付的用户体验. Bitpay是一款支付 ...

  8. 后摩尔定律时代的芯片新选择!

    来源:gizmodo 摘要:很长一段时间以来,摩尔定律和它的最终结局一直就像房间里的大象,不容忽视.英特尔联合创始人戈登·摩尔在1965年的一篇论文中预测,芯片中的晶体管数量每年将翻一番. 更多的晶体 ...

  9. 前core成员迈克·赫恩:BCH社区与2014年的BTC社区非常相似

    前core成员迈克·赫恩:BCH社区与2014年的BTC社区非常相似 迈克·赫恩(MikeHearn)曾经是core的开发者,也是比特币早期参与者,比特币社区的知名人物,同时也是第一个开发Bitcoi ...

最新文章

  1. 【端口号和服务漫谈】
  2. 15数码 java,15数码问题
  3. 机房系统(二)——【数据设定 注册 】
  4. java里面自行车的属性_11、Java基础知识
  5. Axure在SVN共享项目如何获取历史文件
  6. oracle 图像包,完美简单详细,图形安装Oracle11g(Oracle Linux系统)
  7. 面对锁等待难题,数仓如何实现问题的秒级定位和分析
  8. 台积电5nm来了!谁会是第一个吃螃蟹的人
  9. 深浅拷贝的使用场景分析
  10. 采用单/双缓冲区需要花费的时间
  11. oracle索引实验报告,Oracle之索引(Index)实例讲解
  12. C#中的多线程 - 多线程的使用 z
  13. 全国750所高校(50所985/211)501个专业的毕业生在同一家公司搞事情
  14. 今日芯声 | 连发五个“感恩”,余承东庆祝与鸿蒙OS同一天生日
  15. Altium Designer 详细入门教程-原理图绘画-AD2016
  16. uri和url的区别与联系(一看就理解)
  17. 手机通信录扫名片识别内容技术SDK
  18. Inference与predicting的区别
  19. php人人商城定时任务,人人商城异步操作菜单示例
  20. DAMS | 突破运维瓶颈,监控告警、混合CMDB、DevOps转型一网打尽!

热门文章

  1. Router通过DHCP上网配置方法
  2. 第七章 Shell文本处理三剑客之sed
  3. 游戏平台运维自动化扩展之故障自愈
  4. Horizon6.2.0批量部署XP虚拟机
  5. vim查找/替换字符串
  6. linux - command - iftop
  7. linux的一些机制Signal, Fork,
  8. 如何1秒内向Sql Server插入几万条数据
  9. 给history命令加上执行用户和时间
  10. 个人代码库の设置窗体效果AnimateWindow