Rawpool BCH Lab?出品?2018.09.10
聯(lián)合譯者:Lise,Wendy
Bitcoin ABC開發(fā)人員Shammah Chancellor于2018年9月6日發(fā)表了一篇題為《Sharding Bitcoin Cash》的文章,Lise和Wendy將這篇文章翻譯成了中文炊豪,供大家品讀。
BCH分片技術(shù)
當(dāng)論述比特幣如何根據(jù)未來(lái)的應(yīng)用擴(kuò)大而擴(kuò)容時(shí)筒愚,摩爾定律通常作為論據(jù)之一。確實(shí),摩爾定律確實(shí)對(duì)于一些晶體管時(shí)代是適用的,但我們也注意到般眉,由于物理上的局限,單核CPU的處理速度并未提升潜支,CPU的廠商反而增加了內(nèi)核數(shù)量用于進(jìn)行平行運(yùn)算甸赃。
這意味著比特幣為了迎合摩爾定律,區(qū)塊構(gòu)建和驗(yàn)證必須采用額外的CPU內(nèi)核冗酿。為了將額外的內(nèi)核有效加以利用辑奈,我們必須將數(shù)據(jù)進(jìn)行局部化處理,這一組織數(shù)據(jù)進(jìn)行局部化處理的流程就是分片技術(shù)(sharding)已烤。
但目前比特幣所采用的數(shù)據(jù)結(jié)構(gòu)中鸠窗,區(qū)塊頭中的Merkle根阻礙了數(shù)據(jù)被局部化處理。通過(guò)規(guī)范排序(CTOR)改變Merkle根運(yùn)算的順序胯究,才能實(shí)現(xiàn)數(shù)據(jù)的分片化處理稍计。比如區(qū)塊中有4筆交易,如果我們將交易的哈希值(交易ID)按順序排列裕循,這一新的Merkle根將按照如下方式計(jì)算(TX_A HASH < TX_B HASH臣嚣,從左至右,以此類推)剥哑。值得注意的是硅则,對(duì)于Merkle的驗(yàn)證這種新的排序方法與過(guò)去的方法一樣安全。
如果按照CTOR(交易規(guī)范排序)將交易歸類株婴,可以采用兩個(gè)獨(dú)立的算法來(lái)計(jì)算子樹B和子樹C的哈希值怎虫,運(yùn)算結(jié)果可以返回聚合器生成子樹A,并依次與幣基交易哈希值結(jié)合困介,為區(qū)塊模板生成一個(gè)有效的Merkle根大审。
目前,區(qū)塊的Merkle根必須按照TTOR(交易拓?fù)漤樞颍┡帕械慕灰琢斜磉\(yùn)算(正在進(jìn)行中交易排在已達(dá)成交易之后)座哩,但分片技術(shù)必須根據(jù)前后一致的分類對(duì)數(shù)據(jù)進(jìn)行維護(hù)徒扶。在分片系統(tǒng)中由于可能的數(shù)據(jù)局部化而造成的不匹配,以及子樹哈希值必須計(jì)算的數(shù)據(jù)集根穷,未經(jīng)過(guò)大量的同步姜骡,單個(gè)分片就無(wú)法預(yù)先運(yùn)算子樹哈希值导坟。為了解決這一問(wèn)題,須組織Merkle?樹圈澈,使其成為單個(gè)分片可以計(jì)算的子樹哈希值集合惫周,從而進(jìn)行運(yùn)算。
哈希值標(biāo)準(zhǔn)化交易排序的另一有用特性是:內(nèi)存池對(duì)交易的接收也可以在多個(gè)進(jìn)程間應(yīng)用分片技術(shù)士败。這可以通過(guò)在多個(gè)內(nèi)存池處理器前面放置多個(gè)交易“路由器”來(lái)實(shí)現(xiàn)闯两。
在這種結(jié)構(gòu)中,路由器1和路由器2可以在同一分類中向以前達(dá)成的內(nèi)存池接受器發(fā)送交易谅将。采用類似的方法漾狼,內(nèi)存池接受器可以相互查詢,還可以查詢UTXO數(shù)據(jù)庫(kù)饥臂,從而保證母交易存在并可以使用逊躁。
隨著內(nèi)存池在多個(gè)進(jìn)程間被分片,API請(qǐng)求處理器可以處理各個(gè)Merkle子樹的哈希值隅熙。如圖(1)所示稽煤,我們可以向子樹B和子樹C提出請(qǐng)求,之后不斷將它們聚合到Merkle根中囚戚。
為了構(gòu)建以上結(jié)構(gòu)中的節(jié)點(diǎn)酵熙,區(qū)塊鏈中的基本數(shù)據(jù)結(jié)構(gòu)必須率先就位。在適用于運(yùn)算Merkle根的分片數(shù)據(jù)結(jié)構(gòu)建立之前驰坊,不能輕易利用分片技術(shù)編寫軟件匾二。標(biāo)準(zhǔn)化交易排序應(yīng)先于任何此類軟件的創(chuàng)建。
這就是ABC目前倡導(dǎo)這些變革的原因所在拳芙,我們必須為未來(lái)的需求做好準(zhǔn)備察藐,這意味著我們現(xiàn)在就要開始著手,打造能夠處理極大區(qū)塊的節(jié)點(diǎn)舟扎。這項(xiàng)任務(wù)可謂任重而道遠(yuǎn)分飞,要花費(fèi)數(shù)年時(shí)間才能完成。
有些人提出讓ABC制定行之有效的優(yōu)化性能標(biāo)準(zhǔn)睹限,正如前面提到的譬猫,必須首先編寫出相應(yīng)的軟件才能確立這樣的標(biāo)準(zhǔn)。由于這一進(jìn)程要耗時(shí)數(shù)年邦泄,標(biāo)準(zhǔn)不能建立删窒,必須在策劃之前就開展真正的工程設(shè)計(jì)。對(duì)于工程設(shè)計(jì)工作的簡(jiǎn)述已在前面闡明了顺囊。
為了支持協(xié)議的順暢升級(jí),目前版本必須能夠產(chǎn)生及驗(yàn)證兩種類型的區(qū)塊蕉拢,其結(jié)果是區(qū)塊模板的生成變慢特碳,對(duì)驗(yàn)證產(chǎn)生一些較小影響诚亚。由于在初始的拓?fù)浞诸惡螅枰獙?duì)交易重新分類午乓,事實(shí)上當(dāng)前的Bitcoin?ABC v0.18.0?版本生成區(qū)塊模板的速度略有下降站宗,這是有意而為之,并且這一問(wèn)題在CTO之后重構(gòu)代碼并且Merklix樹最終被激活后能夠得到解決益愈。
如果BCH希望根據(jù)摩爾定律可擴(kuò)容梢灭,就不一定非要選擇分片技術(shù)。但是蒸其,單個(gè)CPU的速度不會(huì)明顯變快敏释,單靠專門的硬件無(wú)法解決擴(kuò)容問(wèn)題,因此協(xié)議必須向節(jié)點(diǎn)推進(jìn)能夠?qū)崿F(xiàn)水平擴(kuò)容的軟件摸袁,因?yàn)榇怪睌U(kuò)容對(duì)于大小約1GB左右的區(qū)塊就行不通了钥顽。并且,水平擴(kuò)容是針對(duì)比特幣一層的靠汁,礦工們可以在全球范圍內(nèi)收取交易手續(xù)費(fèi)蜂大,比特幣的激勵(lì)機(jī)制也必然將會(huì)維持下去。
感謝閱讀蝶怔。