
承認数とリオーグ:「確定」はどれほど確定なのか
取引が承認されました。チェックマークも見ました。お金は決済済みです――ただ、「決済済み」というのは状態ではなく幅のある連続体であることがわかり、その連続体のどこに自分がいるかは、チェーンと金額と、それを誰かが覆すのにいくらかかるかで決まります。
ここはブロックチェーンの仕組みのうち、細部が実際に「何をすべきか」を変えてしまう数少ない場所なので、二十分を割く値打ちがあります。
承認が実際に数えているもの
承認とは、誰かが押す承認印ではありません。深さの計測です。
あなたの取引がブロックに取り込まれると、そのブロックはチェーンのある高さに座ります。その上に掘られるブロックが一つ増えるたび、一層深く埋まっていきます。承認数とは、自分のブロック自身を含めて、その上に何段積み重なっているかという、ただそれだけのものです。
SSP はこれを標準どおりに計算します。tipHeight - blockheight + 1。この +1 は数え違いではありません。最新のブロックに入っている取引の承認数は一であって、ゼロではないのです。ゼロ承認とは、まだメモリプールにある――伝播はしたが、どこにも取り込まれていない――という意味です。
深さが意味を持つのは、あなたの取引を覆すには、それを含むブロックと、その上に積まれたすべてのブロックを置き換えねばならないからです。ブロックが一つ増えるごとに、その仕事は難しくなります。プルーフ・オブ・ワークのチェーンでは、何かを覆すことが不可能になることは決してありません。ただ着実に高くつくようになり、ある深さで費用が得られる利得を超えるだけです。
リオーグは日常であって攻撃ではない
ここが人を必要以上に慌てさせる部分です。浅いチェーンの組み替えは日常的に起きますし、そのほとんどは悪意とは無関係です。
地球の反対側にいる二人の採掘者が、数秒違いで同じ高さのブロックを解くことがあります。その一瞬、ネットワークは先端がどちらなのかについて本当に食い違います。やがて次のブロックが一方の上に着地し、その枝のほうが長くなり、もう一方は孤児になります。孤児ブロックにしか入っていなかった取引はメモリプールに戻り、間もなく再び採掘されます。
これは設計どおりに動いているプロトコルの姿です。そして、一承認が見た目より弱い理由もまさにここにあります。深さ一の取引は、まだコイン投げに負けうるブロックに住んでいるのです。
深いリオーグは別の生き物です。莫大な計算力を要するか、あるいはときおり、もっと奇妙な何かを要します。Ravencoin の合意の不具合は、通常のどんなリオーグよりはるかに深い書き換えを強いました。誰かが攻撃したからではなく、ノードどうしで規則の中身が食い違ったからです。これは稀なことです。同時に、「チェーンは変えられない」というのが略記であって物理法則ではないことの、よい思い出しにもなります。
六承認はどこから来たのか
六承認という慣習は魔法の数ではなく、普遍の法則として意図されたこともありません。
出どころはビットコインの原論文自身の確率計算です。計算力のある割合を握る攻撃者がいるとして、与えられたブロック数のあとに後ろから追いつく見込みはどれほどか。答えは深さとともに指数関数的に落ちます。六ブロックは成功確率を無視できる領域に押しやります――ビットコインほど大きなチェーンで、計算力のささやかな少数派を握る攻撃者に対しては。
この傍点を付した条件の一つひとつが大切であり、人が誤るのはまさにここです。ビットコインでの六承認は、地上で最も高価な計算のおよそ一時間ぶんに当たります。小さなプルーフ・オブ・ワークのチェーンでの六承認は、誰かが一晩だけ借りられる程度の計算力に当たるかもしれません。
これは仮の話ではありません。より小さなプルーフ・オブ・ワークのチェーン――イーサリアムクラシックやビットコインゴールドを含みます――は、取引所に対する本物の二重支払いを伴う五十一パーセント攻撃を実際に受けました。業界の応答はそれらのチェーンを捨てることではなく、承認数の要求を劇的に引き上げることでした。ときには数千にまで。この非対称こそが教訓のすべてです。承認の深さは、そのチェーンが一ブロックあたり実際にどれだけの安全を買っているかとの関係でしか意味を持ちません。
プルーフ・オブ・ステークは問いそのものを変える
明示的なファイナリティを持つチェーンでは、模型は程度ではなく種類において異なります。
イーサリアムの検証者たちは定期的に投票して検査点を確定させます。ひとたび検査点が確定すれば――およそ二エポック、十三分ほどで済みます――それを覆すことは誰かを計算で上回るという問題ではなくなります。預け入れられたすべてのイーサのきわめて大きな割合が、互いに矛盾する検査点へ投票していたことを要し、それは検出可能であり、その預け入れは破壊されます。約束は「覆すのは高くつくだろう」ではなく、「覆した者は莫大な額を失うことが証明できる」なのです。
これは確率的な深さより本当に強い言明であり、だからこそイーサリアムでファイナリティを待つことは、ビットコインでブロックを数えることとは別種の待ち方になります。Solana も、楽観的に承認された取引と完全に根付いた取引とのあいだに、似た線を引いています。
実務的には、プルーフ・オブ・ワークのチェーンでは深さを数えます。プルーフ・オブ・ステークのチェーンでは、自分の取引を含むブロックが確定したかどうかを知りたい――それは走り続ける合計ではなく、はいかいいえの問いです。
誰も言わない非対称
承認数が効いてくるのは受け取るときです。送るときにはほとんど効きません。
誰かに支払ったのなら、リオーグで取引が巻き戻されても軽い不便でしかありません。メモリプールに戻り、また承認され、受取人が少し長く待つだけです。あなたは何も失っていません。
けれども誰かがあなたに支払い、その浅い承認を頼りに品物を渡し、資金を解放し、商品を発送したなら、リオーグはもう存在しない支払いと引き換えに何かを手放したことを意味します。これまで意味を持った二重支払い攻撃はすべてこの形で働きました。入ってくるお金に対して早く動きすぎた相手を狙ったのです。
ですから正直な規則は単純です。支払う側なら、一承認は取引が本物だと告げており、心配をやめてよい。見知らぬ相手から価値を受け取る側なら、要求する深さは賭かっている額とともに増え、そしてブロックを作るのが安いチェーンでこそ、あなたの信頼は縮むべきです。
SSP が見せるもの、見せないもの
SSP の履歴一覧が示すのは二値の印です。承認済みか、未承認か。これは意図したものです。日々の用途の圧倒的多数では、その二値が答えのすべてだからです。取引の行を展開すれば、現在のチェーン先端に対して計算された、生きた承認数とブロック高が得られます。
さて正直な限界です。SSP では承認の深さを条件にしているものは何一つありません。 いま受け取った金額に対して三承認は薄い、と財布が警告することはなく、「十分」という概念そのものを持ちません。数を報告し、判断はあなたに委ねます。どの財布も本当のところそれ以外のやり方はできません。「十分」はそのお金で何をしようとしているかに依り、それは財布には知りえないからです。しかしそれは、解釈があなたの仕事だということであり、緑のチェックマークは「不可逆」と同じ主張ではないということでもあります。
もう一つ思い出す値打ちがあるのは、あなたが読んでいる承認数が財布の話し相手になっているノードから来ているという点です。深さが最も効いてくる種類の出来事――争いのあるフォーク、合意の不具合、チェーンの分裂――のさなかこそ、単一の情報源が最も当てにならない瞬間なのです。
手元に置く値打ちのある目安
ゼロ承認は支払いではありません。 支払う意思の表明です。対面の小額で危険の低いものなら、それで足りるかもしれません。それ以外では、決済された取引ではありません。
一承認は本物だが浅い。 支払うぶんには申し分ありません。信頼していない相手から意味のあるものを受け取るには薄すぎます。
六はビットコイン規模の慣習であって、普遍の定数ではありません。 計算力を安く借りられるチェーンでは、六承認の値打ちはごくわずかかもしれず、正しい数は桁違いに大きいかもしれません。
プルーフ・オブ・ステークのチェーンでは、数えるのではなくファイナリティを尋ねてください。 確定したということは、深いということより種類において強い意味です。
深さを価値に合わせてください。 三十秒の辛抱は安い。取り返しのつかない過ちは安くありません。
根っこにある考えは、腑に落ちてみると静かに心強いものです。暗号資産の世界に、数学の証明が確定しているのと同じ意味で確定しているものはありません。代わりに得られるのは、時間とともに急勾配で登っていく巻き戻しの費用と、行動に移る前にその費用がどれほど高くあるべきかを自分で決める力です。それは多くの人が自分に備わっていると思っている保証よりは弱く――そして、数か月後にまだ取り消されうる支払いについて銀行があなたに与えるどんな説明よりも、はるかに正直なものです。


