MoneroSwapper MoneroSwapper

Monero の RingCT(秘匿トランザクション)を徹底解説

MoneroSwapper · · · 1 min read · 13 views

Monero の RingCT(秘匿トランザクション)を徹底解説

Bitcoin のブロックエクスプローラを開けば、これまで行われたすべての取引の金額が、最小単位の satoshi までそのまま読み取れます。アドレスを一つ入力するだけで、その残高を確認し、コインがどこから来てどこへ送られたのかを追跡できてしまいます。この透明性は意図的に設計されたものですが、同時に、給与の受け取り・寄付・たった一度の不用意な入金が、ウォレット全体の匿名性を一瞬で剥ぎ取ってしまう原因でもあります。Monero はその正反対の立場を取ります。Monero のチェーン上では、金額そのものが隠されているのです。それを可能にしている技術が、Ring Confidential Transactions の略である RingCT です。

Monero の取引が公開台帳の上で、読み取り可能な数字ではなく暗号学的なコミットメントとして記録されるのは、まさに RingCT のおかげです。RingCT は2017年1月に稼働を開始し、同年後半にはすべての取引で必須となりました。ウォレットから送金する XMR も、MoneroSwapper のようなアカウント不要のサービスで入手した XMR も、そのすべてが RingCT によって守られています。この記事では、RingCT が具体的に何をしているのか、金額を見ずに取引を検証できるようにする数学の仕組み、Bulletproofs や Bulletproofs+ を経てどのように進化してきたのか、そして FCMP++ によって次にどこへ向かおうとしているのかを、順を追って解きほぐしていきます。

なぜ金額を隠すことが重要なのか

ブロックチェーン上のプライバシーは、単一の機能ではありません。同時に解決しなければならない三つの問題なのです。どれか一つでも露出させてしまえば、残る二つもそこから漏れていきます。Monero はこの三つすべてに取り組んでおり、そのうち三番目を担っているのが RingCT です。

  • 誰が送ったのか: リング署名が担当します。送金可能性のある複数の主体を代表する形で取引に署名するため、観察者は本物の入力がどれなのかを判別できません。
  • 誰が受け取ったのか: ステルスアドレス技術が担当します。支払いごとに一度きりのユニークなアドレスを生成するため、資金が再利用可能な公開アドレスに着地することがありません。
  • いくら送られたのか: RingCT が担当します。金額を Pedersen コミットメントの中に暗号化しつつ、ネットワークの全ノードが収支の整合性を確認できる状態を保ちます。

RingCT が存在する以前の Monero は、送金者と受取人は隠していましたが、金額は平文のままでした。少しでも金額のプライバシーを確保するために、当時のプロトコルは取引を固定額面の単位に強制していました。たとえば 0.01、0.1、1、10 といった具合で、ちょうどぴったりの硬貨で支払いをするようなイメージです。これは思いのほか多くの情報を漏らしていました。7.3 XMR という出力に対してもっともらしいダミー(デコイ)になり得る集合は、隠された出力の場合に比べてはるかに小さくなります。デコイ側も同じ額面に揃える必要があったからです。さらに、金額が見えていれば、アナリストはチェーン全体で等しい値を追うことで取引同士を結びつけられました。

秘匿金額はこの穴を塞ぎます。値が暗号化されてしまえば、すべての出力は構造的に互いと見分けがつかなくなります。これこそが代替可能性(ファンジビリティ)の土台です。すなわち、ある一単位の XMR は他のどの一単位とも完全に交換可能であり、加盟店や取引所が受け取りを拒めるような「汚れた」履歴が一切付着しない、という性質です。この性質の重みは年々増しています。日本の文脈はとりわけ示唆に富みます。日本では金融庁(FSA)と自主規制団体の JVCEA の方針により、Monero のような匿名性の高い暗号資産は国内の登録取引所では事実上取り扱われていません。コインの個々の単位が選別されたりブラックリスト化されたりしないことの価値は、こうした規制環境を背景にいっそう際立ちます。

RingCT とは実際に何であり、どう機能するのか

