簡介
眾所周知,以太坊的成功已經超越了它最初的模式,尤其是它的擴展性以及它使用工作證明作為信任的識別。互聯網的一個夢想是建立一個分佈在世界各地的,能夠進行處理和服務的基礎設施,但我們最終採用的是中心化的方法,數據集中在中心化的服務器中。在以太坊的世界觀中,數據分佈在世界各地,存儲在許多地方,這些地方對互聯網的當前狀態沒有中心化的控制。在一個完美的互聯網中,我們需要有區塊鏈的本地版本並與之通信,我們知道這與地球另一端的其他人正在使用的狀態相同。
我們現在看到分片被推廣到以太坊基礎設施中,這將顯著增加在給定時間可以處理的交易數量。通過分片,以太坊節點只需要存儲分佈式註冊表的一部分,並將該信息轉發給網絡中的其他節點。
分片
讓我們詳細了解一下分片的工作原理。
我們正在解決的主要問題是,為了創建一個共識,每個節點必須執行所有的計算並驗證每個交易。當交易數量增加時,就會降低網絡速度,以太坊就在此遇到了瓶頸。
對於以太坊網絡的所有交易,我們都有一個確定的狀態——全球狀態。每個人都應該能夠檢查此狀態並查看所有交易。但現在我們可以用Merkle樹來拆分狀態,根定義全局狀態,並把狀態分解為分片節點。下面,我們有三個分片,它們組成了全局根,每個分片收集它們負責的交易:
因此,我們將基礎設施的整體狀態拆分為多個分片,每個唯一帳戶都在一個分片中,這些帳戶只能與這個分片中的其他帳戶進行交易。 Vitalik Buterin認為可以想成將區塊鏈分成數千個島嶼,每個島嶼可以做自己的事情。在每個島嶼上,島上的人們彼此之間進行貿易和交易,而不要求其他島嶼的人參與進來。只要我們在島上有一個可靠的代理在記錄交易,就可以將其輸入到全球交易分類賬中。如果島上的人聯繫其他島嶼,我們可以設置一個機制來支持這一點,並將交易鏈接起來。
分片系統的工作方式是創建一個交易組,該交易組有一個交易組頭和一個交易組主體(並存儲與該分片相關的所有交易)。在下面的例子中,我們以Shard ID 22為例,在交易組頭中我們有:
-
分片ID:這被標識為與交易相關的分片。
-
Pre-state根:它定義了新交易之前的狀態Shard 22根。
-
Post state根:它定義了新交易之後的狀態Shard 22根。
-
收據根:這是用於交易的Shard 22的收據。
我們還可以在交易組頭中看到簽名。這些節點被選中來驗證分片中的交易,並且這是隨機選擇的。因此,每個分片都用ID標識自己,然後用自己的交易維護自己的狀態,並映射回以前的狀態。這類似於為一個分片運行一個獨立的區塊鏈,其中分片內的交易不與分片外的其他交易交互。
但是,當一個分片中的帳戶希望與另一個分片進行交易時,會發生什麼呢?我們記錄一筆交易並向分片B 發送收據證明。然後該分片將收據的消費發回。
分片的主要挑戰是我們是否能夠確保分片在可信節點上工作,以及分片之間相互信任的地方在哪。
Danksharding
在實現完全分片的基礎設施的過程中,我們需要將現有的方法遷移到完全分片的基礎設施中,其中一個正在實現的方法是Danksharding(以以太坊開發者Dankrad Feist命名)。 Danksharding的目標是提高速度、降低gas費用和大容量的數據存儲。它基本上是邁向以太坊完全分片基礎設施的一部分。在這方面,我們告別了礦工,現在有了申請人、建設者和驗證者。
總的來說,我們通過可信任的區塊建設者來選擇進入slot的數據和交易,然後向申請人發出請求。建設者向申請人提出交易費用,然後申請人選擇出價最高的人。如果建設者被選為區塊中的一個給定slot,那麼他們負責將數據和交易添加到這個slot中。然後驗證者將驗證該slot是否被正確構建。它的核心優勢是建設者提出了一個從交易中無合併的方案,因此交易的gas費用會大幅降低,因為每筆交易都沒有相關的gas費用。只要沒有太多的投標人,填補空位的總成本可能會相當低。
我們現有的以太坊基礎設施中的礦工基本上只是區塊申請人,但一旦新的基礎設施實現,他們將成為驗證者,而被稱為區塊建造者的新軟件代理將在收集和提出數據和slot的交易中發揮關鍵作用。如果一個slot被驗證為無效,可以提出一個擦除代碼,那麼那裡的數據最終可以從slot刪除標記。
EIP-4844 和Blob
任何新基礎設施的推出都需要小心謹慎,因為一個漏洞就可能導致大規模的妥協。因此,EIP-4844被提議作為danksharding的原型規範:
該提案的全名與二進制大對象(Binary Large Objects,簡稱blobs)有關。雖然數據blob存在於許多其他應用領域,但新提案的主要區別在於它們可以與智能合約相關聯。對於blob,提案者建議應該存在一個與交易相關的數據包。它們可以有一個頭和一個數據主體,並由申請人進行數字簽名。這個數據blob的最大大小建議為1MB。這將允許交易訪問共享數據。
結論
如果說比特幣是福特T,那麼以太坊就是特斯拉。在這個過程中,福特T進行了升級,而且沒有進行徹底的升級。所以讓我們看看有史以來最大的計算引擎之一將如何應對這一新升級。
Source:https://medium.com/asecuritysite-when-bob-met-alice/say-goodbye-to-miners-and-hello-to-builders-proposers-and-verifiers-sharding-and-darksharding-f1f92accb4db