COS的開源地址:https://github.com/coschain/
“沒有基礎知識,不用擔心!
零基礎,開啓COS公鏈本地化運行。”
本文從源代碼編譯開始,帶領大家一步步搭建一個可運行的環境,直到可以正常運行COS公鏈並出塊。
考慮到可能出現的編譯錯誤,我們也提供了一個能正常運行本地鏈的 docker。不過,對於那些想要深入理解本地鏈的編譯和運行原理的開發者來說,我們強烈建議從源碼開始編譯哦~
第一步:獲取源代碼
從 github 上獲取 master 分支的代碼
git clone [email protected]:coschain/contentos-go.git
第二步: 編譯
Go 的版本
內容公鏈 Contentos 的主要開發語言是 golang,並且使用了 golang 官方提供的 go modules 作爲管理工具。所以,必須使用 Go 1.11 以上支持go modules功能的版本。由於 Go 1.12 對 modules 機制做出進一步的更新,推薦使用 Go 1.12 以後的版本(目前最標準的版本是 Go 1.11.4)。
編譯 cosd
和 wallet
contentos-go 可以編譯出的可執行文件均在 cmd
文件夾裏,最重要的是 cosd
和 wallet-cli
。前者是 contentos 主鏈,後者是與主鏈交互的命令行工具。
cd build
go build ../cmd/cosd
go build ../cmd/wallet-cli
當然,你也可以通過 go build -o
指定名字和位置。
第三步: 運行
初始化
contentos 需要初始化 ~/.coschain
文件夾用於存放配置文件和數據,以下命令將會創建默認文件夾 ~/.coschain/cosd
。
cosd init
也可以指定文件夾名字,以下命令將會創建文件夾 ~/.coschain/testnode
。
cosd init -n testnode
指定配置文件名字的意義在於,可以通過這種方式實現本地同時運行多個節點。它們會讀取不同的配置文件,並創建互相獨立的 db 數據。
啓動
啓動 cosd
並完成正常出塊的流程較爲繁瑣,如果只是需要啓動並快速繼續後面的操作,我們提供了一鍵啓動的腳本,以便完成多個節點啓動並且正常出塊。當然,如果想要了解整個啓動流程,建議跳過“一鍵啓動”的方式。
單節點
初始化完成之後,通過執行 start
命令啓動 cosd
。
cosd start
上述命令會使用 ~/.coschain/cosd
下的配置文件,並寫入數據到該文件夾下。
同樣,也可以指定配置文件夾。
cosd start -n testnode
會使用 ~/.coschain/testnode
下的配置文件,並且寫入數據到這個文件夾下。
執行後,cosd
節點就可以正常啓動了。
多節點
雖然我們可以手動創建多個配置文件並啓動,但是這個過程比較繁瑣。對於此,我們提供了 multinodetester
用於批量創建和啓動。
multinodetester
存儲在 cmd
文件下,需要編譯。
cd build
go build ../cmd/multinodetester
批量初始化
multinodetester init 4
可以初始化 4 個配置文件夾。該命令可以在 ~/.coschain
下找到,分別爲 testcosd_0
、 testcosd_1
、 testcosd_2
、 testcosd_3
, 對應 4 個節點。
批量啓動
multinodetester start path/to/cosd 4
path/to/cosd 是 cosd 可執行文件的路線,如果 mltinodetester 和 cosd 都在 build 文件夾下,那麼路徑就是 ./cosd
。
通過以上步驟,本地就會有 4 個節點運行啦。
手動選擇第一輪出塊節點
即使有多個節點在本地運行,但如果沒有選擇出塊節點,默認的只有 testcosd_0
這個特殊節點( 也就是initminer )出塊,其他節點都處於同步模式。所以,我們需要手動選擇出塊節點。
一般情況下,節點需要通過 wallet
去註冊節點,節點投票之後才能成爲出塊節點,這個過程同樣繁瑣。在本地環境下,簡化了這個流程,在 wallet
下提供了同名 multinodetester
的方法來批量註冊和選舉出塊節點。
如果嚴格按照上文的流程,那麼現在本地應該有 wallet-cli
這個可執行文件。
執行wallet-cli
文件,進入交互界面。輸入 multinodetester 4
來批量註冊選舉出塊節點。 也可以通過非交互模式完成,執行:
wallet-cli multinodetester 4
經過以上操作步驟,contentos 主鏈就已經成功在本地運行起來了。