EOS開發入門之WebAssembly
許多人正試圖學習如何在EOS上開發智慧合約。但是,這些智慧合約是由C++編寫的,並編譯成WebAssembly,這對大多數非c++程式員來說似乎很奇怪。因此,在深入瞭解EOS之前,最好先學習一些關於WebAssembly的基本知識。
什麼是WebAssembly
我不想從 官方網站 上覆制這個定義。你可以自己看一下。在這裡,你可以將其視為可以在Web瀏覽器中載入和執行的檔案。它類似於Javascript,但它比JS更快,更簡單,更安全。
如何編寫Webassembly
這裡是一個工作流程:
基本上有四個步驟,我將通過一個非常簡單的例子來說明。
1.編寫C/C++程式碼
以下程式碼用於計算數字的平方根。
#include <math.h> float getSqrt (float num) { return sqrt(num); }
2.將C/C++程式碼編譯成wasm(Webassembly的格式)
編譯程式碼有 很多種方法 。為了簡化這個過程,我找到了一種 非常簡單的方法 。
將程式碼複製到該網站並單擊build(構建)按鈕,你可以找到編譯的檔案,如下所示。
然後將program.wasm檔案下載到本地資料夾。
3.使用JavaScript將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>
4.在Web瀏覽器中執行該方法
要解決網站跨域問題,我們需要在該資料夾中執行本地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的開發。
- web3j教程,主要是針對java和android程式設計師進行區塊鏈以太坊開發的web3j詳解。
- 以太坊教程,主要介紹智慧合約與dapp應用開發,適合入門。
- 以太坊開發,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
- python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
- php以太坊,主要是介紹使用php進行智慧合約開發互動,進行賬號建立、交易、轉賬、代幣開發以及過濾器和事件等內容。
- C#以太坊,主要講解如何使用C#開發基於.Net的以太坊應用,包括賬戶管理、狀態與交易、智慧合約開發與互動、過濾器和事件等。
匯智網原創翻譯,轉載請標明出處。這裡是 原文