降低了整體的安全成本,增發率就能降低到 1% 以下,具體來說還取決於有多少使用者參與網路成為驗證者。如此一來,增發率就能隨其到底要為安全性支付多少費用而伸縮。
除了增發率上的縮減,以太坊 2.0 還旨在替換掉現在支付 Gas 費時用到的拍賣市場模式,換成稍有區別的模式,即 “EIP1559”。你不需要知道它的工作原理,只需要知道,在此模式下,使用者所支付的手續費的大部分都會被銷燬掉。雖然說在該模式下,使用者會支付更少的手續費,但因為以太坊 2.0 有很多個分片,所以總的手續費規模會比現在的以太坊更大,因此銷燬掉的數量也會更多。
一方面是很低的增發率,另一方面是銷燬部分手續費,以太坊 2.0 的淨增發率可能為負,也就是燒掉的數量會比增發的數量還多!然後 ETH 就會變得更為稀缺,讓攻擊 PoS 系統的成本更為高昂。
共識演算法(比如 PoW 和 PoS)(譯者注:原文如此,consensus algorithm)的目標是保證區塊鏈的安全性和去中心化,保護網路的激勵機制才是真正讓密碼學貨幣活起來而不僅是賬本數字的因素。激勵機制保證了 礦工/質押者 會給網路提供安全性。而以太坊 2.0 在安全費用上所追求的是 最低必要增發率。最低必要增發率意味著鏈持續增發為保證安全性而必鬚髮放的最低數量。低增發率及銷燬策略會逐漸讓攻擊者的攻擊成本變高(因為 ETH 日益稀缺),從而降低大規模攻擊的概率。
無狀態性
你可能聽說過 “狀態爆炸” 這個詞,人們在論及以太坊及其狀態資料規模的時候常常提到。這個問題的實質是,一次性支付 Gas 費就可以讓你的資料永遠留在以太坊區塊鏈上,這就導致了狀態資料不受限制地日漸增長,而很多資料可能再也沒有被使用過。狀態資料在儲存規模上的 “爆炸”,意味著以太坊的節點的儲存空間和硬體條件必須隨著網路的持續存活而線性增加。長期來看,這限制了能夠執行以太坊節點的人群規模,而狀態資料增長問題在每次區塊 Gas 上限提高時都會變得更為嚴重。
那麼,以太坊 2.0(以及日後的 ETh2) 解決這個問題的辦法就是無狀態性,就是讓節點不儲存任何狀態也能驗證所有交易和狀態的所有部分。實現了無狀態性之後,節點的模式就可以形成一條從有狀態到無狀態的光譜,每一種模式都有不同的規範。如果你硬體比較好,執行無狀態節點綽綽有餘,但還是不能執行完全儲存狀態的節點,那麼你可以取其折中,執行一個 “準-帶狀態” 節點。
這對於分片來說至關重要!因為每個分片都有自己獨有的狀態,而 Eth2 驗證者需要在他們所驗證的分片上依據狀態來執行狀態變更(處理交易)。無狀態式的協議使得驗證者無需下載一個分片的完整狀態,只需下載表示資料的二進位制默克爾樹即可(這比狀態資料小得多了)。
分片越多,狀態資料的增長越是沒有止境,雖然到時候肯定會有比如交易所或者區塊瀏覽器這樣的服務,有動力儲存所有的分片 狀態資料/歷史資料,並不計成本地準確交付。然後就有可能出現 “狀態提供者” 軟體,為驗證者提供一筆交易所要改變的狀態部分,讓後者能夠執行狀態變更。狀態提供者可以徹底地消除驗證過程中的硬碟讀寫需要和密集儲存需要。這不僅為新的、針對狀態的激勵機制開啟了可能性,還能極大地幫助驗證者,因為後者不再需要儲存完整的分片狀態了。當然,他們仍可以驗證從狀態中繼者處收到的狀態的正確性,因為可以拿這些資料與已完成同步的狀態樹相比較。
賬戶抽象
在當前的以太坊協議中,有兩種型別的賬戶,外部控制型賬戶(即人使用私鑰來控制的賬戶)和智慧合約型賬戶。只有外部控制型賬戶能發起交易,而且只有控制私鑰的使用者自己發起的交易才能改變自己賬戶的狀態。現在雖然有了元交易,但它需要依賴一箇中繼者網路(比如 GSN)來支付 Gas 費。
對於以太坊 2.0 來說,目標是把這兩種賬戶抽象化成一種賬戶,讓網路中的使用者賬戶和合約賬戶毫無區別。合約當然會繼續存在,但那時以太坊網路自己就能充當元交易的中繼者了,自己簽名發起一筆交易並廣播出去將不再是你與網路互動的唯一辦法。
到時候,你可以讓你的賬戶像一個智慧合約,比如別人發給你 ETH,你的主賬戶會自動將其轉發到你的冷錢包裡,又或者,把所有發給你的 ETH 都自動賣成 DAI 來持有。
能把功能模組直接做到賬戶裡面,會產生很多很多有意思的 dApp 設計和功能!使用者管理賬戶的操作會變得五花八門,而不是像現在的以太坊協議一樣,允許的操作都是被定死的。
賬戶抽象化的一個有趣可能性就是合約能夠自己支付 Gas 費,能自己發起交易。但這是個很複雜的問題,迄今仍在開發中,不過一旦開發成功,帶來的可能性就極為豐茂了。
執行環境(Execution Environments)
做以太坊應用開發的開發者,首選的程式語言都是 Solidity 或者 Vyper,它們都各有奇怪的特性,但在實用性上,其開發生態還是很好的。在當前的用法中,用這些語言寫成的程式碼都要編譯成更通用、更底層的操作,來方便以太坊虛擬機器(EVM)解讀。如果你想更深入地理解 EVM,可以閱讀這篇文章。雖然也不是太必要啦。
EVM 所用的操作碼(OPCODE)讓以太坊節點能產生出同樣的計算結果,而不論執行節點的計算機是什麼樣的(這也是 “虛擬機器” 的部分所在)。它也讓定製化的複雜操作比如驗證簽名和獲取賬戶餘額變得更簡單,只需一行程式碼就搞定。如果沒有 EVM 準確地讀取出狀態並執行狀態變更,各種功能都是不可能實現的。
雖然 EVM 作為整個智慧合約生態的基礎表現得很好(哪怕在其它鏈上也是如此),如果以太坊上的應用可以使用任意的執行時語言(run-time),那會更好。鏈不應該把自己的狀態轉換規則(比如 EVM)強加在他人身上,執行本身應該要更加開放才對。這就是為什麼大家想出了 “執行環境”。
執行環境機制使得所有的狀態轉換規則都可以直接做進協議層(使用 WASM),讓交易的處理方式能與系統的其它部分完全獨立開來。比如,可以有一個執行環境(EE)是專門用來處理 ZK rollup 和隱蔽交易的,而另有一個 EE 是用來處理 UTXO 模式交易的(就像比特幣區塊鏈)。甚至可以有一個 token 專用型 EE,專門用來承載所有 token,而不用為每一種 token 都上傳相同的程式碼。當然,現有的 EVM 也會被替換成一個叫做 eWASM 的 EE,以保證對現有生態系統的支援。
Eth2 上的每個 dApp 都必須在設計時充分考慮 EVM 的行為,因此以太坊狀態轉換函式(即 EVM)的侷限性就成了整個生態系統的瓶頸。有了 EE 機制,這個瓶頸就不復存在,利用對協議的開放式依賴的全新 dApp 也能出現。如果你想了解更多,EthHub 這裡有一個跟 Will Villanueva 一起做的絕佳播客。這裡還有一篇敘述最新進展的文章。