CentOS 7.6 以太坊Ethereum環境建置 - Geth篇
個人紀錄在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編譯
$ 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