EOS 智能合約開發教學


EOS 區塊鏈基本架構

之前兩篇廢文已經介紹過 EOS (EOS 介紹 1EOS 介紹 2),最後一篇來介紹一下如何開發 EOS DApp (智能合約)。開始之前,先介紹一下基本架構與元件。EOS 由 cleos, keosd, nodeos 三個主要的元件所組成,架構圖如下:

EOSIO Architecture

先介紹一下三個主要的 Component:

Cleos 為提供給開發者操作的 CLI (Command Line Interface) 工具,所有區塊鏈操作與錢包操作,都可以透過 cleos 完成。

Nodeos 負責與區塊鏈溝通,並且提供 REST API 讓外部進行呼叫。

Keosd 為一項錢包管理工具,一樣會提供 HTTP API 進使用者進行呼叫,在我們使用 cleos 的時候可以指定處理錢包的 keosd 位置。透過 keosd 管理錢包,將 keosd 與 nodeos 互相隔離,在安全性上會有很大的幫助。

安裝與啟動 EOS

我們建議透過 Docker 直接安裝 EOS,安裝 Docker 的方法可以參考此篇「Docker 安裝」文章前面第一節。安裝好 Docker 之後,先透過 docker pull 拉下最新的版本 (可以從這裡取得最新 EOS Docker),範例中拉 1.4.3 只是為了確保執行過程可以一致,如下:

然後透過以下命令先啟動 Nodeos 服務,如下:

啟動之後會將 Nodeos API 綁定到 8888 Port,我們可以直接透過 curl 嘗試呼叫 API,如下:

接著我們要啟動管理錢包的 Keosd 服務,一樣透過 Docker 啟動,令命如下:

啟動後錢包服務 API ㄏ會綁定在 9876 Port,我們在 Container 內呼叫 API 測試看看,如下:

運氣好的就可以看到以下畫面,顯示一個空的錢包:

透過 Cleos 操作 EOS 區塊鏈

由於 nodeoc 與 keosd 是兩個 Container,為了操作方便,我們先建立好 Command 環境。首先確認一下兩個 Container 的 IP Address,如下:

上圖 docker network 顯示 keosd Container Address 為 172.29.0.3,接著我們在 Host 這裡建立一個 Command Alias,如下:

於 Linux 建立 alias 之後,我們就可以快速在 Host 執行 Docker Container 裡頭的 cleos 命令,讓 cleos 用起來就像在 Docker 內執行的感覺一樣,這樣方便多了。

建立 EOS 錢包與帳號

開始之前,我們先建立自己的錢包,令命如下:

執行之後畫面會顯示這個錢包的密碼,未來需要用這個密碼來管理錢包,記起來即可。建立錢包後,我們透過 cleos wallet list 顯示錢包,現在就可以看到一個名叫 default 的錢包,如下:

接著我們將測試需要使用的鑰匙匯入錢包中,命令如下:

匯入成功後輸入 cleos wallet keys 顯示錢包中的私鑰

透過 eosio 帳號建立一個 sjtest 新帳號,如下:

帳號建立完成後,我們可以透過 Call API 取得帳號資訊,如下:

此外,如果要產生一組 Key 可以用以下命令:

第一個 EOS HelloWorld 智能合約

我在測試的時候官方提供的文件有不少錯誤,整理了 Google 上面的一些做法,確定可以按圖施工撰寫智能合約。範例透過 C++ 寫一個 HelloWorld Smart Contract,首先先在 Container 內建立目錄:

接著產生 C++ 程式碼,執行結果如下:

完成後我們需要先將 cpp 編譯 wasm 檔案,編譯命令與結果如下:

上述的 warning 可以不用理會,接著繼續編譯 abi 檔案,如下:

wasm 與 abi 檔案都成功編譯後,接著我們要發布智能合約到 EOS 區塊鏈上,如下:

訊息會告訴我們這個 transaction 還沒有發布至網路,但是一樣可以執行,我們就來 Run 看看,如下:

一個超簡單的 HelloWorld 就完成了,如果你在 EOS 公鏈有帳戶的話,也可以用一樣的方法發布命令。這裡還有很多 cleos 常用的命令,其他像是 EOS Storage 的玩法我還沒研究,有心得再分享了.......啊掰~

如果有人能幫我按五次 Like (按好按滿) 或者分享一下那該有多好~

這是真的廣告

白金贊助

平價童鞋首選

Facebook 留言