https://github.com/grohiro/ethereum-private-network-docker
Building Ethereum private network on Docker
https://github.com/grohiro/ethereum-private-network-docker
Last synced: 3 months ago
JSON representation
Building Ethereum private network on Docker
- Host: GitHub
- URL: https://github.com/grohiro/ethereum-private-network-docker
- Owner: grohiro
- Created: 2018-11-20T12:30:14.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-11-20T13:37:10.000Z (over 7 years ago)
- Last Synced: 2025-02-24T01:48:25.455Z (over 1 year ago)
- Language: Dockerfile
- Size: 1.95 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Ethereum プライベートネットワーク構築
Docker で Ethereum のプライベートネットワークを構築する。マイニングノード2台と bootnode の3台構成とする。
bootnode のイメージ作成方法は以下のページを参照
- [bootnode コマンドが入った Docker イメージを作成する - Qiita](https://qiita.com/grohiro/items/127dfc02f2a90df6fc66)
## 初期化
初回に一度だけ実行する処理。
### 作業ディレクトリの作成
```bash
$ mkdir -p storage/{private,public}
```
### bootnode の nodekey 生成
```bash
$ docker-compose run bootnode bootnode -genkey=/var/ethereum/boot.key
```
### genesis.json の作成
genesis.json を storage/geth-{private,public} にコピーする。
```json:genesis.json
{
"nonce": "0x00006d6f7264656e",
"difficulty": "0x200",
"mixhash": "0x00000000000000000000000000000000000000647572616c65787365646c6578",
"coinbase": "0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x",
"gasLimit": "0x2FEFD8",
"alloc": {
}
}
```
### ethereum の初期化
```bash
$ docker-compose run geth-private --datadir /var/ethereum init /genesis.json
$ docker-compose run geth-public --datadir /var/ethereum init /genesis.json
```
### アカウント作成
パスワードファイル storage/geth-{private,public} に作成してからコマンドを実行する。
```
$ echo 'mypassword' > storage/geth-private/passwd
$ docker-compose run geth-private account new
$ echo 'mypassword' > storage/geth-public/passwd
$ docker-compose run geth-public account new
```
## 起動
Ethereum ネットワークを起動する。起動する前に bootnode の接続先を更新する。
### bootnode の起動と設定
IPアドレスを確定させるために bootnode のみ起動する。
docker-compose.yml の geth-{private,public} 起動パラメータに記載された bootnodes のアドレスを更新する。
```bash
$ docker-compose up -d bootnode
# IPアドレスを確認する
$ docker-compose run bootnode ifconfig
# nodekey を確認する
$ docker-compose run bootnode bootnode -nodekey=/var/ethereum/boot.key -writeaddress
```
表示された情報を使って `enode://` で始まるアドレスを作成して docker-compose.yml を変更する。
```
enode://[表示されたnodekey]@[IPアドレス]:30301
(例)
enode://bd0a688a5ec7d4f0989b829fc331b167c01630400cb84c8d2b9ff9b3422a68562ee16c610c4ca36794a50638c063c5a36a4c1353143301d459efa5bd433956e3@172.22.0.2:30301
```
### ネットワーク起動
```
$ docker-compose up -d
# DAG生成が終わるまで待つ
INFO [11-16|12:47:23.428] Generating DAG in progress epoch=1 percentage=64 elapsed=2m47.877s
```