eth節(jié)點(diǎn)搭建-------------交易所

eth

Geth 安裝:

1. 安裝 go 語(yǔ)言

安裝 go 主要是為了去編譯 go-ethereum 源碼

平日里一般我都是用 gvm 去安裝和管理不同版本的 go,但 gvm 在阿里云上默認(rèn)是連不上所需要的 golang 下載服務(wù)器的。于是直接用下面一條命令搞定。

yum install golang

安裝的版本不是最新的但也還是可以用的。

# go version

go version go1.9.6 linux/amd64

2. 安裝 git

安裝 git 主要是為了拉取 go-ethereum 源碼

直接通過(guò) yum 安裝的版本比較老

我是通過(guò)下面的命令安裝的:

yum install

https://centos6.iuscommunity.org/ius-release.rpm

yum install epel-release

yum install git2u

得到下面的 git 版本

# git version

git version 2.16.4

安裝go編譯器

sudo apt-getinstall -ybuild-essential golang

3. 最后,構(gòu)建geth

cdgo-ethereum

make geth

gethhelp

把getn加入到配置文件里etc/profile

#geth

exportPATH=$PATH:/root/soft/go-ethereum/build/bin

source/tc/profile

[root@BC-OL-Host-1/]# vim ~/.bashrc


4. 鏈接節(jié)點(diǎn)命令:

nohup geth --syncmode

"full" --cache 2048 --datadir /root/data/ethData --ipcpath./geth.ipc --rpc --rpcaddr 0.0.0.0 --port 8445 --maxpeers 999 &

參考地址:https://blog.csdn.net/ULi_cloud/article/details/80668590

https://blog.csdn.net/qq_25870633/article/details/82931782

性能調(diào)節(jié)選項(xiàng):

–cache value 調(diào)整內(nèi)存分配 最小16MB,默認(rèn)128MB

–trie-cache-gens value 內(nèi)存中存儲(chǔ)節(jié)點(diǎn)數(shù),默認(rèn)為120

--datadir “/your/database/path”

指定以太坊數(shù)據(jù)和密鑰目錄,在開(kāi)啟私有鏈時(shí)需指定私有鏈目錄,默認(rèn)為公有鏈目錄。

--ipcpath "geth.ipc" 指定IPC接口

--rpcaddr value 指定HTTP-RPC 服務(wù)監(jiān)聽(tīng)地址,默認(rèn)為“l(fā)ocalhost”

--rpcport value 指定HTTP-RPC 服務(wù)監(jiān)聽(tīng)端口,默認(rèn)為8545

--maxpeers value 設(shè)置允許最大連接節(jié)點(diǎn)數(shù)目,默認(rèn)為25

--ws 開(kāi)啟 WS-RPC 服務(wù)

--wsaddr value 指定WS-RPC 服務(wù)監(jiān)聽(tīng)地址,默認(rèn)為 “l(fā)ocalhost”

--wsport value 指定 WS-RPC 服務(wù)監(jiān)聽(tīng)端口,默認(rèn)值:8546

--wsapi value 指定WS-RPC 開(kāi)啟API,默認(rèn)為 “eth,net,web3”

--wsorigins value 指定允許“websockets”請(qǐng)求的地址


5. 監(jiān)控同步狀態(tài)

可以通過(guò)下面的命令 attach 到運(yùn)行的節(jié)點(diǎn),這里的 data 為上面啟動(dòng) geth 時(shí)指定的 datadir 目錄。

# geth attachdata/geth.ipc

Welcome to the

Geth JavaScript console!

instance:

Geth/SamewayProdNode1/v1.8.13-stable-225171a4/linux-amd64/go1.9.6

modules:

admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0

web3:1.0

然后調(diào)用 eth.syncing, 如下面所示,可以看到當(dāng)前的同步狀態(tài),我這邊節(jié)點(diǎn)已經(jīng)運(yùn)行一段時(shí)間了,可以看到當(dāng)前區(qū)塊和最新區(qū)塊高度是比較接近的。剛開(kāi)始這兩個(gè)數(shù)字差別是比較大的,在運(yùn)行一天后這兩個(gè)數(shù)字就開(kāi)始比較接近,給人的感覺(jué)好像是快要同步完了,但實(shí)際上要再跑一天左右才能真正同步完成。

> eth.syncing

{

currentBlock: 6143193,

highestBlock: 6143296,

knownStates: 91512910,

pulledStates: 91498893,

startingBlock: 0

}

在同步的過(guò)程中我們通過(guò) eth.blockNumber 去查看當(dāng)前區(qū)塊號(hào)的話會(huì)顯示為0

> eth.blockNumber

0

這個(gè)時(shí)候看 geth 的輸出的話,可以看到下面的日志

INFO [08-14|04:32:20] Imported new block headers

INFO [08-14|04:32:24] Imported new block receipts

INFO [08-14|04:32:33] Imported new state entries

可以通過(guò) net.peerCount 來(lái)看自己的這個(gè)節(jié)點(diǎn)連了多少個(gè)其它節(jié)點(diǎn)進(jìn)行數(shù)據(jù)同步。如果返回結(jié)果為0,就要自查一下了。

> net.peerCount

8

當(dāng)看到 geth 日志里是下面的信息

# tail nohup.out

INFO

[08-16|14:20:15.307] Imported new chain segment blocks=1 txs=117 mgas=7.979

elapsed=761.592ms mgasps=10.477 number=6156276 hash=56b327…03c068 cache=905.73mB

INFO

[08-16|14:20:32.926] Imported new chain segment blocks=1 txs=42 mgas=2.325

elapsed=143.505ms mgasps=16.204 number=6156277 hash=f577a7…1c6104 cache=905.59mB

INFO [08-16|14:20:35.940]

Imported new chain segment blocks=1 txs=121 mgas=7.992 elapsed=776.752ms

mgasps=10.289 number=6156278 hash=c92744…2d1448 cache=905.67mB

調(diào)用 eth.blockNumber 得到的數(shù)字不再是 0 了

> eth.blockNumber

6156294

恭喜你,區(qū)塊數(shù)據(jù)已經(jīng)同步完成了,該節(jié)點(diǎn)可以接收交易請(qǐng)求了。

6. 常見(jiàn)問(wèn)題

問(wèn)題: 如果非正常關(guān)閉 geth 進(jìn)程,比如機(jī)器強(qiáng)制重啟的時(shí)候,如果這個(gè)時(shí)候以太坊正在執(zhí)行數(shù)據(jù)庫(kù)寫(xiě)操作,下次啟動(dòng) geth 進(jìn)程時(shí)就很容易碰到下面的錯(cuò)誤信息:

Fatal: Error

starting protocol stack: missing block number for head header hash

方案: 很不幸,目前還沒(méi)有特別好的解決辦法

需要通過(guò)下面的命令移除區(qū)塊鏈數(shù)據(jù)并從新同步數(shù)據(jù)

# geth removedb--datadir data

問(wèn)題: 數(shù)據(jù)同步經(jīng)常落后主網(wǎng)若干區(qū)塊,落后也不是很多,往往也就幾十個(gè)區(qū)塊,等段時(shí)間可以完成同步,可過(guò)段時(shí)間又落于主網(wǎng)了

方案: 確保節(jié)點(diǎn)監(jiān)聽(tīng)端口 30303 已經(jīng)在防火墻打開(kāi),此端口在防火墻放行后,可大大提高主網(wǎng)數(shù)據(jù)同步的穩(wěn)定性

有相關(guān)需求的,可以定制交易所服務(wù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容