加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads
首頁 > BNB > Info

虛擬機科普專欄 | Rust智能合約的應用_ASM:WASABI幣

Author:

Time:1900/1/1 0:00:00

往期“智能合約執行引擎的前世今生”、“熟悉的新朋友-鏈上JVM”中,我們介紹了智能合約的起源,以及自研的可以執行Java智能合約的執行引擎HVM。雖然HVM相比于EVM,性能已經有了很大的提升,但是由于其字節碼數量很大,在解釋執行的場景下執行性能十分受限。另一方面,合約漏洞(不考慮業務邏輯漏洞)引發的安全問題,每年都在發生,所造成的經濟損失都十分嚴重,那么有沒有一種方案能讓使用者拋開個人因素,盡量寫出安全的合約?

為了解決這兩個迫切的問題,我們引入了wasm虛擬機FVM,以及Rust合約編寫框架。下面本文將詳細介紹這兩個部分在智能合約領域的應用。

眾所周知,solidity語法在更新時出于一些考量并沒有做好兼容工作,導致不同版本的語法差異很大,開發人員在不同版本的語法之間來回切換,著實浪費精力。另外,由于區塊鏈區別于傳統的互聯網技術有著“不可篡改”的特性,一旦產品發布,無法以補丁的形式修復現存在的問題,也無法在原有的基礎上進行版本迭代。這就需要合約開發者能一次就寫出沒有任何問題的合約,否則容易造成巨額的經濟損失。然而事情一旦過度依賴于"人",往往會帶來量子學的色彩,最好是有另外一套機制來確保合約的正確性。

Kava 增加對以太坊虛擬機智能合約的支持:金色財經報道,Kava 在其以太坊 Co-Chain 的 Alpha 版發布中增加了對以太坊虛擬機 (EVM) 智能合約的支持。EVM 的發布使來自以太坊生態系統的開發人員和去中心化應用程序或dapps能夠在 Kava 上構建和部署。作為 Kava Pioneer Program 的一部分,以太坊 Co-Chain 的封閉測試網將部署超過 15 個協議,包括收益農業協議 Beefy Finance、收益聚合器 AutoFarm 和流動性協議 RenVM。這些項目將在主網啟動之前測試 Kava 的以太坊和 Cosmos 聯合鏈之間的互操作性。在主網啟動后,在 Kava 網絡上啟動的協議也將能夠利用其 7.5 億美元的 Kava Rise 開發者激勵計劃。(coindesk)[2022/3/9 13:46:37]

Rust作為高效、可靠的通用語言毫無疑問是現有的最好解決方案。

Cardano在以太坊虛擬機開發網絡中增加新編程語言Glow:Cardano在以太坊虛擬機(EVM)開發網絡中增加了一種新的編程語言Glow,該語言旨在簡化智能合約的編寫和部署。引入Glow將改善開發過程并降低其成本。(U.Today)[2021/2/26 17:56:57]

Rust語言的可靠性依托于豐富的類型系統和所有權模型,以及強大的編譯器,在編譯期就能捕獲經典錯誤。這迫使開發者在編寫合約過程中,思考自己所寫的每行代碼是否準確,并通過編譯器來確認,保證通過編譯器檢查的合約代碼一定是安全的,極大的提高了合約的安全性以及可靠性。

此外,我們自研的合約框架提供了一個運行時的測試框架,讓開發者能模擬合約運行,無需部署就能在鏈下找到合約中存在的問題。這無疑是給上鏈的合約增加了一重保險。

另外,我們的合約框架利用rust的宏展開技術,將操作放在宏注解里面。這樣能讓開發者在使用過程中更多的關注自己合約的業務邏輯,從某種程度上保證了合約邏輯安全,畢竟只需要專注一個部分而沒有其他因素的干擾,能讓開發者更加投入的去打磨邏輯的細節。

Telos發布以太坊虛擬機EVM 可運行與以太坊兼容的智能合約:Telos今日在其測試網上發布了一個以太坊虛擬機(EVM)。它將使開發者能夠創建和運行與以太坊兼容的智能合約,而無需支付交易費用。開發者已經被邀請使用以太坊的主要編程語言Solidity來在測試網上運行智能合約,之后在7月份將在mainnet上啟動Telos EVM。Telos聲稱可以支持每秒10000次交易(TPS),而且不收取交易費用。這是以太坊每秒14次交易收費的一個有競爭力的替代品。(Cointelegraph)[2020/6/18]

