使用的鏡像版本為 ethereum/client-go:v1.8.22
豹芯,之前使用過 ethereum/client-go:latest
即1.9版本,light 模式RPC無法正常使用药磺,出現(xiàn)報(bào)錯(cuò) context canceled
rinkeby 測試網(wǎng)絡(luò) & light 模式
【注意】light模式還屬于測試階段,并不穩(wěn)定煤伟,調(diào)用接口時(shí)偶爾會(huì)出現(xiàn)錯(cuò)誤 no suitable peers available
癌佩,如果是生產(chǎn)環(huán)境木缝,不要使用light模式
之前使用-fast 模式同步 geth 數(shù)據(jù),花費(fèi)了 48 小時(shí)左右围辙。接下來主機(jī)一旦意外重啟我碟,geth 就會(huì)出現(xiàn)同步錯(cuò)誤 Synchronisation failed "retrieved hash chain is invalid"
,網(wǎng)上查找到的解決方案只能是 geth removedb姚建,刪除數(shù)據(jù)庫重新同步矫俺。后來發(fā)現(xiàn)還有非常快捷的 light 模式掸冤,同樣可以支撐所有節(jié)點(diǎn)功能厘托。
light 模式只同步區(qū)塊頭部信息,幾分鐘就可以完成同步稿湿,執(zhí)行具體功能時(shí)铅匹,需要去其他輔助的 full peer 請求數(shù)據(jù)(需要手動(dòng)配置輔助節(jié)點(diǎn))
- 啟動(dòng)容器
$ docker run -d \
--name ethereum-rinkeby-light \
--restart always \
-p 18545:18545 \
-v /docker/ethereum-rinkeby-light:/root/.ethereum \
ethereum/client-go:v1.8.22 --rinkeby --syncmode=light --cache=1024 \
--rpc --rpcaddr 0.0.0.0 --rpcport 18545 --rpcapi 'web3,eth,net,personal,admin,txpool' --rpccorsdomain '*'
- 配置靜態(tài)節(jié)點(diǎn)
$ vim /docker/ethereum-rinkeby-light/rinkeby/geth/static-nodes.json
[
"enode://3afdfd40713a8b188a94e4c7a9ddc61bc6ef176c3abbb13d1dd35eb367725b95329a7570039044dbffa49c50d4aa65f0a1f99ee68e46b8e2f09100d11d4fc85a@31.17.230.132:30303",
"enode://7578d1e6d6e256272ae3ff6680d7c2a6b72233231a10f15180a8fcdb2425692c81542a3e7255a804ceda8b081987d007e4e30f9a9e893107b344d7b9b07b11f1@50.250.156.59:30303",
"enode://4c2b5c5d9503b7f4e76a551c827f19200f7f9ebb62f2cb5078c352de1e8d4d1006efa8fc143f9ccf2c8fd85836198dc1c69729dfa1c54d63f5d1d57fd8781bf8@62.151.178.212:30303",
"enode://8fcd039bb514ccac1f207d9b23efbea79a1ba9ed559768109b9b3fc9f7f89cfc3a6cd3e11ec1d92a93bdbfe2322e43f3bb3d9519530e8b503c92294116c38c32@108.232.148.241:30303",
"enode://bfad505cbb2bde72e161a7cff044d66d20ceb85c8a61047b50037881f289bd2dcc064189ade2077daddd5b20fd2fc6dee7208f227ae2a34361bf51751d225e8e@51.15.220.91:30303",
"enode://1d70e87a2ee28a2762f1b2cd56f1b9134824a84264030539bba297f67a5bc9ec7ae3016b5f900dc59b1c27b4e258a63fc282a37b2dd6e25a8377473530513394@208.88.169.151:30303",
"enode://ea1737bf696928b4b686a2ccf61a6f2295d149281a80b0d83a9bce242e7bb084434c0837a2002d4cc2840663571ecf3e45517545499c466e4373c69951d090fe@163.172.181.92:30303",
"enode://0f740f471e876020566c2ce331c81b4128b9a18f636b1d4757c4eaea7f077f4b15597a743f163280293b0a7e35092064be11c4ec199b9905541852a36be9004b@206.221.178.149:30303",
"enode://03f178d5d4511937933b50b7af683b467abaef8cfc5f7c2c9b271f61e228578ae192aaafc7f0d8035dfa994e734c2c2f72c229e383706be2f4fa43efbe9f94f4@163.172.149.200:30303",
"enode://242b68a4e37b4478c46901c3512315f36bd1aa513566d1f061939b202258b55d63d66367bc5807e62ec03ae673bead9a351846e3f23284ce79537ff7afa65615@34.201.26.61:30303"
]
rinkeby 測試網(wǎng)絡(luò)
$ docker run -d \
--name ethereum-rinkeby \
--restart always \
-p 8545:8545 \
-v /docker/ethereum-rinkeby:/root/.ethereum \
ethereum/client-go:v1.8.22 --rinkeby --syncmode=fast --cache=1024 \
--rpc --rpcaddr 0.0.0.0 --rpcport 8545 --rpcapi 'web3,eth,net,personal,admin,txpool' --rpccorsdomain '*'
主網(wǎng)
$ docker run -d \
--name ethereum \
--restart always \
-p 8545:8545 \
-v /docker/ethereum:/root/.ethereum \
ethereum/client-go:v1.8.22 --syncmode=fast --cache=1024 \
--rpc --rpcaddr 0.0.0.0 --rpcport 8545 --rpcapi 'web3,eth,net,personal,admin,txpool' --rpccorsdomain '*'
查看日志
$ docker logs -f ethereum
主網(wǎng) & light 模式
$ docker run -d \
--name ethereum-light \
--restart always \
-p 8200:18545 \
-v /docker/ethereum-light:/root/.ethereum \
ethereum/client-go:v1.8.23 --syncmode=light --cache=1024 \
--rpc --rpcaddr 0.0.0.0 --rpcport 18545 --rpcapi 'web3,eth,net,personal,admin,txpool' --rpccorsdomain '*'
靜態(tài)節(jié)點(diǎn)配置信息
配置方法同測試網(wǎng)