采用DAG和分片技術(shù)來擴(kuò)展區(qū)塊鏈的性能需要注意哪些事項(xiàng)
背景
目前市場上已經(jīng)提出了許多方法來擴(kuò)展區(qū)塊鏈性能。最流行的方法是如Lightning或Plasma,擴(kuò)大區(qū)塊容量,DAG和分片等技術(shù)。
關(guān)于DAG的注意事項(xiàng)
IOTA,Byteball和Nano等項(xiàng)目已經(jīng)提出了有向無環(huán)圖(DAG)。他們認(rèn)為每個人擁有一個全局狀態(tài)并不重要,而是節(jié)點(diǎn)應(yīng)該只需要與他們相關(guān)的本地狀態(tài)以及與其他節(jié)點(diǎn)的足夠連接來驗(yàn)證他們的本地狀態(tài)就行。
在沒有全局狀態(tài)的情況下,攻擊者可以占入受害者節(jié)點(diǎn)的傳入連接,則可能發(fā)生諸如Eclipse攻擊之類的攻擊。直到2019年5月,IOTA通過每個人都連接到集中協(xié)調(diào)器解決了這個問題。這可以說是推翻了DAG的全部觀點(diǎn)。他們最近宣布從協(xié)調(diào)員轉(zhuǎn)變?yōu)橥镀蹦KCoordicide。預(yù)計(jì)共識參與者將主動對沖突交易進(jìn)行投票,我認(rèn)為這聽起來與傳統(tǒng)的區(qū)塊鏈共識非常相似。
分片
分片系統(tǒng)類似于DAG,它們承認(rèn)全局狀態(tài)視圖的重要性,并在分類賬上施加正式結(jié)構(gòu),以確保整個系統(tǒng)保持一致。分片將區(qū)塊鏈的驗(yàn)證工作分成若干組,每個組分片負(fù)責(zé)工作的一個子集。
許多設(shè)計(jì)都是為了分片而做的,但是現(xiàn)在很少有分片設(shè)計(jì)在正式生產(chǎn)中使用。主要的設(shè)計(jì)考慮是是否有一個信標(biāo)鏈。信標(biāo)鏈的作用非常類似于傳統(tǒng)的區(qū)塊鏈,但它不驗(yàn)證交易和分類賬狀態(tài)本身,而是依賴于每個碎片對自己的狀態(tài)達(dá)成共識。然后這個狀態(tài)被壓縮成一個merkle根,由一個shard驗(yàn)證器的仲裁簽名。然后信標(biāo)鏈將分片的根編織成一個完整的鏈根。
可以在沒有信標(biāo)鏈的情況下進(jìn)行分片,但必須更加最大公平地劃分資源并防止大規(guī)模重組和分片接管攻擊。
復(fù)雜性
在分片系統(tǒng)中,通過劃分多個分片數(shù)量,從而增加吞吐量。第一個關(guān)鍵問題是理解分片是如何劃分的。要什么采取保護(hù)措施,以確保不被不誠實(shí)的驗(yàn)證者控制大量分片。
上面是一個可視化的展示,即使只有1%的驗(yàn)證者集中在一個分片上也會造成嚴(yán)重的破壞。以太坊計(jì)劃使用一個重組過程,以一種不可預(yù)知的方式將驗(yàn)證者分配給分片,以防止不誠實(shí)參與者接管分片。
跨分片通信
這些分片的邊界會發(fā)生什么?它們是如何相互交流的?一個顯而易見的答案是,如果一個應(yīng)用程序不在我的分片上,我可以在另一個分片上創(chuàng)建一個新帳戶,或者我甚至可以使用一個交叉分片服務(wù),在一個分片上獲取我的錢包地址,并允許我與任何其他分片上的應(yīng)用程序交互。
想象一下,您希望從與您不在同一分片中的網(wǎng)絡(luò)參與者收到付款。 你怎么能從你沒參加的分片中收到錢?
以太坊研究人員提出的可視化樣本方法
在這里,我們引用收據(jù)的概念。收件人通過提供來源分片中的事務(wù)的merkle路徑,顯示他們將從外部分片接收到代幣的證據(jù)。目標(biāo)分片會使用收據(jù)并記入收件人的帳戶,這些過程必須原子方式完成。
傳輸中的交易
真正跨分片的原子事務(wù)是一個難題,因?yàn)樗枰诓煌制g的驗(yàn)證者同步通信。如果對跨分片事務(wù)的需求非常高,則會導(dǎo)致性能降低,因?yàn)楦喾制?yàn)證者必須協(xié)作以處理跨分片事務(wù)。
分片系統(tǒng)必須建立信任機(jī)制,確保網(wǎng)絡(luò)不會從外圍的分片中逆轉(zhuǎn)這些事務(wù)。如何保護(hù)自己免受可能發(fā)生的大規(guī)模重組的影響?
我們迄今為止的最佳答案是確保分片中的驗(yàn)證者數(shù)量高于某個最小閾值,這樣不誠實(shí)的驗(yàn)證者數(shù)量壓倒單個分片的幾率就非常低。定期(但不是過于頻繁)進(jìn)行驗(yàn)證者輪換,限制了池中的驗(yàn)證者潛在賄賂的能力。但如果驗(yàn)證者輪換太頻繁,則運(yùn)行節(jié)點(diǎn)的成本將增加,并且分散將受到損害,因?yàn)楣?jié)點(diǎn)將需要更多存儲和帶寬以跟上分片變化。
最終性
最終性是大大簡化這些問題的一個特征。一旦一個區(qū)塊被系統(tǒng)中的經(jīng)濟(jì)多數(shù)人標(biāo)記為最終區(qū)塊,我們就可以確定外部分區(qū)不會在我們的下方發(fā)生變化。 最終性將整個分類賬密封起來,這樣就不會發(fā)生變化,而且以前的交叉分片交易可以被視為像只有一條鏈一樣安全。
股權(quán)證明能夠保證最終結(jié)果,而工作證明永遠(yuǎn)不能。這就是以太坊開發(fā)人員將PoS和分片整合到他們的Eth2.0路線圖計(jì)劃中的原因。