こんにちは、エンジニアのオオバです。
前回に引き続き、Gethを使ったEthereumの学習をしていきます。
GethとはEthereumのP2Pネットワークに
接続するためのGo製クライアントソフトです。
前回の記事でインストールまでを済ませました。
本記事はEthereumのプライベートネットワーク接続までを学習していきます。
引き続きコチラの記事を参考にさせていただきます。
いつもありがとうございます。
プライベート・ネットに接続する - Ethereum入門
→11万文字で徹底解説した「DOTweenの教科書」Unityアニメーションの超効率化ツールはこちら
Ethereumのプライベートネットワークとは
一つの組織のみに管理されたノードのみが参加することが可能なネットワークです。ネットワークは自身の管理下に置くことが可能になり、中央集権的なP2Pシステムが可能になります。
👆つまりプライベート自分のみネットワークのため
個人の開発環境(テスト環境)として使えるという認識でいます。
Genesisファイルの作成
Genesisとはブロックチェーンの中の最初のブロックのことを指します。まずはこれを作成します。
Mac上の任意の場所でディレクトリを作ります。
$ mkdir eth_private_net
mkdir eth_private_net
という名前である必要はありません。
サンプルにのっとっているだけです。
myGenesis.json
という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": {}
}
2021.05.09
送金で失敗するため、config内のパラメータを追加
Gethのinitコマンドでgenesisブロックの初期化
次のコマンドでgenesisブロックを初期化します。
$ geth --datadir ./eth_private_net init ./eth_private_net/myGenesis.json
WARN [02-04|09:03:55] No etherbase set and no accounts found as default
という警告が表示されますがこのノード(geth)でのデフォルトのウォレットのアドレスを作成していないために表示されるものです。これは次節で作成していくので、現時点では無視して構いません。
👆このような警告が出るらしいのですが、
ぼくの環境、バージョンでは発生しませんでした。
とりあえず気にせず先に進めます。
Gethの起動
👇次のコマンドでGethが起動します。
プライベートネットワークに接続するということです。
$ geth --networkid "15" --nodiscover --datadir "./eth_private_net" console 2>> ./eth_private_net/geth_err.log
軽くコマンドの内訳を説明します。
- --networkid : 任意のネットワークIDで、Genesisファイル記載のchainidと同じ数字にする必要ガアあります
- --nodiscover : 同じIDのノードを探す機能をOFFにします。個人で開発するときにはつけておくものなのでしょう
- console : 対話型コンソールが起動します。consoleをつけなければバックグラウンドで起動します
先のコマンドを実行すると以下のように出力され、
対話型のコンソールが起動したと思います。
Welcome to the Geth JavaScript console!
instance: Geth/v1.10.2-stable/darwin-amd64/go1.16.3
at block: 0 (Thu Jan 01 1970 09:00:00 GMT+0900 (JST))
ここからはこの対話型コンソールに対してコマンドを実行していきます。
ジェネシスブロック情報の確認
> eth.getBlock(0)
すると以下のようなJSONが出力されます。
{
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: []
}
まとめ
Gethを使ってEthereumのプライベートネットワークに接続し、
ジェネシスブロックの中身を確認するところまでできました。
次回は採掘してみます。
この記事が気に入ったらフォローしよう
- macOS Catalina 10.15.7
- ethereum 1.10.2
- go 1.16.3 darwin/amd64