博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CTOR有助于BCH石墨烯技术更上一层楼
阅读量:5771 次
发布时间:2019-06-18

本文共 2345 字,大约阅读时间需要 7 分钟。

众所周知,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未来的扩容奠定基础。

转载地址:http://chaux.baihongyu.com/

你可能感兴趣的文章
使用Sonar管理代码质量(二)–Sonar工作区
查看>>
continue break
查看>>
GE_OG_CALC_COLUMN_EMPTY
查看>>
C++的头文件处理
查看>>
poj 2763(LCA + dfs序 +树状数组)
查看>>
计算机学院大学生程序设计竞赛(2015’12) 1006 01 Matrix
查看>>
HDU 5698 瞬间移动
查看>>
用Ant实现Java项目的自动构建和部署
查看>>
2019拼多多前端笔试
查看>>
获取input file 选中的图片,并在一个div的img里面赋值src实现预览
查看>>
Hibernate抽取BaseDao
查看>>
typedef BOOL(WINAPI *MYFUNC) (HWND,COLORREF,BYTE,DWORD);语句的理解
查看>>
cocos2dx继承结构图
查看>>
jsp 特殊标签
查看>>
[BZOJ] 1012 [JSOI2008]最大数maxnumber
查看>>
使用VMware安装CentOS
查看>>
gauss消元
查看>>
天龙八部源码描述
查看>>
多线程-ReentrantLock
查看>>
数据库架构
查看>>