EVM在本質上是腳本程序,是基于棧的虛擬機,需要由編譯程序翻譯成指令后執行,即解釋執行,這導致EVM的執行效率非常低。與之相對,wasm使用了編譯執行的方式,采用了虛擬機/字節碼技術,并定義了緊湊的二進制格式,擁有更高更快的智能合約執行速度。因此我們引入wasm極大的提高了整個合約的運行效率。

WASM(WebAssembly)按照字面意思就是web匯編,是為web瀏覽器定制的匯編語言。這里雖然說是定制,但隨著靈性的發展,它不僅僅只適用于web,其《核心規范》更是與平臺無關。既然號稱匯編,那它顯然具有匯編語言的特點:

Nervos:理想的區塊鏈網絡需將虛擬機、編程模型和網絡架構結合起來:據官方消息,北京時間5月11日上午,Nervos受邀出席硅谷Crypto社區會議Silicon Valley Ethereum Meetup,Nervos高級軟件工程師Jordan Mack,社區成員Matt Quinn和SKALE Labs聯合創始人兼首席執行官Jack O'Holleran發表了主題演講,就分層架構進行了深入交流。

Nervos表示,一個理想的區塊鏈網絡,需要結合獨特的設計決策,并將虛擬機、編程模型和網絡架構結合起來,以更好地支持Layer 2協議和DApp。SKALE表示,一個理想的網絡的體系結構和一些關鍵的組件,可以提高安全性、提升交易吞吐量,并且加快DApp開發速度。

Silicon Valley Ethereum Meetup是Crypto社區中最大的Meetup組織之一,擁有4700多名成員,舉辦過100多場活動。[2020/5/11]

1)層次低,接近于機器語言,提高運行效率;

聲音 | BM:新的 WABT 虛擬機在相同硬件上將快 2 倍:據 IMEOS 報道,REX 電報群在討論 CPU 問題暴漲問題時,有成員提到 EOS 差不多相當于 ETH,Blocktwitter 能達到 4K TPS 是因為都是垃圾文本。BM 回應到,新的 WABT 虛擬機在相同硬件上將快 2 倍,衡量性能表現有持續,峰值和爆發。EOS 可以增加可持續率一旦我們修剪掉歷史。該功能已經實施一半并具有高優先級,一旦修剪準備就緒,我們可以持續 CPU 提升到每秒 400 ms。一旦編譯的 WASM 準備好,轉賬和投注將會降至 25% CPU 時間或更少。這意味著每次傳輸 250us 或每秒 1600 次傳輸。[2018/9/7]

2)適合作為目標代碼,由其他高級語言(C/C++/Rust/Go等)編譯器生成,擴大適用性;

另外模塊是wasm程序編譯、傳輸和加載的單位。wasm定義了兩種模塊格式:

二進制格式:是wasm模塊的主要編碼格式,文件以.wasm為后綴。由于其格式設計的非常緊湊,可以縮小二進制體積,擁有更快的傳輸和執行效率。文本格式:文件以.wat為后綴,此處不詳細展開。模塊的劃分使得wasm的組織結構更加清晰,解析更為方便,極大地提升了解析的效率。

那么除了使用Rust來編寫合約,以及將合約編譯成wasm字節碼,真正要將合約運行起來,依然需要為wasm提供一個運行環境,也就是FVM做的事。

從語義上講,一個wasm模塊從二進制格式到最終被執行可以分為3個階段:解碼,驗證,執行。解碼階段把二進制模塊解碼為內存格式;驗證階段對模塊進行靜態分析,確保模塊的結構滿足規范要求,且函數的字節碼沒有不良行為;執行階段又可以分為實例化和函數調用兩個部分。

?FVM組成

顯然,FVM完整的功能應當是包含上面提及到的解碼、驗證、實例化以及函數調用等部分。我們按照整個流程實現了FVM,但是在實際運行中,發現執行過程會消耗大量的性能在內存的讀寫及分配上。為了進一步提高FVM的執行性能,我們新增了一層編譯模塊,將wasm的棧式內存轉為基于寄存器式內存,對內存進行標記并加以重復利用,避免了頻繁的分配內存,極大的提升了整體執行效率。

FVM與平臺的賬本交互

