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