Silent Payments を使うと、再利用できる一つの識別子でビットコインを受け取りながら、毎回同じ公開追跡可能なアドレスに支払われることを避けられます。ウォレットは、ビットコインを受け取ったり送ったりするためのアプリや機器です。送金者のウォレットが支払いごとに新たな宛先を計算し、受取人のウォレットが後からチェーン上で見つけます。手順は BIP352 に記載されています。受取人はオンラインで待ったり、支払いの前に新しいアドレスを渡したりする必要がありません。
ボブが普通の Bitcoin アドレスをサイトに載せると、誰でもエクスプローラーで入金を追えます。ブロックエクスプローラーは、特定のネットワークの取引やブロックを調べるためのアプリです。毎回新しいアドレスを渡す方がよくても、それを配る仕組みが必要です。Silent Payments はこの問題に対応します。ボブは固定情報を公開し、アリスはそこから今回の支払い用の出力を作ります。出力とは、金額と後で使うための条件を記録したものです。公開情報が同じ受取アドレスとして繰り返しチェーンに現れるわけではありません。 [1] [3] [9] [7]
Silent Payments アドレスには、公開の scan key と spend key が入ります。秘密鍵は秘密にしておく数値で、対応する公開鍵は他の人と共有できます。名前は役割を示しています。scan key は入金を探すことに、spend key は支出に関わります。対応する秘密鍵はボブの手元に置かれます。Bitcoin の本番ネットワークである mainnet では sp1 で始まり、Bech32m を使います。bc1p で始まる通常の Taproot アドレスでも、ウォレットのバックアップでもありません。この公開鍵の組は対応する送金者に支払い先を計算させますが、支出権限やボブの入金一覧は与えません。 [1] [5] [9]
ボブに支払うため、アリスのウォレットは以前受け取った金額を選びます。それらへの参照が新しい取引の入力になります。宛先の計算には、BIP352 の規則を満たす入力の鍵を使います。すべての入力形式が対象になるわけではありません。アリスは ECDH を使い、それらの秘密鍵とボブの公開 scan key を組み合わせます。この暗号技術により、秘密鍵を交換せずに双方が同じ秘密の値を独立に計算できます。ウォレットはその値を具体的な入力に結び付け、ボブの公開 spend key の調整値を導いて、新しい出力の鍵を作ります。入力との結び付けによって、入力の鍵を再利用しても宛先が再利用されることを防ぎます。アリスが RBF、つまり未承認の取引を置き換える方法を使って、例えば手数料を引き上げ、その際に入力を変更した場合、ウォレットは宛先を再計算する必要があります。以前の結果をそのまま使うことはできません。 [1] [4]
ボブのウォレットは対象の取引を走査し、秘密の scan key と入力の公開データから候補の出力を計算します。一致が見つかれば、自分の資金として記録します。チェーン上では特別な通知のない Taproot 出力です。アリスが送る時にボブがオンラインである必要も、事前に返事をする必要もありませんが、後でウォレットが必要なデータを処理しなければなりません。 [1] [6]
scan key は入金を探し、spend key は導出されたデータとともに支出を可能にします。秘密の spend key はオンラインのスキャナーから分離できます。秘密の scan key だけが漏れても盗難はできませんが、公開情報と組み合わさると入金が判明する可能性があります。外部の走査サーバーへ渡すことには、プライバシー上の影響があります。そのサーバーへ seed や秘密の spend key を送ってはいけません。 [1]
Silent Payments は専用の通知取引を必要としませんが、計算やデータ通信の負担はあります。受取側は対象取引を調べ、先ほど説明した暗号技術の計算を行います。スマートフォンでは索引、必要データの取得先、最後の走査からの時間が重要です。通常のアドレス一覧だけでは足りません。ノードは、取引やブロックを検証し、ネットワークの他の参加者と通信するソフトウェアです。自分のノードと外部サービスでは、必要条件もプライバシーや可用性への影響も異なります。 [1] [2] [8]
ボブは labels を使い、例えばプロジェクトごとに支払い先を区別できます。支払い先ごとに完全に独立した走査をする必要はありません。ただし公開された支払い先は scan key を共有するため、観察者は同じ所有者だと分かります。ラベルはボブが入金を分類するためのもので、別の匿名の身元を作るものではありません。お釣り用の特別なラベルは、ボブ自身の支払いの残額を区別します。以前受け取った金額が支払いと手数料の合計を上回る場合、その残りは自分のウォレットに戻ります。店からの返金とは別のものです。BIP352 はこの用途に m = 0 のラベルを予約しています。ウォレットは復元時に必ずこのラベルを探し、他人からの入金用情報として公開してはいけません。 [1] [4]
ボブが電話をなくしても、バックアップは持っているとしましょう。seed はウォレットが鍵を導く秘密の初期値で、通常は Seed Phrase、つまり指定された順序に並ぶ復元用の単語を通じて保管します。ただし、その単語があるだけで任意のアプリが Silent Payments を見つけられるわけではありません。同じ鍵導出方式と、これらの支払いを探す機能に対応する必要があります。使った labels とウォレットを使い始めた日付の記録が、復元を助けます。現在の資金を探すには、残った UTXO を含む取引の必要なデータを走査できます。UTXO は個別に受け取り、まだ使っていない金額のことです。全履歴の復元には、より広いチェーンの走査が必要です。そのため、走査が終わる前の空の表示が資金紛失を意味するとは限りません。 [1]
Silent Payments はアドレス再利用による支払いの関連付けを減らしますが、金額、承認時刻、使った入力の履歴は隠しません。アリスはボブへの自分の支払いを知っており、注文に個人情報が含まれることもあります。ボブが後から複数の UTXO を一つにまとめると、再び関係を明かす可能性があります。Silent Payments は CoinJoin ではなく、組み合わせも自動的に安全ではありません。BIP352 は、独立した送金者が協力する場合の形式的な安全性証明が不足していると注意しています。 [1] [3]
BIP352 の著者には josibake、Ruben Somsen、Sebastian Falbesoner が記載され、番号は 2023 年に割り当てられました。2026 年 10 月 17 日の確認時点で状態は Complete です。ただし全ウォレットの対応を意味しません。送信、受信、走査、復元は別々に確認が必要です。既存の Taproot を使うので、新たな Soft Fork、つまりネットワークで採用する有効性ルールの厳格化は不要です。未対応の古いアプリでは sp1 アドレスを正しく処理できません。 [1] [2]
理解を深めるには、この項目とあわせて次もお読みください Bitcoin のプライバシー, 仮名性, Taproot, CoinJoin, Replace-by-Fee (RBF), UTXO. 次の項目からも参照されています Bitcoin のプライバシー, Transaction Labeling.