【從10倍到1000倍】BCH區塊壓縮技術進化史

【從10倍到1000倍】BCH區塊壓縮技術進化史

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的區塊壓縮技術是整個幣圈裡面最先進的。


分享到:


相關文章: