【前回の記事】
ビットコインコインの仕組みについて何となく理解してきた方は、次にブロックチェーンがどうやって作られていくのか知りたくなるのではないでしょうか?
例えば、
「ブロックチェーンってどうやって新しいブロックを追加しているの?」
「不正なブロックを追加したりしないの?」
「ハードフォークは起きないの?」
などの疑問を抱くのではないでしょうか。
そこでこの記事には
・ブロックチェーンが組立られる流れ
・ブロックチェーンが組立られる基本ルール
・3パターンの組立られ方
・フォークについて
などブロックチェーンの組立とルールについて、少しだけ技術的な内容を踏まえながらもわかりやすく解説します。
その前に、マイナーがどうやってブロックを構築(マイニング)をしてるか知りたいひとは以下の記事をご覧ください。
もくじ
ブロックチェーンが組立られる流れ
ブロックチェーンが構築されるルールを紹介する前に、マイニングが完了したブロックはどのような流れでブロックチェーンに追加されているのでしょうか?
ブロックがブロックチェーンに追加されるまでの流れはそこまで複雑ではありません。
【ブロックを追加する手順】
- マイナーはマイニングが完了したブロックをブロックチェーンのノードに電波します
- ブロックを受け取ったノードは不正や問題がないかを確認し、問題ない場合は自分のブロックチェーンに追加します
これでブロックの追加は完了です。
ユーザーの送金は、このままブロックが追加されると正式に送金完了となります。
ではこのブロックの組立についてもう少し詳しく解説します。
ブロックチェーン構築の基本ルール
まずノードは基本的に以下のルールでブロックチェーンを構築しています。
【ブロックが組立られる基本ルール】
- 一番長いブロックチェーンが正式なチェーンとなる
- ブロックの順番は番号(ブロック高)で管理されている
- 一番多く計算された(ハッシュパワーが使用された)ブロックが優先して追加される
では上記のルールがどのように働くことでブロックチェーンが構築されているのかを、3つのシチュエーションに分けて解説します。
3つのケース別のブロック構築

手順②でノードが新たなブロックをブロックチェーンに追加する時に、その時の状況によって3パターンのブロック組立方法があります。
- 【通常時】問題なくメインチェーンに追加されるケース(メインチェーン)
- 【順番待ち】子ブロックを先に受け取ったケース(オーファンブロック)
- 【一時的にフォーク】中身は違うが番号が同じブロックを受け取ったケース(セカンダリーチェーン)
ではそれぞれ解説します。
①【通常時】問題なくメインチェーンに追加されるケース

まずは一般的にブロックが追加されるケースです。
メインチェーンとは一番長いブロックチェーンのことで、正確にはブロックチェーン上の各ブロックに設定されたディフィカルティ(計算の難易度)の合計値が一番高いチェーンのことです。
通常は新しいブロックはメインチェーンに追加され、また10分後に新たなブロックがさらに追加されていきます。
なお計算の難易度の合計値が一番高いということはつまり電気代がその分必要。
更に一番最初に計算を解いたマイナーしか報酬がもらえないというルールによって、ビットコインの安全性が保たれています。
次は受け取ったブロックの順番が正しくなかった場合を見てみましょう。
②【順番待ち】子ブロックを先に受け取ったケース

順番的に子となるブロックを親ブロックより先に受け取ったノードは、その子ブロックをまだ自分のブロックチェーンに繋げられません。
そのような子ブロックのことをオーファンブロックと呼びます。
例えば、受け取った100番目のブロックを新たに追加したいのに、自身のブロックチェーンにはまだ98番目までしか構築できていない場合は、その100番目のブロックはオーファンブロックになります。
そして親となる99番目のブロックが追加されるまで一時的にオーファンブロックプールに保管され、順次99番目のブロックが追加されるとオーファンブロックだった100番目のブロックも無事にメインチェーンに追加されます。
このようにブロックが順番通りに追加されることで送金データの順番に矛盾が発生しないようになっています。
③【一時的にフォーク】中身は違うが番号が同じブロックを受け取ったケース

では最後に全く違うブロックだけど、番号が同じだった場合のケースを見てみましょう。
このようなケースは違うマイナーが、たまたま同じタイミングで計算の解答を見つけた時に発生します。
そのような時はメインチェーンが二手に分岐するように別のチェーンが付随して作成されます。
そしてこのメインチェーンとは別に作られたチェーンをセカンダリーチェーンと呼びます。
例えば、ノードには既に最新となる100番目のブロックが追加されているのに、同じ100番目ですが内容の違うブロックを受け取った場合にセカンダリーチェーンが組立てられます。
セカンダリーチェーンが組立られた後、メインチェーンとセカンダリーチェーンのそれぞれのディフィカルティ(計算の難易度)の合計値が計算され、多かった方がメインチェーンとして、逆に少なかった方をセカンダリーチェーンとして扱います。
またこのように分岐したブロックが一本に収束されることをリコンバージと呼びます。
ここで感の良い方は、
①「これっていわゆるハードフォークやソフトフォークにならないの?」や
②「セカンダリーチェーンが伸び続けてしまうことはないの?」
と思う方もいると思います。
次の項目で詳しく解説します。
セカンダリーチェーンはそのままフォークし続けないのか?
まず①の結論から言うと、ハードフォークやソフトフォークにはなりません。
理由はブロックチェーンのプロトコル(仕組み)自体に変更がされていないからです。
詳しくは次回の記事で解説しています。
また②に関しては、セカンダリーチェーンが伸び続けることは_ほぼない_と言えます。
なぜなら以下のルールがあるからです。
③一番多く計算された(ハッシュパワーが使用された)ブロックが優先して追加される
セカンダリーチェーンの発生は、一時的にブロックチェーンが分岐することからフォーク(分岐)しているとも言えます。
しかし上記のルールによって、ノードは常に計算力の合計値が大きブロックが優先して追加されるため2ブロック以上伸び続けることはほぼありません。
_ほぼ_が当てはまるケースとしては、ブロックが同時にかつ同じ計算量で作られるケースです。
ですがそのようなことが起こる確率は至極低いためほぼありえません。
また①で説明したように常にブロック高が一番高いチェーンをメインチェーンとするルールがあるので、セカンダリーチェーンは順次破棄されメインチェーンが組み立てられ続けます。
ただし、マイナーによって不正が行われた時は別です。
例えばマイニングプールが51%以上のハッシュパワーを得てセカンダリーチェーンを伸ばし続けることなどが挙げられます。
このような51%攻撃について更に詳しく知りたい方は、以下の記事をご覧ください。
【この4つがポイント】
この記事ではブロックの組立(構築)について解説をしました。
最後にポイントをまとめてみます。
- 一番長いブロックチェーンが正しいとされメインチェーンになる
- ブロックの順番は番号(ブロック高)で管理されている
- 一番多く計算されたブロックが正しいブロックなのでフォークはほぼ発生
- ただしルールがあっても不正は行われる可能性がある。
以上、BTCのブロックが作られる3つのルールについて簡単に説明を入れました。
ぜひ、ご参考くださいね!