ブロックチェーン

雑誌Interface2018年8月号

  • 概要は、おがわてつお氏の記事が分かりやすかった
  • 特集の中心となっているの佐藤聖氏の記事は何度読んでもよくわからない


ブロックチェーンとは

時間でどんどん発生するようなデータをネットワークで保存する仕組み。
暗号通貨であれば、取引履歴がデータとなる。
原理としてはセンサー値でもカメラ画像でもログデータでも何でもよい


基本的に実現されるのは、同じデータが共有されていることである。
センサー値の記録であれば、ネットワーク上の複数のPCに同じデータを
保存する。どれかPC一つが止まった場合でも、他PCが記録を続けることが
でき、そのPC復旧時に最新情報を受け取って、共有状態を維持する。


ネットワーク上のノードを役割で分けると、SPV(利用者のPCやスマホ)、
ルノード(全履歴を保持する)、マイナー(採掘する人)となる。


SPVは取引を開始する。例えば利用者AからBにXコインを送信する。

マイナーはこういったリクエストをいくつか選択し、ブロックを生成する。
ブロックにはヘッダが付く。ヘッダには、前ブロックから繋がりを示す
前ブロックのハッシュ値と、このブロックのハッシュ値とノンスを格納する。


ハッシュ値はノンスと、このブロックの全データから計算される。
このときハッシュ値の先頭 n 文字が全て 0 になるようなノンスでなければならない。
このノンスの探索がマイナーの仕事であり、計算パワーが必要される。

見つかれば、追加されるブロックとして、ネットワークにブロードキャストする。
このとき自分の報酬もブロックの取引履歴に追加する。
(このブロックが正式にブロックチェーンに繋がれれば自分への報酬が確定する)

ルノードは世界中の全ブロックを保持している。
マイナーからのブロードキャストに対して、検証し、問題なければブロックチェーンに追加する。
検証はハッシュ値の計算だけなので難しくない。この時点は仮承認である。


しかし世界中で同時にマイニングしているので、違うフルノードに違うブロックが
チェーンされることがある。したがってフルノード間で、コンセンサスを取って
本承認を行なう。このとき、多数決の論理が使われる。仮承認しているノードが多いものが
採用され、マイナーへの報酬が確定する。