Ubuntu18.04系統下構建初(TrueChain)初鏈基礎環境
本文將基於前文 ofollow,noindex">Windows作業系統用VMware 虛擬機器安裝Ubuntu系統 的基礎上,詳細描述包括GO語言配置,VSCODE的IDE安裝配置,以及初幣環境的環境搭建,
1.GO 語言的安裝與配置
1.1.所需工具
1.Git
2.Go => version 1.7 或更高版本
3.編譯工具
1.2. Git 的安裝
首先,檢查系統是否以經安裝了git
$ git --version

git version1
由於對Git的版本要求不高,所以直接使用包管理工具安裝
$ sudo apt-get install git
最後,安裝完成後,檢查是否安裝成功
$ git --version

git version2
1.3.GO安裝
1.首先,同樣是檢查是否已經安裝了go
$ go version
2.包管理工具安裝
$ sudo apt-get install golang-go
3.設定環境變數:
- 先建立GOPATH資料夾
$ cd ~ $ mkdir go $ cd go $ mkdir bin pkg src
- 在點選開啟Files 在彈出的Files中開啟 Home資料夾,然後選中Show Hidden Files 檢視隱藏的檔案,找到 .profile檔案

查詢“.profile”檔案
- 在$HOME/.profile 檔案的最後新增下邊的命令
export GOPATH=$HOME/go export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

配置.profile檔案
- 然後執行以下命令使之生效
$ source $HOME/.profile
再使用go version即可檢視是否安裝成功。
$ go version

go version
-
測試是否安裝成功
a) 執行命令
$ cd go/src
go安裝檢查1
b) 建立hello資料夾,執行命令
$ mkdir Hello
c) 建立Hello.go 資料夾,執行命令
$ touch Hello.go
d)將如下程式碼寫入$HOME/go/src/Hello/Hello.go
package main import "fmt" func main() { fmt.Printf("hello, world\n") }

Hello.go
e)然後編譯執行:
$ cd $HOME/go/src/Hello $ go build $ ./Hello // 輸出:hello,world

go安裝檢查2
1.4 安裝編譯環境
執行命令
$ sudo apt-get install build-essential
2.VSCODE的安裝與配置
2.1.準備工作
先安裝一些工具
$ sudo apt-get install cmake $ sudo apt-get install python-dev python3-dev
2.2.VSCode 安裝
1.下載安裝包,下載地址 https://code.visualstudio.com/ 在Linux下開啟該頁面會直接顯示Linux安裝包的下載頁面。如下圖:

VSCode下載
因為是Ubuntu系統,所以下載.deb檔案,下載的檔名為“code_1.26.1-1534444688_amd64.deb”(不同版本可能會有不同)。下邊開始安裝:6.1-1534444688_amd64.deb”(不同版本可能會有不同)。下邊開始安裝:
$ cd path/to/deb_file // 進入deb檔案所在目錄 $ sudo dpkg -i code_1.26.1-1534444688_amd64.deb // 開始安裝
2.安裝成功如下圖:

VSCode安裝成功
3.按 “Win” 鍵,在所有程式裡邊搜尋 “vscode” 就可以找到他了

查詢VSCode
2.3 VSCODE 擴充套件安裝包安裝
1)在擴充套件欄裡搜尋“chinese”,第一個就是中文包,需要的可以安裝。安裝完成後重啟軟體即可。

VSCode中文擴充套件包安裝
2)搜“Go”,安裝Go的擴充套件。

VSCode的GO擴充套件包安裝
這樣VSCode的安裝就完成了。
3.初幣程式碼下載
基於筆者在最初下載安裝VSCODE檢視程式碼,遇到過的問題,發現多數檔案都是存放在 github.com資料夾中的情況,

初幣程式碼包結構
為少走彎路在下載程式碼時需要也要相應下載到對應的github.com的目錄下。
1.建立相關路徑的資料夾,執行命令
$ cd $GOPATH/src/ $ mkdir github.com

建立下載初幣程式碼的資料夾
2.進入相應資料夾路徑,下載程式碼
$ cd $GOPATH/src/github.com $ git clone https://github.com/truechain/truechain-engineering-code.git
3.使用VSCode開啟truechain-engineering-code所在資料夾。

開啟資料夾

