こんにちは、いつもお読みいただきありがとうございます。
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
があります。タブを押すと候補が表示されるので試してみてください。
よく使うコマンドなどは別途まとめたいと思います。