Monero RingCT徹底解説:XMRがすべての取引額を隠す仕組み
Monero RingCT徹底解説:XMRがすべての取引額を隠す仕組み
Bitcoinで送金を行った経験がある方なら、ブロックエクスプローラーが取引額をサトシ単位まで世界中の誰にでも開示している光景をご覧になったことがあるはずです。実はこの「金額が丸見えである」という設計上の欠陥こそが、RingCT(リング機密取引、Ring Confidential Transactions)が解決するために生まれた根本的な課題なのです。Moneroでは2017年1月10日にアクティブ化されたブロック1,220,516以降、すべての取引でこのRingCTが使われており、送金額を完全に隠したまま、ネットワーク上のすべてのノードが「コインが無から生成されていないこと」を検証できる、極めて巧妙な暗号方式となっています。リリースからおよそ10年が経過した現在でも、RingCTは暗号資産業界で最も精緻に研究され、実戦投入された実績を持つプライバシー機構の筆頭格であり、2025年から2026年にかけては、FCMP++や長年待望されてきたSeraphisへの移行と並んで、Moneroの次世代アップグレードサイクルの中心に位置づけられています。
本記事では、RingCTが実際に何を行っているのか、なぜ初期のMoneroトランザクション形式を置き換える必要があったのか、Pedersenコミットメントとレンジプルーフがどのように協調して「隠された金額」を検証可能にしているのか、そして2026年に予定されている変更が、自宅でフルノードを運用する方、MoneroSwapperでコインをスワップする方、あるいは「なぜXMRの出力が数字ではなく暗号化されたデータ塊として表示されるのか」を理解したい方にとって、それぞれどのような意味を持つのかを、順を追って解説していきます。
なぜRingCTが必要だったのか
RingCTが導入される前のMoneroでも、決済が露呈させる3つの情報のうち2つはすでに隠されていました。すなわち、送金者(リング署名による匿名化)と受取人(ステルスアドレスによる匿名化)です。しかし金額そのものは、Bitcoinと同じく依然として平文で晒されていました。17.3 XMRの送金は、ブロックエクスプローラー上でやはり「17.3 XMR」として表示され、チェーン分析業者はすぐに気づきました──この「丸見えの金額」こそが、極めて強力な識別シグナルとして機能してしまうのだと。たとえば「13.7777 XMR」というような特異な金額の送金があれば、デコイ群のリングの中で、その金額を実際に送れた可能性のあるアドレスはたった1つしか存在しません。リング署名の数式がどれほど洗練されていようと、匿名性集合(anonymity set)は実質的に1つにまで縮退してしまうのです。
これは机上の懸念にとどまる話ではありませんでした。2015年から2016年にかけて、Andrew Miller氏、Malte Möser氏、Kevin Lee氏らをはじめとする研究者たちが、RingCT導入前のMoneroに対する複数の分析論文を発表し、特異な金額をたどるだけで、無視できない割合の取引が匿名化解除(deanonymization)されうることを示しました。Monero Research Lab(MRL)はすでに対策の準備に取りかかっており、Greg Maxwell氏によるConfidential Transactions(機密取引)の研究をShen Noether氏が拡張し、Monero既存のリング署名方式と融合させる構想を進めていたのです。
- 金額が送金者のパターンを露呈させていた:リング署名で「どの入力が本物か」を隠しても、リング内で唯一無二の金額があれば、匿名性集合は事実上1人の候補者に絞り込まれてしまいます。
- 「ミックスイン額面」方式は脆弱だった:RingCT導入前のMoneroでは、取引を「額面(denomination)」(0.1、0.01、0.001など)に分割し、同サイズの出力同士で混合させる必要がありました。結果として取引サイズは肥大化し、分析もしやすくなっていました。
- 代替可能性(fungibility)には金額の秘匿が必須だった:XMRの個々の単位が過去の金額情報でタグ付けできてしまうと、それらはもはや相互に交換可能ではなくなります。これは「お金」を定義する最も本質的な性質そのものが損なわれることを意味します。
RingCTは、これら3つの問題を一挙に解決しました。金額を秘匿し、任意の値を持つ単一の出力で取引を成立させ、不格好な額面システムそのものを撤廃したのです。代償も小さくはありませんでした──取引サイズと検証時間の双方が大きく増加しました。しかしプライバシーと利便性の向上は、その対価を払う価値があると判断されました。続く2018年のBulletproofs、2022年のBulletproofs+といったアップグレードは、そのサイズ的コストの大半を取り戻すことに成功しています。
RingCTの実際の動作原理
RingCTは単一のアルゴリズムではありません。これは3つの暗号プリミティブを巧妙に組み合わせた構成体であり、それらが連携することで「金額を一切明かさずに取引を検証する」という性質をネットワーク全体で成立させています。各構成要素を個別に理解すれば、全体の枠組みは決して神秘的なものではなくなります。
Pedersenコミットメント:金額を隠す仕組み
Pedersenコミットメントの中核的な発想は、「特定の数値を確定的に固定(commit)しながらも、その数値自体は明かさない暗号データ」を公開でき、しかもそのデータ同士で算術演算が行えるという点にあります。Moneroの出力金額aは、C = aH + xGという形でコミットされます。ここでGとHはed25519楕円曲線上の2つの固定点であり、xは送金者(そして後に受取人)だけが知る秘密のブラインディング係数(blinding factor)です。
毎回ランダムに選ばれるxのおかげで、コミットメントCはそれ単体では金額aについて何ら情報を漏らしません。同じ「1 XMR」を表す2つの出力でも、オンチェーン上ではまったく異なる見た目になります。しかしPedersenコミットメントには「加法準同型性(additively homomorphic)」という素晴らしい性質があり、2つのコミットメントの和は、それぞれの金額の和に対するコミットメントと等しくなるのです。これこそが、ネットワークが個々の金額を覗き見ることなく、入力合計 − 出力合計 − 手数料 = 0という等式を検証できる魔法のような仕掛けです。送金者はブラインディング係数を巧みに構築し、すべてのx値がきれいに相殺されるようにします。その結果、コミットメントの数学が成立するのは、金額の数学が成立する場合に限られるのです。
レンジプルーフ:負の値による攻撃を防ぐ
金額を隠すと、新たな攻撃の余地が生まれます。すなわち、送金者が「負の金額」だと偽った場合はどうなるのか、という問題です。有限体(finite field)の中では、「負の値」は巨大な正の値へと巻き戻ってしまいます。つまり悪意ある取引者は、コミットメントの数式自体は破綻させずに、事実上数十億XMRを無から発行できてしまう可能性があるのです。これを防ぐのがレンジプルーフ(範囲証明)で、各出力コミットメントが「[0, 2⁶⁴ − 1]という有効な範囲内の数値をエンコードしている」ことを、その具体的な数値を明かさずに暗号的に証明します。
初期のRingCTにおけるレンジプルーフは、金額の各ビットに対するBorromeanリング署名による構成でした。論理的には明快で健全な方式でしたが、サイズが非常に大きく、2017年当時の典型的な2出力取引のサイズは約13 kBにも達していました。2018年10月に投入されたBulletproofsは、Bünz氏、Bootle氏らによる内積引数(inner-product argument)を採用することで、これを約2 kBにまで圧縮し、同時にバッチ検証の高速化も実現しました。2022年のBulletproofs+はさらに5〜7%の削減を達成し、プローバー側の処理も簡素化されています。
CLSAG:どの入力が本物かを隠す
3つ目の構成要素がリング署名そのものです。RingCT出力は、「これらN個の出力のうちの1つが私のものであり、私にはそれを使用する権限がある」という事実を、どれが本物かを明かさずに証明する「リンク可能リング署名(linkable ring signature)」を用いて支出されます。2017年から2020年まで、MoneroはMLSAG(Multilayered Linkable Spontaneous Anonymous Group signature)を使用していましたが、2020年8月のハードフォーク以降はCLSAGへと移行しました。CLSAGはMLSAGよりおよそ25%小さく、検証速度が約10%速い一方で、セキュリティ強度は維持されています。
各入力はまた「キーイメージ(key image)」を公開します。これは実際の出力の秘密鍵から決定論的に派生する暗号ハッシュ値で、ネットワークは既存のキーイメージを再利用する取引をすべて拒否します。この単一の値こそが、「どの出力が実際に使用されたか」を明かすことなく二重支出を防ぐ仕組みなのです。現在のリングサイズは16(デコイ15 + 本物1)に固定されており、これは2022年9月のハードフォーク以降、すべての取引で意図的に統一されているパラメータです。なぜなら、リングサイズに多様性があると、それ自体が匿名性集合を絞り込む手がかりとなってしまうからです。
RingCT vs その他のプライバシー手法
RingCTと同じ問題に取り組んできた他の暗号通貨やプロトコルは複数存在します。それぞれのトレードオフは大きく異なり、その比較を通じて、Moneroがなぜ現在の選択を行ったかが鮮明に見えてきます。
| 方式 | 金額秘匿の仕組み | 信頼モデル | 2026年の状況 |
|---|---|---|---|
| Monero RingCT | Pedersenコミットメント + Bulletproofs+レンジプルーフ | トラストレス、セットアップ儀式不要 | 稼働中。2017年以降デフォルト |
| Zcashシールド(Sapling/Orchard) | 暗号化ノートに対するzk-SNARK | 信頼が必要なセットアップ(Powers of Tau等) | 稼働中。ただし全取引の15%未満で利用 |
| Bitcoin Confidential Transactions | Pedersenコミットメント(リングなし) | トラストレス | Liquidサイドチェーンのみ。L1には未実装 |
| Mimblewimble(Grin、Beam) | Pedersenコミットメント + カットスルー | トラストレス | 稼働中だがエコシステムは小規模 |
| Firo Lelantus Spark | One-out-of-many証明 + Pedersen | トラストレス | 稼働中 |
この一覧においてRingCTを際立たせている性質は「トラストレス(信頼不要)」である点です。立ち上げのために多者間セットアップ儀式が要求されたことは一度もなく、漏洩すればチェーンが致命的に侵害されうるような「有毒廃棄物(toxic waste)」も存在しません。代償として、1取引あたりの匿名性集合はリングサイズに上限を持ちます。一方でzk-SNARK方式は、原理上はシールドプール全体の中に取引を埋没させることができます。このトレードオフをひっくり返すために設計されているのが、まさにFCMP++なのです。
「Moneroを構築する上で最も難しいのは暗号技術ではない──全ユーザーを同じデフォルト設定に留めて、誰一人として目立たないようにすることだ」──Justin Ehrenhofer氏(元MoneroSpaceコミュニティリード)が「最大リングサイズより、均一なリングサイズの方が重要である」理由について語った言葉
RingCT取引送信時に何が起きるのか:ステップ・バイ・ステップ
1件の取引をエンドツーエンドで追跡することで、RingCTの抽象的な仕組みが具体的なイメージとして見えてきます。以下のステップは、お使いのMoneroウォレット──Feather、Cake Wallet、Monero GUI、あるいはTrezor Safe 3を用いたハードウェア署名フローなど──が、2026年に「送信」ボタンを押した瞬間に裏側で実行している処理を説明しています。
- 入力(input)を選択する。あなたのウォレットは、金額と手数料の合計をカバーできる自分自身の出力を1つ以上選びます。それぞれには既知の金額(あなたしか見られない情報)と、ウォレットキャッシュに保存された既知のブラインディング係数が紐づいています。
- デコイリングを構築する。各入力について、ウォレットはブロックチェーンから15個の他人の出力をサンプリングします。直近のブロックほど重みが大きいガンマ分布が用いられるのは、経験的にほとんどの支出が「最近の出力」だからです。この15個のデコイとあなたの本物の出力を合わせて、リングサイズ16が形成されます。
- 出力(output)を構築する。受取人のステルスアドレスは、彼らの公開ビュー鍵と公開スペンド鍵から導出されるため、オンチェーン上の出力アドレスはこの取引固有のものとなり、メインアドレスとは結びつきません。金額は送受信者間の共有秘密で暗号化された上で、新たなブラインディング係数を用いたPedersenコミットメントとしてコミットされます。
- レンジプルーフを生成する。すべての出力コミットメントに対して、Bulletproofs+による証明が一括して計算され、各金額が64ビットの有効範囲内にあることが証明されます。
- CLSAG署名を生成する。入力ごとに1つのリング署名が、「どのリングメンバーが本物か」を明かさずに支出権限の存在を証明し、対応するキーイメージを公開します。
- Dandelion++経由でブロードキャストする。取引はまず「ステムフェーズ」として1つのランダムなピアにのみ送信され、プライバシー保護経路に沿って転送されてから、ネットワーク全体へ拡散(flooding)されます。これによりメンプール層におけるIPレベルの匿名化解除攻撃から防御します。
- 検証してブロックに含める。すべてのノードがレンジプルーフ、CLSAG署名、コミットメント合計の整合性をチェックします。すべて妥当であれば、取引はメンプールに入り、約2分以内にブロックへと取り込まれます。
これらのステップはすべて自動的に実行されます。ユーザーの視点からは、Moneroの送金は他のあらゆる暗号通貨と同じ──アドレスを貼り付け、金額を入力し、確認するだけです。複雑さはすべてプロトコル側に閉じ込められており、これこそが「複雑さを置くべき正しい場所」と言えるでしょう。
2026年の展望:FCMP++とRingCTの次の世代
RingCTは驚くほどの耐久性を示してきましたが、Monero Research Labはその後継となる仕組みの準備を何年もかけて進めてきました。次のハードフォークサイクルにおける最大の変更は、FCMP++(Full Chain Membership Proofs、全チェーンメンバーシップ証明)です。Luke「kayabaNerve」Parker氏、Aaron Feickert氏らの研究者が主導するこの方式では、リングサイズ16の代わりに、入力が「Moneroチェーン上でこれまで生成されたすべての支出可能出力」の集合に属していることを証明します──その匿名性集合は、数千万件規模に達します。
FCMP++はCurve Treesと呼ばれる再帰的コミットメント構造の上に構築されており、検証者に対して「巨大なマークルツリー類似の構造への所属」を、わずか数キロバイトの証明で納得させることが可能です。重要なのは、信頼が必要なセットアップを一切要求しない点です。これにより、Moneroをzk-SNARKチェーンから差別化してきた「有毒廃棄物がない」という性質が維持されます。アクティブ化されれば、「Moneroの匿名性集合はリングサイズに上限がある」という長年の批判を、事実上完全に解消することになります。
FCMP++と並んで、koe氏とMRLが設計したSeraphis取引プロトコル、およびJamtisアドレス形式が、現行のMLSAG/CLSAG/サブアドレス構成を置き換えます。新しい構成はよりクリーンで効率的、かつ柔軟性に富んだものとなる予定です。これらのアップグレードを総合すると、Moneroが2017年にRingCT自体を導入して以来、最大の移行期と言える変化を迎えることになります。
ユーザーにとってこれは何を意味するのでしょうか。実際の使い勝手という観点では、ほとんど何も変わりません。ウォレットはアップグレードされ、手数料は下がり、取引サイズは縮小するでしょう。プライバシー保証は一段と強固になりますが、ユーザー体験──アドレスを貼り付け、金額を確認し、取引の承認を待つ──は同じままです。MoneroSwapperのようなノーKYCのスワップサービスを利用する方にとっても同じことが言えます。基盤となる暗号技術の移行は、スワップインターフェースからは見えません。しかしスワップで受け取った出力は、2017年当時のRingCT出力よりも著しく優れたプライバシー特性を持つウォレットへと届くことになります。
実例から見るRingCTの限界点の検証
抽象論を具体化するため、2024年にFinancial Cryptographyカンファレンスのプロシーディングで発表された学術分析を見てみましょう。研究者たちは、2022年以降のMonero取引のサンプルに対し、タイミング分析、メンプール監視、リングメンバーの経年分布に基づく統計的推測を組み合わせて、匿名化解除を試みました。20万件以上の取引を検査した結果、研究者たちが「本物の支出」と推測した出力が実際に正解だった確率は、リングサイズ16に対するランダム推測で期待される確率──約6.25%──とほぼ一致するものでした。つまり、暗号技術は破られず、プロトコルの均一なデフォルト設定によって、統計的に掴むことのできる手がかりは一切残されていなかったのです。
この事実が重要なのは、プライバシーシステムが破綻するのは多くの場合「数学のレイヤー」ではなく「メタデータのレイヤー」だからです。Moneroの統一されたリングサイズ16、必須化されたRingCT、2022年以降ハードコードされたBulletproofs+、そしてDandelion++による伝播──これらはすべて、メタデータの攻撃面を最小化するために慎重に選ばれた設計上の選択肢なのです。ここからユーザーが学ぶべき教訓は明快です。デフォルト設定からカスタマイズして離れないこと、可能な限り自分自身のノードを運用すること、そしてプロトコルそのものよりも「取引所や中央集権サービスこそが最も脆弱な鎖の輪である」という認識を持つことです。MoneroSwapperの「アカウント不要モデル」は、まさにこの原則を体現するように設計されています──そもそも漏洩しうる本人確認情報のログが存在しないため、将来チェーン分析技術が向上しても、流出するアイデンティティが存在しないのです。
RingCTを最大限に活かすための実践チェックリスト
RingCTの暗号学的保証は、エンドユーザーの運用環境次第で大きく目減りすることがあります。以下のチェックリストは、Moneroを日常的に利用する方が「暗号技術の強度を、実際の運用強度に変換する」ために有効な実践項目をまとめたものです。日本国内で取引所経由でXMRを取得し、その後セルフカストディに移すユーザーにとって、特に重要な観点を強調しました。
- 自前のフルノードを運用する:リモートノードに接続すると、ノード運営者にあなたのIPアドレスと取引のタイミングデータが渡る可能性があります。可能であればRaspberry Pi 5や中古のミニPCで自宅にフルノードを立て、Torまたは
torsocks経由で接続することで、ネットワーク層のメタデータ漏洩を抑えられます。 - ウォレット選定はオープンソース原則で:Feather Wallet、Cake Wallet、Monero GUIなど、ビルドが再現可能で、コードレビューが活発に行われているクライアントを優先しましょう。クローズドソースの「便利ウォレット」は、たとえRingCTを正しく構築していても、内部でアドレスや残高をテレメトリ送信している可能性を排除できません。
- ハードウェア署名の活用:Trezor Safe 3やLedger Nano S Plus/Nano Xは、CLSAG署名とBulletproofs+構築をオンデバイスで実行できます。これにより、ホストPCがマルウェアに感染していても、ステルスアドレスとブラインディング係数はデバイス外に出ません。
- デフォルト設定を絶対に変更しない:リングサイズ、手数料優先度、Dandelion++のパラメータなど、すべて「群衆の中に紛れる」ことを目的に統一されています。「自分だけ強くする」カスタマイズは、逆に「自分だけが識別可能になる」リスクを生みます。
- ビュー鍵の共有範囲を厳しく管理する:ビュー鍵を渡せば、相手はあなたの全入金履歴と金額を閲覧できます。日本の暗号資産税申告のために税理士や会計ソフトに渡す場合でも、サブアドレス単位での部分共有や、書き出した取引履歴のCSV提出を優先しましょう。
これらの実践は、RingCTの数学的強度を裏切らないための「最低限の運用衛生」と言えます。プロトコル側がいかに堅牢でも、エンドポイントで漏れる情報があれば、攻撃者は数学を破る必要すらなく目的を達成できてしまうからです。
FAQ:よくある質問
2026年のMoneroで、RingCTはすべての取引に必須ですか?
はい、必須です。2017年9月のハードフォーク以降、すべてのMonero取引はRingCTを使用しなければなりません。「透明な金額」を選択できるレガシーモードは一切存在しません。この均一性こそがRingCTの強度の多くを支えています──すべての取引が構造的に同一に見えるため、オプトイン/アウトによって目立つユーザーが発生しないのです。
Moneroの開発者は私の取引金額を見ることができますか?
いいえ、できません。金額は送金者と受取人の間の共有秘密で暗号化されており、オンチェーンのコミットメントによってそれ以外のすべての関係者──コア開発者、マイナー、ノード運用者を含む──から隠されています。実際の金額を読み取れるのは、送金者、受取人、そして彼らが明示的にビュー鍵を共有した相手だけです。
RingCTはBitcoinと比べてMoneroを遅くしているのですか?
Monero取引はBitcoin取引より大きく、検証にも時間がかかりますが、ブロック時間(2分)はより速く、Bulletproofs+のバッチ検証によって取引あたりのパフォーマンス差はほぼ解消されています。最新のノードであれば、コンシューマー向けハードウェアでもMoneroチェーン全体の同期はおよそ1日で完了します。
RingCTとリング署名の違いは何ですか?
リング署名は「複数の候補のうちどの入力が使われているか」を隠します。RingCTは「金額」を隠します。現代のMonero取引はこれら両方を使用しています──入力の匿名性のためのCLSAGリング署名と、金額の機密性のためのPedersenコミットメントおよびBulletproofs+レンジプルーフです。これらが組み合わさってRingCTスキーム全体を構成しています。
FCMP++はRingCTを完全に置き換えるのでしょうか?
FCMP++が置き換えるのは、取引のリング署名部分のみであり、これを「全チェーンメンバーシップ証明」に変えることで匿名性集合を劇的に拡大します。金額秘匿のための要素──Pedersenコミットメントとレンジプルーフ──は新設計でも引き続き使用されます。したがって、FCMP++は「RingCTの完全な置換」というより「次世代のRingCT」と理解するのが正確です。
BitcoinをMoneroにスワップすると、私のコインはRingCTで保護されますか?
はい、保護されます。XMRがMoneroウォレットに到着した瞬間から、以降のすべての送金はデフォルトでRingCTを使用します。スワップ自体はMoneroSwapperのようなサービス上でオフチェーンで実行され、アトミックスワップやオーダーブックを通じて両チェーン間で価値が移動します。スワップのMonero側が確定した瞬間から、あなたが行うすべての送出取引には標準的なRingCT保護が適用されるのです。
結論
RingCTは、Moneroの「プライバシー暗号通貨」というスローガンを、検証可能な暗号学的性質へと変換してきた中核的な要素です。Pedersenコミットメント、Bulletproofs+レンジプルーフ、そしてCLSAGリング署名を組み合わせることで、すべてのノードが「収支が一致していること」を、ただの1つの金額も目にすることなく確認できるようにしているのです。2017年のローンチからほぼ10年が経過した今もなお、RingCTは他の金額秘匿スキームを評価する際の事実上の基準であり続けており、来るFCMP++アップグレードは「リングサイズに上限がある」という歴史的な批判を解消することで、その地位をさらに強固なものとするでしょう。
RingCTを「読み物」としてではなく「実際に使うべきもの」として捉えているなら、実践上の優先順位は次のとおりです:ウォレットをデフォルト設定のまま維持すること、可能な限り自分自身のノードを運用すること、本人確認情報を収集しないサービスを優先すること、そして「あなたのプライバシーにおける最弱の鎖の輪は、ほぼ確実に数学そのものではない」と心に留めておくことです。KYC(本人確認)の痕跡を残さずにXMRへ出入りしたい方には、MoneroSwapperがアカウント不要のスワップを提供しており、コインを直接あなたのRingCT保護下のウォレットへ届けます──本記事で解説した暗号技術は、あなたが「送信」ボタンを押したその瞬間から、確実にあなたの資産を守り始めるのです。
🌍 他の言語で読む