c++ eos智能合约开发_TrustBase平台智能合约的开发与实现
2020年11月,TrustBase團隊研究并實現了基于Web的波卡智能合約應用平臺。鑒于波卡智能合約開發缺少完善易用的開發工具的支持,TrustBase團隊自主開發了基于Substrate框架的全新底層編程語言Subscript,實現了WASM虛擬機兼容。TrustBase針對智能合約全生命周期開發流程的研究,設計并實現了一套綜合的波卡集成開發環境,提供給合約開發人員一個完善的集項目管理、開發調試、部署執行、安全檢測等功能的智能合約 Web集成開發環境。
本文將從TrustBase鏈中智能合約執行層的WASM虛擬機開始,為讀者介紹TrustBase平臺的智能合約 Web集成開發環境。
一、WASM(Web Assembly)字節碼
WASM(Web Assembly)是一種能夠運行在現代瀏覽器中的字節碼。它類似于匯編語言,其二進制格式具有很高的緊湊性,能夠極大的縮小目標代碼文件的大小、提高應用程序的網絡分發效率。此外WASM字節碼其運行時效率可以接近于本地機器碼的效率,同時WASM 能夠提供像C/C++、Rust和Subscript等類型語言的編譯目標,使得采用這些語言編寫的應用程序能夠運行于瀏覽器中。WASM是分布式系統開發的基礎,智能合約將能夠用可以被編譯成WASM的任何語言開發。
目前,在諸多針對 WASM(Web Assembly)字節碼的瀏覽器調試引擎方案中,均不具備調試 波卡智能合約的能力。WASM 字節碼是針對瀏覽器而開發的目標語言,其獨立于各種硬件體系結構并具有高可移植性以及高效的網絡分發效率。WASM字節碼已被各大主流瀏覽器支持,并提供了對其的調試支持。目前在 Chrome 和Firefox 瀏覽器中,已經實現了對 WASM字節碼的調試支持,其原理也是采用仿真執行WASM字節碼。
TrustBase平臺的智能合約目標碼采用WASM(Web Assembly)字節碼形式,并采用獨立的WASM虛擬機執行引擎執行智能合約程序代碼。這使得TrustBase平臺得以部署支持波卡生態的智能合約方案。
以C++為例。如果開發者使用C++語言編寫“helllo”,編譯鏈接之后生成WASM(Web Assembly)字節碼,然后被部署到TrustBase區塊鏈系統網絡中被當前的區塊生產網絡節點執行,那么開發者將需要這樣部署:
二、為什么使用WASM虛擬機
目前,使用WASM運行智能合約環境是Polkadot、ETH、EOS等公鏈的主流趨勢。如以太坊基礎設施的虛擬機(EVM)正準備進行一次徹底的重寫。重寫后,目前的 EVM 將被一個名為 EWASM 的新虛擬機所取代,這也是WASM虛擬機的以太坊版本。
EVM雖然有較高的兼容性,但需要預編譯,同時需要付出gas作為代價,有著很高的編程成本。這種程序本質上是腳本程序,即由程序翻譯指令并執行,而不是由本地機器CPU讀取指令并執行,因此效率低下。而Java的操作相對重復繁瑣,在執行過程中耗時較長。由于EVM需要預編譯,同時需要付出gas作為代價,實際上在EVM上編程成本很高。同時對于EVM的臃腫毫無幫助。最后,Solidity相比其語言基礎C比較難學。而Wasm是內存安全、平臺獨立的,并且可以有效地映射到所有類型的CPU架構。作為Web 誕生以來首個 Java 原生替代方案,其指令集效率高,同時保有足夠的可移植性。此外,Wasm指令集可以很容易地通過移除浮點指令來確定化,這使它適合于替換EVM語言。
同時,Wasm在不增加內存消耗的情況下,可以達成無信任編程。可以通過在Wasm上進行堆棧分析與計量進行精確計算。
三、智能合約部署執行流程
TrustBase智能合約開發人員首先創建或導入本地合約文件,并在合約代碼編輯器中輸入相應的合約代碼。然后選擇相應的編譯器版本及編譯選項之后,編譯合約。如果合約編譯出錯或產生警告信息,開發人員可以再次編輯修改合約,直到沒有編譯錯誤。接下來,開發人員需要選擇或者創建一個TrustBase賬號并選擇相應的權限,將編譯完成的智能合約部署到 TrustBase區塊鏈上。如果合約部署失敗,代表賬號或權限錯誤,用戶可以選擇新的賬戶和權限再次部署。用戶部署合約之后,服務器會自動獲取合約的ABI接口文件并在前端web界面中展示其Action接口規范。開發人員按照合約接口規范輸入相應參數后,點擊執行按鈕即可執行相應的合約 Action。開發人員在本系統進行合約開發編譯部署執行的流程如圖所示:
四、調試
目前,TrustBase合約代碼沒有DWARF的調試信息,不能用gdb調試。但開發者可以轉成Wat可讀格式檢查所有指令,在Wat可讀格式界面中檢查是否存在bug。
Wat可讀格式TrustBase團隊決定暫不使用DWARF調試標準主要出于以下考量:雖然目前DWARF調試信息格式被廣泛用于 Unix、Linux 等系統,GNU 項目中的著名調試器 GDB就是采用 DWARF 調試信息格式,但DWARF調試信息格式是體系結構獨立的,這種結構與波卡將實現的多條平行鏈跨鏈互操作結構之間是否會產生沖突,目前還沒有定論,在波卡正式穩定運作之前,TrustBase團隊將沿用Wat可讀格式檢查指令的方法。
五、Subscript語言
為了滿足波卡跨鏈智能合約執行時的性能要求和開發者要求,TrustBase團隊自主開發了Subscript語言。這是一種與Assemblyscript兼容的合約語言,實現了兼容WASM虛擬機。
相比于parity官方的智能合約ink!語言,Subscript可以:
a.無需rust開發基礎,web開發者可以快速入門;
b.與JavaScript良好的互操作特性,便于與dapp的集成;
c.易用的開發環境支持,可以基于現有的js、IDE的運行部署和測試。
這些特性使Subscript具備更低的使用門檻和更強的向后兼容能力。
六、總結
以上筆者介紹了TrustBase核心功能的設計與實現原理。可以看出,TrustBase團隊對智能合約平臺的設計兼顧了波卡兼容性和開發者生態的考量,最終實現了適合波卡結構的集開發、編譯、調試、部署、安全分析的集成開發環境。
長期來看,區塊鏈技術還是一項新興的技術,對于智能合約的開發還處于原始階段。在這樣的歷史階段下,TrustBase平臺為波卡的開發者提供的差異化方案,值得所有區塊鏈技術愛好者關注,以推動區塊鏈技術的發展。
總結
以上是生活随笔為你收集整理的c++ eos智能合约开发_TrustBase平台智能合约的开发与实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乐橙本地录像回放不了_本地工具访问:安全
- 下一篇: python 按钮事件_从django