區塊鏈作業系統eos簡單入門(EOS用C)
2023-05-31 11:08:45 1
許多人正試圖學習如何在EOS上開發智能合約。但是,這些智能合約是由C 編寫的,並編譯成WebAssembly,這對大多數非c 程式設計師來說似乎很奇怪。因此,在深入了解EOS之前,最好先學習一些關於WebAssembly的基本知識。
什麼是WebAssembly
我不想從官方網站上複製這個定義。你可以自己看一下。在這裡,你可以將其視為可以在Web瀏覽器中加載和運行的文件。它類似於Javascript,但它比JS更快,更簡單,更安全。
如何編寫Webassembly
這裡是一個工作流程:
基本上有四個步驟,我將通過一個非常簡單的例子來說明。
1.編寫C/C 代碼
以下代碼用於計算數字的平方根。
#include float getSqrt (float num) { return sqrt(num);}
2.將C/C 代碼編譯成wasm(Webassembly的格式)
編譯代碼有很多種方法。為了簡化這個過程,我找到了一種非常簡單的方法。
將代碼複製到該網站並單擊build(構建)按鈕,你可以找到編譯的文件,如下所示。
然後將program.wasm文件下載到本地文件夾。
3.使用JavaScript將wasm加載到瀏覽器中
使用以下代碼創建test.html,將其放在與program.wasm相同的文件目錄中。
WASM Test fetch('./program.wasm') .then(res => { if (res.ok) return res.arrayBuffer; throw new Error(`Unable to fetch WASM.`); }) .then(bytes => { return WebAssembly.compile(bytes); }) .then(module => { return WebAssembly.instantiate(module); }) .then(instance => { window.wasmSqrt = instance.exports.getSqrt; });
4.在Web瀏覽器中運行該方法
要解決網站跨域問題,我們需要在該文件夾中運行本地Web伺服器。使用Linux或Mac時,讓我們執行一下這個命令:
python -m SimpleHTTPServer
然後打開我們的Chrome瀏覽器,轉到此頁面:http://localhost:8000/test.html。在控制臺中,嘗試以下方法:
完成
,