查詢初幣程式碼

成功載入初幣程式碼
4.VSCODE的依賴包安裝與配置
VSCODE中需要安裝GO的依賴包,因這些依賴包不是初幣專案的實際專案需要的依賴包。所以不安裝也不會影響執行原始碼。這些包應該是裝Go擴充套件的時候統一裝的,並不是專案需要。
因為國內的網路遮蔽,在GO官網的golang.org無法連線上,安裝依賴包不能成功,如下圖:
為解決此問題,可到github下載go tools 和 golint 的原始碼到本地目錄,用go install 命令安裝即可

GO依賴包安裝
1、在%GOPATH%\src\ 目錄下,建立golang.org 資料夾,並再新建x資料夾。 目錄為 "%GOPATH\src\golang.org\x"

建立資料夾
2、完成目錄切換後,開始下載外掛包:git clone https://github.com/golang/tools.git tools
3、執行完以後,會多一個tools資料夾。

下載外掛包
4、開啟VSCode終端,切換到 終端,進入“%GOPATH”目錄,執行
go install github.com/ramya-rao-a/go-outline go install github.com/acroca/go-symbols go install golang.org/x/tools/cmd/guru go install golang.org/x/tools/cmd/gorename go install github.com/josharian/impl go install github.com/rogpeppe/godef go install github.com/sqs/goreturns go install github.com/golang/lint/golint go install github.com/cweill/gotests/gotests go install github.com/ramya-rao-a/go-outline go install github.com/acroca/go-symbols go install golang.org/x/tools/cmd/guru go install golang.org/x/tools/cmd/gorename go install github.com/josharian/impl go install github.com/rogpeppe/godef go install github.com/sqs/goreturns go install github.com/cweill/gotests/gotests
5.編譯TrueChain。
1.在VSCODE中開啟“除錯->開啟配置”就打開了“lanuch.json”檔案 修改引數:
{ // 使用 IntelliSense 瞭解相關屬性。 // 懸停以檢視現有屬性的描述。 // 欲瞭解更多資訊,請訪問: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Launch", "type": "go", "request": "launch", "mode": "auto", "remotePath": "", "port": 2345, "host": "127.0.0.1", "program": "${fileDirname}", "env": {}, "args": ["init", "./genesis.json"], // 主要修改這裡 "showLog": false } ] }
2.按照README裡的,寫一個genesis.json檔案,然後第二個引數把路徑指向這個檔案也可以:
{ "config": { "chainId": 10, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "alloc":{ "0xbd54a6c8298a70e9636d0555a77ffa412abdd71a" : { "balance" : 90000000000000000000000}, "0x3c2e0a65a023465090aaedaa6ed2975aec9ef7f9" : { "balance" : 10000000000000000000000} }, "committee":[ { "address": "0x76ea2f3a002431fede1141b660dbb75c26ba6d97", "publickey": "0x04044308742b61976de7344edb8662d6d10be1c477dd46e8e4c433c1288442a79183480894107299ff7b0706490f1fb9c9b7c9e62ae62d57bd84a1e469460d8ac1" } ] , "coinbase": "0x0000000000000000000000000000000000000000", "difficulty" : "0x100", "extraData": "", "gasLimit": "0x2fefd8", "nonce": "0x0000000000000042", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp": "0x00" }
3.然後,在“cmd/getrue/main.go”上F5就可以初始化了。初始化成功如下圖:

初始化
4.繼續修改“lanuch.json”的“args”引數為
"args": ["--nodiscover", "--singlenode", "--mine", "--etherbase", "0x8a45d70f096d3581866ed27a5017a4eeec0db2a1", "--bftkeyhex", "c1581e25937d9ab91421a3e1a2667c85b0397c75a195e643109938e987acecfc", "--bftip", "192.168.68.43", "--bftport", "10080"],
5.再F5就可以挖礦了。執行成功如下圖,有時候可能不太一樣:

挖礦
常見問題
報錯:
Fatal: Failed to write fast genesis block: database already contains an incompatible genesis block (have 1acaa8c23f22e0ae, new bc72c21faf0bc5b9)

常見問題
你肯定是在配置“lanuch.json”的“args”引數之前,按下了F5,執行以下命令即可:
$ rm -rf ~/.truechain/