編者按:3月29日,Vitalik Buterin發(fā)表文章《The roads not taken》,著眼于以太坊發(fā)展路上的各種猜想與落實路徑。我們有必要看看不同的以太坊可能是什么樣子,以及我們可以從中學(xué)到什么。
以太坊協(xié)議開發(fā)社區(qū)在以太坊早期階段做出了很多決定,這些決定對項目的發(fā)展軌跡產(chǎn)生了很大的影響。在某些情況下,以太坊開發(fā)人員有意識地決定在我們認(rèn)為比特幣犯錯的地方進行改進。在其他地方,我們正在創(chuàng)造一些全新的東西,我們只需要想出一些東西來填補空白——但有很多東西可供選擇。還有一些其他地方,我們在更復(fù)雜的東西和更簡單的東西之間進行了權(quán)衡。有時,我們選擇了更簡單的東西,但有時,我們也選擇了更復(fù)雜的東西。
這篇文章將著眼于我記憶中的一些岔路口。其中許多功能在核心開發(fā)圈內(nèi)得到了認(rèn)真討論;其他人幾乎沒有考慮過,但也許真的應(yīng)該考慮過。但即便如此,還是有必要看看不同的以太坊可能是什么樣子,以及我們可以從中學(xué)到什么。
我們是否應(yīng)該使用更簡單的PoS版本?
以太坊即將合并的Gasper PoS是一個復(fù)雜的系統(tǒng),但也是一個非常強大的系統(tǒng)。它的一些特性包括:
-
非常強大的單區(qū)塊確認(rèn)——一旦交易被包含在一個區(qū)塊中,通常在幾秒鐘內(nèi)該塊就會固化到無法恢復(fù)的程度,除非大部分節(jié)點不誠實或存在極端的網(wǎng)絡(luò)延遲。
-
經(jīng)濟上的確定性——一旦一個區(qū)塊被最終確定,如果攻擊者不得不懲罰并損失數(shù)百萬的ETH,就無法反轉(zhuǎn)它。
-
非??深A(yù)測的獎勵——驗證者在每個epoch(6.4分鐘)可靠地獲得獎勵,減少對池子的激勵。
-
支持非常多的驗證者數(shù)量——與具有上述功能的大多數(shù)其他區(qū)塊鏈不同,以太坊信標(biāo)鏈支持?jǐn)?shù)十萬驗證者(例如,Tendermint提供比以太坊更快的最終確定性,但它只支持幾百個驗證者)。
但是制作一個具有這些特性的系統(tǒng)是困難的。它花費了多年的研究,多年的失敗實驗,并且通常需要大量的努力。最終的結(jié)果非常復(fù)雜。

許多人認(rèn)為PoS本質(zhì)上是復(fù)雜的,但實際上有PoS算法幾乎與中本聰PoW一樣簡單。NXT PoS自2013年以來就存在,本來是自然的候選者;它有問題,但這些問題很容易被修補,我們本可以從2017年開始,甚至從一開始就擁有一個運行良好的PoS。Gasper比這些算法更復(fù)雜的原因僅僅是因為它試圖完成的工作比它們做得更多。但如果我們一開始比較謙虛,我們可以先專注于實現(xiàn)一組更有限的目標(biāo)。
在我看來,從一開始PoS就是一個錯誤。PoW有助于擴大初始發(fā)行分配和使以太坊可訪問,以及鼓勵愛好者社區(qū)。但在2017年甚至2020年改用更簡單的PoS可能會導(dǎo)致少得多的環(huán)境破壞(以及環(huán)境破壞導(dǎo)致的反加密心態(tài)),并且更多的研究人才可以自由地考慮擴容。我們最終會不得不花費大量資源來制作更好的PoS嗎?是的。但看起來我們最終還是會這樣做。
分片的去復(fù)雜化
自2014年開始研究這些想法以來,以太坊分片一直在變得越來越不復(fù)雜。首先,我們有內(nèi)置執(zhí)行和跨分片交易的復(fù)雜分片。然后,我們通過將更多責(zé)任轉(zhuǎn)移給用戶來簡化協(xié)議(例如,在跨分片交易中,用戶必須分別為兩個分片支付gas)。然后,我們切換到以Rollup為中心的路線圖,從協(xié)議的角度來看,分片只是數(shù)據(jù)塊。最后,通過danksharding,分片費用市場合二為一,最終設(shè)計看起來就像一條非分片鏈,但在幕后發(fā)生了一些數(shù)據(jù)可用性抽樣魔術(shù)(data availability sampling magic)以進行分片驗證。

這種方法的問題是:這些分片形式在很大程度上只是想法和數(shù)學(xué)模型,而Danksharding是一個完整且?guī)缀蹩梢詫崿F(xiàn)的規(guī)范。因此,考慮到以太坊的環(huán)境和限制,在我看來,分片的簡化和去野心化絕對是正確的舉措。也就是說,更雄心勃勃的研究也有一個非常重要的作用:它確定有前途的研究方向,即使是非常復(fù)雜的想法通常也有那些仍然提供很多好處的想法的“相當(dāng)簡單”的版本,而且很有可能它將在未來幾年顯著影響以太坊的協(xié)議開發(fā)(甚至是Layer-2協(xié)議)。
EVM中的更多或更少的功能?
實際上,除了安全審計之外,EVM的規(guī)范基本上可以在 2014 年年中推出。然而,在接下來的幾個月里,我們繼續(xù)積極探索我們認(rèn)為可能對去中心化應(yīng)用程序非常重要的新功能。有的沒添加進去,有的添加進去了。
-
我們考慮添加一個「POST」 操作碼,但決定反對。POST操作碼將進行異步調(diào)用,該調(diào)用將在其余事務(wù)完成后執(zhí)行。
-
我們考慮添加一個「ALARM 」操作碼,但決定反對。 除了在未來的某個塊中執(zhí)行異步調(diào)用外,「ALARM」的功能類似于「POST」。
-
我們添加了日志功能,允許合約輸出不涉及狀態(tài)但可以被 dapp 接口和錢包解釋的記錄。值得注意的是,我們還考慮過讓 ETH 轉(zhuǎn)賬發(fā)出日志,但最終決定不這么做——理由是“人們很快就會轉(zhuǎn)向智能合約錢包”。
-
我們考慮擴展「SSTORE 」以支持字節(jié)數(shù)組,但出于對復(fù)雜性和安全性的擔(dān)憂而決定反對。
-
我們添加了預(yù)編譯,這些合約使用本機實現(xiàn)執(zhí)行專門的加密操作,其 gas 成本比 EVM 中的成本低得多。
-
在推出后的幾個月里,狀態(tài)租金(state rent)一次又一次的被考慮,但從未包括在內(nèi)。這太復(fù)雜了。今天,正在積極探索更好的狀態(tài)到期方案(state expiry schemes),盡管無狀態(tài)驗證(stateless verfication)和提議者/構(gòu)建者分離意味著它現(xiàn)在的優(yōu)先級要低得多。
今天來看,大多數(shù)不添加更多功能的決定已被證明是非常好的決定。沒有明顯的理由添加「POST」操作碼?!窤LARM」操作碼實際上很難安全地實現(xiàn):如果區(qū)塊 1…99999 中的每個人都設(shè)置一個「 ALARM」 在區(qū)塊 100000 處執(zhí)行大量代碼會發(fā)生什么?該區(qū)塊需要幾個小時來處理嗎?一些預(yù)定的操作會被推遲到以后的區(qū)塊嗎?但如果發(fā)生這種情況,那么還有什么保證「ALARM」可以保留呢?「SSTORE」對于字節(jié)數(shù)組很難安全地完成,并且會大大擴展最壞情況的見證大小。
狀態(tài)租金問題更具挑戰(zhàn)性:如果我們實際上從第一天開始實施某種狀態(tài)租金,我們就不會讓智能合約生態(tài)系統(tǒng)圍繞持久狀態(tài)的規(guī)范化假設(shè)發(fā)展。以太坊本來會更難構(gòu)建,但它本來可以更具可擴展性和可持續(xù)性。同時,我們當(dāng)時的狀態(tài)租金計劃確實比我們現(xiàn)在的要糟糕得多。有時,好主意需要數(shù)年時間才能得出,沒有更好的解決方法。
「LOG」的替代路徑
LOG可以通過兩種不同的方式以不同的方式完成:
1,我們可以讓 ETH 轉(zhuǎn)賬自動發(fā)出一個「LOG」。這將為交易所和許多其他用戶節(jié)省大量精力和軟件錯誤問題,并加速每個人對日志的依賴,這具有諷刺意味的是,有助于智能合約錢包的采用。
2,我們完全可以不用「LOG」操作碼,而是把它變成一個 ERC:會有一個標(biāo)準(zhǔn)合約,它有一個函數(shù)submitLog,并使用以太坊存款合約中的技術(shù)來計算該區(qū)塊中所有日志的 Merkle 根。EIP-2929或區(qū)塊范圍的存儲(相當(dāng)于「TSTORE」 但在出塊之后清除)都會使這個便宜。
我們強烈考慮過(1),但拒絕了。主要原因是簡單:日志更容易來自「LOG」操作碼。
我們還(非常錯誤地?。┢谕蠖鄶?shù)用戶能夠快速遷移到智能合約錢包,這可能已經(jīng)使用操作碼顯式記錄了轉(zhuǎn)賬。
(2)沒有考慮過,但回想起來,它始終是一種選擇。(2) 的主要缺點是缺少用于快速掃描日志的 Bloom 過濾器機制。但事實證明,Bloom 過濾器機制對于 dapp 來說太慢了,對用戶來說是友好的,所以現(xiàn)在越來越多的人使用 TheGraph進行查詢。
總體而言,這兩種方法中的任何一種都可能優(yōu)于現(xiàn)狀。保持「LOG」在協(xié)議之外會讓事情變得更簡單,但如果它在協(xié)議內(nèi)部自動記錄所有 ETH 傳輸,它會更有用。
今天,我可能會贊成最終取消來自EVM 中的「LOG 」操作碼。
如果 EVM 完全不同怎么辦?
EVM 可以采用兩種非常不同的自然路徑:
1,使 EVM 成為一種高級語言,內(nèi)置變量、if 語句、循環(huán)等結(jié)構(gòu)。
2,使 EVM 成為一些現(xiàn)有 VM(LLVM、WASM 等)的副本。
第一條路徑從未被真正考慮過。這條路徑的吸引力在于它可以使編譯器更簡單,并允許更多的開發(fā)人員直接在 EVM 中編碼。它還可以使 ZK-EVM 結(jié)構(gòu)更簡單。該路徑的弱點在于它會使 EVM 代碼在結(jié)構(gòu)上更加復(fù)雜:它不是一個簡單的連續(xù)操作碼列表,而是一個必須以某種方式存儲的更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。也就是說,錯過了兩全其美的機會:一些 EVM 更改本可以給我們帶來很多好處,同時保持基本 EVM 結(jié)構(gòu)大致原樣:禁止動態(tài)跳轉(zhuǎn)并添加一些旨在支持的操作碼子程序( ban dynamic jumps and add some opcodes designed to support subroutines 另見:EIP-2315),只允許在 32 字節(jié)字邊界上訪問內(nèi)存,等等。
第二條路徑被建議了很多次,也被拒絕了很多次。通常的論點是它允許程序從現(xiàn)有語言(C、Rust 等)編譯到 EVM 中。反對的論點一直是,鑒于以太坊的獨特限制,它實際上不會提供任何好處:
-
來自高級語言的現(xiàn)有編譯器往往不關(guān)心總代碼大小,而區(qū)塊鏈代碼必須進行大量優(yōu)化以減少每個字節(jié)的代碼大小。
-
我們需要 VM 的多個實現(xiàn),并有一個硬性要求,即兩個實現(xiàn)永遠(yuǎn)不會以不同的方式處理相同的代碼。在我們沒有編寫的代碼上進行安全審計和驗證會更加困難。
-
如果虛擬機規(guī)范發(fā)生變化,以太坊要么總是隨之更新,要么越來越不同步。
因此,對于 EVM 來說,可能從來沒有一條可行的路徑與我們今天所擁有的完全不同,盡管有很多較小的細(xì)節(jié)(跳轉(zhuǎn)、64 位 vs 256 位等)如果完成的話可能會帶來更好的結(jié)果不同。
ETH 供應(yīng)是否應(yīng)該以不同的方式分配?
Etherscan的這張圖表大致代表了當(dāng)前的 ETH 供應(yīng)量:
今天存在的大約一半的 ETH 是在公開的以太坊銷售中出售的,任何人都可以將 BTC 發(fā)送到標(biāo)準(zhǔn)化的比特幣地址,并且最初的 ETH 供應(yīng)分配是由一個開源腳本計算的,該腳本掃描比特幣區(qū)塊鏈以進行交易到那個地址。其余大部分已開采。黑色部分-標(biāo)記為“其他”的 1200 萬 ETH,是預(yù)挖礦(premine),為分配給以太坊基金會和大約 100 名以太坊協(xié)議的早期貢獻(xiàn)者的。
這個過程有兩個主要的批評:
-
premine以及以太坊基金會收到銷售資金的事實并不是可信的中立。一些收件人地址是通過一個封閉的過程手工挑選出來的,必須相信以太坊基金會不會借錢來回收收到的資金,以便將出售重新投入到出售中,以給自己更多的 ETH(我們沒有,也沒有人認(rèn)真地聲稱我們有,但即使是完全信任的要求也會冒犯一些人)。
-
premine 過度獎勵了早期的貢獻(xiàn)者,而留給后來的貢獻(xiàn)者的太少了。75% 的 premine 在啟動前用于獎勵貢獻(xiàn)者的工作,而在啟動后,以太坊基金會只剩下 300 萬個 ETH。在 6 個月內(nèi),為了經(jīng)濟生存而出售的需求減少到大約 100 萬 ETH。
在某種程度上,這些問題是相關(guān)的:盡量減少對中心化的看法的愿望導(dǎo)致了較小的預(yù)挖礦,而較小的預(yù)挖礦更快地耗盡了。
這不是事情可以完成的唯一方式。Zcash有一種不同的方法:固定 20% 的區(qū)塊獎勵分配給協(xié)議中硬編碼的一組接收者,并且每 4 年重新協(xié)商一組接收者(到目前為止,這種情況已經(jīng)發(fā)生過一次)。這本來會更可持續(xù),但它會因為中心化而受到更嚴(yán)厲的批評(Zcash 社區(qū)似乎比以太坊社區(qū)更公開地接受更多的技術(shù)領(lǐng)導(dǎo))。
一種可能的替代路徑類似于當(dāng)今某些DeFi 項目中流行的“從第一天開始的 DAO”路線。這是一個可能的易受攻擊的建議:
-
我們同意在 2 年內(nèi),每個區(qū)塊獎勵中的 2 ETH 進入開發(fā)者基金。
-
任何在以太坊銷售中購買 ETH 的人都可以指定他們對開發(fā)者基金的首選分配投票(例如,“每個區(qū)塊 1 ETH 給以太坊基金會,0.4 ETH 給 Consensys 研究團隊,0.2 ETH 給 Vlad Zamfir ……” )
-
被投票支持的接收者從開發(fā)基金中獲得的份額等于每個人投票的中位數(shù),按比例計算,每個區(qū)塊的總數(shù)等于 2 ETH(中位數(shù)是為了防止自我交易:如果你為自己投票,除非你得到至少有一半的其他購買者提到你)
銷售可以由一個法律實體進行,該實體承諾按照與 ETH 開發(fā)基金相同的比例分配銷售期間收到的比特幣(或者燒毀,如果我們真的想讓比特幣持有人高興的話)。這可能會導(dǎo)致以太坊基金會獲得大量資金,非以太坊基金會同樣也會獲得大量資金(從而建立更多的去中心化生態(tài)系統(tǒng)),所有這些都不會破壞可信的中立性。主要的缺點當(dāng)然是代幣投票真的很糟糕,但實際上我們本可以意識到 2014 年仍然是一個早期和理想主義的時期,代幣投票最嚴(yán)重的缺點只會在銷售結(jié)束后很久才開始發(fā)揮作用。
這會是一個更好的主意并開創(chuàng)一個更好的先例嗎?可能是!盡管實際上即使開發(fā)基金完全可信中立,但今天對以太坊的預(yù)挖礦大喊大叫的人很可能剛剛開始對 DAO 分叉提出更大的反對聲音。
我們可以從這一切中學(xué)到什么?
總的來說,我有時覺得以太坊最大的挑戰(zhàn)來自于兩種愿景之間的平衡——一個重視安全性和簡單性的純粹而簡單的區(qū)塊鏈,以及一個用于構(gòu)建高級應(yīng)用程序的高性能和功能性平臺。上面的許多示例只是其中的一個方面:我們是功能更少但更像比特幣,還是功能更多但對開發(fā)人員更友好?我們是否非常擔(dān)心使開發(fā)資金可信地中立并更像比特幣,還是我們首先擔(dān)心的是確保開發(fā)人員獲得足夠的獎勵以使以太坊變得更好?
我個人的夢想是嘗試同時實現(xiàn)這兩個愿景——一個規(guī)范每年比前一年更小的基礎(chǔ)層,以及一個以Layer2協(xié)議為中心的強大的開發(fā)人員友好的高級應(yīng)用程序生態(tài)系統(tǒng)。也就是說,到達(dá)這樣一個理想的世界需要很長時間,更明確地意識到這需要時間,我們需要逐步考慮路線圖可能會對我們有很大幫助。
今天,有很多事情是我們無法改變的,但還有很多事情我們?nèi)匀豢梢愿淖?,而且仍然有一條道路可以在功能性和簡單性方面得到充分的改善。有時路徑是曲折的:我們需要先增加一些復(fù)雜性以啟用分片,這反過來又在頂部啟用了許多Layer2可擴展性。也就是說,降低復(fù)雜性是可能的,以太坊的歷史已經(jīng)證明了這一點:
-
EIP-150使調(diào)用堆棧深度限制不再相關(guān),減少了合約開發(fā)人員的安全擔(dān)憂。
-
EIP-161將“空賬戶”的概念作為與字段為零的賬戶分開的東西不再存在。
-
EIP-3529刪除了部分退款機制,使 gas 代幣不再可行。
正在醞釀中的想法,如Verkle 樹,可以進一步降低了復(fù)雜性。但未來如何更好地平衡這兩種愿景是我們應(yīng)該開始更積極思考的問題。










2aF85ObxjDQWdHBDGQ9tcHr2kVU says:
nimabi says:
2Z19Ge3DgSgTf1c8FhaMOchYRbp says: