FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

「Mastering Bitcoin」を読む (第8章 マイニングとコンセンサス 2.)

「Mastering Bitcoin」を読んでいる。いよいよマイニングだ。 Bitcoinのマイニングは、どのような仕組みで、どのような計算をしているのかについて解説している。 最終的にマイニングしたブロックをブロックチェーンに接続し、それをどのようにしてビットコインネットワークに接続するためのコンセンサスを取るための仕組みだ。

ビットコインとブロックチェーン:暗号通貨を支える技術

ビットコインとブロックチェーン:暗号通貨を支える技術

関連記事

これは著者が読んだ内容をまとめているだけなので、誤訳、理解不足により誤っている可能性があります!鵜呑みにしないようにお願いします。 文章の途中に挿入している画像は、 https://www.bitcoinbook.info/translations/ja/book.pdf に含まれている画像を使用させていただいています。

第6章、第7章は一応読んだが、第8章のほうが面白そうなので先にまとめる。

第8章 マイニングとコンセンサス (2)

ブロックのチェーンの組み立てと洗濯

ブロックチェーンフォーク

  • ブロックのマイニングを全世界的同時並行的に行っている場合、複数のマイニングノードが異なるブロックの採掘に成功し、ビットコインネットワークに投げる可能性がある。

  • ある状態でビットコインネットワークに、メインチェーンのフォークが存在しない場合状態からスタートする。

f:id:msyksphinz:20180207235530p:plain
図. ブロックチェーンのフォークが生じる過程の可視化 - フォークが生じる前
  • ほぼ同時に異なったブロックを採掘した2つのマイナーが存在する。それぞれのマイナーが同時にビットコインネットワークにブロックをブロードキャストする。
    • 赤 : カナダで作ったブロック
    • 緑 : オーストラリアで作ったブロック
f:id:msyksphinz:20180207235739p:plain
図. ブロックチェーンのフォークが生じる過程の可視化 - 2つのブロックが同時に見つかった
  • それぞれのマイニングブロックはビットコインネットワーク中を進んでいき、各ノードは最新のdifficultyを持ったブロックをメインチェーンに設定する。
    • 最終的には、それぞれのメインチェーンがネットワーク上のある境界で衝突した状態になる。
f:id:msyksphinz:20180208000015p:plain
図. ブロックチェーンのフォークが生じる過程の可視化 - 2つのブロックが伝搬しBitcoinネットワークを2つに分割している
f:id:msyksphinz:20180208000303p:plain
図. ブロックチェーンのフォークが生じる過程の可視化 - 新しいブロックが1つのフォークを拡張
f:id:msyksphinz:20180208000447p:plain
図. ブロックチェーンのフォークが生じる過程の可視化 -Bitcoinネットワークが新しい最長ブロックチェーンに再収縮する

コンセンサス攻撃

  • 悪意のあるマイナーの攻撃。
    • 自分のウォレットで、ダブルスペンド(2重支払い)を発生させる攻撃。
  • 全世界のビットコインノードの、半分以上のマイニングパワーを持っていると、積み上げられたブロックチェーンの改ざんが可能になる。
    • 「51%攻撃」
      • トランザクションが承認される前。
      • いくつかのブロックをもとに戻せるような優位性を持っている。
  • 例 : 「悪意ある攻撃者マロリーがキャロルの画廊に行き、サトシ・ナカモトをプロメテウスとして書いた美しい絵画を購入する」