mozyのかきおき

mozyの読書感想文や思考置き場

Docker上でイーサリアムのプライベートネットワークを構築してみる その1

何をするか

イーサリアムのスマートコントラクトに興味が湧いてきたため、色々と遊んでみたい。

やること

Docker上にイーサリアムのプライベートネットワークを構築して、まずは、動作テストをしてみる。

作業記録

公式が出しているイメージがあったため、とりあえず、Dockerのimageをpullする。

https://hub.docker.com/r/ethereum/client-go/

クライアントの実装は複数あるが、今回は一番メジャーらしきgo製のものを選択した。

Docker-test ❯ docker pull ethereum/client-go
Using default tag: latest
latest: Pulling from ethereum/client-go
ff3a5c916c92: Already exists 
621caa86389d: Pull complete 
bd6d857b7542: Pull complete 
Digest: sha256:2ff3324b43093b5edff3d0ce5260768a91d11182c1fce8fc0115d1eb71616ff9
Status: Downloaded newer image for ethereum/client-go:latest

そうしたらこんな感じになった。

docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
ethereum/client-go      latest              0cd307c2f2f4        25 minutes ago      42.3MB

とりあえず、-d オプションをつけて、バックグラウンドプロセスとして、runしてみる。

docker run -d --name ethereum-node -v $HOME/ethereum-data:/root \
            -p 8545:8545 -p 30303:30303 \
            ethereum/client-go --fast --cache=512

logを見てみると、

