用語集 / マイニングとコンセンサス
チェーン再編成
別名は再編成、リオーグ、ブロックチェーン再編成、Reorgです。
- チェーン再編成とは?
- チェーン再編成とは、ノードがより多くの累積作業量を持つ分岐を発見した際に、それまで受け入れていたブロックを切り離し、新しい分岐に沿ってチェーンの先端を再構築することをいいます。
ノードは最初に見たチェーンに従うわけではありません。ノードは最も多くのプルーフ・オブ・ワークを積んだチェーンに従い、より優れた分岐が現れるとフォークした地点まで巻き戻して、そこから先を再実行します。ビットコインのメインチェーンで起きる再編成はほぼすべて深さ1ブロックで、数秒で完了します。記録上最も深い再編成は2013年3月の24ブロックで、攻撃者ではなくソフトウェアのバグが原因でした。
仕組み
チェーンの再編成には3つの手順があり、ノードは誰にも問い合わせることなく、すべてを自分で実行します。
まず、現在の先端から2つの分岐が共有する最後のブロックまでさかのぼり、その過程で各ブロックを巻き戻します。そのブロックが生成したアウトプットは未使用の集合から取り除かれ、消費したアウトプットは復元され、そのトランザクションはメモリプールに戻されます。次に、競合する分岐のブロックを順番に接続し、それぞれを、ちょうど今到着したかのように検証します。最後にメモリプールを再計算し、すでに承認されたものは破棄し、そうでないものは保持します。
安全性が宿るのは2番目の手順です。より多くの作業があることは必要ですが、十分ではありません。挑戦する分岐上のブロックがコンセンサスチェックを1つでも満たさなければ、ノードは停止し、その分岐を無効と印付けして、すでに持っていたチェーンを維持します。無制限のハッシュパワーを持つマイナーでも、自分に過剰に支払うブロックやアウトプットを二重に使うブロックをノードに受け入れさせることはできません。
規則は最長チェーンではなく、累積作業量が最大であることです。作業量は各ブロックがマイニングされたときの難易度から合計されるため、より高い難易度でマイニングされたブロックが少ない分岐が、より長い分岐を上回ることがあります。ビットコインでは難易度が2,016ブロックごとにしか変わらないため、この2つの尺度はほぼ常に一致します。
日常的なものと危険なものを分けるのは深さです。深さ1ブロックは通常の後片付けです。Bitcoin Coreは実質的なものはすべて注目に値するとみなし、競合する分岐がアクティブなチェーンから6ブロックを超えて分岐するのを検知すると、運営者に対して大規模な作業分岐の警告を発します。
ビットコインを購入するときにこれが重要な理由
承認回数は再編成の深さに対する賭けであり、利用するあらゆるプラットフォームが、あなたに代わってひそかにその賭けをしています。
3ブロック後に入金を反映する取引所は、3ブロックの巻き戻しは保険をかける価値がないと判断したことになります。6ブロックを待つ取引所は、リスクをより高く見積もっています。どちらの数字もプロトコルから来るものではありません。どちらもポリシーであり、それが同じ入金が一方のプラットフォームでは20分で、別のプラットフォームでは1時間以上かかる理由です。当サイトがレビューする取引所の間でコインを移動するときは、何か問題が起きたと決めつける前に、その違いを確認する価値があります。
あなたの鍵はこのいずれの影響も受けません。再編成はどのトランザクションがチェーンにあり、どの順序であるかを変えられますが、署名を生成することはできないため、あなたが管理するウォレットにあるコインはリスクの範囲に含まれません。影響範囲に入るのは動いている価値です。入金が反映されたもののまだ十分に埋まっていない入金、商品の対価として受け取った支払い、1回の承認と引き換えに現金を渡した個人間取引などです。
歴史に1つの示唆に富む警告があります。2015年7月4日、いくつかの大規模なプールが検証していないブロックの上でブロックを積み上げており、この慣行はSPVマイニングとして知られています。その結果、無効であることが判明した6ブロックのチェーンが生成されました。Bitcoin.orgは、状況が解決するまで30回の承認を待つよう利用者に勧める警告を公表しました。教訓はビットコインが壊れやすいということではありませんでした。必要な深さは何がうまくいっていないかによって変わる、そして1回の承認は決して多いとはいえない、ということでした。
より小規模なプルーフ・オブ・ワークのコインも保有している場合は、その再編成の履歴をまったく別の問題として扱ってください。取引所は、実際に再編成が起きたチェーンにははるかに多くの承認を要求しており、その要件は、チェーンが実際にどれほど安全かの有用な公開シグナルです。
2013年3月の24ブロック再編成
ビットコインのメインチェーンがこれまでに経験した最も深い再編成は、どちらも受け入れるはずだったブロックについて、2つのバージョンのソフトウェアが意見を異にしたことで起きました。
2013年2月にリリースされたBitcoin 0.8は、ストレージエンジンのBerkeley DBをLevelDBに置き換えました。3月11日、ブロック225,430が異常に多い数のインプットを伴って到着しました。0.8を実行するノードはそれを受け入れました。0.7を実行するノードは、これまで設定で超えたことのないBerkeley DBのロック上限に達し、それを拒否しました。ネットワークは2つに分裂し、双方とも相手が間違っていると確信していました。
開発者は1時間以内にIRCで調整し、苦渋の決断を下しました。プールに0.7へダウングレードするよう求め、より多くの作業がある分岐を意図的に放棄するというものです。その分岐は、稼働中のノードの多数が追従できない分岐だったからです。分裂はおよそ6時間続きました。0.7のチェーンが追い越したとき、破棄された分岐は24ブロックに達していました。決済処理業者の1社であるOKPayは、その間に二重支払いの被害を受けたと報告しました。
修正は数日後に0.8.1で提供され、新しいノードが調整された切り替え日まで古い上限を模倣するようになりました。BIP50はこの一件全体を詳細に記録しており、ビットコインが真の緊急事態にどう対処するかについて読むべき最良の資料です。また、ビットコインの歴史における最も深い再編成が、マイニングパワーではなくデータベース設定についての物語である理由でもあります。
チェーンの再編成vsハードフォーク
チェーンの再編成は1つの規則の集合の内部で起き、全員が同じチェーンに戻ることで終わります。ハードフォークは規則を変えるため、2つの分岐が決して和解できなくなり、どちらも別々の資産として成長を続けます。2017年8月1日にBitcoin Cashに起きたのがこれです。一方は、どの有効なチェーンが最良のチェーンかについての一時的な不一致です。もう一方は、有効とは何かについての恒久的な不一致です。
チェーンの再編成vs二重支払い
再編成は仕組みであり、二重支払いはそれを使ってできることの1つにすぎず、実際に起きることとしてはまれです。再編成の圧倒的多数は、同じトランザクションを別のブロックで再びマイニングするだけなので、誰の支払いも変わりません。巻き戻しには、勝った分岐に攻撃者が意図的に入れた競合するトランザクションが含まれている必要があり、それは莫大なハッシュパワーか並外れた幸運のどちらかを意味します。より安価な二重支払いの試みは再編成をまったく伴いません。そもそも一度も承認されていない支払いを狙うからです。