Nakamoto Consensusは、Bitcoinが中央の審判なしに共通の有効な取引履歴を形成する仕組みの呼び名です。検証用ソフトウェアを動かしてルールを自ら確かめるコンピューターであるFull Nodeは、まず無効なブロックを除外し、有効な分岐の中から累積作業量が最大のものを選びます。承認が増えると、一定の安全性の前提の下で支払いへの確信が高まりますが、直ちに変更不可能になるわけではありません。
アンナがペーターに支払います。同じ資金をエヴァに使う別の取引にも署名することは可能です。ここでの署名は、秘密の数値である秘密鍵を使い、支払いを許可したことを検証できる証拠を作る操作です。他の人は、その秘密を知らなくても署名を確認できます。両方の署名が本物でも、両方の支払いを一つの有効な履歴に載せることはできません。ペーターとエヴァが反対の順序でメッセージを受け取ることもあります。Bitcoinには署名の検証だけでなく、順序を共有して二重支払いを防ぐ方法が必要です。Nakamoto Consensusは、ルール、Proof of Work、分岐の選択、採掘者への報酬を組み合わせます。Bitcoinの仕組みを最初に説明した技術文書であるサトシのホワイトペーパーには、この後年の名称は登場しません。 [1] [4]
ペーターのFull Nodeは投票用紙ではありません。ブロックは、共有する履歴に追加する取引のまとまりです。取引出力には、金額と、それを後で使うための条件が記録されています。Full Nodeは、使おうとしている取引出力が未使用か、使用条件を満たすか、許可された量を超えるbitcoinが新たに作られていないかなど、取引とブロックを自ら確認するプログラムです。採掘者はブロックを提案できますが、この確認を自由に飛ばすことはできません。膨大な作業があっても、無効なブロックは無効なままです。分岐の比較は有効な候補同士で行います。共通の履歴には、参加者のルールに互換性があることが前提となります。 [2] [3]
接続するコンピューターごとに一票を与えると、攻撃者は独立して見える参加者を大量に作れます。これがSybil Attackです。Proof of Workは名前を数える代わりに、検証可能な計算作業で分岐の重みを決めます。採掘者はデータの指紋に当たるハッシュを繰り返し計算し、決められた条件を満たす結果を探します。試行には電力と機器が必要ですが、見つかった結果の検証は容易です。ネットワーク上の名前を増やすだけでは作業は増えません。身分証の確認でも、全ノードによる投票でもないのです。 [1] [4]
採掘者は候補ブロックを組み立て、ブロックの簡潔な要約であるヘッダーを変えながら、そのハッシュを数値として読んだ値が有効な目標値以下になるまで探します。有用な方程式を解いたり暗号を破ったりするのではなく、まれな結果を探す作業です。二人がほぼ同時に成功することもあります。ネットワークの一部は片方を、別の部分はもう片方を先に受け取り、一時的に二つの有効な分岐が生まれます。これだけで障害とはいえません。通常の伝播条件なら、後続の作業によって、より強い分岐へと収束できます。 [1] [8]
分岐の強さを測るchainworkは、各ブロックの目標値に基づいて割り当てた作業量の合計です。電力メーターでも、実際の試行回数の記録でもありません。すぐ幸運に恵まれた採掘者と長く待った採掘者でも、目標値が同じなら有効なブロックの重みは同じです。Full Nodeは利用可能な有効分岐のうち合計が最大のものを選びます。「最長チェーン」は最多の作業量を意味し、必ずしも最多のブロック数ではありません。分岐の切り替えは再編と呼ばれます。外れたブロックの支払いも、有効なままであれば再び取り込まれることがあります。 [1] [2] [3] [7]
アンナの支払いが受け入れられたブロックに入ると、承認が一つ付きます。その後に続くブロックごとに、さらに一つ増えます。この履歴を置き換えるには、競合する分岐が作業量に追い付かなければなりません。計算力の過半数が正直で、ブロックが十分速く伝わると仮定すると、書き換えに成功する危険は通常、深さとともに下がります。これが確率的な確定性です。確信は増しますが、変更が数学的に不可能になるわけではありません。何回待つかは支払額やリスクにもよります。あらゆる状況で安全を保証する回数はありません。 [1] [4]
より速い機械が加わっても条件が同じなら、ブロックは速く作られるようになります。そのためDifficulty Adjustmentは、メインネットで過去のタイムスタンプを使い、2016ブロックごとに目標値を再計算します。目指すのは一ブロック平均10分、この区間でおよそ二週間です。ただし個々のブロックはずっと早く、あるいは遅く来ることがあります。調整のきっかけはブロック数であり、カレンダーの日付ではありません。計算力が急に大きく失われると、次の調整まで長くかかることもあります。即応する調整器でも正確な時計でもありません。 [2] [8]
新規発行されるbitcoinであるブロック補助金と取引手数料は、受け入れられた履歴に残るブロックへの報酬です。履歴を延ばす動機にはなりますが、安全性の前提に代わるものではありません。計算力の過半数があれば、有効な分岐の再編、支払いの除外、自分の支出を取り消す試みが可能です。しかしFull Nodeに無効な署名、過剰発行、無断での他人の資金の使用を受け入れさせることはできません。50%も安全の切り替えスイッチではなく、それ未満で成功の可能性がある攻撃もあります。報酬だけで正直さが生まれるわけではありません。 [1] [2] [3]
ペーターに戻りましょう。攻撃者が彼のノードの接続をすべて支配すれば、不完全な状況だけを見せられます。Eclipse Attackはこのようなネットワーク隔離を指します。その場合、承認回数が示すものは、ほかのノードと十分につながっている場合と同じとは限りません。ネットワークが切り離された部分に分かれても、合意は難しくなります。安全性は攻撃者の計算力の割合だけでなく、メッセージの伝播と正直な検証に依存します。Bitcoin Backboneの研究はこれらを明示的にモデル化しています。ネットワーク条件なしの計算力の割合だけでは、安全性を説明しきれません。 [4]
古典的なBFT (Byzantine Fault Tolerance)手法は、故障や悪意ある参加者がいても合意することを目指し、あらかじめ参加者が分かる集団を想定することがよくあります。OM (Oral Messages)やPBFT (Practical Byzantine Fault Tolerance)にはそれぞれ独自の条件とメッセージ交換の決まりがあります。Bitcoinは作業と履歴の確率的な収束によって自由な参加に対応するのであり、単なる名称変更ではありません。また、強い有効分岐を選ぶこと自体では、有効性のルールは変わりません。変更には参加者が対応するソフトウェアと互換性のある条件を採用する必要があります。採掘者が決定に関わるのは、どの有効な履歴が続くかであって、全員が何を有効と見なすべきかではありません。 [5] [6] [9]
理解を深めるには、この項目とあわせて次もお読みください Bitcoin, Proof of Work, Difficulty Adjustment, コンセンサスルール, マイニング, Full Node. 次の項目からも参照されています Bit Gold, Reusable Proofs of Work, Byzantine Generals Problem, Sybil Attack.