MoneroのPayment ID:なぜ廃止され何に置き換えられたか
Payment IDの興亡
Payment IDはかつてMoneroエコシステムにおいてどこにでもある機能でした。2019年以前にMoneroを使用していた方は、取引所への入金や商人への支払い時にほぼ確実に遭遇したことでしょう。これらの追加識別子はトランザクションに付加され、受取人が複数の受信支払いを区別するのに役立ちました。便利であったにもかかわらず、Payment IDは深刻なプライバシーと使いやすさの問題を引き起こし、最終的に廃止に至りました。
この歴史を理解することは、今日Moneroを使用するすべての人にとって重要であり、特にまだPayment IDを参照する古いサービスとやり取りする際に重要です。MoneroSwapperでスワップする場合でも、独自のウォレットを管理する場合でも、Payment IDの代わりに何が採用されたか、その理由を知ることで、より安全に取引できます。
Payment IDとは何だったのか?
Payment IDは、Moneroトランザクションに付加できる64文字の16進数文字列(32バイト)でした。ブロックチェーントランザクションに直接埋め込まれた参照番号や請求書IDと考えることができます。2つのタイプがありました:
ロングPayment ID(非暗号化)
元のPayment ID形式は、トランザクションの追加フィールドの一部としてプレーンテキストで送信される32バイトの文字列でした。ロングPayment IDでトランザクションを送信すると、ブロックチェーンを閲覧する誰もがPayment IDの値を見ることができました。これは最も初期の方法であり、取引所や決済処理業者に広く使用されていました。
プライバシーの観点から、問題は即座に明らかでした:取引所が入金アドレスを公開し、各ユーザーに一意のPayment IDを割り当てると、観察者はその取引所へのすべての入金を識別し、タイミングや金額の分析を通じてPayment IDを特定のユーザーに関連付けることができました。
暗号化Payment ID(ショートPayment ID)
プレーンテキストの問題に対処するため、Moneroは2017年に暗号化Payment IDを導入しました。これらはトランザクションのワンタイムキーから派生した共有秘密で暗号化された8バイトの値でした。受取人のみがプライベートビューキーを使用してPayment IDを復号化できました。ブロックチェーン上では、暗号化されたPayment IDは他の全員にランダムデータとして表示されました。
暗号化Payment IDは統合アドレスにバンドルされ、標準のMoneroアドレスと8バイトのPayment IDを1つのアドレス文字列に結合しました。送信者が別のPayment IDフィールドを手動でコピーして貼り付ける必要がなくなったため、使用が容易になりました。
取引所やサービスがPayment IDを使用した理由
Payment IDの実用的な理由は単純でした:取引所や商人は受信した支払いを特定のユーザーや注文に帰属させる必要がありました。Moneroが各トランザクション出力をユニークにするステルスアドレスを使用しているため、毎日何千もの入金を受け取るサービスは、どの入金がどの顧客に属するかを判断するメカニズムが必要でした。
典型的なワークフローは以下の通りでした:
- 取引所はすべてのユーザーに同じ入金アドレスを与え、各ユーザーに一意のPayment IDを割り当て
- ユーザーは割り当てられたPayment IDとともに取引所アドレスにXMRを送信
- 取引所は受信トランザクションのPayment IDをスキャンして正しいアカウントに入金
このシステムは機能しましたが脆弱でした。ユーザーはPayment IDを含めるのを忘れることが頻繁にあり、入金の紛失が発生し、取引所サポートチームによる手動回復が必要でした。これはMonero対応取引所で最も一般的なサポート問題の一つであり、ユーザーのフラストレーションの主な原因でした。
Payment IDのプライバシー問題
暗号化されたPayment IDでさえ、Moneroのコアプライバシー保証を弱める複数のプライバシー脆弱性を導入しました:
メタデータによるリンク可能性
取引所のすべてのユーザーが同じアドレスに送信する場合、ステルスアドレスメカニズムが弱められました。観察者は公開アドレスを認識することで、トランザクションが特定の取引所宛てであることを識別できました。Payment IDは暗号化されていても、トランザクションに識別可能なメタデータを追加しました。Payment IDのあるトランザクションはないものとは異なって見え、匿名性セットを減少させる2つのクラスのトランザクションを作成しました。
2プール問題
Payment IDのあるトランザクションとないトランザクションは、ブロックチェーン上で視覚的に異なる2つのプールを形成しました。この区別はチェーン分析者に情報を提供しました。トランザクションに暗号化されたPayment IDが含まれていれば、取引所や商人に向かっている可能性が非常に高く、可能な受取人を大幅に絞り込みました。
タイミングとパターン分析
取引所は通常、入金をバッチで処理するか、予測可能なタイミングで処理しました。単一の入金アドレスモデルと組み合わせると、洗練された分析者が利用できるパターンが作成されました。既知のアドレス、タイミングパターン、Payment IDの存在の組み合わせにより、相関攻撃がより実行可能になりました。
ユーザーエラーによるプライバシー漏洩
ユーザーがPayment IDを忘れた場合、通常はサポートに連絡してトランザクションが自分のものであることを証明する必要がありました。これは通常、トランザクションプライベートキーやビューキー情報の共有を伴い、追加のプライバシー漏洩と身元をトランザクションに関連付ける記録を作成しました。
廃止のタイムライン
Moneroコミュニティはこれらの問題を認識し、いくつかのプロトコルアップグレードを通じて対応しました:
- 2018年(v0.13、Beryllium Bullet) — ロング(非暗号化)Payment IDが廃止され、使用しようとするとウォレットソフトウェアが警告を表示し始めた
- 2019年(v0.15、Carbon Chamaeleon) — ロングPayment IDがプロトコルレベルで禁止。非暗号化Payment IDを含むトランザクションはネットワークにより拒否
- ウォレットソフトウェアの更新 — GUIとCLIウォレットがPayment IDフィールドを段階的に削除し、サブアドレスの使用を推奨
- 取引所の移行 — 主要取引所が2019年と2020年にPayment IDからサブアドレスに移行、一部の遅れた取引所はそれ以上かかった
統合アドレスによる暗号化(ショート)Payment IDは技術的にはプロトコルレベルでまだ機能しますが、強く非推奨です。現代のウォレットソフトウェアはオプションを完全に非表示にするか、明確な警告を表示します。コミュニティのコンセンサスは、サブアドレスが正しい代替手段であるということです。
サブアドレス:優れた代替手段
サブアドレスはPayment IDの推奨代替手段として導入されました。サブアドレスは、ウォレットのみが計算できる数学的関係を使用して、メインウォレットアドレスから派生した一意のアドレスです。各サブアドレスはメインアドレスに暗号的にリンクされていますが、そのリンクは外部の観察者には見えません。
サブアドレスの仕組み
Moneroウォレットは、プライマリアドレスから実質的に無制限のサブアドレスを生成できます。各サブアドレスは、ブロックチェーンを閲覧する誰にとっても完全に独立したMoneroアドレスのように見えます。誰かがサブアドレスにXMRを送信すると、トランザクション出力はサブアドレスの公開鍵を使用してステルスアドレスを生成し、ウォレットのみが支払いを識別できるようにします。
Payment IDに対するサブアドレスの主な利点は以下の通りです:
- 共有アドレスなし — 各顧客や支払いにユニークなアドレスが提供され、単一アドレス問題を完全に排除
- メタデータ漏洩なし — サブアドレスへのトランザクションはブロックチェーン上でメインアドレスへのトランザクションと同一に見える
- ユーザーエラーなし — ユーザーは提供されたアドレスに送信するだけで、追加のPayment IDフィールドを覚える必要がない
- リンク不可能 — 観察者は2つのサブアドレスが同じウォレットに属しているかどうか判断できない
- 2プール問題なし — メインアドレスでもサブアドレスでも、すべてのトランザクションが同じに見える
取引所のためのサブアドレス
以前Payment IDを使用していた取引所にとって、サブアドレスへの移行はセキュリティとユーザーエクスペリエンスの両方を改善しました。すべてのユーザーに異なるPayment IDとともに同じアドレスを与える代わりに、取引所は各ユーザーにユニークなサブアドレスを生成するようになりました。取引所のウォレットはどのサブアドレスが入金を受け取ったかを自動的に識別し、正しいアカウントに入金します。
このアプローチは最も一般的なサポート問題(忘れられたPayment ID)を排除しながら、同時にすべてのユーザーのプライバシーを向上させました。よりプライベートなソリューションがより使いやすいソリューションでもあるという稀なケースでした。
まだPayment IDを使用しているサービスのための移行ガイド
まだPayment IDを使用しているサービスを運営している場合、サブアドレスへの移行は簡単です:
- サブアドレスの生成 — ウォレットRPCメソッドcreate_addressを使用して、各ユーザーアカウントに一意のサブアドレスを生成
- マッピングの保存 — ユーザーアカウントと割り当てられたサブアドレス間のデータベースマッピングを維持
- 入金指示の更新 — 入金インターフェースからPayment IDフィールドを削除し、サブアドレスのみを表示
- 受信トランザクションの監視 — 各受信トランザクションのサブアドレスインデックスを自動的に報告するget_transfers RPCメソッドを使用
- 下位互換性の維持 — 移行期間中、古い入金指示をキャッシュしたユーザーが影響を受けないよう、旧Payment IDトランザクションのスキャンを継続
Payment IDを要求するサービスに遭遇した場合
廃止から数年が経過したにもかかわらず、一部の小規模取引所やサービスはまだPayment IDを要求しています。この状況に遭遇した場合、以下を知っておくべきです:
慎重に進めてください。2026年にまだPayment IDを使用しているサービスは、Moneroプロトコルの変更に追いついていない可能性があり、より広範なメンテナンスやセキュリティの懸念を示している可能性があります。そのサービスが信頼できるかどうか検討してください。
提供されれば統合アドレスを使用してください。サービスが統合アドレス(Payment IDが埋め込まれている)を提供する場合、ウォレットがPayment IDを自動的に処理します。ロングPayment IDを手動で入力するよりも望ましいです。
Payment IDを再確認してください。Payment IDを手動で入力する必要がある場合は、慎重にコピーして貼り付けてください。すべての文字を確認してください。間違ったPayment IDは回復が困難な資金の損失を意味します。
代替案を検討してください。サービスがロング(非暗号化)Payment IDを要求する場合、現代のMoneroソフトウェアはトランザクションを拒否する可能性が高いです。別のサービスを使用するか、サブアドレスへの更新を要求する必要があるかもしれません。MoneroSwapperのようなサービスはPayment IDを必要としない現代的なインフラストラクチャを使用しています。
より広い教訓
Payment IDの廃止は、Moneroの開発哲学の重要な原則を示しています:プライバシーは暗号プリミティブだけでなく、プロトコル設計と実世界の使用パターンにも関するものです。強力な暗号化があっても、Payment IDが作成したメタデータと行動パターンはプライバシー保証を弱めるのに十分でした。
Payment IDをサブアドレスに置き換えることで、Moneroは使いやすさを向上させながら、プライバシー漏洩の全カテゴリを排除しました。実世界のプライバシー分析に基づくこのような反復的なプロトコル改善は、プライバシーを基本要件ではなく機能として扱うプロジェクトとMoneroを区別するものです。Payment IDの削除は、識別可能なメタデータを排除し、より均一なトランザクションプールを作成することで、すべてのMoneroトランザクションをよりプライベートにしました。
今日のユーザーにとって、実践的なメッセージはシンプルです:すべてにサブアドレスを使用し、可能な限りまだPayment IDを必要とするサービスを避け、この一見小さなプロトコル変更がすべての人のMoneroプライバシーをより強くするための何年もの研究とコミュニティの努力を表していることに感謝してください。
🌍 他の言語で読む