雖然以太坊的區塊 Gas 可用量上限提高了,但是區塊(數據量)大小沒有多大改變,因為以太坊上交易數量與數據體量之間並不是完全的正相關。本文源自於 TRUSTNODES 的《Dosing The State, The Ethereum Scalability Challenge》,由專欄作者 以太坊愛好者 編譯、撰寫及整理。
(前情提要:Vitalik: 我們低估了PoS的開發時間;以太坊 2.0「階段一」將達到 10 萬 TPS)
不久前,以太坊達到了滿負荷,但是它處理的交易量只有歷史最高記錄的一半。我們可以從中得到很多啟示。如下圖所見,以太坊上的區塊數據量大小和區塊 Gas 上限之間顯然有某種關係。如果是折線圖,也會呈現出上升趨勢。不過,二者的關係有點複雜。
以太坊的 Gas 是衡量執行一項操作需要消耗多少計算資源的抽象單位。
延伸閱讀:【新手必讀|加密小知識】關於礦工費(Gas Fee),你不可不知的 6 件事
延伸閱讀:以太坊礦工正投票讓自己更有錢!「Gas Limit 調高 25%」 或能解 DeFi 手續費過高弊病
由於合約是圖靈完備的,你可以在交易中包含無數個循環結構。(為免於陷入死循環)以太坊為單個區塊可用的 Gas 設置了上限,該上限目前為1200 萬。
– 2020 年6 月的以太坊交易量 –
儘管區塊 Gas 上限提高了50% ,但是以太坊上的交易量依然低於歷史最高紀錄。這是因為大部分 Gas 都被用於 token 交易或智能合約交易。
執行一個簡單的代幣交易需要消耗 80000 gas ,而一個以太幣轉帳交易需要消耗 20000 gas 。執行一個dapp 交易視情況而定,但是其 gas 消耗量通常高於代幣交易(註:正是 token 交易的比重變化導致即使提高了區塊Gas 上限,所處理的交易數量也低於歷史最高)。
相比之下,比特幣則簡單得多,一個基本交易只有250 字節。
以太坊上沒有這種協議級交易壓縮,因為它採用的是帳戶系統。
為便於管理帳戶,以太坊網路每新增一個區塊,就會更新一次狀態。以太坊基金會的 Griffin Ichiba Hotchkiss 稱:
完整的以太坊「狀態」 指的是所有帳戶和餘額的當前狀態,以及在 EVM (以太坊虛擬機)中部署並運行的所有智能合約的「內存」。在以太坊區塊鏈上,每個得到最終確定的區塊都有且只有一個全網達成共識的狀態。每當有新的區塊添加到鏈上,狀態就會更改和更新。
舉一個最簡單的對照:比特幣狀態指的是UTXO(未花費的有效交易輸出)。無論是以太坊狀態,還是比特幣狀態,都是較難理解的概念。簡單來說,就是網路的內存(ram)或快照。因此,帳戶餘額和合約中包含的代碼函數都是公開可見的。
延伸閱讀:乾貨|深入理解 OVM (Optimistic Rollup):兼容 EVM、以太坊Layer 2擴容方案大躍進
如果從創世區塊開始同步以太坊,你需要遍歷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 月)-
右側三個擴容方案都有獨立的網路環境和區塊鏈,並與以太坊建立了通信。但是,就目前而言,這些網路之間互不通信。
延伸閱讀:Vitalik: 我們低估了PoS的開發時間;以太坊 2.0「階段一」將達到 10 萬 TPS
如果歷史重演,那麼第一步可能是將許多獨立的世界計算機相互連接起來,讓大家都能互通。
最開始的時候,如果你有一台手提電腦,你就只能訪問這台手提電腦裡的數據。後來,隨著技術上的突破,不同的手提電腦之間建立起了連接(最初是通過電纜),你可以訪問鄰居的手提電腦裡的數據了。
由於這些計算機之間可以建立通信,我們可以允許所有人訪問我們的數據,不過不需要每個人都存儲我們的數據,除非他們想這麼做。
只有那些負責分享數據的人才需要存儲數據。我們只需要與其他人的計算機建立聯繫,這樣我們就能看到彼此的數據了。
也就是說,我們需要在OMG和ZK之間實現通信。我們之所以無法在比特幣和以太坊之間建立通信,是因為它們是不同的協議。但還是有項目在嘗試連接兩者。
如果我們讓這些數據集群相互通信,那麼只要它們都在同一個協議上運行,可擴展性就不再有任何限制。
這是需要花費很多時間來實現的。如果從這個角度來看,我們就會發現中本聰和 Gregory Maxwell 都是對的,因為他們是從不同的時間層面來考慮的。
中本聰考慮的可能是比特幣技術的總體發展。在他的聲明中,他顯然認為比特幣技術會像(作為一個全球分佈式系統的)互聯網那樣發展。
然而,Maxwell 考慮的是當下。他有一句話說得非常對:如果你沒有為此付出足夠努力,就不可能實現飛躍。
也就是說,我們正在發展中,或許最艱鉅的任務已經完成了。在當前階段,我們不妨耐心享受這段升級的過程。這是需要時間來醞釀的。
📍相關報導📍
文組也該知道的區塊鏈技術知識《2》:一次搞懂「以太坊智能合約」如何運作
白話技術解析|各以太坊「Layer 2 擴容方案」的評估對比
Layer 2 |打破 DApp 局限性?以太坊擴容「狀態通道」方案的《L4》Liam Horne 告訴你
專欄觀點|2020 年以太坊 Layer 2 的突破性進展意味著什麼?
讓動區 Telegram 新聞頻道再次強大!!立即加入獲得第一手區塊鏈、加密貨幣新聞報導。
LINE 與 Messenger 不定期為大家服務