如何扩展以太坊:分片
可擴展性辯論位于加密社區的前端和中心。?在幾天的時間內,Cryptokitities崩潰等重大事件的發生阻塞了整個以太坊網絡,眾所周知,當前狀態下最大的公共鏈不會擴展?。
那么社區決定采取哪些方法??解決方案是雙重的。?第一種方法是通過脫鏈解決方案(也稱為第二層縮放)來提高擴展性,其中一些事務處理在區塊鏈之外,并且僅與其進行有效的交互。?另一種方法是修改協議的設計,以解決區塊鏈所面臨的并行性問題。?不幸的是,我們中的許多協議開發人員經常看到這些問題,并立即感到被他們所構成的巨大困難所拖延。
雖然我們仍處于以太坊的早期階段,但社區充滿了科技領域的一些最聰明的頭腦,有如此多的創新以極快的速度發生。?很容易感覺到有更聰明的開發者可能更有資格處理諸如可伸縮性等重大問題,但這種感覺正在阻礙我們。?事實是,社區愿意并愿意幫助任何想參與進來的人,并且是的,包括你?!?這篇文章將打破以太坊核心團隊正在采取的分拆方法,揭示當前的局限性和改進途徑。?在這篇文章的最后,你會知道足夠的知識來自己探索這個問題,誰知道呢,也許你會成為構建第一個分片客戶端的人!
由于以太坊的交易數量持續上升,我們沒有時間損失。?讓我們開始吧。
什么是Sharding?
目前,運行以太網網絡的每個節點都必須處理通過網絡傳輸的每一筆交易。這使區塊鏈具有很高的安全性,因為每個區塊有多少驗證,但同時這意味著整個區塊鏈只與其單個節點一樣快,而不是其各個部分的總和。?目前,EVM上的事務是不可并行化的,并且每個事務都是按照全局順序執行的。?可擴展性問題與塊鏈最多可以包含以下3個屬性中的2個有關?:
- 分權
- Scalabiltity
- 安全
如果我們具有可擴展性和安全性,這意味著我們的區塊鏈是集中式的,并且可以實現更快的吞吐量。?對,不,以太坊是分散和安全的?。
我們如何打破這個三難局面,在當前模型中包含可伸縮性??我們不能只是增加塊大小,或者在以太坊的情況下,GAS_LIMIT增加吞吐量??雖然理論上這可能是一個正確的方法,但我們越是越多越好,采礦將集中在超級計算機上運行的節點周圍,這會給進入系統帶來更高的障礙。
更明智的做法是區塊鏈分片的概念,我們將網絡的整個狀態分割成一系列稱為碎片的分區,其中包含自己獨立的狀態和事務歷史記錄。?在這個系統中,某些節點只會處理某些分片的事務處理,從而允許在所有分片中總共處理的事務的吞吐量比單個分片完成所有主分支現在所做的工作要高得多。
在我們深入討論分片區塊鏈的實際工作方式之前,讓我們回顧一下重要的詞匯表??:
- 狀態?:在任何時間點描述系統的整套信息。?在以太坊,這是包含當前余額,智能合約代碼和特定時刻的隨機數的當前賬戶集合。?每筆交易都會將此狀態變為全新的狀態。
- 事務?:用戶發出的更改系統狀態的操作
- Merkle Tree:一種可以通過加密哈希存儲大量數據的數據結構。?Merkle樹可以很容易地在很短的時間內和計算量上檢查一段數據是否屬于結構的一部分。
- 收據:事務的副作用,不存儲在系統狀態中,但保存在Merkle樹中,以便可以輕松地驗證其存在。?例如,以太坊中的智能合約日志在Merkle樹中保存為收據。
考慮到這一點,我們來看看分片系統的結構。?首先,我們可以在某個分片上創建一個叫collat??ors的節點,它負責創建一個排序規則?,它是一個包含關于所涉及分片的重要信息的特定結構。
這些排序規則就像對某個分片的狀態和事務的迷你描述。?他們每個人都有一個排序標題?,這是一個包含的數據
- 關于排序規則對應的分片的信息(比方說分片10)
- 在應用所有交易之前關于分片的當前狀態的信息
- 有關所有交易應用后分片狀態的信息
- 來自至少2/3的分片上的所有校勘員的數字簽名確認校對是合法的
如果一個交易發生在各個分片上呢??例如,如果我將錢從分片1中的地址發送到分片10中的地址,該怎么辦??這個系統最重要的部分之一就是跨越分片進行通信的能力,否則我們并沒有完成任何新的事情。?這是收據的概念發揮作用的地方,以及它如何允許上述場景發揮作用。
勞爾(地址在碎片1)想要發送100 ETH給吉姆(地址在碎片10上)
這聽起來很酷,但什么是一些陷阱?
一旦我們考慮到對網絡的可能攻擊,分裂區塊鏈的問題就會變得更加明顯。一個主要的問題是單一碎片接管攻擊的概念?,攻擊者在一個碎片中接管絕大多數的整理者來創建可以提交無效排序規則的惡意碎片。?我們如何解決這個問題?
[caption id =“attachment_195”align =“alignnone”width =“1420”]
感謝王曉偉以太坊Wiki的分片常見問題解答建議在每個分片上隨機抽取校勘員。?目標是這些驗證者不會知道他們會提前獲得哪些碎片。?每一個碎片都會被分配一堆整理者,而實際上驗證交易的那些將從該組中隨機抽樣。
股權證明使得這很微不足道,因為已經有一組全球驗證者,我們可以從中選擇整理者。?隨機性的來源必須是共同的,以確保這種抽樣完全是強制性的,并且不能由有問題的驗證人進行比較。
此外,進行這種隨機抽樣還有一些潛在的延遲問題。?想象一下,你運行了一個以太坊節點,并已經與整個區塊鏈歷史記錄同步,開始進行交易。?如果在幾個街區之后,你必須再次與一條新鏈條完全同步呢??這是驗證器節點重新洗牌時會發生的情況,因為當它們被隨機分配為整理器時,它們每個都需要重新下載新的碎片,這會帶來很多潛在的開銷。
要詳細了解潛在的安全風險以及針對此問題和其他問題的詳細方法,請查看Ethereum Sharding常見問題解答。
這對于Solidity Devs和Ethereum用戶理解起來聽起來如此復雜!?我們將如何在分片上教育他們?
他們不需要。?分片將專門存在于協議層,不會暴露給開發人員。?以太坊系統將繼續像目前一樣,但協議將有一個內置系統,可以創建碎片,在碎片之間平衡狀態,擺脫碎片太小等等。?這將全部在幕后完成,允許開發者在Ethereum上繼續他們當前的工作流程。
超越規模:超二次分片和難以置信的速度增益
為了超越和超越,以太坊可能會采用超二次分片方案(簡單的英語表示由碎片碎片構成的系統)。?目前這種復雜性很難想象,但是可擴展性的潛力是巨大的。?此外,超級分區分割區塊鏈將為用戶帶來巨大利益,將交易費用降至可忽略的數量,并為各種新應用提供更通用的基礎架構。
資源和從哪里開始
好吧,現在你想開始編碼分片區塊鏈!?你怎么開始??在最基本的層面上,擬議的初始實施不會通過硬分叉來實現,而是通過稱為驗證管理器合約的智能合約來控制分片系統。
VMC將管理來自全球驗證機構的碎片和提議的整理者樣本,并負責所有碎片狀態的全球和解。?Vitalik在這里概述了一個用于實現分片的出色參考文檔:https?:?//github.com/ethereum/sharding/blob/develop/docs/doc.md
要詳細了解此VMC體系結構并了解有關系統工作方式的更多信息,請查看以下資源:
- 分片常見問題解答:?https?://github.com/ethereum/wiki/wiki/Sharding-FAQ
- 以太坊分片技術概述:?https://medium.com/@icebearhww/ethereum-sharding-and-finality-65248951f649
- Sharding參考文檔:?https?://github.com/ethereum/sharding/blob/develop/docs/doc.md
原文:?https://medium.com/prysmatic-labs/how-to-scale-ethereum-sharding-explained-ba2e283b7fce
總結
以上是生活随笔為你收集整理的如何扩展以太坊:分片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 加密货币与智能合约的隐私 (四):私人和
- 下一篇: 在深度神经网络中你有多吸引人?