微信截图_20190410093249.png
BCH作为大区块的代表,坚定的走在扩容的路上。不过BCH并非是单纯的增加区块大小,需要配合一些技术的改进,如UTXO证明、石墨烯等。
在BCH扩容的过程中,随着区块容量的增加也不得不考虑区块传播速度和区块验证速度的问题。为了更好的解决区块传播的瓶颈,BCH社区中提出了很多方案,如致密区块(Compact Block)、极瘦区块(Xthin Block)、Bitcoin Unlimited开发团队一直在开发的石墨烯(Graphene)以及BCH开发者Jonathan Toomim推出的Xthinner项目。
在前段时间,关于BCH的区块传播的方案实行已经取得了新进展。BCH的全节点BCHD已经将致密区块(Compact Block)集成到客户端中。石墨烯技术在应用CTOR后也获得了很大的突破。
昨天,关于BCH的区块传播解决方案Xthinner更是传来好消息:已经应用于BCH主网。
微信截图_20190410093257.png
矿工兼开发者Jonathan Toomim在reddit论坛发布帖子宣布:“依靠CTOR的力量,Xthinner现在已经适用于BCH主网的区块”。BCH块传播协议旨在提供比以前更好的压缩率。在最近的测试中,Toomim声称使用Xthinner方案性能最佳的区块获得了99.54%的压缩。
大约三个月前,Toomim透露了自己对Xthinner项目的研究进展。他表示,只要区块中的所有交易都是以前被传输过的,Xthinner利用CTOR将能够为区块提供99.6%左右的压缩。他还进一步解释道:“每个交易大约需要13位(1.6字节)- Xthinner的设计是容错的,能够很好的处理发送方和接收方的mempool不能很好同步从而导致性能下降的情况。它可以通过一次或两次(很少)的额外通信往返,检测和纠正丢失的交易或其他解码错误。这一系列言论也将Xthinner推到用户面前,成为大家热议的话题。
而此时的Toomim却在帖子中说明:“几个小时前,我修复了我的Xthinner代码中的最后一个showstopping bug,并让它在主网上的两个ABC完整节点之间运行。一个节点作为通往世界其他地方的桥梁,接收Compact Blocks 并传输Xthinner。另一个连接到除此桥梁之外的其他节点。”
根据Toomim的帖子,Xthinner发送的第一个区块是#577,310。节点在该区块刚刚发布时启动,在区块中共有2865笔交易,它在mempool中仅传输了24笔交易。尽管如此,它也是有效的。从那时起,Xthinner就开始应用于每个区块,没有任何故障,并且没有区块超过1.5次网络往返。在获取丢失的交易之后,大多数非小块已经获得了大约99.0%的压缩,或者在获取之前就获得了大约99.3%的压缩。相比之下,Compact Blocks通常可以获得约96-97%的压缩率。截止目前,有8个区块在压缩传播的过程没有丢失任何交易(0.5次往返),有24个区块需要一次往返获取丢失的交易。
Toomim表示将很快会发布一个alpha代码,以便人们可以利用它。不过,代码仍然存在一些已知的错误和漏洞,所以不要在任何想要继续运行的东西上运行它。在代码质量足以与Bitcoin ABC节点合并之前,还有很多工作要做,所以不要太兴奋。
到目前为止,性能最佳的区块是一个841 tx,363 kB的区块,以1660字节传输。这是99.54%压缩或15.79位/ tx。不可否认的是,这也是迄今为止最大的区块之一,距离前一个区块已经过去了23分钟。
较大的区块可以获得更好的压缩,因为header、coinbase和校验和规范占整体的比例较小。有时也因为Xthinner算法可以更一致地省略TXID的初始字节。
Xthinner不影响对整个节点的CPU,存储或RAM的要求,并且对总网络流量的影响非常小,这主要受到tx公告和上传的历史块的影响。Xthinner的压缩仅影响块传播速度。块传播是对性能和延迟最敏感的代码路径,用于在扩容时保持比特币去中心化,并且长期以来一直是一个痛点,因此这种优化是值得的。
Xthinner 的进步也证明了BCH开发者的执着。从方案的提出到开发再到测试、最终到上线,每一步都是他们不懈努力的结果。BCH的功能的完善与应用的繁荣,离不开他们的辛勤付出。BCH在他们的支持下也将越走越远!