CTOR(規(guī)范交易排序)是BCH在2018年11月硬分叉升級的一項內容。最初因為這項內容引發(fā)了廣泛的討論,提到CTOR必須提到石墨烯技術(Graphene協議),支持者認為CTOR能夠有效的配合石墨烯技術壓縮區(qū)塊大小,優(yōu)化區(qū)塊傳播,有明顯的優(yōu)勢,沒有明顯的缺點。反對者則認為現有的TTOR(拓撲交易排序)穩(wěn)定運行多年,更加安全,沒有什么明顯的劣勢,而CTOR則會帶來未知風險,且沒有明顯的作用。CTOR的爭鋒不斷升級,甚至后來爆發(fā)的算力戰(zhàn)也有關于CTOR的爭鋒,不過最終CTOR還是成功應用在BCH上。如今已將近半年,石墨烯怎么樣了?CTOR究竟有沒有作用呢?
礦工之痛
礦工希望能夠提升區(qū)塊傳播到各個節(jié)點的效率,每一秒的延遲都會降低他們獲得區(qū)塊獎勵和手續(xù)費的幾率。而每一個打包區(qū)塊里的交易數量都會增加區(qū)塊體積,區(qū)塊越大則占用帶寬越多,則傳播效率越低,為了獲得區(qū)塊獎勵,礦工不得不限制區(qū)塊里的交易數量,或者收取更高的交易費來彌補他們降低的成功率。不得不說這是一種極其低效的行為,所以長久以來很多研究都就“如何在盡可能小的寬帶條件下實現區(qū)塊傳播”這一課題展開了深入的探討。簡而言之,占用的寬帶越小,則傳播的速率就越快。隨后致密區(qū)塊、極瘦區(qū)塊都相繼被提出,但目前為止,效果最好也最被看好的是石墨烯技術,是公認的寬帶占用最少的方案來完成區(qū)塊傳播。
石墨烯和CTOR運行原理
當用戶進行交易時,包含這筆交易的信息的區(qū)塊會在全網所有的節(jié)點進行傳播,最終同步至所有節(jié)點。在這一過程中,所有未經處理的交易都會存儲在內存當中并被統(tǒng)稱為mempool。通常情況下,該交易會在10分鐘內被寫入在一個區(qū)塊中,在這種情況下,該交易被視為有效并且已經由網絡處理。
如果一個節(jié)點需要傳播一個區(qū)塊上的所有交易,那么它將有如下選擇:一是傳遞包含所有交易的整個區(qū)塊,這也是過去比特幣一直所采用的方法;二是為區(qū)塊中的所有交易及其次序傳遞標識符,以便接收到標識符的節(jié)點能夠基于mempool中已有的交易來構建區(qū)塊。顯然易見的是,第二種方式更有效率,石墨烯正是借助這種方式來減少區(qū)塊傳播所需的帶寬。
使用石墨烯技術還原新區(qū)塊的節(jié)點往往會構建兩個數據結構:首先,它會構造一個包含區(qū)塊中的所有交易的布隆過濾器;其次,它構建包含區(qū)塊中的所有交易的IBLT(即可逆的布隆查找表)。隨后,這些不附帶整個節(jié)點的數據結構都會被發(fā)送到各個節(jié)點上。接收這些數據結構的節(jié)點將通過布隆過濾器傳遞mempool中的所有交易,從而提供區(qū)塊中所有交易的列表。然而,由于布隆過濾器可能存在一定的誤報率,因此列表中的交易可能會多于實際數量,也可能會遺漏mempool中的交易。考慮到這一隱患,接收數據結構的節(jié)點將會從IBLT中解壓縮待處理的交易,從而識別任何誤報或遺漏的交易。最后,接收數據結構的節(jié)點還會在必要的情況下向其它節(jié)點查詢遺漏的交易。
通過Graphene協議的這兩個數據結構足以恢復區(qū)塊中的所有交易信息,那么,接下來的步驟就是將還原的交易回歸到正確的順序了。第一個版本的Graphene協議會通過布隆過濾器和IBLT來傳遞有關順序的交易信息。雖然這些信息占用的寬帶并不大,但還是會隨著區(qū)塊中的交易數量的增加而增加。而CTOR是作用是使區(qū)塊按照既定規(guī)范順序進行交易,自從以后,借助Graphene協議進行的區(qū)塊傳播可以不包含順序信息。此舉進一步強化了石墨烯技術的優(yōu)勢——區(qū)塊可以變得極大,而布隆過濾器和IBLT卻可以維持極小的狀態(tài)。
石墨烯取得初步成效
就在幾天之前,致力于合作開發(fā)石墨烯技術的馬薩諸塞州立大學的團隊與Bitcoin Unlimited在reddit/BTC板塊發(fā)布了關于石墨烯技術的最新進展,對此我們也及時發(fā)布了文章同步動態(tài),感興趣的同學可以翻閱前文。團隊表示石墨烯技術第一階段的開發(fā)任務——引入了各種安全性和性能的改進已經完成,石墨烯技術開發(fā)工作已經完成了一半,第二階段也是最后階段的開發(fā)任務——實現了故障恢復和mempool同步將在兩個月內開始。
團隊也公布了開發(fā)成果,故障率大幅下降,在連續(xù)500個區(qū)塊的測試中只有2次解碼失敗,4次丟失交易,在完成第二階段后將徹底修復這一漏洞。而壓縮區(qū)塊的作用極其成功,平均壓縮率高達99.5%,而超過1000筆TX的區(qū)塊平均壓縮率高達99.8%。
CTOR有沒有用??
石墨烯的開發(fā)報告引起了社區(qū)的廣泛討論,其中很多人特別好奇的是關于CTOR的采用。對此,石墨烯團隊專門發(fā)表了關于CTOR采用情況的報告。
報告顯示,從BU客戶端1.6.0版本開始,石墨烯默認使用CTOR,不需要再發(fā)送順序信息。開發(fā)者進行一項單獨的實驗:
從區(qū)塊000000000000000002b18e2235e5ae3f62abb4be1bd6e933bafd47899c2ab721開始,在主網上運行了兩個不同的BU節(jié)點。一個為使用CTOR的版本,一個為不使用CTOR的版本。共有533個區(qū)塊,其中13個區(qū)塊的交易量超過1K。壓縮率計算為1-g / f,其中g和f分別是石墨烯和完整塊的字節(jié)大小。
with_ctor:
總體最佳壓縮:0.9988310929281122
平均壓縮(所有塊):0.9622354472957148
中值壓縮(所有塊):0.9887816917208885
平均壓縮(塊》 1K tx):0.9964066061006223
中值壓縮(塊》 1K tx):0.9976625137327318
no_ctor:
總體最佳壓縮:0.9960665539078787
平均壓縮(所有塊):0.9595203105258268
中值壓縮(所有塊):0.9855845466339916
平均壓縮(塊》 1K tx):0.9915431691098592
中值壓縮(塊》 1K tx):0.9929303640862496
使用with_ctor over no_ctor,對所有塊的中值壓縮的改進相當于區(qū)塊大小減少約21%。對于交易量超過1K的區(qū)塊,區(qū)塊大小減少約71%。因此我們可以看到with_ctor比no_ctor實現更好的壓縮。CTOR對壓縮的提升尤其是對于超過1K筆交易的區(qū)塊來說非常重要的。這可能也解釋了為什么在BCH壓力測試期間報告里順序信息占了石墨烯區(qū)塊尺寸的大部分,在報告里順序信息平均達到了37.03KB,但在這次的實驗里,只有321.37B,這足以顯示CTOR的巨大作用。
BCH正在實現技術領先?
石墨烯和CTOR的階段性成功都顯示了BCH開發(fā)組的強大力量,當然目前位置石墨烯還不是成熟的技術,仍需開發(fā)者繼續(xù)努力,但從開發(fā)速度來看,石墨烯將會提前與我們見面的時間。
在目前的擴容方案中,閃電網絡仍然仍然仍然(重要的事情說三遍)處于測試中,最新消息BTC未確認交易再次高達5萬筆,交易確認緩慢,提現轉賬都受到了較大影響,二層網絡擴容之路渺茫無期;或許是為了特意彰顯128M的容量,BSV習慣性攢巨塊,最近又爆出6個區(qū)塊深度重組的丑聞,網絡安全穩(wěn)定受到質疑,交易所紛紛下架,前途堪憂。
在5月份的硬分叉升級中,BCH將領先BTC先一步上線成熟技術Schnorr簽名,在此之后BCH的領先地位將進一步加強。