CTOR有助于BCH石墨烯技术更上一层楼

众所周知,BCH是区块扩容一个很好的例子。为了将这种优势传承下去,BCH一直都主张会随着市场需求而不断进行扩容。但是扩容的道路也并非是一帆风顺的,会遇到很多瓶颈,块传播的速度就是其中之一。为了解决这个问题,石墨烯(Graphene),致密区块(Compact Block)、极瘦区块(Xthin Block)等技术都相继被推出。

目前,石墨烯技术主要由Bitcoin Unlimited 团队在做开发。“石墨烯(Graphene)”协议是一种利用布隆过滤器(bloom filter)以及可逆式布鲁姆查找表(IBLT)降低带宽将区块传播到全节点的方法。这一方法最初由Gavin Andresen在2014年提出。据称,石墨烯技术比致密区块和极瘦区块的效率要高出10倍。

石墨烯技术最大的革新莫过于对BCH网络带宽消耗的减少。在当前,简单支付验证(SPV)钱包已经使用了布隆过滤器技术,这一基于概率的数据安排可以说在空间上极为高效,尽管,IBLT比布隆过滤器要复杂一些,但是也属于集合调和数据结构。由于结合了这两种方法,石墨烯技术不会发送交易ID列表,而是以如今使用的现行区块传播协议的1/10携带小布隆过滤器和IBLT。所以说,石墨烯技术比其他任何替代性传播技术都更胜一筹。举例来说,我们可以将17.5 KB的极瘦区块使用致密区块编码成10 KB,并使用石墨烯技术编码成2.6 KB。也就是说,石墨烯编码信息所用空间只是紧凑区块空间的10%,石墨烯将是解决块传播的一种非常高效的解决方案。

不幸的是,核心石墨烯机制并不提供排序信息,因此在目前TTOR排序机制下,由于排列顺序有很多种可能,所有的排序信息都会被添加进去。对于大型区块而言,这种排序信息将构成了石墨烯信息的主体。根据压力测试时的数据进行分析得到,石墨烯区块的平均大小为43KB,而排序就用了37KB,占据了数据信息的86%。虽然现在看来,影响并不是很大,但是随着区块大小的增加,这将会使得块传播的速度变得缓慢。

采用CTOR将可以轻而易举的解决这些问题。因为CTOR是通过交易ID进行排序的,只有一种排序,不需要增添额外排序信息,将能够最大程度的对区块进行压缩,提高区块传播的速度。而且据开发者Jonathan Toomim分析,使用CTOR能够获得700倍的压缩,而没有CTOR则只能实现100倍的压缩。

不过也有人提出没有必要非要使用CTOR来帮助石墨烯技术,可以在TTOR的基础上缩小排序信息的大小,矿工们还可选择其他的排序方式,例如按照规范排序(Gavin's order)排列交易。

Gavin's order是Gavin Andresen在提出“块传播”提案中提到的。为了提高块传播的速度,首先要做的就是将交易规范的排序,不过这个排序并不是强制执行的(非共识层的)而且还会保留当前的TTOR规则。

Gavin的交易排序规则:

1、获取两个交易的txid。

2、使用txid执行哈希表(或树)查找以获取指向交易本身的指针。

3、取消引用指针以获取实际交易。

4、获取每个交易的vin指针(vin是输入的向量)。

5、遍历每个vins以找到每个交易中具有最小(prevout_txid,prevout_index)对。如果两个输入花费来自同一交易的输出,则该关系将仅由该对的prevout_index部分打断,这将迫使每个输入进行最多5个64位比较。

6、比较在步骤5中找到的最佳(prevout_txid,prevout_index)对,以查看两个交易中总体上来看哪个是最佳的。

而CTOR排序只需:

1、获取两个交易的txid。

2、比较64位块中的两个256位txid,从最重要的单词开始。第一个块通常会决定顺序,因此这个步骤通常只进行一个64位比较。

相比之下,CTOR实现起来更加简单。因为Gavin的排序需要检查每笔交易的内容,这意味着任何需要检查或生成交易顺序的软件(例如某些池软件,getblocktemplate,Xthin,Graphene)都需要完整的交易内容,而不仅仅是txids。对于getblocktemplate和块传播算法,这意味着此代码可能需要锁定mempool.cs,这会阻止节点在运行GBT / Xthin / Graphene代码时验证和接受新交易到mempool。

显然,基于Gavin顺序的排序将比CTOR慢。首先,CTOR命令的唯一获取对象是一个小的txid数组。这些内存访问是可预取的和可流水线的,通常适合于L2或L3缓存。(一个Xeon E7-8890v4 CPU有60mb的L3缓存,这对于一个750MB的区块是足够的)。如果预取有效,每个内存访问应该占用0.8 ns,如果不行,则占用20 ns,但L3缓存会捕获它,否则占用85 ns。对于4 GHz的CPU, 4个64位的比较本身大约需要1 ns。另一方面,Gavin排序需要更多的内存操作。对于std::unordered_map, hashtable查找大约需要300 ns。两个指针中的一个添加另外一个都需要90ns。这些操作不能流水线操作或可预取操作,因此它们会使CPU停顿。总的来说,Gavin排序在分拣过程中每个比较要花费380 ns以上。最有可能的结果是Gavin排序会比CTOR慢20倍。

总之,现阶段来说,CTOR是最有利于石墨烯技术的排序方式。经过CTOR改良后的石墨烯将变得更优,能最大限度的实现节点间信息的快速传播。除此之外,CTOR不仅仅能对石墨烯技术有利,对于极瘦区块(Xthin)等方案都有非常大的改善作用。CTOR将会在提高块传播速度上发挥出极大的优势,为BCH未来的扩容奠定基础。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值