以太坊可擴展性挑戰:狀態數據
編者按:本文來自以太坊愛好者(ID:ethfans)編者按:本文來自
以太坊愛好者(ID:ethfans)
以太坊愛好者(ID:ethfans)
編者按:本文來自
以太坊愛好者(ID:ethfans)
編者按:本文來自
以太坊愛好者(ID:ethfans)
,作者:Trustnodes,翻譯&校對: 閔敏& 阿劍,Odaily經授權轉載。
圖片描述
雖然以太坊的區塊Gas 可用量上限提高了,但是區塊(數據量)大小沒有多大改變,因為以太坊上交易數量與數據體量之間並不是完全的正相關。
如上圖所見,以太坊上的區塊數據量大小和區塊Gas 上限之間顯然有某種關係。如果是折線圖,也會呈現出上升趨勢。不過,二者的關係有點複雜。
圖片描述
以太坊的Gas 是衡量執行一項操作需要消耗多少計算資源的抽象單位。
由於合約是圖靈完備的,你可以在交易中包含無數個循環結構。 (為免於陷入死循環)以太坊為單個區塊可用的Gas 設置了上限,該上限目前為1200 萬。
圖片描述
-2020 年6 月的以太坊交易量-
儘管區塊Gas 上限提高了50% ,但是以太坊上的交易量依然低於歷史最高紀錄。這是因為大部分Gas 都被用於token 交易或智能合約交易。
執行一個簡單的代幣交易需要消耗80000 gas ,而一個以太幣轉賬交易需要消耗20000 gas 。執行一個dapp 交易視情況而定,但是其gas 消耗量通常高於代幣交易(譯者註:正是token 交易的比重變化導致即使提高了區塊Gas 上限,所處理的交易數量也低於歷史最高)。
相比之下,比特幣則簡單得多,一個基本交易只有250 字節(where a transaction is just 250 bytes or that can be the base and then each transaction is 20 bytes,我們解不懂後半句——譯者)。
以太坊上沒有這種協議級交易壓縮,因為它採用的是賬戶系統。
為便於管理賬戶,以太坊網絡每新增一個區塊,就會更新一次狀態。以太坊基金會的Griffin Ichiba Hotchkiss 稱:
“完整的以太坊'狀態' 指的是所有賬戶和余額的當前狀態,以及在EVM (以太坊虛擬機)中部署並運行的所有智能合約的'內存'。在以太坊區塊鏈上,每個得到最終確定的區塊都有且只有一個全網達成共識的狀態。每當有新的區塊添加到鏈上,狀態就會更改和更新。”
舉一個最簡單的對照:比特幣狀態指的是UTXO(未花費的有效交易輸出)。無論是以太坊狀態,還是比特幣狀態,都是較難理解的概念。簡單來說,就是網絡的內存(ram)或快照。因此,賬戶餘額和合約中包含的代碼函數都是公開可見的。
如果從創世塊開始同步以太坊,你需要遍歷4 億個“節點”(譯者註:此處應指狀態樹上的節點,用於存儲狀態;狀態樹本身是默克爾樹形式的) ,需要1 週左右的時間。
每生成一個區塊,以太坊整個網絡10000 多個全節點(運行以太坊客戶端、保存所有以太坊區塊鏈區塊的計算機)都要在本地同步更新,更新大約3000 個狀態樹“節點” 。
這就意味著,你的計算機內存每隔15 秒,就要同步一個區塊,同時磁盤也要一直讀寫每個區塊中對以太坊網絡的更改。
無法保持同步指的不是不能下載歷史記錄,而是不能跟整個網絡同時完成交易處理。
此外,去年還有一篇論文指出,對編程人員來說,要構造一個數學模型把“執行成本(Gas)和所用資源數量(比如CPU 和內存)” 精確地關聯起來,並不是個簡單的問題。
同樣地,在比特幣系統中,如果攻擊者生成了一個很難驗證的區塊,甚至有可能導致你的計算機挖礦系統宕機。然而,如果有人這麼做了,很可能會失去6.25 BTC 的區塊獎勵;如果是礦池這麼做了,很有可能會失去所有礦工。
圖片描述
但是在以太坊系統中,攻擊者損失的只是發布合約的成本,據研究人員發現,這點損失與攻擊所產生的影響根本不成正比。
當然了,我們可以通過雲服務提供商Infura 來運行節點。對以太坊網絡的絕大多數操作都是由Infura 上的節點完成的。
圖片描述
據以太坊孵化機構ConsenSys 的創始人Joseph Lubin 所言,ConsenSys 最近已經與AMD 合資創辦了W3BCLOUD ,旨在打造“下一代去中心化計算、存儲和帶寬”。
然而,目前真正的解決方案是區塊鏈合約級分片(譯者註:按下文,即Layer-2 擴展方案)。
圖片描述
-以太坊擴容方案(2020 年6 月)-
右側三個擴容方案都有獨立的網絡環境和區塊鏈,並與以太坊建立了通信。但是,就目前而言,這些網絡之間互不通信。
如果歷史重演,那麼第一步可能是將許多獨立的世界計算機相互連接起來,讓大家都能互通。


