「QSB」プロトコル変更なしで実現した量子耐性トランザクション|メインネットで初記録
ビットコインの量子耐性に関する研究は日々進歩を遂げています。
2026年8月27日の日本時間午前5時48分にとあるトランザクションがメインネット上でブロック承認され、ニュースなどで取り上げられていました。
こちらのトランザクションはQSB(Quantum Safe Bitcoin)と呼ばれ、ビットコインのプロトコル変更なしに既存の枠組みの上で量子耐性のあるトランザクションを作成しようという試みで、Short Exposure Attacksへの対応策として有効です。
今回のブロック承認によりビットコインで耐量子トランザクションの作成が成功し、ブロックチェーンに刻まれたことになります。
該当のトランザクションはこちら。

QSBのトランザクション自体はコンセンサス上有効な構成となっていますが、複数の制約上ノードのリレーポリシーを満たしたトランザクションではないため、トランザクションを直接マイナーに送信する必要があります。
今回の場合はMARA HoldingsのMARA Poolが提供する「Slipstream」という非標準や大規模なトランザクションを直接提出することができるサービスを用いてマイニングされました。そのため提案されているQSBはあくまでプロトコルの変更が間に合わず、耐量子署名が導入できなかった際の最終手段という位置づけとされています。
本稿ではQSBについて概要とその仕組みを解説します。複雑なプロセスを得て作成されているため単純化して解説することを心がけます。そのためより詳細を知りたい方は以下に添付した元の提案をご参照ください。
QSBの先行研究について
QSBの論文は2026年4月に公開されていますが、ビットコインのトランザクションに量子耐性を持たせる研究は以前から存在します。QSBの実現に欠かせない研究は主に以下の3つです。
- OP_CATを使ったビットコインスクリプト上でのLamport署名 (2021年 Jeremy Rubin)
- OP_CATなしの署名サイズを利用したLamport署名 (2024年 Ethan Heilman)
- 古いアルゴリズムとバグを利用した手法:Binohash (2026年 Robin Linus)
通常のビットコインのトランザクションでは楕円曲線離散対数問題(ECDLP)という数学的な前提に基づいたECDSA署名やSchnorr署名を用いています。しかしこれらの署名は量子コンピュータに対する脆弱性があることが判明しているため量子耐性のある署名を導入することが必要です。
そこで別の数学的な前提(量子コンピュータに対してもセキュリティが担保される問題)を用いたLamport署名(ハッシュベース)により、検証することが可能なトランザクションを作成しようというのが上記の提案で共通している部分です。
OP_CATにつきましてはビットコイン研究所の過去記事で解説されているのでご参照ください。
QSBという手法は主に3つ目のBinohashを改変して作られています。実際QSBの草稿時にはBinohashの著者であるRobin Linus氏がレビューをしている事が謝辞にて明かされており、また論文の3分の1ほどはBinohashの説明がされています。そのためQSBの仕組みを理解する上で前提であるBinohashから解説していきます。
Binohashについて
ビットコインスクリプトには実行中の取引内容(インプット、アウトプット、金額など)を直接読み取るオペコードが存在しません。そこでBinohashは、以下の二段構成にて取引に紐づいた指紋(ダイジェストD)を作成し、それに署名することでトランザクションの内容を検証可能にしています。
STEP1:トランザクションのピニング(固定)
トランザクションの中身を勝手に書き換えられないように固定。
STEP2:指紋(ダイジェストD)の生成
スクリプト上で読み取ることができる短い指紋Dを作成し、Lamport署名をする。
まずはSTEP1から詳しく見ていきましょう。
STEP1:トランザクションのピニング(固定)
トランザクションのピニングでは取引内容を固定するために「署名サイズの条件」を満たした疑似署名を作成します。仮にトランザクションが書き換えられた場合は、署名自体が変わってしまい条件から外れてしまうため、新たに条件に合った疑似署名を作り直す必要があります。つまりトランザクションの内容が疑似署名に紐づけられているというロジックです。
疑似署名はPoWのように計算リソースを割いて作成されます。この署名はあくまで計算量というコストを用いて条件を満たした署名を作ることで、取引内容を固定することが目的であるため、秘密鍵などは既知の値を利用しています。
以下の内容は本稿のレベルを逸脱するものとなっているため、読み飛ばしていただいても構いません。
PoWパズルで必要な疑似署名の条件は「署名サイズ」です。特定のサイズより小さい署名を作り出すために署名のパラメータ( \(r,s\))のうち\(r\)は既知の小さい値\(r_{min}\)を使います。秘密鍵が既知の場合、\(s\)はsighashである\(z\)を変えることで総当たりして小さい署名を見つけることが可能です(= PoW)。
最終的に、ビットコインスクリプトではOP_SIZEというオペコードにより署名サイズをチェックすることでPoWの証明になります。
補足として、Sighashフラグにより署名の影響範囲が違うためALL、NONE、ANYONECANPAY|ALL、ANYONECANPAY|NONEの4つのパターンに応じてそれぞれPoWを行い4つの疑似署名が作られています。
STEP2:指紋(ダイジェストD)の生成
STEP2ではビットコインスクリプト内で読み取ることができる指紋D(識別子のようなもの)を作成します。このときSegwitより前に存在した「FindAndDelete」という古い仕組みの特性を通じて指紋が作成されるため、新しいアドレス形式であるSegwitやTaprootなどは使用できません。
指紋の作り方はトランザクションとは無関係の\(n\)個のダミー署名を用意しておき、\(t\)個のダミー署名を選びます。この\(n\)個から\(t\)個の署名を選ぶ組合せにより一意に出力されるトランザクションのハッシュ値(sighash)がランダムな値を取ります。
署名サイズの条件を満たしたハッシュ値になるまでダミー署名の組合せを変えることで総当たりを行い、そのダミー署名\(t\)個の組合せ自体を指紋Dとして扱います。
input_idx ≥ num_outputsのときSIGHASH_SINGLEのsighash計算は実際のトランザクションやscriptCodeの中身に関係なく、常に定数z=1 を返すというバグが存在しました。(Segwitより前のレガシースクリプト)
そのためrとsがそれぞれ1バイトの適当な小さい値になる9バイトの最小サイズの署名を実際のトランザクションとは関係なく作り出すことが可能です。
最終的に見つけた指紋に対してHORS(Hash to Obtain Random Subset)という方式(Lamport署名の一種)を用いて署名を行うことで量子耐性のあるトランザクションを作成することができます。
Binohashの制約と致命的な欠点
Binohashの制約
BinohashではFindAndDeleteという仕組みやダミー署名を大量に生成する際にSegwit以降のアドレスを使うことはできません。
そのためレガシーアドレスのスクリプト実行に依存する形を取る必要がありました。このレガシースクリプトにはさらに厳しい制約が2つ存在します。
- オペコード数の上限:非プッシュ系のオペコードは201個を超えてはならない
- スクリプトサイズの上限:スクリプトの総サイズは10,000バイトを超えてはならない
上記の制約を満たすためにBinohashはオペコード数やスクリプトのサイズを削減する工夫が多く施されています。
Binohashの致命的な欠点
Binohashには量子耐性を得る上で致命的な欠点が存在しました。前のセクションで説明したトランザクションの作成段階(トランザクションの固定処理や指紋の計算)において楕円曲線の数学的な困難性に依存したパーツが組み込まれていました。
つまり、量子耐性のあるトランザクションを作成するために脆弱性のある署名(ECDSA)を置き換えようとしたものの、作成する工程において量子コンピュータに解読されうる前提を利用していた部分があったということです。
Sighashフラグ(署名の対象範囲)はビットコインスクリプトで直接読み取ることはできない。そのため例えばANYONECANPAY|NONE(SIGHASH_ANYONECANPAY=自分のインプット以外は署名しない、SIGHASH_NONE=アウトプットには署名しない)であった場合、非常に緩い署名となり取引のアウトプットは誰でも自由に書き換えることができてしまう。
これらの欠点を改善し、量子耐性のあるトランザクションを作成したのが今回のQSBになります。
QSB(Quantum Safe Bitcoin)の仕組み
QSB(Quantum Safe Bitcoin)ではBinohashで楕円曲線暗号に依存していた内部工程(トランザクションの固定処理やダイジェストの計算)をハッシュ関数の原像探索問題(量子コンピュータに対しても耐性がある問題)に置き換えています。
この方法は「Hash-to-signatureパズル」と呼ばれます。
Hash-to-signatureパズル
Hash-to-signatureパズルとはハッシュ関数のある特性を利用した宝くじのようなものです。
そのある特性とは、「ハッシュ関数で出力される値は、たまに有効なDER形式のECDSA署名になる」というものです。
つまりハッシュ関数の種類にもよりますが、SHA-256なら\(2^{-45.4}\)またRIPEMD-160なら \(2^{-46.4}\)の確率で有効な署名がたまたま出力されるため、この特性を利用したトランザクションの固定を行いました。
具体的には既知の署名(任意の値)とトランザクションの内容を用いて公開鍵を作成します。この公開鍵をハッシュ化した際に有効な署名がたまたま出てきた場合は、トランザクションの固定に成功します。なぜなら仮にトランザクションの内容が一文字でもずれた場合、ハッシュ化した値はまったく別のものになるからです。
逆に有効な署名が出てこない場合はトランザクションの内容のうち、nLocktimeやnSequence、出力の並び順、余分なOP_RETURNデータなど変えて総当たり(約 \(2^{46}\)回の試行)することで有効な署名を探します。
0x30 [全体長] 0x02 [rの長さ] [rのデータ] 0x02 [sの長さ] [sのデータ] [sighashフラグ]
上記の形式の通りに、数値とデータの長さが一致した場合に有効な署名と判断されます。
QSBにおけるダイジェストの計算でも同様にHash-to-signatureパズルを利用して指紋を作成しています。
その後、指紋に対してLamport署名を行うことで量子耐性のあるトランザクションが完成します。
QSBの制約とは
QSBはBinohash同様ビットコインのレガシースクリプトに依存します。
P2SHというレガシーアドレスにおけるredeem script(スクリプトの内容を書く場所)では520バイトの上限が存在しますがQSBは約9,923バイトであるため余裕で超えてしまいます。
そのため「bare script output」というスクリプトを直接Script Pubkeyに記述するという方法で回避しています。しかしこのbare scriptは現在のBitcoin Coreのデフォルトポリシーでは非標準です。加えてトランザクションの作成過程でもトリッキーな手法が用いられているためポリシー違反をしたトランザクションであると見なされます。
そのため該当のトランザクションは通常のノードに中継されないので、自身でマイナーに直接トランザクションを送り、ブロックに取り込んでもらう必要があります。
冒頭のmempool.spaceで見た「Unknown」という表示は非標準的な形式で作られたトランザクションであり、アドレスとして表示することができなかったからだと考えられます。
P2SHやその他ビットコインのアドレスについては以下の記事でまとめています。
まとめ
今回メインネットで承認されたQSBは、ビットコインのプロトコルを一切変更することなく、既存のスクリプトの枠組みだけで量子耐性のあるトランザクションを実現した点に大きな意義があります。
その仕組みは、Jeremy Rubin氏やEthan Heilman氏らによる先行研究、そして直接の土台となったRobin Linus氏のBinohashの延長線上にあります。QSBはBinohashが抱えていた「トランザクション固定処理や指紋の計算において楕円曲線暗号が残ってしまう」という致命的な欠陥を、ハッシュ関数の原像探索問題を利用した「Hash-to-signatureパズル」に置き換えることで解消し、量子コンピュータに対しても安全な前提のみで構成されたトランザクションを作り上げました。
一方で、レガシースクリプトへの依存やノードの標準リレーポリシーを満たせないといった制約は解消されておらず、マイナーへの直接送信が必要になるなど、実用面でのハードルは依然として残ります。そのためQSBは、将来的にビットコイン本体へ耐量子署名がソフトフォークなどにより正式に導入されるまでのつなぎであり、最終手段としての性格が強い技術と言えます。
とはいえ、プロトコル変更なしにここまでの量子耐性を実証できたこと自体が、ビットコインの量子耐性研究における重要な一歩であることは間違いありません。
関連記事
最新記事
読者になる
ビットコイン研究所の新着記事をお届けします。



ディスカッション