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