Ethereum(Geth)でプライベートネットを作成

Ethereum(Geth)でプライベートネットを作成

Geth

公開: 2018-01-08

更新: 2020-04-29

こんにちは、いつもお読みいただきありがとうございます。
Ken(@gootablog)です。

EthereumクライアントのGethでプライベートネットを作成していきます。プライベートネットは開発に使ったりすることが主な目的です。

Gethの環境構築や起動方法はこちらの記事を参考にしてみてください。

Ethereumクライアント「Geth」の環境構築方法
Gethコンソールでよく使うコマンドをまとめました
Ethereum(Geth)でテストネット(Ropsten)に接続してみる
Ethereum(Geth)でJSON RPCを使って外部からアクセスする
Ethereum(Geth)をlivenetに接続してみる
Ethereum(Geth)をバックグラウンドで起動する&バックグラウンドからコンソールを起動する

nodeを建てるディレクトリを作成

$ mkdir ~/private_net && cd ~/private_net

名前はお好みで。
ディレクトリは作成しないでホームディレクトリを使用しても大丈夫です。

genesis.jsonの作成

$ vim genesis.json

以下の内容を書きます


{
    "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "difficulty": "0x200000",
    "gasLimit": "0x2100000",
    "alloc": {
    }
}

logファイル作成

gethを実行する時に同期内容などを表示せず、内容をファイルに残すために作成します。

$ touch log

geth初期化

初期化をすると、ジェネシスブロックの作成されます

$ geth --datadir ./ init ./genesis.json

これでセットアップができました。

geth 起動

gethを立ち上げてコンソールを出します。

$ geth --datadir ./ --networkid 15 --nodiscover console 2>> ./log

--networkidはjenesis.jsonのchainidに書いた数字を書きます。
--nodiscoverは他のノードとつながらないようにするオプションです。

これでgethのコンソールが表示されていろいろ試すことができます。

試しにアカウントを作ってみよう

コンソールが表示されてる状態でコマンドを実行します。

> personal.newAccount("[passphrase]")

そうするとアドレスが生成され表示されます。
[passphrase]は送金時などにアンロックをするのに使います。忘れないようにしてください。

作成したアドレスにETHを持たせる

アドレスを生成しましたがETHは0です。
genesis.jsonを修正してETHを入れてみます。

コンソールを抜けてgenesis.jsonを編集します。

{
    "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "difficulty": "0x200000",
    "gasLimit": "0x2100000",
    "alloc": {
        "[address]" : {
            "balance" : "10000000000000000000"
        }
    }
}

allocという部分を修正します。
さきほど生成されたアドレスを[address]の部分に書きます。

balanceに実際に持たせるETHの数値を書きます。単位はweiという単位になってるので注意してください。
今回は10ETHを持たせます。

次にジェネシスブロックを再度作成するために、gethというディレクトリがあるのでそれを削除します

$ rm -rdf ./geth

そして初期化

$ geth --datadir ./ init ./genesis.json

これでgethを起動し、コンソールからバランスを確認すると10ETHが入っているかと思います。

> eth.getBalance(eth.accounts[0])
10000000000000000000

これでgethで送金などが試せるようになりました。
コマンドはeth,adimin,personal,minerがあります。タブを押すと候補が表示されるので試してみてください。

よく使うコマンドなどは別途まとめたいと思います。