環境CENTOS7.2 x64
為了保持操作,一下操作路徑統一在/data/eth裡
Ethereum搭建篇(環境搭建非常重要,預填後面探索過程中的許多深坑!)
# 安裝好虛機後,更新centos伺服器並下載git、wget、vim、gcc-c++、ntp組件、nodejs以及添加epel第三方安裝源。本步驟非常重要,可以節約大家在後續安裝Ethereum以及開放架構時經常出錯而到處摸索的時間。簡要介紹下各個工具的說明:
# git、wget:安裝相關的組件,下載安裝各類開原始碼與工具的利器;
# vim:文本編輯工具,取代vi;
# gcc-c++:c/c++編譯工具,用於golang下部分c庫的編譯以及truffle組件的編譯
# ntp:網路時鐘同步群組件;Ethereum的rpc網路需要時間同步;
# nodejs:ethereum前端開發JavaScript包管理軟體
# epel:網路第三方的linux安裝包源
yum update -y && yum install git wget bzip2 vim gcc-c++ ntp epel-release nodejs cmake -y
# 下載golang(1.9.1和1.92均編譯失敗,重新下載1.10則編譯成功)
國內鏡像:https://studygolang.com/dl
#cd /usr
#wget https://studygolang.com/dl/golang/go1.10.1.linux-amd64.tar.gz
# tar -C /root -xzf go1.10.1.linux-amd64.tar.gz
# 解壓golang並將工作目錄移動到/usr/local/go
tar zxvf go1.10.1.linux-amd64.tar.gz
mvgo/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編譯
# 本來要用yum一起安裝cmake的,但yum與epel源中只有2.8.x版本的cmake,而智能合約編譯器solc的安裝需要3.0.x以上的cmake版本。故只能去官網獨立安裝。
# 下載cmake最新版本,登入https://cmake.org/download/,找到最新版本下載地址
cd && wget https://cmake.org/files/v3.9/cmake-3.9.2.tar.gz
# 解壓並編譯並安裝
tar -xzvf cmake-3.9.2.tar.gz
cd cmaker-3.9.2
./bootstrap && make && make install
# 啟動網路時間同步
systemctl enable ntpd
systemctl start ntpd
# 另外geth會用到8078和30303連接埠,放開防火牆連接埠 8078與30303
關掉防火牆
systemctl stop firewalld
# 配置geth私人的創世紀的設定檔:genesis.json,該檔案描述了如何初始化一個私人的gethereum
cd
vim genesis.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
}
}
# 建立私人網路的gethereum
geth --datadir "/data/eth/ethbase/chain" init /data/eth/genesis.json
至此環境搭建完成。
部署結果
# 更常用的是開發環境下的測試,可直接啟動預設的geth開發環境,注意:雙減號、2與>>之間沒有空格
geth --dev console 2>> geth_dev_log
# 進入到console下其實就進入了Ethereum的JavaScript環境,我想大概這裡就是偉大的EVM(以太坊虛機)了。
# 如果想關注在操作過程中的日誌,可以另起一個SSH通過tail觀察
tail -f geth_dev_log
#啟用私人鏈
geth --datadir "/data/eth/ethbase/chain" --nodiscover console 2>>eth_output.log
在目前的目錄執行tail -f eth_output.log,可以看到輸出日誌。