Vitalik長文回顧:那些以太坊「沒有走過的路」
原文標題:《
原文標題:《The roads not taken》
吳說區塊鏈吳說區塊鏈
吳說區塊鏈
二級標題
吳說區塊鏈
以太坊開發社區在以太坊的早期階段做出了許多決定,這些決定對項目的發展軌跡產生了巨大的影響。在某些情況下,以太坊開發者有意識地做出決定,在我們認為比特幣存在問題的地方進行改進。在其他地方,我們正在創造一些全新的東西,我們只是必須想出一些東西來填補空白,但有很多東西可以選擇。還有一些地方,我們需要在更複雜和更簡單的東西之間進行權衡。有時候,我們會選擇比較簡單的東西,但有時候,我們也會選擇比較複雜的東西。
二級標題
二級標題
我們是否應該採用更簡單的PoS 機制?
以太坊即將合併的Gasper PoS 機制是一個複雜的系統,但也是一個非常強大的系統。它的一些屬性包括:
非常強大的單區塊確認:一旦交易被納入區塊,通常在幾秒鐘內,該區塊就會被最終確定,除非有很大一部分節點是不誠實的,或者有極端的網絡延遲,否則它是無法被逆轉的。
經濟最終性:一旦一個區塊被最終確認,它就不能被逆轉,除非攻擊者能頂住損失數百萬ETH 被罰沒。
但是創造一個具有這些特性的系統是困難的。這需要數年的研究,數年的失敗實驗,通常需要大量的努力,最終的輸出相當複雜。
二級標題
如果我們的研究人員不需要擔心那麼多的共識,有更多的空閒思考時間,那麼也許,只是也許,rollups 可以在2016 年被發明出來。這就引發了我們的一個思考:我們真的應該對我們的PoS 要求如此高的標準嗎?因為即使是一個更簡單和更弱的PoS 也會比PoW 的現狀有很大的改進。
許多人有一個誤解,認為PoS 本身就很複雜,但實際上有很多PoS 算法幾乎和中本聰PoW 共識一樣簡單。 NXT 的PoS 自2013 年以來就存在,本來也是一個現成的候選;雖然它存在一些問題,但這些問題很容易被修補,我們可以從2017 年,甚至從一開始就有一個合理可行的PoS。 Gasper 之所以比這些算法更複雜,只是因為它試圖完成的任務比它們多得多。但是,如果我們在一開始就不要好高騖遠,我們可以先專注於實現一套更有限的目標。
二級標題
二級標題"但如果我們走的是相反的道路呢?實際上有一些以太坊的研究人員,他們深入探索了一個更複雜的分片系統:分片將作為鏈,會有分叉選擇規則,其中子鏈依賴於父鏈,跨分片消息將由協議路由,驗證器將在分片之間輪換,甚至DApp 將在分片之間自動獲得負載平衡。"二級標題
這種方法的問題是:這些形式的分片在很大程度上只是想法和數學模型,而Danksharding 是一個完整的、幾乎可以實施的規範。因此,鑑於以太坊的情況和限制,在我看來,分片的簡化和去歧義化絕對是正確之舉。也就是說,更雄心勃勃的研究也有非常重要的作用:它確定了有前途的研究方向,即使是非常複雜的想法往往也有
合理的簡單
二級標題
二級標題
EVM 中功能的選擇"現實上,除了安全審計之外,EVM 的規範基本上在2014 年中期就可以推出。然而,在當時接下來的幾個月裡,我們繼續積極探索我們認為可能對去中心化區塊鏈真正重要的新功能。有些功能加進EVM 了,有些沒有。"。
我們曾考慮增加一個POST 操作碼,但決定不這樣做。 POST 操作碼會進行異步調用,會在交易完成後被執行。
我們曾考慮過添加一個ALARM 操作碼,但決定不這樣做。 ALARM 的功能類似於POST,只是在未來的某個塊中執行異步調用,允許合同安排操作。
我們添加了日誌(logs),它允許合約輸出不觸及狀態的記錄,但可以被DApp 接口和錢包解釋。值得注意的是,我們也考慮過讓ETH 轉賬發出日誌,但決定不這樣做,理由是
我們增加了預編譯(precompiles),這是一種使用本地實現執行專用加密操作的合約,比在EVM 中執行要便宜得多。
二級標題
在上線後的幾個月裡,我們反复考慮了狀態租金(state rent),但從未包括在內。這實在是太複雜了。今天,人們正在積極探索更好的狀態過期(state expiry)方案,儘管無狀態驗證和提議者/構建者分離(PBS)意味著它現在是一個低得多的優先級。
如今來看,大多數不增加功能的決定都被證明是非常好的決定。沒有明顯的理由來增加一個POST 操作碼。 ALARM 操作碼實際上是很難安全實現的:如果1...9999 區塊中的每個人都設置了一個ALARM,在100000 區塊執行大量的代碼,會發生什麼?那個區塊會不會花幾個小時來處理?一些預定的操作會被推到後面的區塊嗎?但是如果這種情況發生了,那麼ALARM 還能保留什麼保證呢?字節數組的SSTORE 很難安全地做到,而且會大大擴展最壞情況下的見證大小。
二級標題
二級標題
LOG 的備選方案
LOG 可以通過兩種不同的方式來完成。
我們強烈考慮過第一種方式,但拒絕了它。主要原因是,日誌只來自於LOG 操作碼,這更容易。我們還非常錯誤地預計大多數用戶會迅速遷移到智能合約錢包,這可以明確使用操作碼來記錄轉賬。
二級標題
我們沒有考慮第二種方式,但回過頭來看,這其實也是一個選擇。第二種方式的主要缺點是缺乏一個快速掃描日誌的布隆過濾器機制(Bloom filter)。但事實證明,布隆過濾器機制太慢了,對DApp 來說並不友好,所以現在越來越多的人使用TheGraph 來進行查詢。
總的來說,這些方法中的任何一種都有可能優於現狀。不納入LOG 會使事情更簡單,但如果納入LOG,自動記錄所有ETH 的轉移會使它更有用。
二級標題
二級標題
如果當前EVM 選擇了完全不同的路,會怎樣?
當初EVM 有兩條非常不同的路可以選:
使EVM 成為一種更高級的語言,具有變量、if 語句、循環等內置結構。
使EVM 成為某些現有虛擬機(LLVM、WASM 等)的副本。
現有的高級語言的編譯器往往不關心總的代碼大小,而區塊鏈代碼必須大量優化以減少每一個字節的代碼大小。
二級標題
我們需要虛擬機的多種實現,並嚴格要求兩個實現不能以不同方式處理相同的代碼。在我們沒有編寫的代碼上進行安全審計和驗證會更難。
如果虛擬機規範發生變化,以太坊將不得不始終與它一起更新,或者越來越不同步。
二級標題
二級標題
ETH 供應是否應該以不同方式分配?
目前的ETH 供應量大致可以用Etherscan 的這個圖來表示:
目前大約有一半的ETH 是在以太坊公募中出售的,任何人都可以將BTC 發送到一個比特幣地址,最初的ETH 供應分配是通過一個開源腳本計算出來的。其餘的大部分基本也已通過挖礦產出。黑色部分的1200 萬ETH 標記為“other”,其實是預挖部分,在以太坊基金會和大約100 位以太坊協議的早期貢獻者之間分配的額度。
對於這個過程有兩個主要的批評:
預挖以及以太坊基金掌管公募資金這兩件事,都不具備可信的中立性。一些收款人地址是通過一個封閉的過程人工挑選的,以太坊基金會必須被信任,不能通過貸款來進一步利用公募所得的資金,以獲得更多的ETH (我們沒有,也沒有人聲稱我們有,但即使是被信任的要求也冒犯了一些人)。"DAO from day 1"預挖過分獎勵了非常早期的貢獻者,而留給後來的貢獻者的太少。 75%的預挖用於獎勵上線前貢獻者的工作,而在上線後,以太坊基金會只剩下300 萬個ETH。在6 個月的時間裡,為了生存而出售的需求使存量減少到100 萬ETH 左右。
在某種程度上,這些問題是相關的:希望盡量減少對中心化的看法促成了較小的預挖,但較小的預挖會更快地耗盡。
這並不是唯一的解決方法。 Zcash 則採用了一個不同的方法:區塊獎勵的20%固定分配給協議中硬編碼的一組接受者,這組接受者每四年重新協商一次(到目前為止,這種情況已經發生過一次)。這將更加可持續,但它會因為過於中心化而受到更嚴厲的批評(Zcash 社區似乎比以太坊社區更公開地接受更多的技術專家領導)。"一個可能的替代路徑是類似於今天在一些DeFi 項目中流行的")
路線。這裡是一個可能的稻草人提議:
每個區塊獎勵中1ETH 給以太坊基金會,0.4ETH 給Consensys 研究團隊,0.2 個ETH 給Vlad Zamfir...
二級標題
被投票支持的接受者得到的發展基金份額等於每個人投票的中位數,按比例計算,總數等於每區塊2ETH(中位數是為了防止自我交易:如果你為自己投票,你什麼也得不到,除非你讓其他購買者中至少有一半人提到你)。
公募可以由一個法律實體來運作,承諾按照ETH 開發基金的相同比例來分配公募過程中收到的比特幣(或者燒掉,如果我們真的想讓比特幣玩家高興的話)。這可能會導致以太坊基金會得到大量的資金,非以太坊基金會的團體也得到大量的資金(導致更多的生態系統去中心化),所有這些都沒有破壞可信的中立性一絲一毫。當然,主要的缺點是,通証投票真的很糟糕,但務實地說,我們可以意識到,2014 年仍然是一個早期和理想化的時間,通証投票最嚴重的缺點在公募結束後很久才會開始發揮作用。
二級標題
二級標題
我們能從這一切中學到什麼?
總的來說,有時我覺得以太坊最大的挑戰來自於在兩個願景之間的平衡:一個重視安全和簡單純粹的區塊鏈,以及一個用於構建高級應用程序的高度性能和功能的平台。上面的許多例子只是其中的一個方面:我們是擁有更少的功能而更像比特幣,還是擁有更多的功能而更適合開發者?我們是擔心讓開發資金變得更中立,更像比特幣,還是我們首先擔心的是確保開發者獲得足夠的獎勵,讓以太坊變得更好?
我個人的夢想是試圖同時實現這兩個願景。一個基礎層,其規範每年都比前一年小,以及一個以二層協議為中心,強大的開發者友好的高級應用生態系統。也就是說,要達到這樣一個理想的世界需要很長的時間,如果能更明確地認識到這需要時間,我們需要一步步地考慮路線規劃,可能會對我們有很大的幫助。
今天,有很多事情我們無法改變,但也有很多事情我們仍然可以改變,而且仍然有一條堅實的道路來改善功能和簡單性。有時這條道路是曲折的:我們需要先增加一些複雜性以實現分片,而分片又能在上面實現大量的二層可擴展性。也就是說,降低複雜性是可能的,以太坊的歷史已經證明了這一點。


