- GO語言公鏈開發實戰
- 鄭東旭等
- 899字
- 2019-08-15 14:12:45
1.4 編譯部署及應用
比原鏈的安裝方式有多種。本書從源碼分析的角度帶領讀者了解架構,所以使用源碼編譯的方式來介紹安裝過程。
1.源碼編譯部署
1)下載源碼:
$ git clone https://github.com/Bytom/bytom.git $GOPATH/src/github.com/bytom
2)切換至1.0.5版本:
$ cd $GOPATH/src/github.com/bytom $ git fetch origin v1.0.5 $ git checkout v1.0.5
3)編譯源碼:
$ make bytomd $ make bytomcli
4)初始化:
$ cd ./cmd/bytomd $ ./bytomd init --chain_id mainnet
目前比原鏈支持三種網絡,使用chain_id進行區分,如下所示:
? mainnet:主網。
? testnet:也稱wisdom,測試網。
? solonet:單機模式。
5)啟動bytomd進程:
$ ./bytomd node $ ps -ef|grep bytomd 50152318 449 0 2:00PM ttys000 0:00.85 ./bytomd node $ ./bytomcli net-info { "current_block": 36714, "highest_block": 36714, "listening": true, "mining": false, "network_id": "wisdom", "peer_count": 10, "syncing": false, "version": "1.0.5+2bc2396a" }
當我們執行ps -ef命令看到bytomd進程時,說明進程已經處于運行狀態。使用bytomcli獲取節點狀態信息,可以看到我們已經成功地運行了bytomd進程。
bytomd進程第一次啟動后,默認不會開啟挖礦功能。此時會從P2P網絡種子節點中獲取與之相鄰的peer節點,建立握手連接并同步區塊。我們將在第10章深入分析P2P網絡底層工作原理。
2.源碼目錄結構
比原鏈的源碼目錄如下所示:
$ tree -L 1 . ├—— accesstoken Token管理 ├—— account 賬戶管理 ├—— api API Server接口管理 ├—— asset 資產管理 ├—— blockchain 交易打包、簽名、查詢等 ├—— cmd main入口文件 ├—— common 公共庫 ├—— config 節點配置文件 ├—— consensus 共識相關模塊 ├—— crypto 加密庫 ├—— dashboard dashboard頁面管理 ├—— database 數據庫管理 ├—— docs 文檔 ├—— encoding 協議相關的編解碼庫 ├—— env 環境變量管理 ├—— equity 智能合約語言編譯器 ├—— errors 錯誤及異常管理 ├—— math 數學計算相關庫 ├—— metrics metrics指標庫,用于采集API Server請求相關指標 ├—— mining 挖礦模塊 ├—— net API Server使用的HTTP基礎庫 ├—— netsync 網絡同步管理 ├—— node 當前節點管理模塊,環境初始化等 ├—— p2p 分布式網絡管理模塊 ├—— protocol 核心數據結構,包含塊、交易、bvm虛擬機等 ├—— test 單元測試 ├—— testutil 單元測試工具包 ├—— util 工具包 ├—— vendor 第三方庫 ├—— version 版本 └—— wallet 錢包管理
3.開啟挖礦模式
開啟挖礦模式的命令如下:
$ ./bytomcli set-mining true
在默認情況下比原鏈的挖礦模式是關閉狀態。開啟挖礦模式有兩種方式,第一種方式,使用bytomcli命令行交互,將mining參數設置為true,此時bytomcli會通過RPC協議與bytomd進程交互并啟用挖礦模式。關閉挖礦模式則指定set-mining參數為false。第二種方式,使用dashboard頁面啟用挖礦參數,在這里請讀者自行學習dashboard。
4.其他語言SDK簡介
比原鏈技術社區提供了不同語言的SDK,如下所示:
PHP SDK:https://github.com/lxlxw/bytom-php-sdk
Java SDK:https://github.com/chainworld/java-bytom
Java SDK:https://github.com/successli/Bytom-Java-SDK
Python SDK:https://github.com/Bytom-Community/python-bytom
Node SDK:https://github.com/Bytom/node-sdk