鏈聞ChainNews
公眾號ID:chainnewscom
什麼是以太坊君士坦丁堡的真正意圖,以及我們為什麼相信它為 Plasma 鋪路,最終會加速擴容時代的到來。
撰文:李畫
特別緻謝:吳為龍,Genaro 聯合創始人
原定於 2019 年 1 月 16 日進行的以太坊君士坦丁堡升級因為被曝出程式碼存在安全漏洞,再次被迫推遲。
「唱空以太坊」的聲音再次甚囂塵上,ETH 價格隨即下跌。
高漲的社羣熱情卻總是遭遇一而再再而三的延誤,確定的發展路線每每搭配著綿綿無期的交付時間,理想的去中心開發模式伴隨著低下的開發效率和無窮盡的爭議扯皮,君士坦丁堡升級的過程可以說是以太坊這個明星專案所有槽點的完美集合。
這些都是殘酷的現實。
不過,當市場一邊倒向質疑之時,我們何不把目光拉長遠。
為眾多加密資產投資機構提供區塊鏈專案投資研究報告的 Digital Asset Research 執行長 Greg Cipolaro 接受鏈聞採訪時表示,市場對於以太坊開發進展頻頻延誤、去中心化模式效率低下的批評到處可見,但是從長遠角度,他更看好以太坊這種「市集式」的開發模式。
Digital Asset Research 執行長 Greg Cipolaro
Greg Cipolaro說,這種「市集式」的開發模式同一小支核心團隊開發專案的「教堂式」模式完全不同,更符合開源專案的開發,可以讓更多開發者合作開發並稽覈軟體,讓更多人參與發現漏洞並且貢獻想法,當然也會產生更多觀點,導致開發過程的延誤和爭議。
在市場積聚的消極聲音不斷被放大的時候,是時候從更長遠的眼光,重新審視一下這場儘管被再次推遲、但是註定會到來的君士坦丁堡升級究竟會給以太坊帶來什麼影響?
在這次以太坊君士坦丁堡升級中,被公眾討論最多的話題是區塊獎勵從 3 ETH 降至 2 ETH。道理很簡單,這個議題決定了礦工的區塊獎勵數量,讓挖礦成本相對增加,會影響到礦工、開發者、投資者等利益相關方,從而直接影響以太坊價格。
但究其根本,導致這種變化的原因是以太坊從 PoW 過渡到 PoS 沒有預期中順利,因而不得不再一次延遲難度炸彈,可延遲又讓 ETH 的增發率超過早先計劃,所以最後,不得不透過減產來平衡增發效應。
包含延遲難度炸彈和調整區塊獎勵的 EIP 1234 是一種被動的權宜之計,不涉及以太坊的技術升級本身。
實際上,真正值得人們重視的,也即君士坦丁堡對以太坊本身最大的改變其實在於:它讓以太坊可以更容易、更便宜地使用 Plasma,從而為即將到來的這一 Layer 2 擴容方案鋪路。
Plasma 是目前看來以太坊可以最快和最易實現的提升可擴充套件性的方法,它的順利實施有可能幫助以太坊化解掉目前所面臨的困境和尷尬。
如無意外,Plasma 將在 2019 年第一季度上線測試網,緊跟在為它蕩平障礙的君士坦丁堡升級之後。
這才是此次君士坦丁堡升級最有價值的部分。
什麼是Plasma
Plasma 是由 Joseph Poon 和 Vitalik Buterin 提出的一種以太坊擴容方案,由一系列的智慧合約組成。
Plasma 核心開發者 Joseph Poon
該方案允許在以太坊上建立子鏈,而子鏈還可以繼續建立它們自己的子鏈,這構建出了一種區塊鏈上的區塊鏈,它們以樹結構存在。
子鏈上可以執行復雜的操作,可以執行包含眾多使用者的應用,它只需要與以太坊主鏈進行很少的互動。這種方式可以極大的提高以太坊的吞吐量以及降低執行的成本。
Plasma 使用子鏈向主鏈報告的方式來保障整個網路的安全,它可以被看作是一個法庭系統:以太坊是最高法院,子鏈是下級法院。
當情況正常時,網路執行由下級法院 子鏈 負責,但需要定期提交子鏈的區塊根到主鏈上。但如果某個子鏈懷有惡意,所有在該子鏈上存有價值或狀態的使用者都可以透過向上級法院 以太坊 提交交易來保護自己的資產,以太坊將在此時充當仲裁者。
在 Plasma 架構下,每個子鏈都是自主執行。它們可以有自己的代幣,以激勵這條鏈的驗證者;它們也可以有自己的共識機制。
君士坦丁堡如何為 Plasma 鋪路
君士坦丁堡升級將實現 5 個 EIP Ethereum Improvement Proposal,其中 3 項與 Plasma 有關,分別是 EIP 1014、EIP 1052、EIP 1283。
EIP 1014:Skinny CREATE2
提案內容:
EIP 1014 是由 Vitalik Buterin 本人提出的一種新的建立合約的方法,該方法名為 CREATE2。
Vitalik Buterin
CREATE2 在 0xf5 上新增了一個新的操作碼,其完成的功能與 CREATE 相同,但改變了合約的地址。之前 CREATE 的新合約建立地址需要與建立者地址的雜湊值相關聯,但改變後的 CREATE2 的新合約建立地址是可以由參與各方在合約尚未建立時提前確定的。
提案目的:
CREATE2 是實現以太坊 off-chain 技術的基石,它對需要進行合約互動的 off-chain 應用來講非常重要。
它意味著參與各方能夠在合約生成前就認同合約,能夠與尚不存在但可信賴的合約地址互動,從而可以像合約已經被部署一樣先在鏈下去完成工作,最後只需在鏈上進行簽署和驗證。
EIP 1014 讓使用 Plasma 在鏈下完成大量工作成為一種可行的方案。此外,CREATE2 允許在合約中生成合約,這是子鏈需要具備的重要功能。
EIP 1052:EXTCODEHASH opcode
提案內容:
EIP 1052 由 Nick Johnson 和 Paweł Belic 提出,建議新增一個操作碼 EXTCODEHASH,編號為 0x3F,並用它取代之前的操作碼 EXTCODECOPY 來完成合約程式碼的檢查工作。
EXTCODEHASH 返回的是合約程式碼的 keccak256 雜湊值,EXTCODECOPY 返回的是合約程式碼本身。
提案目的:
我們常常需要檢查某個合約程式碼,比如為了避免與惡意合約來往。以太坊過去使用的方法是透過 EXTCODECOPY 獲得合約程式碼,它會產生兩筆費用,一是 EXTCODECOPY 本身耗費的 700 gas,二是把合約程式碼複製到記憶體中的儲存費用,若合約程式碼龐大,則 gas 花費也會巨大。
但我們檢查合約並不一定需要合約程式碼本身,因此 EXTCODEHASH 採用的方法是返回合約程式碼基本資料的雜湊值。它完成的功能與 EXTCODECOPY 一樣,但花費僅為 400 gas。
EIP 1052 提高了程式碼效率,降低了 gas 成本,雖然對主鏈合約同樣有利,但這一變化帶來的優勢尤其體現在當一個合約對另一個合約進行呼叫時。最大的應用場景在哪兒?在 Plasma 上。
EIP 1052 使得在 Plasma 上進行大規模的合約呼叫成為可能。透過 EXTCODEHASH,子鏈可以更方便地找到合約,也可以更便宜地找到和檢查合約。
EIP 1283:Net gas metering for SSTORE without dirty maps
提案內容:
EIP 1283 由 Wei Tang 提出,它改變了 SSTORE 的 gas 計算方法,讓它更為合理,同時還不需要引入額外的 dirty maps。
SSTORE 的改變影響的是以太坊上的儲存價格。在目前的 gas 計算方法下,如果一個交易對同一個 storage slot 做了多次改動,每一次改動都會被收費,即便改動的結果是在交易完成後才被一次性寫入磁碟裡的。
而 EIP 1283 透過判斷 storage slot 是處於 Fresh 狀態還是 Dirty 狀態來決定是否需要對某一次改動收費。Fresh 是指 storage slot 保持在初始狀態或被重置為初始狀態,Dirty 是指 storage slot 的初始狀態已被更改。
如果 storage slot 保持在 Dirty 狀態,也就是說這次的 SSTORE 操作是屬於改動中的一次,則不被收取 5000 gas 的儲存費用,只需繳納最基本的 200 gas。如果從 Fresh 到 Dirty,則收取 20000 gas 的儲存費用,如果從 Dirty 到 Fresh,則退還 19800 gas 的儲存費用。
舉個例子,如果對某初始狀態為 0 的 storage slot 做了 5 次修改,在之前的計算方法下,使用者將需要繳納 20000 + 4 × 5000 = 40000 gas,而在 EIP 1283 下,只需要繳納 20000 + 4 × 200 = 20800 gas。
提案目的:
EIP 1283 極大地降低了以太坊上的儲存價格。誰對儲存價格最為敏感?子鏈。
Plasma 作為子鏈,儲存消耗巨大,如果沒有這項提案,Plasma 方案將會因為費用問題而難以被廣泛使用。另外,SSTORE 放開記憶體不存表,也說明在未來以太坊會比較多的處理樹結構,也就是鏈上走鏈。
Plasma 為何重要
以太坊需要儘快解決擴容問題。
長遠來看,以太坊旨在成為世界的計算機,但其目前的吞吐量顯然不支撐它實現這一目標;短期來看,包括 EOS 在內的諸多公鏈生態正在快速地發展中,尤其在 DApp 的帶動之下。雖然在眾多開發者和使用者眼中,以太坊仍然是最值得信賴的公鏈,但這種信心也會因其效能問題遲遲不能解決而被損耗,人們或許會離開。
以太坊主要有兩種擴容方式。一種是基於 Layer 1 的分片技術,一種是基於 Layer 2 的 off-chain 技術。
分片技術發展太慢,短期內難以突破,因此在 Layer 1 取得重大進展前,以太坊需要要依靠 Layer 2 來解決擴容。Layer 2 包括狀態通道、Plasma、Truebit 等諸多技術,這其中又以 Plasma 具備更多的應用場景。
此次的君士坦丁堡升級,雖然也是為以太坊平穩過渡到 PoS 做準備,但其更主要的意圖是推 off-chain 以及複雜智慧合約的使用,這正是 Plasma 發展所需要的。
Plasma 發展起來意味著什麼?就像上文中提到的,每個子鏈都是自主執行的,可以有自己的代幣和共識機制,那在這種情況下,人們甚至可以設計出一個以 EOS 方式運作的 Plasma 鏈。
Plasma 能帶來的,不僅僅是提高吞吐量,讓 DApp 良好運轉這麼簡單。
可以預測的是,在不久的將來,會有一大批基於 Plasma 的專案出現。「我們是 XX 場景下的 Plasma」,會是他們介紹自己的第一句話。
所以,在大多數人高呼以太坊正在「墜落」, 我們更希望大家看到,透過這次升級,以太坊正一邊堅守安全性與去中心化的特性,一邊為未來起的跑道做足了準備。以太坊最終是開發者的以太坊,最終需要的,還是所有開發者們最終可以透過協同努力,共同建設這條跑道。
至於以太坊社羣中不同的意見表達、各種複雜利益間的博弈,都是這樣一個開放社羣必然出現的副產品。既來之,則安之。