20220203

CentOS 7 以太坊Ethereum環境建置 Geth


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

git 要更新至2.X版

安裝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  


安裝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檔,內容如下

{
  "config": {
    "chainId": 666,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,
    "ethash": {}
  },
  "nonce": "0x0",
  "timestamp": "0x5ddf8f3e",
  "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "gasLimit": "0x47b760",
  "difficulty": "0x00002",
  "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "alloc": { },
  "number": "0x0",
  "gasUsed": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}

創世區塊初始化
請在ethereum/build/bin下操作


# 請注意,這是自行架設的私有鏈才需要初始化
# 公有鏈不需操作此步驟
geth --datadir "/data/eth/chain" init init.json
/data/eth/chain,建立資料位置可自行更換,建立前請先確保磁碟容量足夠,以及初始化文件名稱要和剛剛建立的必須一致

以太坊啟動
geth --http --http.api db,eth,net,web3,personal --datadir .\db --networkid 1997 console 2>> eth.log
端口:以太坊網絡監聽端口,默認指定為30303
http:開啟HTTP-RPC服務,可以進行智能合約的部署和測試
http.api:基於HTTP-RPC提供的API
http.addr:指定HTTP-RPC服務監聽地址,默認為localhost
http.port:HTTP-RPC服務監聽端口指定號,默認為8545
網絡ID:指定以太坊網絡的ID為代表公用網絡啟動ID,因此我們為密碼鏈創建密碼鏈,因此指定密碼鏈的起源。
控制台:啟動模式
eth.log:控制器,記錄日誌


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

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

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

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

沒有留言: