Ethereumをはじめてみる②
前回はプライベートネットワークを立てるところまでやりました。
EOAアカウントを作成する
Ethereumには2つのアカウントタイプがあって、
・EOA いわゆるユーザーアカウント。
・Contract コントラクトコードによって操作される。
今回は、EOAアカウントを作成する。
前回同様にコンソールを立てて、
$ geth console --networkid "10" --nodiscover --datadir "/Users/userhoge/eth_private_net" 2>> /Users/userhoge/eth_private_net/geth_err.log
アカウントを作成する。
> personal.newAccounts("パスワード) "0x30daa337a6696d7c007b32374c34c3362fe61bbf"
アカウントができたか確認。
先ほどのアドレスが表示されたら成功。
> eth.accounts ["0x30daa337a6696d7c007b32374c34c3362fe61bbf"]
ブロックを確認してみる
前回genesis.jsonを使用してはじめてのブロックを作ったので、ちゃんとそれが反映されているかを確認してみる。
eth.getBlock(n)は、
n番目のブロック情報を表示するコマンド。
>eth.getBlock(0) { difficulty: 16384, extraData: "0x", gasLimit: 134217728, gasUsed: 0, 略 stateRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", timestamp: 0, totalDifficulty: 16384, transactions: [], transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", uncles: [] }
できてますね。OK
マイニング準備
マイニングをして報酬を受け取るために設定をしていく。
はじめに、コインベースのアカウントを確認する。
コインベースアカウントとは、マイニング報酬を受け取るアカウントのこと。
デフォルトではインデックス[0]のアカウントが使用されるが、念のため確認する。
> eth.coinbase "0x30daa337a6696d7c007b32374c34c3362fe61bbf"
OK
コインベースをインデックスn番のアカウントに変更したい場合は、
> miner.setEtherbase(eth.accouts[n])
マイニング
いよいよマイニング。
()内の引数にはスレッド数をいれる。
>miner.start(1) null
マイニングが開始されているはずなので、進行状況を確認してみる。
> eth.mining true
しばらく時間をおいて、ハッシュレートを確認。
ハッシュレートが上がっていたらちゃんと掘れてる。ただし、マイニングを開始してしばらくはDAGをGenerateしているのでハッシュレートが0になっている場合も。少し待ってみよう。
> eth.hashrate 766590
しばらく放置したら、どれだけのブロックが掘れたかを確認してマイニングを停止する。
> eth.blockNumber 71 > miner.stop() true
コインベースの残高確認
先ほどマイニングした報酬として、コインベースの残高が増えているはず。
> eth.getBalance(eth.accounts[0]) 495000000000000000000
やけに桁数が多いが、これは単位がWeiだから。
1 ether = 1 * 1018 wei
単位をetherに変換したい場合は、
> web3.fromWei(eth.getBalance(eth.accounts[0])) 495
495 etherが残高に追加されている。OK
とりあえず今日はここまで。