EOS開發徹底解析(六):手摸手實現第一個EOS智能合約——Hello EOS

1、概述

EOS智能合約由C++編寫,因此真正商業開發的時候,確定是須要全面學習C++語法的,經過最近爆出的愈來愈多的合約漏洞咱們就知道問題的嚴重性了。能夠絕不客氣的說,寫智能合約要比寫以往任何代碼都要更加認真、細緻,由於這是直接跟金錢打交道!html

咱們今天講的是實現EOS的第一個智能合約,因此重點在於講解EOS上智能合約的開發流程,而不是內在實現邏輯,所以會用最簡單的例子(20行之內搞定),以保證讓更多的人理解整個EOS智能合約開發流程。node

2、實現

2.1 安裝eosio.cdt

因爲EOS虛擬機是用WebAssembly實現的,可是EOS智能合約倒是由C++編寫的,因此咱們須要將C++代碼轉換爲WebAssembly虛擬機能執行的代碼(wasm),該工具就是用來完成該轉換的。linux

eosio.cdt源碼地址:https://github.com/EOSIO/eosio.cdt/ 官方推薦了幾種安裝方式,根據本身的系統環境選擇便可,浪哥選擇了一種裝逼的方式,直接下載源碼編譯。c++

$ git clone --recursive https://github.com/eosio/eosio.cdt
$ cd eosio.cdt
$ ./build.sh
$ sudo ./install.sh
複製代碼

2.2 安裝Sublime編輯器

編輯器並不是必須用Sublime,只要能輸入文本便可,浪哥主要是習慣用Sublime了。 Sublime Linux安裝。git

2.3 代碼實現

該代碼很簡單,簡單到浪哥是直接從EOS官網Copy過來的。這段代碼實現的功能就是傳入一個eos帳號,而後打印出來。重點關注一下最後一句代碼EOSIO_DISPATCH( hello, (hi)),這句代碼的意思就是發佈的智能合約名稱叫hello,被調用的方法叫higithub

#include <eosiolib/eosio.hpp>
#include <eosiolib/print.hpp>

using namespace eosio;

class hello : public contract {
  public:
      using contract::contract;

      [[eosio::action]]
      void hi( name user ) {
         require_auth( user );//認證帳號,確保調用者是本人
         print( "Hello, ", name{user});
      }
};
EOSIO_DISPATCH( hello, (hi))
複製代碼

2.4 編譯代碼

打開合約所在目錄,執行以下指令: eosio-cpp -abigen hello.cpp -o hello.wasmshell

執行成功後,會生成兩個文件,分別以wasmapi結尾。api

2.5 建立帳號

部署合同時,會將其部署到賬戶,咱們這裏建立一個名爲hello的帳號。帳號建立流程不解釋,不明白的童鞋,回頭複習一下以前的教程。 EOS開發徹底解析(三):EOS帳號建立bash

2.6 部署合約

./cleos set contract hello ~/contracts/hello -p hello@owner 這句代碼的意思將hello這個合約部署到hello這個帳號,受權方式是owner權限。微信

**舒適提示:**受權方式建議用active便可,這裏因爲浪哥導入錢包的時候用的是owner的私鑰,因此只能用owner部署。

2.7 執行合約

./cleos push action hello hi '[eosio]' -p eosio@active 這句代碼的意思是調用hello合約的hi方法,參數爲eosio,受權帳號爲eosio

咱們能夠看到兩邊的控制檯都打印了Hello, eosio

**舒適提示:**控制檯默認不會打印輸出內容,咱們須要修改config.ini文件,該文件目錄在~/.local/share/eosio/nodeos/config,將contracts-console = true

至此咱們就完成了一個完整的EOS智能合約開發流程,就是這麼自信!

3、總結

有木有發現一個現象,咱們目前對EOS的全部操做,都是基於命令行的,可是現有的Dapp幾乎都是網站操做,那麼他們又是怎麼實現的呢?沒錯,這就是咱們下一講的重磅內容——JS調用EOS智能合約

EOS開發系列教材推薦

EOS開發徹底解析(一):Ubuntu上搭建EOS開發環境

EOS開發徹底解析(二):用cleos命令行建立、導入、解鎖錢包

EOS開發徹底解析(三):EOS帳號建立

EOS開發徹底解析(四):EOS快速發幣,何以圈錢?惟有發幣!

EOS開發徹底解析(五):EOS系統資源解析,轉帳免費且防DDOS攻擊的精妙設計

獲取最新、最全的EOS開發教程請關注微信公衆號:區塊鏈浪潮之巔——一個集項目分析與區塊鏈技術開發於一體的公衆號。

相關文章
相關標籤/搜索