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