RingCT の「CT」の部分、すなわち Confidential Transactions(秘匿トランザクション)が金額を隠す役割を担っており、その土台には Pedersen コミットメントと呼ばれる暗号技術があります。一方「Ring」の部分は、その金額隠蔽を Monero の既存のリング署名スキームと結びつけ、送金者の匿名性も同時に保ちます。この二つの考え方は、いったん分けて捉えると理解しやすくなります。

Pedersen コミットメント:暗号化したまま計算できる数

コミットメントとは、ある値を後から変更できないように固定しつつ、それが何であるかは明かさない仕組みです。ある金額に対する Pedersen コミットメントは C = xG + aH という形になります。ここで a が実際の金額、x はブラインディングファクター(目隠し係数)と呼ばれるランダムな秘密値、そして GH は楕円曲線上の固定された点です。コミットメントを不透明にしているのがこのブラインディングファクターです。これがなければ、同じ値を持つ二つの出力がまったく異なる見た目のコミットメントを生むため、それらが等しいことを誰も判別できなくなります。

魔法のような性質は、これらのコミットメントが加法的、すなわち準同型(ホモモルフィック)であることです。取引のすべての入力に対するコミットメントを足し合わせ、すべての出力と手数料に対するコミットメントを足し合わせると、実際の金額の収支が合っている場合、二つの合計は同じ総額に対するコミットメントになります。送金者は、入力から出力を引いた結果がゼロへのコミットメントになるよう、ブラインディングファクターを調整します。ネットワーク上の全ノードはこの等式を検証でき、コインが新たに生み出されたり消滅したりしていないことを確認できます。しかも、取引の中の金額を一つたりとも知ることなく、です。

RingCT の核心は、ネットワークが収支を satoshi 単位で証明できる一方で、個々の項目を読み取ることは数学的に不可能である、という点にあります。

この性質は、一見すると矛盾しているように聞こえます。中身が見えないのに、合計が正しいと確信できるのはなぜか。鍵は、暗号化が値そのものを破壊するのではなく、別の数学的な空間へ「写し替える」点にあります。その空間でも足し算という構造が保たれているため、平文の世界で 5 + 3 = 8 が成り立つように、暗号化された世界でも対応する等式が成り立ちます。だからこそネットワークは、原本を一度も開かずに帳簿の整合性だけを確かめられるのです。

レンジプルーフ:無から coin を鋳造させない仕組み

準同型による収支の一致には、一つ危険な抜け穴があります。金額が隠されているため、悪意ある送金者がマイナスの金額にコミットしようと試みる可能性があるのです。剰余演算の性質上、マイナスの値は巨大な正の数へと回り込み(オーバーフローし)、無から XMR を生み出すことを許してしまいます。これを防ぐため、すべての秘匿出力にはレンジプルーフ(範囲証明)が付随します。これは、コミットされた金額が有効な範囲内、すなわちゼロから 2⁶⁴ の間に収まっていることを、その範囲のどこに位置するかは明かさずに保証する暗号学的な証明です。

RingCT のサイズとコストの大部分が宿ってきたのが、このレンジプルーフであり、最大の改良が起きてきた場所でもあります。2017年の当初の実装では Borromean リング署名が使われていました。これは正しく動作するものの嵩張るもので、典型的な二出力の取引はおよそ 13 KB のレンジプルーフデータを抱えていました。そのため Monero の取引はサイズが大きく、手数料も比較的高くなっていました。この仕組みを置き換えることが、それ以来このプロトコルの最適化における中心的な物語となってきました。

RingCT の進化:Bulletproofs、Bulletproofs+、そして CLSAG

RingCT は固定された一枚岩ではありません。Monero のおよそ半年ごとのハードフォークを通じて何度も再設計され、そのたびに同じプライバシー保証を維持したまま、より小さく、より速くなってきました。主要なアップグレードは次の通りです。

アップグレード有効化時期変更内容
RingCT(Borromean)2017年1月、2017年9月に必須化Pedersen コミットメントと Borromean レンジプルーフによって金額隠蔽を導入。
Bulletproofs2018年10月Borromean プルーフを置き換え。二出力取引のレンジプルーフを約13 KB から約2.5 KB へ削減し、取引サイズ全体を約80%、手数料を約95%以上圧縮。
CLSAG2020年10月MLSAG リング署名を置き換え。署名サイズを約25%縮小し、検証速度も明確に向上。
Bulletproofs+2022年8月Bulletproofs を改良してさらにサイズを削減し検証を高速化。同じフォークでリングサイズを16へ引き上げ、ビュータグも追加。

2018年10月のハードフォークで導入された Bulletproofs は、転換点でした。対数サイズのレンジプルーフへ切り替えたことで、各取引に付随するデータが一気に縮み、中央値の手数料は数ドルから1セントの何分の一かにまで下落しました。今日 Monero が安価に使えるのは、この単一の変更によるところがもっとも大きいと言えます。2022年8月の Bulletproofs+ は、さらにもう一段の余白を絞り出し、検証を高速化しました。すべてのノードがすべてのプルーフを検証しなければならない以上、この高速化は重要です。

これらの一連の最適化は、単に手数料を下げただけではありません。取引が小さくなればブロックチェーン全体の肥大化が抑えられ、一般的なハードウェアでフルノードを動かし続けられる人が増えます。検証が速くなれば、各ノードがすべてのプルーフを点検する負担が軽くなります。プライバシーと分散性は、しばしばトレードオフだと語られますが、Monero の RingCT の進化はその両方を同時に押し上げてきた、という点が見過ごせません。

リング署名の側も並行して進化しました。CLSAG(Concise Linkable Spontaneous Anonymous Group signatures)は、2020年10月に旧来の MLSAG 構成を置き換え、送金者隠蔽の構成要素を約4分の1小さく、かつ検証を高速にしました。Bulletproofs+ をもたらした2022年8月の同じフォークは、必須リングサイズを11から16へと引き上げ、各使用済み出力が10個ではなく15個のデコイの中に隠れるようにしました。さらにビュータグも導入しました。これは、ウォレットがチェーンを走査して入金を探す際に、大部分の作業を省略できるようにする小さな最適化です。

RingCT 取引はどう組み立てられるのか、ステップごとに

ウォレットが XMR を送るとき、各部品がどう組み上がるのかを見ておくと理解が深まります。これらの作業にあなたが手を動かす必要は一切なく、ウォレットが1〜2秒のうちにすべて済ませてくれます。ですが、その順序を理解しておくと、実際にチェーン上に何が乗るのかという謎が解けます。

  1. 本物の入力とデコイを選ぶ。 ウォレットは実際に使用する出力を一つ選び、チェーンから他の本物の出力を15個引いてきてデコイとし、16個のもっともらしい資金源からなるリングを形成します。
  2. キーイメージを生成する。 本物の出力からユニークなキーイメージが導出されます。これによりネットワークは二重支払いを検出できますが、それがリングのどのメンバー由来なのかへ遡って結びつけることはできません。
  3. ステルス出力を作る。 受取人ごとに、ウォレットは一度きりのステルスアドレスを計算します。これにより支払いが受取人の公開アドレスに結びつけられることがなくなります。
  4. 金額をコミットする。 各出力の金額はランダムなブラインディングファクターとともに Pedersen コミットメントに包まれ、入力から出力と手数料を引いた値がゼロにコミットするよう、ブラインディングファクターが釣り合わせられます。
  5. レンジプルーフを付ける。 各出力について Bulletproofs+ のレンジプルーフが生成され、隠された金額が非負かつ範囲内であることを証明します。
  6. CLSAG で署名してブロードキャストする。 CLSAG リング署名がリング全体を代表して使用を承認し、取引が中継されます。公開メモリプールに到達する前に Dandelion++ を通じて伝播され、発信元の IP が隠されます。

ブロックチェーンに着地する結果には、読み取れる送金者も、読み取れる受取人も、読み取れる金額も含まれていません。あるのはコミットメント、プルーフ、そして可能性のリングだけです。それでいて、全ノードによって完全に検証可能なのです。

秘匿トランザクションが、実際のあなたにとって何を意味するのか

RingCT の実用的な見返りは、代替可能性と監視への耐性であり、それは具体的な場面で姿を現します。暗号資産で報酬を受け取るフリーランサーを考えてみましょう。透明なチェーンの上では、すべてのクライアントがそのウォレットの全残高と、これまでに受け取った他のあらゆる支払いを見られます。たった一つのアドレスが特定されれば、すべてが芋づる式に露出します。Monero では、入ってくる支払いは金額が隠されたステルス出力であり、クライアントは自分が送った取引以上のことは何も知り得ません。

別の場面も考えてみましょう。たとえばオンラインで商品を売る個人事業主や、寄付を募る団体です。透明なチェーンでは、受け取り用のアドレスを公開した瞬間に、これまでの売上総額や寄付の累計、そして次にどこへ資金を動かしたかまでが、世界中の誰にでも見えてしまいます。競合に売上を読まれ、寄付者に他の寄付者の額を知られ、取引相手に手元資金を推し量られる——透明性は、しばしば望まない形で自分の経営状況を晒します。Monero ではアドレスごとに残高という概念が外から見えず、個々の入金は金額の隠されたステルス出力として届くため、公開アドレス一つから事業の全体像が逆算されることがありません。

これは「チェーン分析」があなたに対してどう働くかも変えます。ブロックチェーン・フォレンジックを売る企業は、アドレスをクラスタリングし金額を追うことを商売の土台にしてきました。RingCT は金額のシグナルを丸ごと取り除き、リング署名は資金源を濁らせ、ステルスアドレスは送り先のリンクを断ち切ります。調べるべき残高もなければ、たどるべき綺麗な資金の流れもありません。プライバシーコインの追跡がいまだ製品の機能ではなく未解決の問題であり続けているのは、まさにこのためです。

だからこそ、入手の経路が重要になります。あなたの身元を特定のオンチェーン出力に結びつけるような、監視の厳しい場所で XMR を買えば、チェーンそのものはプライベートであっても、既知の出発点を作り出してしまうことになります。MoneroSwapper のような、アカウントを保有せず身分証明書も要求しないスワップサービスを使えば、その最初の一歩を綺麗に保てます。そうすれば、RingCT がオンチェーンで提供する秘匿性が、オフチェーンの紙の足跡によって台無しにされることがありません。これらは税務上のアドバイスではありません。日本では、チェーンがどれほどプライベートであっても、国税庁は暗号資産の売却や交換による利益を課税対象(原則として雑所得)として扱います。ですが、少なくともネットワーク自体が、ブロックエクスプローラを持つ誰かに向けてあなたの財務状況を放送してしまうことはない、ということを意味します。

RingCT の次なる行き先:FCMP++

RingCT による金額隠蔽は盤石ですが、その送金者の匿名性には理論上の上限があります。16個のリングは、本物の使用がその16候補のうちの一つであることを意味し、統計的分析がときにその確率を削り取ることがあります。Monero の答えが、2025年から2026年にかけて活発に開発が進む FCMP++(フルチェーン・メンバーシップ証明)です。15個のデコイの中に使用を隠す代わりに、FCMP++ は、これまでチェーン上に存在したことのあるあらゆる適格な出力の中にそれを隠そうとします。匿名性集合を16から数千万へと拡大するのです。

この変化が実際に意味するところは大きいものです。現在のリング署名では、ブロックチェーンに長く居続けるほど、また高度な統計的ヒューリスティクス(たとえば使われやすい出力の年齢分布の偏り)を積み重ねるほど、本物の入力を推定できる確率がわずかに上がる余地が残ります。アノニミティセットが事実上チェーン全体に広がれば、こうした確率的な攻撃の足場そのものが消え失せます。デコイ選択のアルゴリズムを巡る長年の研究と調整が、原理的に不要になるわけです。一方で、全出力を対象にした帰属証明を効率的に検証できるようにすることが技術的な課題であり、だからこそ2025年から2026年にかけて慎重な開発とテストが続いています。

重要なのは、FCMP++ が置き換えるのはリング署名の構成要素であって、秘匿トランザクションの構成要素ではない、という点です。金額を隠す Pedersen コミットメントと Bulletproofs+ レンジプルーフはそのまま残ります。変わるのは、使用可能な集合への帰属がどう証明されるか、という部分です。さらに先を見れば、Seraphis 取引プロトコルと Jamtis アドレッシング方式が、この土台の上に築かれるよう設計されています。利用者にとっての教訓はシンプルです。RingCT による金額のプライバシーは、Monero において既に確立した成熟した部分であり、プロトコルはその周りの部分を強化し続けている、ということです。

RingCT は他のプライバシー手法と何が違うのか

暗号資産のプライバシーを高める手法は RingCT だけではありません。違いを理解しておくと、なぜ Monero のアプローチが構造的に強いのかが見えてきます。

まず Bitcoin で使われる CoinJoin やミキシングサービスを考えてみましょう。これらは複数のユーザーの取引を一つにまとめ、どの入力がどの出力に対応するのかを曖昧にする手法です。しかし根本的な限界があります。金額は依然として平文でチェーン上に書かれているため、アナリストは値を突き合わせることで対応関係を推定できてしまうことが少なくありません。ミキシングはあくまで透明なチェーンの上に後付けされた層であり、プロトコルそのものに組み込まれているわけではありません。参加者の数というアノニミティセットも、その時々の利用状況に左右されます。

次に、Zcash のような選択式の秘匿機能を持つチェーンと比べてみましょう。Zcash はゼロ知識証明によって極めて強力な秘匿性を実現できますが、その秘匿機能(シールドプール)は任意であり、多くの取引が透明なアドレスで行われてきた歴史があります。プライバシーが任意である場合、シールドを使うこと自体が「何かを隠している」というシグナルになり得ますし、透明な取引と秘匿取引の間を資金が行き来する境界が分析の手がかりを残します。

Monero の RingCT が構造的に異なるのは、秘匿性が任意ではなく必須である点です。2017年以降、すべての取引が RingCT で金額を隠し、リング署名で送金者を隠し、ステルスアドレスで受取人を隠しています。例外がないからこそ、すべての取引が互いに溶け込み、「秘匿を選んだ少数派」という目立つ集団が生まれません。プライバシーがネットワーク全体のデフォルトであることこそが、代替可能性を成立させる本質なのです。

日本における Monero と RingCT:規制とプライバシーの現実

日本のユーザーにとって、RingCT の意義は規制環境を抜きには語れません。金融庁(FSA)と業界の自主規制団体である JVCEA(日本暗号資産取引業協会)の方針のもと、Monero をはじめとする匿名性の高い暗号資産は、国内の登録済み暗号資産交換業者では事実上取り扱われていません。実際、過去には国内取引所が匿名性の高い銘柄の取り扱いを順次取りやめており、現在 XMR を国内の板で直接売買することはできない状態が続いています。

この事実は、RingCT が解決しようとしている問題そのものを浮き彫りにします。規制当局が懸念するのは追跡可能性であり、Monero の設計思想はその対極にあります。だからこそ、日本のユーザーが XMR を手に入れる経路は、自然と国内取引所の外側、すなわちアカウント不要のスワップサービスや分散型の交換手段へと向かいます。ここで重要なのは、入手の経路そのものがプライバシーの強さを左右する、という点です。チェーン上で RingCT がどれだけ強固に金額を隠していても、身分証明書と特定のオンチェーン出力を紐づける入口を通れば、そこが既知の出発点になってしまいます。

税務の扱いも明確にしておく価値があります。国税庁の現行の取り扱いでは、暗号資産の売却・他の暗号資産との交換・商品やサービスへの利用によって生じた利益は、原則として雑所得に区分され、給与など他の所得と合算して総合課税の対象となります。チェーンがプライベートであることと、納税義務があることは別の話です。RingCT が隠すのはネットワーク上の金額であって、利用者自身が記録し申告すべき取引の事実ではありません。プライバシーと法令遵守は両立し得るものであり、片方がもう片方を免除するわけではない、という点は押さえておくべきです。

言い換えれば、日本の文脈において Monero の価値は二重です。第一に、RingCT による代替可能性は、選別もブラックリスト化もされ得ないコインを意味します。第二に、規制によって国内の入手経路が限られているからこそ、最初の一歩をどう踏むかという設計が、オンチェーンのプライバシーと同じくらい重要になります。MoneroSwapper のようなアカウント不要のサービスは、まさにこの最初の一歩を綺麗に保つために設計されています。

よくある質問(FAQ)

RingCT は実際に何を隠すのですか?

RingCT は Monero 取引の金額を隠します。各々の値を Pedersen コミットメントの中に暗号化するため、その数字がブロックチェーン上に平文で書かれることは決してありません。それでいて、入力が出力と手数料の合計に等しいことを全ノードが検証できる状態を保ちます。送金者と受取人は、RingCT と並んで働く別々の仕組み、すなわちリング署名とステルスアドレスによって隠されています。

金額が隠されているなら、ネットワークはどうやって偽のコインを防ぐのですか?

二つの安全装置があります。Pedersen コミットメントの準同型性により、ノードは隠された入力と出力がゼロに釣り合うことを確認でき、価値が新たに生み出されたり消滅したりしていないことを保証します。そしてすべての出力に付随するレンジプルーフが、コミットされた金額が非負かつ有効な範囲内であることを保証し、隠されたマイナス金額が本来許してしまうオーバーフローの手口を封じます。

RingCT とリング署名の違いは何ですか?

両者は異なる問題を解いており、名前が重なるためによく混同されます。リング署名は、送金可能性のある集団を代表して署名することで、誰が取引を送ったのかを隠します。RingCT は、秘匿コミットメントを使っていくら送られたのかを隠します。RingCT はこの二つを統合し、同じ取引に両方の保護が適用されるようにしています。

Bulletproofs は RingCT を置き換えたのですか?

いいえ。Bulletproofs と Bulletproofs+ は RingCT の内部のアップグレードであり、具体的にはレンジプルーフの構成要素に対するものです。これらは旧来の嵩張る Borromean レンジプルーフを置き換え、取引サイズをおよそ80%、手数料を90%をはるかに超える割合で削減しましたが、RingCT 全体の枠組みとその隠された金額は変わっていません。

FCMP++ が導入されると RingCT は取り除かれるのですか?

いいえ。FCMP++ は Monero のリング署名をフルチェーン・メンバーシップ証明へ置き換え、送金者の匿名性集合を劇的に拡大する予定です。秘匿金額の仕組み、すなわち Pedersen コミットメントと Bulletproofs+ レンジプルーフは、そのまま残る見込みです。言い換えれば、FCMP++ は RingCT が提供する金額のプライバシーを損なうことなく、送金者のプライバシーを強化するものです。

まとめ

RingCT は、Monero のプライバシーを支える物静かな働き者です。チェーン上のあらゆる金額を、ネットワークは検証できるが誰も読み取れないコミットメントへと変え、しかもレンジプルーフが供給量を正直に保ちます。送金者を隠すリング署名と、受取人を隠すステルスアドレスと組み合わさることで、Monero の出力が互いに見分けがつかず、選別も、ブラックリスト化も、金額による追跡もできない理由となっています。Bulletproofs、Bulletproofs+、CLSAG を経て、それはより安く、より速くなる一方であり、地平線上に見える FCMP++ とともに、その周りのプライバシーはさらに深まり続けています。手に入れたその瞬間からこの保護を帯びたコインが欲しいなら、MoneroSwapper を通じて 匿名で Monero を購入 し、取引した瞬間から残りは RingCT に任せてしまうことができます。

この記事をシェア

関連記事

匿名 モネロ取引所

KYCなし • 登録なし • 即時交換

今すぐ交換