在rust智能合約中,我們對數據是否上鏈做了明確的區分,只有標定特定宏注解的字段數據才會上鏈交互。在合約部署時,對于初始化的字段寫入賬本;在調用合約方法時,如果使用到合約的持久化字段,合約執行引擎會調用賬本讀取的方法從賬本中獲取其數據。對于存在有數據寫入操作(即更新)的字段,待合約執行結束后,若賬本還未存在此字段則將其寫入賬本,若此字段已存在,則對相應的賬本數據進行更新。

整體流程

整個介紹下來,相信大家對Rust智能合約的使用有了個大概的印象。這里對整個流程做個梳理:

step1:?用戶通過Rust合約框架編寫智能合約(一定要測試)

step2:編譯合約為wasm文件

step3:將wasm合約文件部署到FVM

完成以上步驟你就成功的運行了一個合約?。

目前的合約都只是針對相對簡單的業務,在我們的規劃中,FVM既能應用在現有的合約場景,又能應用在業務復雜以及對合約執行速度有較高要求的場景。同時給了非區塊鏈行業技術人員一種“零學習成本”的上鏈方法——使用他們熟悉的編程語言來編寫合約。擴大了區塊鏈技術的應用場景以及影響范圍,以便探尋更多的區塊鏈技術落地方案。

目前FVM在性能上的表現已經很好的達到了預期,但是我們不會滿足于眼前的現狀停滯不前。在后續的規劃中,我們將繼續探尋一些優化方案,比如:

1)?虛擬機緩存的優化;

2)引入AOT(Ahead-of-Time),?即預先編譯的方式,替換現有的字節碼解釋執行,將wasm模塊直接編譯成go代碼,利用go的插件機制直接加載運行,得到極致的性能體驗。

技術在不斷的推陳出新,優化工作將一直持續下去,“保持先進”是我們的目標。

本文從「安全性」以及「效率的提升」兩個角度,引出了對rust智能合約支持的FVM,探討了rust與wasm在智能合約上為什么會有如此表現,以及我們使用FVM的意義。接下來我們還會對支持區塊鏈上SQL執行的KVSQL進行詳細介紹,敬請期待!

作者簡介

李凱

趣鏈科技基礎平臺部區塊鏈虛擬機研究小組

參考文獻

?rust程序設計語言

《WebAssembly原理與核心技術》

Tags:ASMWAS以太坊USTjasmy幣下架WASABI幣以太坊幣在中國合法嗎trustwallet怎么提現人民幣

BNB
歐科云鏈集團宣布加入美國數字商會,與全球巨頭共促區塊鏈行業發展_區塊鏈:數字資產

據中國網財經消息,8月30日,歐科云鏈集團宣布加入美國數字商會,成為CDC主席團成員,并將加AMLTaskForce、TokenAlliance等工作小組.

1900/1/1 0:00:00
IEEE P3217《區塊鏈系統應用接口規范》國際標準啟動_區塊鏈:PoSW Coin

在2021年8月27日召開的IEEEP3217《區塊鏈系統應用接口規范》國際標準啟動媒體發布會上.

1900/1/1 0:00:00
價值 4500 萬美元的社區實驗 —— 淺談文字 NFT 「 Loot 」_比特幣:PIXLS Vault (NFTX)

數日前,Vine創始人@dhof在推特上公布了一個全新的「公平鑄造」項目——Loot。這是一個簡單到令人咋舌的NFT,其中包含8行字符分別代表著游戲人物常見的8個裝備,武器、胸甲、頭盔、腰甲、足.

1900/1/1 0:00:00
黑客在Banksy官網給虛假NFT打廣告,收藏大佬也“中招”了_NFT:KSY

本文來自?BBC,原文作者:JoeTidyOdaily星球日報譯者|余順遂一名黑客在知名涂鴉藝術家?Banksy?官方網站上發布假冒?NFT廣告,并誘騙一名英國收藏家購買該?NFT.

1900/1/1 0:00:00
加密基礎設施服務商Figment完成5000萬美元B輪融資,Galaxy Digital參投_ENT:RES

巴比特訊,8月16日,加密基礎設施服務商Figment完成5000萬美元B輪融資,SenatorInvestmentGroup和LibertyCityVentures領投.

1900/1/1 0:00:00
百威將推特頭像換成“Tom Sachs Rocket Factory”NFT作品_區塊鏈:INB

巴比特訊,知名啤酒品牌百威已將其推特頭像換成了TomSachsRocketFactoryNFT作品,并發布了帶有火箭標志的推文,在推文中還評論道“我們準備好了”.

1900/1/1 0:00:00
ads