許多人正試圖學習如何在EOS上開發智能合約。可是,這些智能合約是由C++編寫的,並編譯成WebAssembly,這對大多數非c++程序員來講彷佛很奇怪。所以,在深刻了解EOS以前,最好先學習一些關於WebAssembly的基本知識。html
我不想從官方網站上覆制這個定義。你能夠本身看一下。在這裏,你能夠將其視爲能夠在Web瀏覽器中加載和運行的文件。它相似於Javascript,但它比JS更快,更簡單,更安全。python
這裏是一個工做流程:c++
基本上有四個步驟,我將經過一個很是簡單的例子來講明。git
如下代碼用於計算數字的平方根。程序員
#include <math.h> float getSqrt (float num) { return sqrt(num); }
編譯代碼有不少種方法。爲了簡化這個過程,我找到了一種很是簡單的方法。github
將代碼複製到該網站並單擊build(構建)按鈕,你能夠找到編譯的文件,以下所示。web
而後將program.wasm文件下載到本地文件夾。編程
使用如下代碼建立test.html,將其放在與program.wasm相同的文件目錄中。跨域
<!doctype html> <title>WASM Test</title> <script> 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; }); </script>
要解決網站跨域問題,咱們須要在該文件夾中運行本地Web服務器。使用Linux或Mac時,讓咱們執行一下這個命令:瀏覽器
python -m SimpleHTTPServer
而後打開咱們的Chrome瀏覽器,轉到此頁面:http://localhost:8000/test.html
。在控制檯中,嘗試如下方法:
經過本教程,你就能夠熟悉WebAssemply,可是對於高級研究,請查看@dan撰寫的eos-example-exchange-contract-and-benefits-of-c
分享一個交互式的在線編程實戰,EOS智能合約與DApp開發入門:
本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、帳戶與錢包、發行代幣、智能合約開發與部署、使用代碼與智能合約交互等核心知識點,最後綜合運用各知識點完成一個便籤DApp的開發。
這裏是原文