成為最早一批執行EOS的人
複習一下上次文章的內容,EOS 系統主要有三個應用程式:
-
nodeos
: EOS 系統的核心程式,也就是所謂的“節點”。 -
cleos
:本地的命令列工具,通過命令列與真人使用者互動,並與節點(nodeos)和錢包(keosd)通訊。是使用者或者開發者與節點程式互動的橋樑。 -
keosd
:本地錢包工具。可以管理多個含有私鑰的錢包並加密。
要求
本篇教程適用於以下系統,但是不論你的電腦是 windows 還是 mac,都強烈建議安裝一個虛擬機器,在 Ubuntu 上搞,因為 Mac 上有很多坑。安裝 Ubuntu 虛擬機器有關教程大家可以在網上搜到。
- Amazon 2017.09 and higher.
- Centos 7.
- Fedora 25 and higher (Fedora 27 recommended).
- Mint 18.
- Ubuntu 16.04 (Ubuntu 16.10 recommended).
- MacOS Darwin 10.12 and higher (MacOS 10.13.x recommended).
配置要求:
- 8GB 記憶體
- 20GB 硬碟空餘空間
如果機器記憶體不夠 8G,自動編譯指令碼會報錯。
執行 EOS 需要一點 linux 和 github 基礎,不過不要嫌麻煩,以後開發 EOS 合約需要大量這方面的知識。推薦你先按步驟搞起來,有不明白的可以參考以下文章。別怕,誰也不是生下來就什麼都會的。
linux 命令基礎: https://linux.cn/article-6160…
github 基礎: http://www.runoob.com/w3cnote…
下載 EOS 程式碼
如果你是 Mac,需要先下載 git,可以搜尋 “Mac git” 就能找的各種文章教你在 Mac 上安裝 git。
首先使用 cd
命令進入你想安裝的資料夾,我一般就是根目錄了,執行以下命令下載 EOS 程式碼:
git clone https://github.com/EOSIO/eos --recursive
注意要加後面這個 --recursive
命令,因為 EOS 有幾個子模組,這樣就能全部下載下來,如果忘了這個命令,使用下面的命令可以補救:
git submodule update --init --recursive
構建 EOS
有了原始碼,我們就可以構建我們本地的 EOS 程式了,EOS 官方非常體貼地為我們準備了自動構建的指令碼,使用這個指令碼可以大大簡化,首先我們進入剛剛下載的 eos 目錄,並執行構建指令碼:
cd eos
./eosio_build.sh
根據網速和機器效能的不同,可能要用 30 分鐘 – 1 小時的時間,請耐心等待。構建完成後需要對構建的產物進行驗證:
- Linux 系(Ubuntu等):
~/opt/mongodb/bin/mongod -f ~/opt/mongodb/mongod.conf &
- Mac:
/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &
然後所有作業系統再執行以下命令:
cd build
make test
為了方便開發智慧合約,還需要在 build 目錄進行 make install:
如果已經進入 build 目錄請去掉 cd build。
cd build
sudo make install
建立本地單節點測試網路
構建完成後,我們進入 eos/build/programs/nodeos 目錄(使用 cd 和 cd .. 命令),執行 nodeos 節點程式:
./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin
命令中, -p 參數列示使用了 eosio 賬戶的許可權,這是本地測試系統提供的原始賬戶。後面的各個 plug in 引數是選擇載入的外掛。
成功後,如果看到類似下面的輸出,就是成功建立了一個本地單節點測試網路:
1575001ms thread-0 chain_controller.cpp:235 _push_block ] initm #1 @2017-09-04T04:26:15 | 0 trx, 0 pending, exectime_ms=0
1575001ms thread-0 producer_plugin.cpp:207 block_production_loo ] initm generated block #1 @ 2017-09-04T04:26:15 with 0 trxs 0 pending
1578001ms thread-0 chain_controller.cpp:235 _push_block ] initc #2 @2017-09-04T04:26:18 | 0 trx, 0 pending, exectime_ms=0
1578001ms thread-0 producer_plugin.cpp:207 block_production_loo ] initc generated block #2 @ 2017-09-04T04:26:18 with 0 trxs 0 pending
...
eosio generated block 046b9984... #101527 @ 2018-04-01T14:24:58.000 with 0 trxs
eosio generated block 5e527ee2... #101528 @ 2018-04-01T14:24:58.500 with 0 trxs
...
說明本地的單節點已經開始正常出塊了。
如上次文章所講,我們建立的本地測試網路如下,並沒有單獨的 keosd 錢包,而是使用了 nodeos 程式裡的錢包外掛。
高階設定
如果你不滿足於以上,可以對節點配置進行修改,配置檔案位於:
- Mac OS: ~/Library/Application Support/eosio/nodeos/config
- Linux: ~/.local/share/eosio/nodeos/config
上述資料夾中預設有 genesis.json
配置檔案,可以直接修改它,或者在別的檔案裡再寫一個新的配置檔案,不過執行 nodeos 時,就要通過 –config-dir 命令指出新配置檔案的位置。
配置資料夾還預設有一個 config.ini
檔案。如果沒有的話,nodeos 啟動時會自動建立一個,但自動建立的 config.ini
檔案是不讓節點出塊的,此時你需要使用 Ctrl-C
停止 nodeos,並編輯這個檔案:
# Load the testnet genesis state, which creates some initial block producers with the default key
genesis-json = /path/to/eos/source/genesis.json
# Enable production on a stale chain, since a single-node test chain is pretty much always stale
enable-stale-production = true
# Enable block production with the testnet producers
producer-name = eosio
# Load the block producer plugin, so you can produce blocks
plugin = eosio::producer_plugin
# Wallet plugin
plugin = eosio::wallet_api_plugin
# As well as API and HTTP plugins
plugin = eosio::chain_api_plugin
plugin = eosio::http_plugin
# This will be used by the validation step below, to view account history
plugin = eosio::account_history_api_plugin
這樣配置好後,重新啟動 nodeos,就會順利出塊了。
nodeos 的執行資料資料夾(log和共享儲存等資料)位於以下資料夾:
- Mac OS: ~/Library/Application Support/eosio/nodeos/data
- Linux: ~/.local/share/eosio/nodeos/data
但也可以使用 nodeos 的 --data-dir
命令重新指定資料資料夾。
相關文章和視訊推薦
圓方圓學院彙集大批區塊鏈名師,打造精品的區塊鏈技術課程。 在各大平臺都長期有優質免費公開課,歡迎報名收看。