當前位置:
首頁 > 最新 > 區塊鏈-EOS智能合約初體驗

區塊鏈-EOS智能合約初體驗

EOS的白皮書上說明,虛擬機的選擇和EOS的系統(協議)本身關係不大,只要支持沙盒以及性能足夠,就可以整合到EOS系統。本文介紹使用WASM虛擬機開發智能合約的流程。

有關智能合約的英文介紹,可以參考github地址:

https://github.com/EOSIO/eos/wiki/Smart-Contract。

1)WASM虛擬機

WASM是構建高性能Web應用程序的新興Web標準,通過少量適配就可以被明確定義和沙箱化。WASM的好處在於業界廣泛支持,因此可以用C或C++開發智能合約。

2)智能合約基礎

EOS的智能合約交互是基於「Action」以及共享資料庫訪問的,並且有兩種交互方式:inline(立即執行)以及Deferred(延遲執行)。

一個Action是一個執行操作,一個交易可以包含多個Action。Action的類型是8個位元組(64bit)的base32編碼的結果(12或者13個位元組)。前12個位元組只能是字元a-z,1-5或者「."。第13個可能的位元組只能是「."以及a-p。

3)創建智能合約

eosiocpp工具可以用來創建智能合約。eosiocpp在你編譯的build/tools/目錄下。eosiocpp的命令行參數如下:

-n參數創建一個智能合約,-o參數生成wast格式文件(wast格式是WASM接受的唯一格式),-g參數生成abi介面文件。

3.1 創建智能合約模版

該命令會在當前目錄下生成test目錄,以及目錄下生成三個文件:

test.cpp的模版代碼如下:

extern "C" {

/// The apply method implements the dispatch of events to this contract

void apply( uint64_t receiver, eosio::name code, eosio::name action ) {

eosio::print( "Hello World: ", eosio::name(code), "->", eosio::name(action), "
" );

}

} // extern "C"

apply時action處理函數。模版代碼,在接受到action時,該智能合約列印code(作用域名稱?)以及action(操作名稱)。

3.2 創建wallet

可以使用lock/unlock命令在鎖定以及解鎖wallet。

3.3 創建key(私鑰和公鑰)並導入wallet

用以下命令導入wallet:

3.4 創建賬戶

在EOS系統中,一個key可以對應多個賬戶。以下命令是創建user賬戶

3.5 準備wast格式文件

eosiocpp -o test.wast test.cpp

3.6 發布智能合約

cleos set contract user test test.wast test.abi

3.7 發送action,觸發智能合約執行

cleos push action user transfer "{"from":"user","to":"testuser","amount":50}" -p user

executed transaction: c2888f5f584cc243ba89a70772a6b00f173c85b3fd5ad903c45b18cc32954f0c 248 bytes 102400 cycles

# user

>>Hello World: user->transfer

上面一行就是智能合約的執行輸出。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 星想法 的精彩文章:

以太坊源碼分析-交易到打包流程概述

TAG:星想法 |