雖然以太坊的區塊 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 和內存)” 精確地關聯起來,並不是個簡單的問題。

這篇論文還 提到 :“我們在計量模型中發現了一些差異,例如,指令定價方面的顯著不一致。我們設計了一個遺傳算法(genetic algorithm),可以生成比普通合約處理起來慢 200 倍的合約。之後,我們證明了,所有主要的以太坊客戶端實現都很脆弱,如果它們在消費級硬件上運行,一旦遭受攻擊,它們將無法與網絡保持同步。”

同樣地,在比特幣系統中,如果攻擊者生成了一個很難驗證的區塊,甚至有可能導致你的計算機挖礦系統宕機。然而,如果有人這麼做了,很可能會失去 6.25 BTC 的區塊獎勵;如果是礦池這麼做了,很有可能會失去所有礦工。

但是在以太坊系統中,攻擊者損失的只是發佈合約的成本,據研究人員發現,這點損失與攻擊所產生的影響根本不成正比。

如果又要在當前形式的以太坊網絡基礎上實現擴容,又讓大家還能繼續運行以太坊節點(比如我們 Trustnode 想繼續我們的區塊鏈分析),那就是非常複雜而且非常耗時的任務了。

當然了,我們可以通過雲服務提供商 Infura 來運行節點。對以太坊網絡的絕大多數操作都是由 Infura 上的節點完成的。

據以太坊孵化機構 ConsenSys 的創始人 Joseph Lubin 所言 ,ConsenSys 最近已經與 AMD 合資創辦了 W3BCLOUD ,旨在打造 “下一代去中心化計算、存儲和帶寬”。

然而,目前真正的解決方案是區塊鏈合約級分片(譯者注:按下文,即 Layer-2 擴展方案)。

-以太坊擴容方案(2020 年 6 月)-

右側三個擴容方案都有獨立的網絡環境和區塊鏈,並與以太坊建立了通信。但是,就目前而言,這些網絡之間互不通信。

如果歷史重演,那麼第一步可能是將許多獨立的世界計算機相互連接起來,讓大家都能互通。

最開始的時候,如果你有一臺手提電腦,你就只能訪問這臺手提電腦裏的數據。後來,隨着技術上的突破,不同的手提電腦之間建立起了連接(最初是通過電纜),你可以訪問鄰居的手提電腦裏的數據了。

由於這些計算機之間可以建立通信,我們可以允許所有人訪問我們的數據,不過不需要每個人都存儲我們的數據,除非他們想這麼做。

只有那些負責分享數據的人才需要存儲數據。我們只需要與其他人的計算機建立聯繫,這樣我們就能看到彼此的數據了。

也就是說,我們需要在 OMG 和 ZK 之間實現通信。我們之所以無法在比特幣和以太坊之間建立通信,是因爲它們是不同的協議。 但還是有項目在嘗試 連接兩者。

如果我們讓這些數據集羣相互通信,那麼只要它們都在同一個協議上運行,可擴展性就不再有任何限制。

這是需要花費很多時間來實現的。如果從這個角度來看,我們就會發現中本聰和 Gregory Maxwell 都是對的,因爲他們是從不同的時間層面來考慮的。

中本聰考慮的可能是比特幣技術的總體發展。在他的聲明中,他顯然認爲比特幣技術會像(作爲一個全球分佈式系統的)互聯網那樣發展。

然而,Maxwell 考慮的是當下。他有一句話說得非常對:如果你沒有爲此付出足夠努力,就不可能實現飛躍。

也就是說,我們正在發展中,或許最艱鉅的任務已經完成了。在當前階段,我們不妨耐心享受這段升級的過程。這是需要時間來醞釀的。

(完)

原文鏈接: https://www.trustnodes.com/2020/06/27/dosing-the-state-the-ethereum-scalability-challenge

作者:Trustnodes

翻譯&校對:閔敏 & 阿劍

相關文章