Ethereumを動かす ~Part4~

前回までで、自分のPCにEthereumのテスト環境を構築し、アカウントを作成するところまで行いました。まだご覧になっていない方は先にそちらから目を通していただけるとわかりやすいかと思います。
前回に引き続きテスト環境で作ったアカウントを用いて操作していきたいのですが、その前にEthereum、ひいてはブロックチェーンについて説明しておくことがあります。
そもそもブロックチェーンとは
ブロックチェーンが技術として画期的だと言われる所以は、極々簡単に説明しますとそれぞれのブロック間で今まで行われた取引の全ての記録を共有しているという点です。このようにお互いを監視し合っているかのようなつくりになっている為、ブロックチェーンは改竄が理論上不可能と言われています。
全てのブロックが情報を共有しているということは、それらの情報をまとめて管理する中心的システムが要らないということになります。実際、ブロックチェーンはP2Pという分散管理型のモデルで動いています。
では、どのようにして仮想通貨は作られているのでしょう?
特定のシステムにだけ仮想通貨を作る権限が与えるとするのであれば、上記の分散型モデルが成り立たなくなってしまいます。
かといって、全ての参加者が好きな時に好きなだけ作れるようなシステムにすると、あまりに大量なブロックチェーンが生成されるのは容易に想像できます。
これらの問題を解決するためにマイニングという考え方が導入されています。恐らく、ブロックチェーンの技術的な面には触れてこなかった方でも「マイニング」という言葉自体は聞いたことがあるという方も多いかと思います。
マイニングとは計算競争です。この計算競争には全てのユーザーが参加でき、その計算に勝った人にはブロックチェーンを作る権利が与えられるというシステムになっています。
「計算に勝てば仮想通貨が手に入る」と聞くと驚く人もいるかもしれませんが、その計算競争には全世界のユーザーが参加してますし、マイニング用の機材も必要で、電気代も時間もかなりかかってしまい、これで収益を出そうとするのはなかなか難しいです。
しかし、テスト環境となると話は別で、マイニングはぐっと簡単になります。Part2において、genesis.jsonでマイニングの難易度を調整したのを覚えている方もいるかと思います。
実際にテスト環境でマイニングしてみましょう。
(※テスト環境でマイニングして得たehterはそのテスト環境でしか使用できません)
マイニング
前回の続きで、既にテストネットを立ち上げた状況だとします。
ここで、
$ eth.coinbase
とコマンドを打ち込んでみてください。このコマンドは、マイニング成功時に報酬を獲得するアカウントを表示させるものです。前回得た自身のアカウントのアドレスが再び表示されたでしょうか。
ここで、現在存在するブロックの数を見てみましょう。
$ eth.blockNumber
と打ち込んでみてください。当然のことながら0と表示されると思います。
ではマイニングをしてみましょう。
$ miner.start()
と打ち込んでみてください。nullと表示されても不安になることはありません。しばらく待った後に
$ eth.blockNumber
と再び打ち込んでみてください。数字が増えているはずです。それだけのブロックが生成されたことを示しています。
$ eth.getBalance(eth.coinbase)
と入力すると得た金額が確認できます。単位がetherではなくweiなのでかなり大きな数が出力されたと思います。
次回はもっと色々な操作を行います。