プラスプラス開発者ブログ

岩手県盛岡市のシステム開発会社「株式会社プラスプラス」の開発者ブログです。

Ethereumのプライベートネットを作ってみる

こんにちは。

前回の記事でEthereumの環境の準備ができましたので、早速プライベートネットを作ってみましょう。

plusplus-jp.hateblo.jp

初期化する

プライベートネットのデータフォルダを作成します。

ホームディレクトリに private-net というフォルダを作り、その中に作成します。

$ cd
$ mkdir private-net
$ cd ~/eth-private-net/

初期化のためのファイル genesis.json を書きます。(vimじゃなくてもOKです)

$ vim genesis.json

↓そのファイルの中身

{
    "config": {},
    "nonce": "0x0000000000000042",
    "timestamp": "0x0",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "gasLimit": "0x8000000",
    "difficulty": "0x4000",
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "alloc": {}
}

つなげてみる

ブロックチェーンを初期化します。

geth --datadir ~/eth-private-net/ init ~/eth-private-net/genesis.json

初期化が終わりましたら、コインベース(マイニングの際の受け取りアカウント)を作ります。

$ geth --datadir ~/eth-private-net/ account new
INFO [04-23|16:17:56] Maximum peer count                       ETH=25 LES=0 total=25
Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase:
Repeat passphrase:
Address: {d61a98***************************deb3826}

プライベートネットを起動します。

$ nohup geth --networkid 1234567890 --nodiscover --maxpeers 0 --datadir ~/eth-private-net/ \
    --rpc --rpcaddr "0.0.0.0" --rpcport=8545 --rpccorsdomain "*" \
    --ws  --wsaddr "0.0.0.0"  --wsport=8546  --wsorigins="*" \
    --port 60303 \
    --rpcapi "admin,db,eth,debug,miner,net,shh,txpool,personal,web3" \
    --verbosity 6 2>> ~/eth-private-net/geth.log &

※開発するにあたって必要そうなオプションを全部つけてます。

動作しているかな・・・?

gethのJavascriptコンソールの立ち上げで動かしてみましょう。

$ geth attach ~/eth-private-net/geth.ipc

このような形でプロンプトが表示されます。

$ geth attach ~/eth-private-net/geth.ipc
Welcome to the Geth JavaScript console!

instance: Geth/v1.8.3-unstable/darwin-amd64/go1.9.2
coinbase: 0xd61a98***************************deb3826
at block: 0 (Thu, 01 Jan 1970 09:00:00 JST)
 datadir: /Users/*******/eth-private-net
 modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 shh:1.0 txpool:1.0 web3:1.0

>

止め方

$ ps aux | grep [g]eth

プロセスIDを確認し、kill コマンドで停止させます。

$ kill 12345

再開するときは、もう一度起動させます。初期化するとリセットされてしまいますので、注意が必要ですね。

次回は、プライベートネットでいろいろな操作をする方法を書きたいと思います。