註意
本文的內容可以很容易的拓展到聯網的情況。本文就涉及的各方如何協調會做壹些假設。不過,社區可以選擇多種協調的方式。本流程在技術方面是客觀的;協調的假設則是推測的。社區已經提出了幾種方法。我們鼓勵您查看不同的方法,並參與到討論中來。
BIOS 啟動序列包含兩個重要的步驟::
- 創建,配置,啟動創世節點
- 從單個創世生產者轉向多個生產者。
- 創建,配置以及啟動創世節點
本部分的內容將引導您完成以下的準備步驟:
· 設置妳的 eos 環境
· 開啟妳的 eos 創世節點
· 設置附屬的節點,使它鏈接到創世節點上。
完成這些步驟後,妳的eos 區塊鏈就是功能完全的了.
Python 腳本
如果妳像自動完成這些步驟,妳可以使用bios-boot-tutorial.py python腳本。不過,這個腳本使用了不同的附加的數據值。查看accounts.json文件,裏面列出了這個腳本文件使用的生產者名字以及賬戶名。
如果妳想自動地在妳本地的機器上運行全功能的eos 區塊鏈,那麽妳可以按照README.md文件的指示,直接運行bios-boot-tutorial.py腳本。
如果妳不滿足於自動完成所有步驟,而是想了解腳本背後的原理,那麽妳可以跟著本教程,壹起去探尋背後的每壹個步驟。
1.1. 安裝二進制文件
預編譯EOSIO 二進制文件
要知道怎麽安裝nodeos二進制文件,請參看安裝EOSIO預編譯二進制文件( Install EOSIO pre-compiled binaries)教程,但此時還不要開啟nodeos。
EOSIO.CDT 二進制文件
要知道怎麽安裝EOSIO.CDT二進制文件,請參看安裝EOSIO.CDT二進制文件(Install EOSIO.CDT binaries)教程。
1.2. 創建壹個開發錢包
創建並配置妳的默認錢包,然後創建壹個開發公鑰和私鑰。密鑰對創建完成之後,把公鑰和私鑰導入妳的錢包。為了方便,我們把公鑰稱為EOS_PUB_DEV_KEY,把私鑰稱為EOS_PRIV_DEV_KEY。
關於如何創建錢包以及導入密鑰,請參看創建開發錢包教程。
1.3. 創建 ~/biosboot/genesis 文件夾
創建壹個新文件夾: ~/biosboot/genesis,執行帶有指定參數的nodeos命令,創建區塊鏈數據庫,log文件,以及配置文件,以啟動創世節點。
cd ~
mkdir biosboot
cd biosboot
mkdir genesis
cd genesis
1.4. 在 ~/biosboot/ 文件夾中創建壹個JSON 文件 - 在 ~/biosboot/ 文件夾中創建壹個空的genesis.json文件,並打開它(本例我們使用nano編輯器):
cd ~/biosboot
touch genesis.json
nano genesis.json - 將以下json代碼復制到剪切板:
{
“initial_timestamp”: “2018–12–05T08:55:11.000”,
“initial_key”: “EOS_PUB_DEV_KEY”,
“initial_configuration”: {
“max_block_net_usage”: 1048576,
“target_block_net_usage_pct”: 1000,
“max_transaction_net_usage”: 524288,
“base_per_transaction_net_usage”: 12,
“net_usage_leeway”: 500,
“context_free_discount_net_usage_num”: 20,
“context_free_discount_net_usage_den”: 100,
“max_block_cpu_usage”: 100000,
“target_block_cpu_usage_pct”: 500,
“max_transaction_cpu_usage”: 50000,
“min_transaction_cpu_usage”: 100,
“max_transaction_lifetime”: 3600,
“deferred_trx_expiration_window”: 600,
“max_transaction_delay”: 3888000,
“max_inline_action_size”: 4096,
“max_inline_action_depth”: 4,
“max_authority_depth”: 6
},
“initial_chain_id”: “0000000000000000000000000000000000000000000000000000000000000000”} - 把json代碼黏貼到genesis.json文件中去。把 EOS_PUB_DEV_KEY替換為妳之前創建的公鑰.
- 保存並退出編輯器:
[CTRL]+X
y[ENTER]
1.5. 啟動創世節點
要啟動創世節點,需要: - 在~/biosnode/genesis/文件夾中創建預告shell腳本文件,並打開該文件(本例我們使用nano編輯器):
cd ~/biosboot/genesis
touch genesis_start.sh
nano genesis_start.sh - 把下面的shell 腳本復制並黏貼到 genesis_start.sh shell腳本文件中去.
#!/bin/bashDATADIR=”./blockchain”
if [ ! -d $DATADIR ]; then
mkdir -p $DATADIR;fi
nodeos
— genesis-json $DATADIR”/../../genesis.json”
— signature-provider EOS_PUB_DEV_KEY=KEY:EOS_PRIV_DEV_KEY
— plugin eosio::producer_plugin
— plugin eosio::producer_api_plugin
— plugin eosio::chain_plugin
— plugin eosio::chain_api_plugin
— plugin eosio::http_plugin
— plugin eosio::history_api_plugin
— plugin eosio::history_plugin
— data-dir $DATADIR”/data”
— blocks-dir $DATADIR”/blocks”
— config-dir $DATADIR”/config”
— producer-name eosio
— http-server-address 127.0.0.1:8888
— p2p-listen-endpoint 127.0.0.1:9010
— access-control-allow-origin=*
— contracts-console
— http-validate-host=false
— verbose-http-errors
— enable-stale-production
— p2p-peer-address localhost:9011
— p2p-peer-address localhost:9012
— p2p-peer-address localhost:9013 >> $DATADIR”/nodeos.log” 2>&1 & \echo $! > $DATADIR”/eosd.pid”
註意:把EOS_PUB_DEV_KEY 和 EOS_PRIV_DEV_KEY替換為妳之前創建的公鑰和私鑰。 - 保存並退出編輯器:
[CTRL]+X
y[ENTER] - 將執行優先權賦予genesis_start.sh shell 腳本文件,然後執行 genesis_start.sh腳本,啟動創世 nodeos :
cd ~/biosboot/genesis/
chmod 755 genesis_start.sh
./genesis_start.sh
創世節點:
· 名稱為 eosio
· 生產區塊
· 在127.0.0.1:8888 監聽HTTP請求
· 在127.0.0.1:9010監聽鏈接請求
· 定期地初始化鏈接到localhost:9011, localhost:9012, 以及localhost:9013上; 這些節點現在還沒有運行,所以如果妳看到有鏈接錯誤的話,請忽略它們。
· 把打印合約的參數 — contracts-console 輸出到控制臺;在本例中,這些信息對於發現和修復問題是很有用的。
1.5.1 停止創世節點
想要停止 nodeos,你需要: - 在~/biosnode/genesis/文件夾中創建壹個stop.sh shell腳本文件,並把下面的腳本復制到該文件中去。
#!/bin/bashDATADIR=”./blockchain/”
if [ -f $DATADIR”/eosd.pid” ]; thenpid=cat $DATADIR”/eosd.pid”
echo $pidkill $pidrm -r $DATADIR”/eosd.pid”echo -ne “Stoping Node”while true; do[ ! -d “/proc/$pid/fd” ] && breakecho -ne “.”sleep 1doneecho -ne “\rNode Stopped. \n”fi - 在~/biosboot/genesis/文件夾中執行 stop.sh shell腳本:
cd ~/biosboot/genesis/
chmod 755 stop.sh
./stop.sh
1.5.2 重啟nodeos
停掉nodeos 之後,妳不能使用之前創建的.genesis_start.sh腳本來重啟他,因為壹旦壹個節點開始運行並生產區塊了,區塊鏈數據庫就已經完成了初始化,並有了數據。因此,不能使用 — genesis-json參數來啟動nodeos。因此,我們推薦創建壹個新的腳本,start.sh,創建的步驟跟之前的壹樣,然後把下面的腳本內容復制到這個腳本文件中去。同時,指定執行優先權到該腳本文件,以後停止了節點後,都可以使用這個文件來重啟nodeos。。
#!/bin/bashDATADIR=”./blockchain”
if [ ! -d $DATADIR ]; then
mkdir -p $DATADIR;fi
nodeos
— signature-provider EOS_PUB_DEV_KEY=KEY:EOS_PRIV_DEV_KEY
— plugin eosio::producer_plugin
— plugin eosio::producer_api_plugin
— plugin eosio::chain_plugin
— plugin eosio::chain_api_plugin
— plugin eosio::http_plugin
— plugin eosio::history_api_plugin
— plugin eosio::history_plugin
— data-dir $DATADIR”/data”
— blocks-dir $DATADIR”/blocks”
— config-dir $DATADIR”/config”
— producer-name eosio
— http-server-address 127.0.0.1:8888
— p2p-listen-endpoint 127.0.0.1:9010
— access-control-allow-origin=*
— contracts-console
— http-validate-host=false
— verbose-http-errors
— enable-stale-production
— p2p-peer-address localhost:9011
— p2p-peer-address localhost:9012
— p2p-peer-address localhost:9013 >> $DATADIR”/nodeos.log” 2>&1 & \echo $! > $DATADIR”/eosd.pid”