Gethでプライベートネットワークを構築する方法を解説します。
- Gethでプライベートネットワークが立ち上げられる
- Gethの使い方の基本がわかる
- Geth 1.10.15
Gethをインストール
まずは、ご自身の環境に合わせてGethをインストールしましょう。
公式ドキュメントを参考にしてください。
例えばMacの場合は下記のようにbrewを使ってインストールします。
$ brew tap ethereum/ethereum
$ brew install ethereum
インストール完了後、gethコマンドが使えるかどうか確認しましょう。
$ geth --help
モグモグさん
各種コマンドの説明が表示されれば、インストール完了です。
全体のディレクトリ構成
本記事の中でのディレクトリ構成は下記のような形になりますので、読み進める上で参考にしてください。
data/
ディレクトリはブロックチェーンのデータを保存するディレクトリです。
geth-privatenet-sample
- genesis.json
- data/
モグモグさん
geth-privatenet-sample
はプロジェクト名です。
ご自身の好きな名前でOKです!
genesis.jsonを作成
genesis.json
とは、最初のブロックの設定ファイルです。
{
"config": {
"chainId": 15,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"berlinBlock": 0
},
"nonce": "0x0000000000000042",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "",
"gasLimit": "0x8000000",
"difficulty": "0x4000",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": {}
}
モグモグさん
本記事では、それぞれのパラメーターの説明を省きますが、気になる方はこちらが参考になります。
プライベートネットワーク起動
初期化
geth init
コマンドを使ってプライベートネットワークを初期化します。
--datadir
は任意のディレクトリを指定してください。ここにブロックチェーンの情報が書き込まれます。
$ geth init --datadir data genesis.json
モグモグさん
完了後は、データディレクトリに情報が保存されていることを確認しましょう。
起動
続いて、起動していきましょう。
--networkid
とgenesis.json
のchainId
は同じものを指定する必要があります。
$ geth --datadir data --networkid 15
モグモグさん
これで、プライベートネットワークが構築できました!
コンソールからアクセス
Gethは、対話的に処理を行えるコンソール環境を用意しているのでそれを使ってアクセスしてみましょう。
Nodeにアクセス
起動した状態で下記のコマンドを入力してください。
data/
のディレクトリはご自身で設定したデータディレクトリに変更してください。
$ geth attach data/geth.ipc
すると、Welcome to the Geth JavaScript console!
という文字が表示されると思います。
ブロック情報を取得
getBlock(ブロックナンバー)
を使ってブロック情報を取得してみましょう。
> eth.getBlock(0)
{
difficulty: 16384,
extraData: "0x",
gasLimit: 134217728,
gasUsed: 0,
hash: "0x7b2e8be699df0d329cc74a99271ff7720e2875cd2c4dd0b419ec60d1fe7e0432",
logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
miner: "0x3333333333333333333333333333333333333333",
mixHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
nonce: "0x0000000000000042",
number: 0,
parentHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
size: 507,
stateRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
timestamp: 0,
totalDifficulty: 16384,
transactions: [],
transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
uncles: []
}
モグモグさん
上記のようにブロック情報が表示されればOKです。
まとめ
Gethでプライベートネットワークを構築する方法を解説しました!
モグモグさん
より理解を深めたい方は、コンソールからアカウントを作成したり、送金を行ったりをするとブロックチェーンの理解が深まります。