以前三篇咱們掌握瞭如何使用EOS源碼搭建環境、鏈接主網以及如何建立帳戶。自此,咱們對EOS就有了一個感性的認知,對EOS中公鑰、帳戶以及權限有了新的認知。將來幾篇,咱們將學習如何開發EOS智能合約。在此以前,咱們要爲此作一些準備工做:搭建本地測試節點,方便之後編寫和部署合約。node
這篇,咱們將簡單學習如何搭建本地測試節點(你們就不要花錢去買RAM了),以及如何使用超級帳戶eosio建立新帳戶以及加載基礎的系統合約bios。ios
注:再次提醒你們,本系列旨在幫助沒有接觸過EOS的小夥伴快速入門,對學習深度有要求的小夥伴能夠移步至公衆號的其餘系列,對EOS有更加專業深刻的分析。web
以前咱們已經學會了如何運行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
這裏咱們看到chain_id
已經再也不是主網的id,說明咱們已經在本地的測試節點上了。安全
咱們再來簡單覆盤下咱們須要用到的組件:bash
cleos
來建立錢包,可是在這之下的錢包管理工具就是keos在這裏,我想和你們深刻強化一下錢包的概念:網絡
錢包是一個私鑰庫,用來受權發生在區塊鏈上的動做(action)。這些私鑰使用密碼生成,被加密存儲在磁盤上。這個密碼應該被儲存在一個安全的密碼管理器中。工具
create wallet create -n eosio
這裏的eosio
只是錢包名稱,和eosio帳戶沒有任何關係。你們能夠任意命名。
eosio帳戶在這裏是很特殊的,它是系統啓動的時候默認建立的超級用戶,能夠執行系統的一切操做。能夠說,擁有了這個帳戶,就擁有了整個EOS(測試網絡😉)。在主網上,它被21個超級節點共同擁有。
因此在本地測試網絡上,咱們可使用eosio帳戶隨意創造新帳戶。這個帳號有多特殊呢,特殊到了公私鑰寫進了配置文件裏:
在~/Libraries/Application Support/eosio/nodeos/config/config.ini
中你們能夠找到這個帳號的公私鑰:
EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV=KEY:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
前面是公鑰,後面是私鑰。
要想使用eosio
帳戶,咱們就要把eosio
帳戶的私鑰導入咱們新建立的eosio
錢包中(再次聲明:錢包能夠隨意取名):
cleos wallet import -n eosio 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
這時咱們就能夠操做eosio帳戶啦。
下面咱們要創造一個新的錢包用來管理咱們即將建立的新帳戶。和以前文章中的步驟同樣:
# 建立test錢包 cleos wallet create -n test # 生成祕鑰對 # 私鑰用於導入錢包,公鑰用於建立帳戶 cleos create key # 私鑰導入test錢包 cleos import -n test import <privateKey-just-created>
上面的步驟就不詳細展開了,看不懂的同窗能夠先學習前三篇。這裏咱們有了一個eosio錢包用來管理eosio帳戶,而且有了一個test錢包,用來管理咱們即將建立的帳戶。
執行下面的命令:
cleos create account eosio ${new_account} ${owner_key} ${active_key}
在這裏咱們建立一個名叫testeosio
的帳戶,對照上面的格式,具體命令以下(省略了active_key):
cleos create account eosio testeosio EOS7hHoMoPcbJq6gsTViNdTj35AKCjLCqabamj7P68vzwAfRoCLRq
這時能夠看到:
新帳戶建立成功!
如今咱們擁有了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
返回以下界面:
最後的-p eosio
的含義是:使用eosio帳戶(使用的是對應私鑰)來爲這個action簽名。
上面的cleos set contract
能夠被拆分爲如下兩個獨立的動做:
eosio::setcode
:code描述了合約是如何運行的eosio::setabi
:setabi,abi描述瞭如何在二進制文件和json文件中轉換,能夠理解成對合約接口的描述。這章咱們學習瞭如何搭建本地節點、使用超級帳戶eosio
來運行系統級別的智能合約以及建立新帳戶。至此,咱們就基本搭建好了智能合約的開發運行環境,爲下面深刻學習EOS智能合約開發作好了鋪墊。
下面一章我還會繼續爲你們講解智能合約開發以前的概念儲配:例如簡單瞭解LLVM和webAssembly,合約的交互模式等一些必備的概念,簡以及單地部署你們最喜聞樂見的hello world contract。