EOS原始碼分析(2)EOS執行
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
```
- 載入區塊生產外掛,從而系統可以生產區塊
`plugin = eosio::producer_plugin`
- 載入錢包外掛,從而支援錢包服務
`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-09T13: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 中執行
網址:http://www.qukuailianxueyuan.io/
欲領取造幣技術與全套虛擬機器資料
區塊鏈技術交流QQ群:756146052 備註:CSDN
尹成學院微信:備註:CSDN
網址:http://www.qukuailianxueyuan.io/
欲領取造幣技術與全套虛擬機器資料
區塊鏈技術交流QQ群:756146052 備註:CSDN
尹成學院微信:備註:CSDN
相關文章
- EOS原始碼分析(6)Token原始碼
- EOS原始碼分析(3)案例分析原始碼
- EOS原始碼分析(1)安裝原始碼
- EOS原始碼分析(4)錢包原始碼
- EOS原始碼分析(5)賬號原始碼
- EOS原始碼分析(7)目錄結構原始碼
- EOS原始碼學習系列原始碼
- eos docker執行後無法執行cleosDocker
- EOS原始碼解析 建立賬號的三種方式。原始碼
- EOS原始碼解析 eosio賬號預設合約原始碼
- EOS開發完全解析(三):EOS賬號建立
- 【許曉笛】從零開始執行EOS系統
- EOS JAVA 呼叫Java
- EOS開發完全解析(六):手摸手實現第一個EOS智慧合約——Hello EOS
- EOS 原始碼解析 股權證明的交易(TaPos) 的作用原始碼
- 2022最新柚子EOS聯盟系統原始碼原始碼
- 1.6 EOS詳解
- EOS 入門指南
- EOS開發完全解析(一):Ubuntu上搭建EOS開發環境Ubuntu開發環境
- 3.02 EOS核心框架框架
- EOS 錢包淺談
- 【許曉笛】 EOS 智慧合約案例解析(2)
- 執行流程原始碼分析原始碼
- EOS開發完全解析(四):EOS快速發幣,何以圈錢?唯有發幣!
- qiankun 2.x 執行時沙箱 原始碼分析原始碼
- FIBOS-EOS入門
- 安裝EOS最新版
- The Tokenizers Summary: [EOS],[BOS],[CLS],[SEP]
- 執行緒池原始碼分析執行緒原始碼
- Mybatis執行流程原始碼分析MyBatis原始碼
- 【劉文彬】【原始碼解讀】EOS測試外掛:txn_test_gen_plugin.cpp原始碼Plugin
- EOS基礎全家桶(十五)智慧合約進階2
- 3.06 EOS智慧合約(上)
- 3.08 EOS智慧合約(下)
- dubbo原始碼-執行緒池分析原始碼執行緒
- Django原始碼分析之執行入口Django原始碼
- 【劉文彬】 EOS行為核心:解析外掛chain_pluginAIPlugin
- Zookeeper原始碼分析(一) ----- 原始碼執行環境搭建原始碼