EOS入門指南PART4——合約開發鋪墊:搭建本地測試節點

以前三篇咱們掌握瞭如何使用EOS源碼搭建環境、鏈接主網以及如何建立帳戶。自此,咱們對EOS就有了一個感性的認知,對EOS中公鑰、帳戶以及權限有了新的認知。將來幾篇,咱們將學習如何開發EOS智能合約。

在此以前,咱們要爲此作一些準備工做:搭建本地測試節點,方便之後編寫和部署合約。node

摘要

這篇,咱們將簡單學習如何搭建本地測試節點(你們就不要花錢去買RAM了),以及如何使用超級帳戶eosio建立新帳戶以及加載基礎的系統合約bios。ios

注:再次提醒你們,本系列旨在幫助沒有接觸過EOS的小夥伴快速入門,對學習深度有要求的小夥伴能夠移步至公衆號的其餘系列,對EOS有更加專業深刻的分析。web

1. 運行EOS本地節點

以前咱們已經學會了如何運行EOS節點而且鏈接到主網,這裏簡單重複下:數據庫

nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin

若是啓動報錯的話,例如碰見dirty-flag這樣的錯誤,能夠試着用--hard-replay-blockchain強制清空鏈狀態數據庫:json

nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin --hard-replay-blockchain

以後咱們再使用cleos get info查看當前鏈信息:api

testnet-getinfo

這裏咱們看到chain_id已經再也不是主網的id,說明咱們已經在本地的測試節點上了。安全

咱們再來簡單覆盤下咱們須要用到的組件:bash

  • cleos - 管理帳戶、查詢鏈信息、部署合約以及和合約交互等的客戶端工具;
  • eosiocpp - eos的編譯器,會產生部署合約須要的.wast和.abi文件;
  • nodeos - 負責總體鏈管理的命令工具,例如啓動/中止
  • keosd - 雖然咱們使用cleos來建立錢包,可是在這之下的錢包管理工具就是keos

2. 爲eosio帳戶建立錢包

在這裏,我想和你們深刻強化一下錢包的概念:網絡

錢包是一個私鑰庫,用來受權發生在區塊鏈上的動做(action)。

這些私鑰使用密碼生成,被加密存儲在磁盤上。這個密碼應該被儲存在一個安全的密碼管理器中。工具

create wallet create -n eosio

eosio-wallet

這裏的eosio只是錢包名稱,和eosio帳戶沒有任何關係。你們能夠任意命名。

eosio帳戶在這裏是很特殊的,它是系統啓動的時候默認建立的超級用戶,能夠執行系統的一切操做。能夠說,擁有了這個帳戶,就擁有了整個EOS(測試網絡😉)。在主網上,它被21個超級節點共同擁有。

因此在本地測試網絡上,咱們可使用eosio帳戶隨意創造新帳戶。這個帳號有多特殊呢,特殊到了公私鑰寫進了配置文件裏:

~/Libraries/Application Support/eosio/nodeos/config/config.ini中你們能夠找到這個帳號的公私鑰:

EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV=KEY:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

前面是公鑰,後面是私鑰。

3. 導入eosio帳戶的私鑰

要想使用eosio帳戶,咱們就要把eosio帳戶的私鑰導入咱們新建立的eosio錢包中(再次聲明:錢包能夠隨意取名):

cleos wallet import -n eosio 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

這時咱們就能夠操做eosio帳戶啦。

4. 建立新錢包、以及導入私鑰

下面咱們要創造一個新的錢包用來管理咱們即將建立的新帳戶。和以前文章中的步驟同樣:

# 建立test錢包
cleos wallet create -n test
# 生成祕鑰對
# 私鑰用於導入錢包,公鑰用於建立帳戶
cleos create key
# 私鑰導入test錢包
cleos import -n test import <privateKey-just-created>

上面的步驟就不詳細展開了,看不懂的同窗能夠先學習前三篇。這裏咱們有了一個eosio錢包用來管理eosio帳戶,而且有了一個test錢包,用來管理咱們即將建立的帳戶。

5. 建立新帳戶

執行下面的命令:

cleos create account eosio ${new_account} ${owner_key} ${active_key}

在這裏咱們建立一個名叫testeosio的帳戶,對照上面的格式,具體命令以下(省略了active_key):

cleos create account eosio testeosio EOS7hHoMoPcbJq6gsTViNdTj35AKCjLCqabamj7P68vzwAfRoCLRq

這時能夠看到:

eos-new-account-locally

新帳戶建立成功!

6. 載入基礎BIOS合約

如今咱們擁有了eosio帳戶而且能夠自由使用,例如隨意建立新帳戶。這時咱們就可使用默認的智能合約eosio.bios,這個合約是不少動做(action)的基礎系統,例如:直接控制資源分配、有權限訪問API。在主網上,它還能夠管理token的抵押和贖回,覺得CPU、網絡活動和合約內存保留帶寬。

eosio.bios合約能夠在${EOSIO_SOURCE}/build/contracts/eosio.bios路徑中找到。下面的命令是在`${EOSIO_SOURCE中執行的,固然你也能夠在任意路徑下執行:

cleos set contract eosio build/contracts/eosio.bios -p eosio@active

返回以下界面:cleos-set-contract-1

最後的-p eosio的含義是:使用eosio帳戶(使用的是對應私鑰)來爲這個action簽名。

  • 讀取 WAST/WASM文件(這個文件是被新部署到build目錄下的)
  • 裝配 WASM
  • 發佈合約
  • 執行交易(合約也是一個交易),這裏經過兩個動做來生成一個交易,
  • 上面的cleos set contract能夠被拆分爲如下兩個獨立的動做:

    • eosio::setcode:code描述了合約是如何運行的
    • eosio::setabi:setabi,abi描述瞭如何在二進制文件和json文件中轉換,能夠理解成對合約接口的描述。

總結

這章咱們學習瞭如何搭建本地節點、使用超級帳戶eosio來運行系統級別的智能合約以及建立新帳戶。至此,咱們就基本搭建好了智能合約的開發運行環境,爲下面深刻學習EOS智能合約開發作好了鋪墊。

下面一章我還會繼續爲你們講解智能合約開發以前的概念儲配:例如簡單瞭解LLVM和webAssembly,合約的交互模式等一些必備的概念,簡以及單地部署你們最喜聞樂見的hello world contract。

相關文章
相關標籤/搜索