乾貨|0基礎,開啟COS公鏈本地化執行

內容鏈Contentos發表於2019-10-11

最為領先的內容公鏈,COS公鏈的程式碼全部開源免費。開源地址:https://github.com/coschain/


“沒有基礎知識,不用擔心!
零基礎,開啟COS公鏈本地化執行。”

本文從原始碼編譯開始,帶領大家一步步搭建一個可執行的環境,直到可以正常執行COS公鏈並出塊。

考慮到可能出現的編譯錯誤,我們也提供了一個能正常執行本地鏈的 docker。不過,對於那些想要深入理解本地鏈的編譯和執行原理的開發者來說,我們強烈建議從原始碼開始編譯哦~

第一步:獲取原始碼

github 上獲取 master 分支的程式碼

git clone git@github.com: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)。

編譯 cosdwallet

contentos-go 可以編譯出的可執行檔案均在 cmd 資料夾裡,最重要的是 cosdwallet-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_0testcosd_1testcosd_2testcosd_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 主鏈就已經成功在本地執行起來了。

歡迎加入COS技術社群,領取bounty獎勵!

telegram 技術群.png

相關文章