編者注:本文為Parity開發者WeiTang寫作的,關于如何增強EVM后向兼容性的文章,改進Gas機制的方案堪稱大膽。
如果我們有機會可以重新設計EVM、提升其后向兼容性、讓它對功能升級更為友好,而且可以完全不必考慮我們現有的歷史包袱,我們該怎么做呢?
在這篇文章中,我會探究這個問題,并記錄下由此演化出來的技術說明和設計哲學。
目標
Web是沒有版本區別的,而且已經存在了幾十年。因此我在此假設,我們想做一個同樣沒有版本區別的EVM。
我們同樣希望保證,這種虛擬機具備良好的后向兼容性。也就是說,至少能良好兼容我們現有的合約,而且,也可以輕松加入新功能。
Binance申請撤回在塞浦路斯的加密資產服務提供商注冊:6月14日消息,Binance的塞浦路斯部門已申請撤回在塞浦路斯的加密資產服務提供商注冊。Binance于去年10月獲得加密資產服務提供商 (CASP) 的注冊,允許其在塞浦路斯提供現貨、托管、質押和卡服務。[2023/6/14 21:36:52]
無效操作碼
要設計一個永續的EVM,最簡單可能也最重要的改動便是為合約部署添加一個驗證過程。并非所有的字節序列都是有效的EVM代碼,任何無效的操作碼都不應該被部署到鏈上,因為在未來,這些代碼可能會被分配以一個新的操作碼,有不一樣的功能。
Hashed聯創:APT在韓國是Meme幣,散戶稱其為公寓:2月5日消息,韓國加密風投公司Hashed聯創AlexShin表示:Aptos在韓國是一個Meme幣。韓國第一大資產類別是房地產,更確切地說,是公寓。
散戶稱Aptos為公寓(apartment),聲稱如果人們持有APT,有一天就可以買得起一套真正的公寓。近一個月,APT漲幅近5倍,韓國最大交易平臺Upbit的APT現貨交易量一度超過Binance。[2023/2/5 11:48:18]
此種檢查的技術詳述初次成文化是在EIP-1712中。簡要來說,在執行合約創建的狀態轉變函數之前,執行下列檢查:
俄羅斯將測試使用數字盧布進行房地產交易結算:6月23日消息,據俄羅斯媒體報道,俄羅斯央行和參與試點的商業銀行希望使用數字盧布測試各種類型的支付。該計劃旨在試驗與房地產和加密資產購買相關的智能合約和交易。
《消息報》(Izvestia)援引監管機構的話稱,俄羅斯央行計劃于明年4月開始實施數字盧布智能合約。在此之前,數字盧布將在各種場景中接受測試,包括自動支付、個人用戶與企業之間的其他交易,如房地產購買交易。
Promsvyazbank(PSB)解釋稱,智能合約有助于合同條款的執行,而無需第三方作為擔保人。這筆錢保存在數字盧布平臺上的智能合約錢包中,并在產權轉移后立即發送到賣方的錢包。Rosbank補充說,該技術可用于貸款人購買房地產的定向融資。
Vneshtorgbank(VTB)詳細介紹了數字盧布智能合約將允許大型企業進行復雜的交易。該銀行也參與試點,計劃在9月開始測試使用數字盧布購買數字金融資產(DFA)。(Bitcoin.com)[2022/6/23 1:26:54]
遍歷代碼的字節碼
如果代碼是一個PUSH(n)操作碼,則跳過接下來n個字節
如果字節碼是一個有效的操作碼,或者指定了無效指令,繼續
否則,捕捉到錯誤
上述檢查有點類似于jumpdestination檢查。注意,對于例外情形,我們在這里使用的是“trap”,下文我們會詳細解釋。
功能調查
如果EVM要消弭掉版本的差別,基于EVM的代碼執行應有能力調查出底層環境是否支持一種特定的功能。給定EVM所承擔的角色,我們總是希望一個已經定義好的操作碼的功能可以保持不變,并且還可以引入新的操作碼來添加功能。而一些合約可能在引入某些特定功能之前就已經部署上去了。這些合約可以安排一個備用的子程序,在EVM不支持某功能的時候就運行子程序,而一旦硬分叉激活后就立即開始使用新功能。功能調查組件就像這里要用到的跳轉器。因此,我們正式地定義一種新的操作碼HAS_FEATURE。
該操作碼接收一個堆棧參數。它會檢查該參數是否位于0到2^8之間,如果不是,就捕捉錯誤
如果參數不受支持,就把0x0推回棧中;否則就推入0x1
例外與捕捉
在EVM的運行過程中,可能有很多因素會導致執行失敗。單個交易可能因為耗盡Gas而失敗;調用棧中的每一層都可能單獨失敗,而其錯誤必須被父調用框架明確處理。這些特性給了我們一定的彈性,但對于要運行在區塊鏈上的合約來說,并不必然就是好事。這里,我們想重新定義一下,任何EVM本身發出的異常,都可以有trap行為,作為對fail的替代。也就是說,所有調用框架的所有執行過程中、消耗任意gas的時候、甚至被當前的狀態函數回滾變更的時候,都可以有trap。合約接下來就被會鼓勵使用返回值,在它們想跟父調用者交流非致命錯誤的時候。
Gas消耗量
過去的經驗已經證明,我們總是想調整Gas消耗量。因為我們要這樣做,我們不希望合約開發者對交易的Gas消耗量甚至是任何操作碼的Gas消耗量作任何假設。要實現這一點,只需將EVM內所有關于Gas消耗量的公開信息都移除。這樣Gas消耗量就成了一個外在于EVM、被隱藏起來的“實現上的細節”,只需在區塊層執行中妥善處理。正式地移除0x5a的Gas操作碼。此外,重新定義CALL、CALLCODE和DELEGATECALL,不再使用gas棧參數,而是采取現有執行框架中所有可用的Gas。
原文鏈接:
https://that.world/~essay/nevm/
作者:WeiTang
翻譯:阿劍
尊敬的用戶: AMAL聯合BiKi.com舉辦的的活動已經結束了。活動獎勵已于9月10日發放至獲獎用戶賬戶。請您查看.
1900/1/1 0:00:00據彭博社報道,Facebook在一封寫給美國參議員關于加密項目Libra的信中提到,支持該穩定幣的法定貨幣可能還會包括新加坡元。Facebook此舉是為了解決對中國可能會影響該加密貨幣的擔憂.
1900/1/1 0:00:00前言:S2F是用來對比特幣價值進行預測的模型。那么,S2F是否是虛假的假設?本文則試圖對此進行證偽,最后它的結論是:“比特幣就像是醉漢,而Stock-to-Flow就是回家的路.
1900/1/1 0:00:00Bitget全球用戶: 根據前期公示的GT銷毀計劃,Bitget已于2019年9月5日15:00(UTC08:00)結束GT-BFT的兌換工作.
1900/1/1 0:00:00尊敬的EXX用戶: ?????您好!根據市場的情況及用戶的建議,EXX將于香港時間2019年9月9日15:00開放HOPE的充值業務.
1900/1/1 0:00:00BFT支持者專屬福利!交易、持倉共同瓜分3萬BFT!活動時間:2019年9月10日18:00-2019年9月17日18:00(UTC08:00) 活動規則: 活動期間交易BFT.
1900/1/1 0:00:00