個人紀錄在CentOS 7.6的環境下建置以太坊

首先更新套件

剛設置好CentOS後,先更新git wget bzip2 vim gcc-c++ ntp epel-release nodejs

$ yum update -y && yum install git  wget bzip2 vim gcc-c++ ntp epel-release nodejs -y

安裝go-ethereum

# 在這裡要先安裝Golang,待會需要編譯用
$ wget https://studygolang.com/dl/golang/go1.11.5.linux-amd64.tar.gz

# 解壓縮golang  
$ tar zxvf go1.11.5.linux-amd64.tar.gz

# 搬移go到local下  
$ mv go /usr/local

# 配置GOROOT和PATH   
$ echo "export GOROOT=/usr/local/go" >> /etc/profile
$ echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
$ source/etc/profile

# 下載go-ethereum  
$ git clone https://github.com/ethereum/go-ethereum.git
$ cd go-ethereum
$ make all

# 完成後在path中入geth路徑  
$ echo "export PATH=$PATH:/root/go-ethereum/build/bin" >> /etc/profile  
$ source /etc/profile  

compile: version “goX.X” does not match go tool version “goX.X.X”
若過程中跳出這種錯誤,個人解法是將步驟退回安裝golang,下載go tool version的golang即可

安裝cmake:智能合約編譯solc需cmake編譯

下載cmake最新版本

$ cd && wget https://cmake.org/files/v3.14/cmake-3.14.5.tar.gz

解壓並編譯並安裝

$ tar -xzvf cmake-3.14.5.tar.gz
$ cd cmaker-3.14.5
$ ./bootstrap --prefix=/usr/local
$ make && make install

### 啓動網路時間同步

$ systemctl enable ntpd
$ systemctl start ntpd

### 開放防火牆port 

$ firewall-cmd --zone=public --add-port=8545/tcp --permanent
$ firewall-cmd --zone=public --add-port=30303/tcp --permanent
$ firewall-cmd --reload

Ethereum 節點 - 30303
RPCapi - 8545
–permanent為永久設定,否則防火牆重新啟動時將會失效

建立創世區塊文件

在go-ethereum/build/bin目錄下建立創世區塊文件init.json檔,內容如下

{
	"nonce": "0x0000000000000042",
	"timestamp": "0x00",
	"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
	"extraData": "0x00",
	"gasLimit": "0x80000000",
	"difficulty": "0x400",
	"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
	"coinbase": "0x2D356ee3F5b8718d8690AFCD31Fe2CB5E602677e",
	"alloc": {},
	"config": {
		"chainId": 15,
		"homesteadBlock": 0,
		"eip155Block": 0,
		"eip158Block": 0
	}
}

創世區塊初始化

請在ethereum/build/bin下操作

# 請注意,這是自行架設的私有鏈才需要初始化
# 公有鏈不需操作此步驟
$ geth --datadir "/data/eth/chain" init init.json

/data/eth/chain,建立資料位置可自行更換,建立前請先確保磁碟容量足夠,以及初始化文件名稱要和剛剛建立的必須一致

以太坊啟動

$ geth --rpc --rpcaddr "0.0.0.0" --rpcport 8545 --rpccorsdomain "*" --datadir "/data/eth/chain/" --port "30303" --rpcapi "db,eth,net,web3,personal" --networkid 100000 --allow-insecure-unlock console 

如果有看到Welcome to the Geth JavaScript console!的字樣,私有鏈就算架設完成囉~

開啟第二個Console畫面

基本上啟動以太坊一定是Server端啟用,所以如果在其他電腦上也想進入Console畫面,就要Remote進去

# 本機連接節點
$ geth attach http://localhost:8545

# 遠端連接節點
$ geth attach http://remote_ip:8545