用語集 / プライバシーとセキュリティ
サイレントペイメント
別名はBIP352です。
- サイレントペイメントとは?
- サイレントペイメントでは、ブロックチェーン上に一度も現れない再利用可能なアドレスを1つ公開できます。送信者がそのアドレスを使って、支払いごとに新しくリンク不可能な宛先を計算するためです。
BIP-352で規定されています。
あなたが配布する固定文字列は公開鍵のペアであり、コインが届く場所ではありません。josibake、Ruben Somsen、Sebastian FalbesonerによってBIP352として規定され、2023年3月に作成されたこの方式は、送信者と受信者だけが計算できる秘密から、支払いごとに新しいTaproot出力を導出します。アドレスを使い回す利便性を、オンチェーンの関連付けなしで得られます。
仕組み
サイレントペイメントでは、アドレスの導出を送信者が行います。これが他のすべてを機能させる仕掛けです。
サイレントペイメントのアドレスは、スキャン用と支払用の2つの公開鍵を、接頭辞sp1を付けたbech32mで符号化します。仕様はウォレットに対し、少なくとも117文字の文字列を扱うよう指示しているため、入力するのではなくQRコードやリンクとして共有されるほど長くなっています。誰かがあなたに支払うとき、その人のウォレットは、支払いに使うインプットの秘密鍵とあなたのスキャン鍵の間でDiffie-Hellman交換を行います。これにより共有秘密が生まれ、その秘密があなたの支払鍵を調整し、結果としてブロック内の他のどのTaproot出力とも見分けのつかない通常のTaproot出力が得られます。オンチェーンでそれをあなたが公開したアドレスに結び付けるものは何もなく、2人の異なる送信者からの2件の支払いは、目に見える関係を一切共有しません。
コストは受信者に生じます。どの出力もあなたのアドレスを持たないため、あなたのウォレットは、スキャン鍵で同じ計算を繰り返すことで、各ブロックの候補トランザクションを検査しなければなりません。ウォレットはこれを、同期時間とバッテリーを消費するもののどのサーバーにも何も伝えないローカルスキャンで行うか、より高速でプライバシーが低いインデックスサービスに頼ることで行います。任意のラベルを使えば、アドレスの区別可能な変形を導出できるため、2つの身元を公開することなく、寄付と給与を区別したままにできます。
導入状況
サイレントペイメントへの対応は実際に存在しますが部分的であり、支払いの両端で必要です。
Cake Walletは完全な送受信に対応した最初のモバイルウォレットであり、Sparrowはデスクトップをカバーし、Silentiumは参照実装として存在します。Wasabiはsp1アドレスへ送金できます。Bitcoin Coreはリリースされたどのバージョンにもサイレントペイメントのウォレットを搭載していません。この作業は何年もの間プルリクエスト28122に留まっていますが、暗号プリミティブは現在、同梱のlibsecp256k1ライブラリに存在します。
この複雑さを正当化するユースケースは、公開された受取用アドレスです。ウェブサイト上の寄付アドレス、動画の説明欄の投げ銭アドレス、ポスターのQRコードは、いずれも定義上使い回されるアドレスであり、それらへのすべての支払いは1つの公開された山に積み重なり、あなたの受取総額を世界に示します。サイレントペイメントのアドレスは、対話的な手順なしでこれを解決します。これは、従来の再利用可能なアドレスの試みが決して実現できなかった部分です。
サイレントペイメントvs一意のアドレス
通常のHDウォレットはすでに支払いごとに新しいアドレスを提供しており、2人の間の支払いでは、そのほうがより簡単で安価であり、どのウォレットでも対応しています。あなたが尋ね、相手が支払い、何も導出されません。サイレントペイメントが重要になるのは、あなたが尋ねることができない場合です。アドレスを公開の場に置き、予測できない時点で見知らぬ人から支払われなければならないからです。その代わりに犠牲にするのは、スキャンの負荷とより狭いウォレット対応であり、ほとんどの人は通常の支払いには新しいアドレスを使い続け、連絡先が常設される場所のためにサイレントペイメントのアドレスを取っておくべきです。