Docker-test ❯ docker logs -f ethereum-node
INFO [05-09|13:35:55] Maximum peer count                       ETH=25 LES=0 total=25
INFO [05-09|13:35:56] Starting peer-to-peer node               instance=Geth/v1.8.8-unstable-7beccb29/linux-amd64/go1.10.2
INFO [05-09|13:35:56] Allocated cache and file handles         database=/root/.ethereum/geth/chaindata cache=384 handles=1024
INFO [05-09|13:35:56] Writing default main-net genesis block 
INFO [05-09|13:35:57] Persisted trie from memory database      nodes=12356 size=2.34mB time=231.1108ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [05-09|13:35:57] Initialised chain configuration          config="{ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Constantinople: <nil> Engine: ethash}"
INFO [05-09|13:35:57] Disk storage enabled for ethash caches   dir=/root/.ethereum/geth/ethash count=3
INFO [05-09|13:35:57] Disk storage enabled for ethash DAGs     dir=/root/.ethash               count=2
INFO [05-09|13:35:57] Initialising Ethereum protocol           versions="[63 62]" network=1
INFO [05-09|13:35:57] Loaded most recent local header          number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [05-09|13:35:57] Loaded most recent local full block      number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [05-09|13:35:57] Loaded most recent local fast block      number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [05-09|13:35:57] Regenerated local transaction journal    transactions=0 accounts=0
INFO [05-09|13:35:57] Starting P2P networking 
INFO [05-09|13:35:59] UDP listener up                          self=enode://591157ed0651158beeff8b4e79252ab83e00a12118f5308bdd4125f3a9e9b6150c781f667ccf715a4a4e42e0f66d2daed14672758036ff60b12358d5ffe53716@[::]:30303
INFO [05-09|13:35:59] RLPx listener up                         self=enode://591157ed0651158beeff8b4e79252ab83e00a12118f5308bdd4125f3a9e9b6150c781f667ccf715a4a4e42e0f66d2daed14672758036ff60b12358d5ffe53716@[::]:30303
INFO [05-09|13:35:59] IPC endpoint opened                      url=/root/.ethereum/geth.ipc
INFO [05-09|13:36:19] Block synchronisation started 
WARN [05-09|13:36:20] Node data write error                    err="state node 45a7a6…90e5b7 failed with all peers (1 tries, 1 peers)"
WARN [05-09|13:36:20] Synchronisation failed, retrying         err="state node 45a7a6…90e5b7 failed with all peers (1 tries, 1 peers)"
WARN [05-09|13:36:30] Node data write error                    err="state node 45a7a6…90e5b7 failed with all peers (1 tries, 1 peers)"
WARN [05-09|13:36:30] Synchronisation failed, retrying         err="state node 45a7a6…90e5b7 failed with all peers (1 tries, 1 peers)"
WARN [05-09|13:36:40] Node data write error                    err="state node 45a7a6…90e5b7 failed with all peers (1 tries, 1 peers)"
WARN [05-09|13:36:40] Synchronisation failed, retrying         err="state node 45a7a6…90e5b7 failed with all peers (1 tries, 1 peers)"
WARN [05-09|13:36:54] Node data write error                    err="state node 45a7a6…90e5b7 failed with all peers (1 tries, 1 peers)"
WARN [05-09|13:36:54] Synchronisation failed, retrying         err="state node 45a7a6…90e5b7 failed with all peers (1 tries, 1 peers)"
INFO [05-09|13:37:05] Imported new block headers               count=192 elapsed=3.832s number=192 hash=723899…123390 ignored=0
INFO [05-09|13:37:05] Imported new block receipts              count=2   elapsed=2.177ms number=2   hash=b495a1…4698c9 size=8.00B  ignored=0
INFO [05-09|13:37:06] Imported new block receipts              count=4   elapsed=2.038ms number=6   hash=1f1aed…6b326e size=1.10kB ignored=0
INFO [05-09|13:37:15] Imported new block receipts              count=186 elapsed=8.338ms number=192 hash=723899…123390 size=23.40kB ignored=0
INFO [05-09|13:37:26] Imported new state entries               count=439 elapsed=20.453ms processed=439 pending=6377 retry=0 duplicate=0 unexpected=0
INFO [05-09|13:37:30] Imported new state entries               count=945 elapsed=5.209ms  processed=1384 pending=7265 retry=0 duplicate=0 unexpected=0
INFO [05-09|13:37:31] Imported new state entries               count=762 elapsed=9.751ms  processed=2146 pending=6584 retry=3 duplicate=0 unexpected=0
INFO [05-09|13:37:33] Imported new state entries               count=1135 elapsed=20.362ms processed=3281 pending=6484 retry=7 duplicate=0 unexpected=0
INFO [05-09|13:37:34] Imported new state entries               count=1138 elapsed=9.992ms  processed=4419 pending=7552 retry=7 duplicate=0 unexpected=0
INFO [05-09|13:37:36] Imported new state entries               count=1515 elapsed=19.731ms processed=5934 pending=7202 retry=0 duplicate=0 unexpected=0
INFO [05-09|13:37:39] Imported new state entries               count=1515 elapsed=14.048ms processed=7449 pending=5943 retry=0 duplicate=0 unexpected=0
INFO [05-09|13:37:41] Imported new state entries               count=1131 elapsed=12.412ms processed=8580 pending=5545 retry=7 duplicate=0 unexpected=0
INFO [05-09|13:37:43] Imported new state entries               count=1136 elapsed=11.578ms processed=9716 pending=5263 retry=0 duplicate=0 unexpected=0
INFO [05-09|13:37:45] Imported new state entries               count=1128 elapsed=14.792ms processed=10844 pending=5164 retry=8 duplicate=0 unexpected=0
INFO [05-09|13:37:47] Imported new state entries               count=1135 elapsed=11.881ms processed=11979 pending=4555 retry=9 duplicate=0 unexpected=0
INFO [05-09|13:37:51] Imported new state entries               count=1136 elapsed=9.862ms  processed=13115 pending=4687 retry=8 duplicate=0 unexpected=0
INFO [05-09|13:37:52] Imported new state entries               count=1136 elapsed=26.089ms processed=14251 pending=3651 retry=8 duplicate=0 unexpected=0
INFO [05-09|13:37:53] Imported new state entries               count=362  elapsed=4.607ms  processed=14613 pending=5899 retry=22 duplicate=0 unexpected=0
INFO [05-09|13:37:56] Imported new state entries               count=1087 elapsed=7.865ms  processed=15700 pending=5996 retry=21 duplicate=0 unexpected=0
INFO [05-09|13:37:56] Imported new state entries               count=384  elapsed=2.582ms  processed=16084 pending=9501 retry=0  duplicate=0 unexpected=0
INFO [05-09|13:37:58] Imported new state entries               count=1087 elapsed=23.781ms processed=17171 pending=9113 retry=22 duplicate=0 unexpected=0
INFO [05-09|13:37:59] Imported new state entries               count=1108 elapsed=23.035ms processed=18279 pending=9275 retry=22 duplicate=0 unexpected=0
INFO [05-09|13:38:02] Imported new state entries               count=1086 elapsed=21.992ms processed=19365 pending=8924 retry=22 duplicate=0 unexpected=0

お、なんかいい感じに構築できているっぽい。
一旦ここまで。

参考

qiita.com