有向無環(huán)圖DAG和分片能否幫助區(qū)塊鏈擴展
擴展區(qū)塊鏈的挑戰(zhàn)得到了很好的證明。當(dāng)今運行中最成功的區(qū)塊鏈形成了一個線性鏈,其中每個區(qū)塊或更新都引用前面的區(qū)塊。網(wǎng)絡(luò)上的每個節(jié)點都存儲了賬本歷史記錄中的完整副本。線性鏈模型在保持整個世界的共識方面非常有效。不幸的是,它在總體網(wǎng)絡(luò)吞吐量方面相當(dāng)有限,因為每個節(jié)點都需要接收和驗證全局發(fā)生的每個交易。
背景
已經(jīng)提出了許多方法來幫助區(qū)塊鏈擴展。目前最流行的方法是第2層解決方案,如閃電網(wǎng)絡(luò)或等離子體。有兩種可能性可以替代線性區(qū)塊鏈:DAG和分片。
關(guān)于DAG的注意事項
有向無環(huán)圖(DAG)是由IOTA、Byteball和Nano等項目提出的。他們認(rèn)為,對于每個人來說,擁有全局狀態(tài)并不重要,相反,節(jié)點應(yīng)該只需要與它們相關(guān)的本地狀態(tài),以及與其他節(jié)點的足夠連接來驗證它們的本地狀態(tài)是否與其他節(jié)點的視圖沖突。
在沒有全局狀態(tài)的情況下,如果攻擊者能夠獨占受害者節(jié)點的傳入連接,那么Eclipse攻擊之類的攻擊是可能的。直到2019年5月,IOTA通過一個每個人都可以連接的集中式協(xié)調(diào)器解決了這個問題??梢哉f,這推翻了DAG的全部觀點。他們最近宣布從協(xié)調(diào)器切換到稱為Coordicide的投票模塊。共識參與者將被期望對沖突的交易進(jìn)行積極的投票,在我看來,這聽起來很像傳統(tǒng)的區(qū)塊鏈共識。
分片
分片系統(tǒng)類似于DAG,但它們承認(rèn)全局狀態(tài)視圖的重要性,并對賬本施加正式結(jié)構(gòu),以確保整個系統(tǒng)保持一致。分片將區(qū)塊鏈的驗證工作劃分為幾個組,每個組負(fù)責(zé)工作的一個子集。
目前有許多用于分片的設(shè)計,但很少用于生產(chǎn)。主要的設(shè)計考慮是是否有一個信標(biāo)鏈。信標(biāo)鏈的行為很像傳統(tǒng)的區(qū)塊鏈,但它不是驗證交易和賬本狀態(tài)本身,而是依賴于每個分片在自己的狀態(tài)上達(dá)成一致。然后,將此狀態(tài)壓縮為一個merkle根,該根由分片驗證器的仲裁簽名。然后,信標(biāo)鏈將分片根編織成一個整體的鏈根。
沒有信標(biāo)鏈的分片是可能的,但是必須付出更多的努力來公平分配資源,防止大規(guī)模重組和分片接管攻擊。
復(fù)雜性
在分片系統(tǒng)中,指定的目標(biāo)是將工作分配給工作人員,從而提高吞吐量。首要的關(guān)鍵問題之一是理解工作是如何劃分的。必須采取保護措施,以確保不誠實的驗證器不能覆蓋特定的分片。
上面的可視化提示,如果只關(guān)注單個分片,那么即使只有1%的驗證器也可能造成嚴(yán)重破壞。以太坊計劃使用一個改組過程,以不可預(yù)知的方式將驗證器分配給分片,以防止壞參與者接管分片。
跨分片通信
這些分片的邊界上發(fā)生了什么?它們是如何相互作用的?一個顯而易見的答案是, 如果一個應(yīng)用程序不在我的分片上,我可以在不同的分片上創(chuàng)建一個新的帳戶,或者我甚至可以使用一個跨分片服務(wù),它將我的錢包地址放在一個分片上,并允許我與任何其分片片上的應(yīng)用程序交互。
想象一下,您希望從與您不在同一分片中的網(wǎng)絡(luò)參與者那里收到一筆付款。您如何從您沒有參與的分片中收到錢?
以太坊研究人員提出的可視化樣本方法
這里,我們使用收據(jù)的概念來說明。通過提供源分片中交易的merkle路徑,收件人可以證明他們將從一個外國分片中來接收代幣。目標(biāo)分片使用收據(jù)并記入收件人的帳戶。這必須以原子的方式完成。發(fā)送方和接收方的帳戶要么一起修改,要么不一起修改。如果有一個缺口或一端失敗了,發(fā)送者可以欺騙接收者,讓他們相信他們已經(jīng)收到了他們永遠(yuǎn)不會得到的資金。
在途交易
真正的跨分片的原子交易是一個困難的問題,因為它需要分片之間同步通信的驗證器。如果對跨分片交易的需求足夠高,那么性能可能會下降,因為必須有更多的分片工作人員協(xié)作來處理跨分片交易。
分片系統(tǒng)必須開發(fā)信任網(wǎng)絡(luò)不會從外部分片逆轉(zhuǎn)這些交易的機制。如何保護自己免受可能發(fā)生的大規(guī)模重組的影響?
到目前為止,我們得到的最佳答案是確保一個分片中的驗證器數(shù)量超過某個最小閾值,這樣不誠實的驗證器壓倒單個分片的幾率就會很低。定期(但不是過于頻繁)的驗證器旋轉(zhuǎn)限制了池中驗證器集潛在賄賂的能力。如果驗證器旋轉(zhuǎn)太頻繁,那么運行一個節(jié)點的成本將會增加,而分散化將會受到損害,因為節(jié)點將需要更多的存儲和帶寬來跟上分片的變化。
終結(jié)性
一個顯著簡化這些問題的特性是終結(jié)性。一旦一個區(qū)塊被系統(tǒng)中的多數(shù)派認(rèn)定為最終區(qū)塊,我們可以肯定,我們腳下的外國分片不會發(fā)生變化。終結(jié)性會將整個賬本密封起來,這樣就不能對其進(jìn)行修改,而且以前的跨分片交易也可以被認(rèn)為是安全的,就像只有一條鏈一樣。
權(quán)益關(guān)系證明能夠保證終結(jié)性,而工作量證明永遠(yuǎn)不能。這就是以太坊開發(fā)人員將PoS和分片組合到他們的Eth2.0路線圖計劃中的原因。