【问链-Eos公开课】第二课 EOS环境搭建(Ubuntu系统下)
1、EOS三個組件:
nodeos:服務端區塊鏈節點組件,也就是區塊生產節點,用于接受客戶端的遠端請求,并打包區塊,主要包含四個插件,chain_plugin、http_plugin、net_plugin、producer_plugin。
cleos:命令行接口,與區塊鏈交互,管理錢包,管理賬戶,在區塊鏈上調用方法。(很重要,相當于以太坊web3),根據具體命令請求調用相應的接口,例如查看區塊信息、操作錢包等等。
keosd:管理EOSIO錢包的組件。主要包括三個插件,wallet_plugin、wallet_api_plugin、http_plugin。
接下來,我們將構建這些EOSIO組件,并將它們部署在一個主機,通過單個節點對網絡(testnet)進行測試與配置。
搭建環境前注意事項:
虛擬機要求分配至少 8GB 內存, 至少 20GB 可用磁盤空間,另一種方式通過修改eos/scripts/eosio_build_ubuntu.sh文件,修改方式如下:
2、下載Eos代碼
git clone https://github.com/EOSIO/eos --recursiverecursive參數會將所有子組件自動克隆下來,最終我們會在本地得到全部完整的源碼。
3、編譯代碼
1)腳本自動化編譯
cd eos
./eosio_build_ubuntu.sh full
編譯的時間巨長… 我的虛擬機裝在SSD上都平均至少編譯1+小時….
./build.sh ubuntu 后面可以跟一個參數,默認值為 full , 也可以是 build。full用于第一次編譯或完全重新編譯,它會重新嘗試編譯安裝依賴項.
build是僅編譯EOS代碼,在變更代碼后可以使用以下命令重新編譯。
./build.sh ubuntu build
編譯可能會有個錯誤如下
解決方法是到build/contracts執行make命令,之后在重新執行編譯腳本eosio_build.sh就可以了
編譯成功后如下圖:
2)手動編譯
安裝 development toolkit:
sudo apt-get update
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
sudo apt-get install clang-4.0 lldb-4.0 libclang-4.0-dev cmake make \
libbz2-dev libssl-dev libgmp3-dev \
autotools-dev build-essential \
libbz2-dev libicu-dev python-dev \
autoconf libtool git mongodb
安裝依賴
可以參照官方文檔[https://developers.eos.io/eosio-nodeos/docs/clean-install-ubuntu-1604-and-higher]
4.安裝命令
cd build
make install
該命令會將編譯好的可執行文件、頭文件、庫文件和模板文件安裝到build下的install目錄下,在該目錄的bin下有所有編譯好的命令,包括eosd、eosc、eoscpp等等。命令會被安裝在/usr/local。執行完這個命令以后,我們可以在系統任何位置進行命令啟用。
5.啟動單節點網絡
cd programs/nodeos && ./nodeos -e -p eosio –plugin eosio::wallet_api_plugin –plugin eosio::chain_api_plugin –plugin eosio::account_history_api_plugin
這條命令中,可執行文件./nodeos后面有很多參數,好看的是后面的plugin是啟動時對插件的配置,剩下的參數配置我們會在接下來介紹到。啟動以后,日志打印出來相關信息:
下面來逐一分析一下這個日志內容,可以看出EOS啟動私鏈節點是通過插件實現的,在啟動私鏈前,要對插件進行初始化配置,啟動各依賴組件處理器。下面來列舉一下主要插件內容:
wallet_plugin,錢包管理相關,啟動階段只出現過一次,說明它的功能主要依賴啟動后的操作,而在啟動期間需要做的配置很少。
wallet_api_plugin,依賴于wallet_plugin,出現一次,應該是提供外部調用與錢包交互的接口服務。
http_plugin,啟動階段大量出現的插件,說明在準備期,針對HTTP的配置和添加接口服務非常多。配置包括url,端口,監聽。接口服務包括錢包相關,鏈相關,賬戶相關的一系列api地址。
chain_plugin,鏈插件配置,出現了幾次,除了初始化啟動以外,還有針對鏈數據讀取模式的配置為read/write模式,生成創世塊配置文件genesis.json,以及展示了創世區塊的各種屬性信息。
chain_api_plugin,同樣的,依賴于chain_plugin,提供外部調用鏈相關操作的接口服務。
net_plugin,網絡插件,出現了幾次,是對網絡節點的基本配置,包括網絡日志的級別為info,本地網絡監聽端口,生成節點id。最后啟動監聽器,并設置了以該網絡節點為服務器的客戶端最多能夠連入25個。
main,主插件,對eosio這整個軟件的一個主要插件,配置了eosio的版本以及展示了eosio工作的本地root地址。
account_history_api_plugin,顧名思義,賬戶歷史接口插件,估計是與賬戶歷史相關的供外部調用的接口服務。
producer_plugin,區塊生產者插件,插件啟動。
以上出現的所有插件亦可理解為組件。
6.停止
斷開私鏈直接按下復制鍵(Ctrl+C)即可,日志中也有體現:
eosio generated block de403b91… #37 @ 2018-04-13T03:14:24.000 with 0 trxs, lib: 36
eosio generated block f40f0e68… #38 @ 2018-04-13T03:14:24.500 with 0 trxs, lib: 37
eosio generated block c1b717d0… #39 @ 2018-04-13T03:14:25.000 with 0 trxs, lib: 38
865075ms thread-0 net_plugin.cpp:2771 plugin_shutdown ] shutdown..
865075ms thread-0 net_plugin.cpp:2774 plugin_shutdown ] close acceptor
865075ms thread-0 net_plugin.cpp:2777 plugin_shutdown ] close 0 connections
865075ms thread-0 net_plugin.cpp:2785 plugin_shutdown ] exit shutdown
可以看到私鏈停止時,都是通過net_plugin插件來操作,操作的方法是與plugin_startup對應的plugin_shutdown,步驟為:
開始關閉的標識
關閉接收器acceptor
關閉連接
完成私鏈停止工作,退出shutdown程序
以上內容在未來的源碼分析中均會涉及。
總結
以上是生活随笔為你收集整理的【问链-Eos公开课】第二课 EOS环境搭建(Ubuntu系统下)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hyperledger Fabric 1
- 下一篇: 【问链-Eos公开课】第三课 EOS 的