文| Bruce Lee(转载请注明出处)
微信公众号: BCH爱好者BruceLee
微博: BCH爱好者BruceLee
BCH从诞生之日起,就很明确的走链上扩容的路线。未来区块必然会变得越来越大,如何让区块在节点之间快速传播就成了热门的课题。BCH已经出现了多种区块压缩技术,而且一个比一个强大,本文盘点一下这些区块压缩的技术的进化历史。
【瘦区块Xthin Blocks - 10倍压缩】
这项技术是在BCH诞生之前,由Bitcoin Unlimited (简称BU)在2016年实现的,是币圈出现的第一种压缩技术。
#400152这个区块最早由BTCC矿池在中国国内挖出,并被Blockchain.Info于2016-02-26 16:46:31发现。但49秒钟后,才传输到德国的节点。然而在使用了支持瘦区块的BU客户端中,整个过程仅使用了不到1.5秒的时间,即完成了请求、接收、组装和发送的所有操作,使得邻近的BU节点能够迅速同步。 #400152这个区块的原始大小是956.21KB,而传输的瘦区块大小仅为92.64KB。即区块体积几乎减少了10倍。
大致原理是这样的:
当一笔交易被广播出去后,在很短的时间内,全网几乎所有节点都会收到这笔交易,并且暂时放在内存池里面。当矿工把这笔交易打包成区块,传播给其他节点时,其实相当于进行了重复传输。
而瘦区块技术就是把交易的TXID发送给其他节点,其他节点收到后,根据这个TXID在自己的内存池里面查询提取相应的交易,然后组合还原成区块。一笔普通交易有几百字节,而TXID只有几十字节,这样就实现了10倍的压缩。
值得一提的是,不久之后Bitcoin Core 开发组针对Xthin理念也提出一个概念叫Compact Block(致密区块),也是优化比特币区块传输效率的,其实就是Xthin的翻版,两者一模一样。
【石墨烯V1 – 100倍压缩】
该技术是一种利用集合调和的新的区块传播技术。该协议由石墨烯的发明者之一、马萨诸塞大学安姆斯特分校(UMass Amherst)的Brian Levine在斯坦福大学举办的2017比特币扩容大会活动中介绍。该项目由Levine、Pinar Ozisik、George Bissias、Amir Houmansadr以及著名的比特币开发者Gavin Andresen在马萨诸塞大学共同开发。
石墨烯白皮书中解释道:“石墨烯区块的大小只是其他相关方法(如致密区块和极瘦区块)中区块大小的很小一部分——例如,我们展示了17.5 KB的极瘦区块可以使用致密区块编码成10 KB,并使用石墨烯技术编码成2.6 KB。”
“在模拟中,我们发现石墨烯编码信息所用空间只是瘦区块空间的10%。我们使用了布隆过滤器(bloom filter)以及可逆式布鲁姆查找表(IBLT)的新颖交互式组合,为比特币P2P网络中的集合调和问题提供了一种高效的解决方案。”
上述所说的“布隆过滤器”和“可逆式布鲁姆查找表”过于专业,我用大白话解释一下石墨烯的原理:
瘦区块是把原始的交易信息压缩成只要传输TXID ,而石墨烯则是使用上面两个工具把TXID进一步大幅度压缩,这样就无需传输完整的TXID列表了,极大的减少了数据体积,可以达到100倍的扩容效果。
【Xthinner – 250倍压缩】
2018年9月,为了证明BCH网络CTOR系统的优势,开发者Toomim提出Xthinner。
Xthinner是一种新的块传播协议,它利用CTOR的优点优化了99.6%的区块空间,前提是区块中的交易已经被传播。每笔交易大约13比特(1.6字节)——Xthinner是容错的,用于处理交易双方内存池不同步的情况。
在测试模式中,toomim举例说明,如果一个区块中有125万笔交易,每笔交易大小为400字节,那么区块大小为500 MB,但xthinner可以将其压缩为1.9 MB的数据,或者说“减少99.618%的空间”,大约250倍的压缩率。
【石墨烯V2 – 1000倍压缩】
在石墨烯V1里面,使用的是老的TTOR排序方法(我昨天的文章写过),这种方法有无数种的排序可能性,所以石墨烯区块里面大多数空间其实都是用来记录交易的排序信息了。而石墨烯V2默认使用CTOR排序方法,这种方法只有唯一的一种排序信息,无需浪费空间来记录这些排序信息,因此石墨烯V2相对于V1又获得了极大的进步。
在测试中,石墨烯V2最高可以实现99.9%的压缩率,相当于1000倍的压缩。是迄今为止最牛逼的压缩技术。
结束语
毫不夸张的说,BCH的区块压缩技术是整个币圈里面最先进的。