「Hello,Gakki」— 編寫第一份智慧合約 | 大狗教你EOS開發(四)
上上期 中,我們執行了預設合約,體驗了一下快速發幣的感覺,然後在 上一期 中學習了 EOS 開發中的 5 個最基礎的知識點。本期我們會更進一步,編寫自己的第一個智慧合約「HelloGakki」。
注:
1.測試環境為 macOS Sierra 10.12.6 / Dawn 3.0;
2. 本期智慧合約案例來自 EOS 官方文件。
別急,首先讓我們來學習兩個「進階操作」——
1 區塊鏈系統的啟動方式升級
在上一個例項中,我們通過一長串命令直接啟動 nodeos 區塊鏈作業系統:
./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin
這個操作現在可以升級了——先配置 config.ini ,然後直接執行 nodeos 啟動,這樣做的好處是配置方面更加的個性化,就像安裝軟體時的「經典安裝」與「自定義安裝」的區別。
這個過程很簡單,只需要以下四步:
(1)先要通過上面那一長串命令執行一遍
因為只有在第一遍執行之後,在 /Users/ [使用者名稱] /Library/Application Support
下才會生成eosio這個資料夾。
(2)修改 config.ini 檔案
通過這個地址 https://pan.baidu.com/s/1PevnqrYaHxMXRsozduWHWA
將 ini 配置檔案下載下來,覆蓋掉/Users/ [使用者名稱] /Library/Application Support/eosio/nodeos/config
這個位置的 config.ini 檔案。
然後在config裡搜尋 **[你的使用者名稱] **這幾個字,把它替換成你當前使用者的使用者名稱。
(3)修改配置檔案
如果硬碟不滿足32G剩餘空間的同學,可能執行時會報錯,這時候我們修改config.ini中的 shared-file-size 引數,令其等於你想要的大小就可以。例如,我們剩餘空間只有8G,把這個引數值改為8*1024=8192以下就可執行。
shared-file-size = 8192
(4)執行 nodeos
現在想要執行 nodeos 作業系統,只要進入 nodeos 目錄,使用 nodeos 命令就可以了:
cd /Users/[使用者名稱]/eos/programs/nodeos
nodeos
要中斷系統的話只要按下 Ctrl + C 就行。
2 學會錢包加鎖 / 解鎖操作
如果你執行過兩次區塊鏈網路會發現這樣的情況,第二次執行的時候系統告訴你錢包已經存在:
但是你用./cleos wallet list
命令檢視錢包列表,會看到錢包列表是空的。這是EOS 的 Bug 嗎?不是的,EOS的安全機制導致區塊鏈重新啟動後錢包是鎖定狀態(Locked),這時使用以下程式碼解鎖既能使用。
./cleos wallet unlock -n default
然後輸入建立錢包時生成的那串金鑰,即能解鎖錢包。
這時候再用 list 命令就可以看到 default 錢包出現了!
3 智慧合約的編寫與編譯
好了,現在我們可以來編寫和建立第一個自己的智慧合約「HelloGakki」了——這個合約相當於傳統程式設計中的「Hello,World」。
(1)準備好程式碼編輯器
首先,編寫智慧合約我們推薦使用 Visual Studio 程式碼編輯器,以下是它的下載地址:
我們只要下載 Visual Studio Community 也就是免費的社群版即可。
下載完成後,我們通過安裝C++擴充套件以獲得編輯器對C++的支援。
(2)編寫智慧合約
然後新建一個文件,將以下內容複製貼上進去。
#include <eosiolib/eosio.hpp>
#include <eosiolib/print.hpp>
using namespace eosio;
class hello : public eosio::contract {
public:
using contract::contract;
/// @abi action
void hi( account_name user ) {
require_auth( user );
print( "Hello, ", name{user} );
}
};
EOSIO_ABI( hello, (hi) )
然後進入 /Users/liaohua/eos/build/contracts
目錄,新建一個叫做 hello 的資料夾。
然後把這個檔案命名為 hello.cpp 儲存在 hello 資料夾下。
(3)編譯智慧合約
再次用到 iTerm 非常好用的分屏功能,點選 Split Pane Horizontally 將螢幕分成三個部分。
左側載入我們的 nodeos 區塊鏈作業系統,右上的螢幕載入智慧合約,右下的螢幕執行 cleos 。如果對於 nodeos 和 cleos 這兩個不清楚,還請回顧 上一期 的內容:)。
首先用 cd 命令訪問我們cpp檔案所在的目錄:
/Users/liaohua/eos/build/contracts/hello
然後先通過以下命令編譯出 wast 檔案:
eosiocpp -o hello.wast hello.cpp
會有 warning ,不過如果沒有 error 我們就不用去理它。
然後再通過以下命令編譯出 abi 檔案:
eosiocpp -g hello.abi hello.cpp
這時,我們再訪問 hello 資料夾,就會看見資料夾下有三個檔案,這就說明智慧合約編譯好了!
4 智慧合約的載入與執行
接下來,我們只要載入與執行智慧合約,就能和新垣結衣打招呼啦!
(1)重置
首先我們可能要清空一下 /Users/[使用者名稱]/Library/Application Support/eosio/nodeos/data
資料夾中的內容,因為大家可能沒有將上次的錢包金鑰和賬戶金鑰保留下來。
然後我們在iTerm左側視窗進入/Users/[使用者名稱]/eos/programs/nodeos
資料夾,用 1 中的方法執行 nodeos ,此時區塊重新從 0 算起了。
在iTerm的右下視窗,我們進入/Users/[使用者名稱]/eos/build/programs/cleos
資料夾,按照 第二期 中的方法建立錢包,載入 bios 合約。
./cleos wallet create
./cleos set contract eosio ../../contracts/eosio.bios -p eosio
這次我們可以把我們操作中用到的所有金鑰都儲存下來,這樣下次我們就不用刪檔案然後重來啦。
(2)建立賬戶
然後我們建立兩個賬戶,一個叫做 gakki,一個叫做 gakkifans。
./cleos create key
./cleos wallet import [ 生成的私鑰 ]
./cleos create account eosio gakki [ 生成的公鑰 ] [ 生成的公鑰 ]
./cleos create account eosio gakkifans [ 生成的公鑰 ] [ 生成的公鑰 ]
(3)載入合約
執行如下命令,讓 gakkifans 賬戶載入 HelloGakki 合約。
./cleos set contract gakkifans ../../contracts/hello
如果成功,返回如下圖所示:
(4)執行合約
執行如下命令,gakkifans 賬戶執行 HelloGakki 合約。
cleos push action gakkifans hi '["gakki"]' -p gakki
如果出現如上返回,即表示控制檯輸出了「 Hello, gakki」,我們就成功向新垣結衣打了招呼 。同時我們看螢幕左側的區塊鏈作業系統,也輸出了相關內容。
到這裡,我們的第一個自己的智慧合約案例就走完了!
5 總結與預告
今天我們升級了啟動 nodeos 的方式,學會了錢包的加鎖解鎖操作。此外還往前跨了一大步——編寫了自己的智慧合約。
但是,還是那句老話,操作要和理論相結合。編譯、執行智慧合約時到底發生了什麼事呢?大狗下期告訴你。
相關文章
- EOS開發完全解析(六):手摸手實現第一個EOS智慧合約——Hello EOS
- 以太坊智慧合約開發第四篇:實現Hello World智慧合約
- 智慧合約開發環境搭建及Hello World合約開發環境
- BlueDoge大藍狗空投系統模式開發/大藍狗智慧合約技術開發詳情模式
- 編寫智慧合約
- EOS智慧合約與DApp開發入門教程APP
- 嘿,程式設計師!手把手教你寫出智慧合約”Hello,World”程式設計師
- 【許曉笛】開發第一個 EOS 智慧合約
- 3.06 EOS智慧合約(上)
- 3.08 EOS智慧合約(下)
- 2.09 java編寫智慧合約Java
- DogeStyle跳舞狗開發/智慧合約系統開發原理/DAPP/DefiAPP
- DAPP代幣預售/智慧合約/NFT質押合約系統開發/Solidity編寫APPSolid
- 3.10 EOS智慧合約案例實踐
- DogeStyle跳舞狗智慧合約系統技術開發(技術原理)
- 互助公排滑落機制dapp系統開發|智慧合約編寫流程APP
- 編寫一個簡單的智慧合約
- 如何用 C# 編寫 NEO 智慧合約C#
- 智慧合約從入門到精通:用Solidity開發一個“Hello World”Solid
- EOS開發(1.3-1.4)以上版本 智慧合約DAPP全棧使用指南APP全棧
- 【許曉笛】 EOS 智慧合約案例解析(3)
- 【許曉笛】 EOS 智慧合約案例解析(2)
- 【許曉笛】 EOS智慧合約案例解析(1)
- FDF智慧合約DApp遊戲迴圈互助系統開發程式碼編寫APP遊戲
- 【劉文彬】【精解】EOS智慧合約演練
- EOS基礎全家桶(十三)智慧合約基礎
- 智慧合約ARB鏈上質押挖礦系統DAPP開發解析/Solidity編寫APPSolid
- 區塊鏈技術應用場景開發方案,智慧合約編寫服務區塊鏈
- 如何編寫一個可升級的智慧合約
- Dapp 合約代幣系統開發智慧合約APP
- 智慧合約Dapp專案如何開發構建?智慧合約開發原始碼示例APP原始碼
- EOS.CYBEX孵化團隊鏈安科技發現EOS智慧合約可能出現溢位漏洞
- SET智慧合約量化系統開發|秒合約量化開發搭建
- 3M互助公排Dapp系統開發智慧合約編寫詳情(原始碼)APP原始碼
- 以太坊教程:搭建環境、編寫編譯一個智慧合約編譯
- DAPP開發流程 | DAPP智慧合約開發APP
- EOS基礎全家桶(十五)智慧合約進階2
- Swift編寫的EOS開源框架SwiftyEOSSwift框架