標籤:cti sig -name 方便 depend one 項目 應用 .cpp
EOS安裝完畢後,就可以運行EOS程式了。目前支援三種方式的運行,分別是:
-?本地私人節點運行
????在本地區域網路中部署EOS節點,提供EOS服務,節點可以單個,也可以部署多節點
-?在測試公網下運行
????Block.One 公司提供了測試的公網環境,你可以使自己部署的節點串連公網測試環境
-?Docker 中運行
????
本地私人節點運行
EOS為了能夠方便開發人員測試,目前在公網環境下部署了一套測試網路。如果你部署的節點不與這套公網測試環境串連,那就成為本地私人節點部署。在進行本地部署的時候,可以只部署單一節點,也可以部署多個節點,下面我們會分別介紹這兩種情況:
單節點的部署與運行
當成功編譯項目後,就可以在build/programs/eosiod
?目錄下運行程式了。調用eosiod
?命令可以運行EOS 節點程式,當你第一次運行時,很有可能會出現錯誤而停止運行,不管是否出現錯誤,都通過?Ctrl-C
?停止程式,你需要先對程式做一些配置後,系統才能真正運行。當第一次運行程式後,會自動產生?data-dir
?目錄,裡麵包含了預設的設定檔(config.ini
)和一些其他檔案。你需要對設定檔做如下的修改:
-?添加創世紀的block
genesis-json = /path/to/eos/genesis.json
-?在測試鏈上設定producers,並通過他們生產區塊
????
????producer-name = inita
????producer-name = initb
????producer-name = initc
????producer-name = initd
????producer-name = inite
????producer-name = initf
????producer-name = initg
????producer-name = inith
????producer-name = initi
????producer-name = initj
????producer-name = initk
????producer-name = initl
????producer-name = initm
????producer-name = initn
????producer-name = inito
????producer-name = initp
????producer-name = initq
????producer-name = initr
????producer-name = inits
????producer-name = initt
????producer-name = initu
????``<br/>-?載入區塊生產外掛程式,從而系統可以生產區塊<br/>
plugin = eosio::producer_plugin<br/>-?載入錢包外掛程式,從而支援錢包服務<br/>
plugin = eosio::wallet_api_plugin`
-?載入RPC和API外掛程式,從而可以通過這兩種介面訪問EOS服務
????
????plugin = eosio::chain_api_plugin
????plugin = eosio::http_plugin
????
再次運行?eosiod
?命令,當你看到如下日誌的時候,說明你已經成功啟動EOS服務了。
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
...
部署多節點網路
在你EOS項目的?build/programs/eosio-launcher
?目錄下,有一個專門用於EOS節點啟動的應用,名稱為?eosio-launcher
,下面的命令運行了兩個可以相互互動的節點:
sh
cd?~/eos/build
cp ../genesis.json ./
./programs/eosio-launcher/eosio-launcher -p2 --skip-signature
上面的命令將會建立兩個資料目錄,每個節點對應其中一個目錄,目錄名稱分別是:tn_data_00
?和tn_data_01
你可以在命令列終端中看到如下的日誌輸出, 日誌表示系統產生了兩個子進程,每個進程對應一個運行節點:
spawning child, programs/eosiod/eosiod --skip-transaction-signatures --data-dir tn_data_0
spawning child, programs/eosiod/eosiod --skip-transaction-signatures --data-dir tn_data_1
為了進一步驗證這兩個節點確實在正常運行,你可以使用eosioc
用戶端工具分別串連這兩個節點,如下:
cd path-to-eos/build/programs/eosioc
./eosioc -p 8888 get info
./eosioc -p 8889 get info
上面的兩條eosioc
?分別串連兩個節點,可以看到,這兩個節點連接埠號碼分別是8888和8889,串連後,調用?get info
命令,擷取到不同節點的區塊鏈資訊。
在測試公網下運行
Block.One 為測試人員和開發人員提供了公網測試環境,如果你已經在本地體驗過EOS節點的運行,希望能夠在公網下測試你的代碼,那你可以把本地的EOS節點串連到公網環境,具體操作如下:
cd path-to-eos/build/scripts
./start_npnode.sh
系統編譯後,會產生start_npnode.sh
?指令檔,此指令碼其實也是調用了eosd
程式,不過其使用的預設資料目錄參數是testnet_np
,此目錄的config.ini
檔案中的設定了公網環境下p2p節點的串連地址,因此,程式啟動後就會直接與公網進行串連了,這也是串連公網環境和在私人鏈下啟動並執行主要區別,這行配置如下:
p2p-peer-address = p2p-testnet1.eos.io:9876
p2p-testnet1.eos.io
這個網域名稱就指向Block.One 公網環境的一個節點。start_npnode.sh
?命令運行後,可以得到如下日誌輸出:
Launched eosd.
See testnet_np/stderr.txt for eosd output.
Synching requires at least 8 minutes, depending on network conditions.
如果希望瞭解節點運行和同步的具體情況,可以運行如下命令查看:
tail -F testnet_np/stderr.txt
當串連公網環境時,節點首先需要從公網中同步已有的區塊鏈資料,這需要一定的時間,當你看到如下日誌資訊的時候,說明資料正在同步:
3439731ms chain_plugin.cpp:272 accept_block ] Syncing Blockchain --- Got block: #200000 time: 2017-12-09T07:56:32 producer: initu
3454532ms chain_plugin.cpp:272 accept_block ] Syncing Blockchain --- Got block: #210000 time: 2017-12-09×××3:29:52 producer: initc
當同步全部完成後,你將看到如下的資訊:
42467ms net_plugin.cpp:1245 start_sync ] Catching up with chain, our last req is 351734, theirs is 351962 peer ip-10-160-11-116:9876
42792ms chain_controller.cpp:208 _push_block ] initt #351947 @2017-12-12T22:59:44 | 0 trx, 0 pending, exectime_ms=0
42793ms chain_controller.cpp:208 _push_block ] inito #351948 @2017-12-12T22:59:46 | 0 trx, 0 pending, exectime_ms=0
42793ms chain_controller.cpp:208 _push_block ] initd #351949 @2017-12-12T22:59:48 | 0 trx, 0 pending, exectime_ms=0
Docker 中運行
兄弟連區塊鏈入門教程EOS源碼分析(2)運行