兄弟連區塊鏈入門教程EOS源碼分析(2)運行

來源:互聯網
上載者:User

標籤: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)運行

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.