【許曉笛】從零開始執行EOS系統

圓方圓區塊鏈發表於2018-11-20

成為最早一批執行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 命令基礎: linux.cn/article-616…

github 基礎: www.runoob.com/w3cnote/git…

下載 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 程式裡的錢包外掛。

【許曉笛】從零開始執行EOS系統

高階設定

如果你不滿足於以上,可以對節點配置進行修改,配置檔案位於:

  • 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 命令重新指定資料資料夾。


相關文章和視訊推薦

【許曉笛】EOS 區塊資料結構

圓方圓學院彙集大批區塊鏈名師,打造精品的區塊鏈技術課程。 在各大平臺都長期有優質免費公開課,歡迎報名收看。

公開課地址:ke.qq.com/course/3451…

相關文章