百度超级链XChain(5)XuperBridge 智能合约接口
生活随笔
收集整理的這篇文章主要介紹了
百度超级链XChain(5)XuperBridge 智能合约接口
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 內核設計
應用程序可以用各種語言實現,比如go,c。類比到合約上就是各種合約的功能,如KV訪問,QueryBlock, QueryTx等,這些請求都會通過跟xchain通信的方式來執行
2. 提供統一的合約接口
2.1 合約與xchain進程的雙向通信
xchain進程需要調用合約虛擬機來執行具體的合約代碼,合約虛擬機也需要跟xchain進程通信來進行具體的系統調用,如KV獲取等,這是一個雙向通信的過程。
2.2 在不同虛擬機里面有不同的實現,
2.2.1 native合約
由于合約是跑在docker容器里面的獨立進程,因此牽扯到跨進程通信,這里選用了unix socket作為跨進程通信的傳輸層.
- xchain在啟動合約進程的時候把syscall的socket地址以及合約進程的socket地址傳遞給合約進程
- 合約進程一方面監聽在unix socket上等待xchain調用自己運行合約代碼
- 另合約進程通過xchain的unix socket創建一個指向xchain syscall服務的grpc客戶端來進行系統調用。
2.2.2 WASM合約
在WASM虛擬機里面,WASM虛擬機是以library的方式鏈接到xchain二進制里面,所以虛擬機和xchain在一個進程空間,通信是在xchain和WASM虛擬機之間進行的,這里牽扯到xchain的數據跟虛擬機里面數據的交換,在實現上是通過WASM自己的模塊機制實現的
xchain實現了一個虛擬的WASM模塊,合約代碼執行到外部模塊調用的時候就轉到對應的xchain函數調用,由于xchain和合約代碼的地址空間不一樣,還是牽扯到序列化和反序列化的動作。
總結
以上是生活随笔為你收集整理的百度超级链XChain(5)XuperBridge 智能合约接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百度超级链XChain(3)平台特点
- 下一篇: 百度超级链XChain(6)XVM虚拟机