本文へスキップ
buybitcoinsmart

用語集 / 開発者向けリファレンス

ペイメントプロトコル(BIP70)

別名はPayment protocol (BIP70)です。

ペイメントプロトコル(BIP70)とは?
ペイメントプロトコル(BIP70)は、単なるアドレスの代わりに署名と証明書で裏付けられた支払い要求を使うというビットコインの試みでしたが、Bitcoin Coreはバージョン0.20.0でその最後の対応を削除しました。

BIP-70で規定されています。

野心と、その後の放棄。Gavin AndresenとMike Hearnは2013年7月29日にBIP70を公開し、Bitcoin Coreは2014年3月に0.9.0でこれを搭載し、2019年11月に0.19で非推奨とし、2020年6月3日に0.20.0で削除しました。決済画面が今もウォレットにこれへの対応を求めているなら、その統合が何年も手を付けられていない証拠と見てよいです。

仕組み

ステータス:Bitcoin Core 0.19で非推奨となり、2020年6月3日に0.20.0で完全に削除されました。維持管理されているウォレットはこれを実装していません。代わりに使われているのは、オンチェーン決済には単純なBIP21 URI、ライトニングではBOLT11またはBOLT12のインボイス、再利用可能な宛先が必要な場合にはBIP352のサイレントペイメントです。

この設計は4つのBIPからなる一連の仕様でした。BIP70がメッセージを定義し、BIP71がネットワークを渡る3つのメッセージそれぞれにMIMEタイプを登録し、BIP72がURIから要求を指せるようにr=パラメータを追加し、BIP73がプロトコルを解析できないウォレット向けのコンテンツネゴシエーションを扱いました。

流れはカード端末のように動きました。加盟店が署名済みのPaymentRequestをHTTPSで配信しました。顧客のウォレットがそれを取得し、添付されたX.509証明書チェーンを、すでに信頼しているルートまでたどり、文字列の代わりに会社名を表示しました。顧客が承認すると、ウォレットはトランザクションをブロードキャストし、さらに生のトランザクションバイトと返金用アドレスを含むPaymentメッセージを加盟店に送り返しました。加盟店はPaymentACKで応答し、これが領収書の役割を果たしました。

崩壊した理由は4つあり、これらを理解する価値があります。ビットコインの上に身元を載せようとする提案のたびに、そのどれもが再び現れるからです。

信頼を認証局から借りていました。典型的なルートストアにある数百のCAのうちどれか1つが、どんな名前の証明書でも発行できます。これはビットコインが回避するために作られた失敗の形です。BIP70はさらにx509+sha1署名タイプも許可しており、2017年2月23日にSHA-1の実用的な衝突が公表されました。

加盟店がオンラインであることを必要としました。加盟店のHTTPSエンドポイントが応答しなければ支払いを組み立てられないため、障害が起きると、アドレスだけでなら機能したはずの支払いが止まりました。

情報が漏れました。ウォレットが加盟店のサーバーへ外向きの要求を出し、顧客のIPアドレスが露出しました。また返金欄が、支払者自身が持つ新しいアドレスを渡してしまいました。

得られるものがほとんどありませんでした。証明書が証明するのは、誰かがドメイン名を管理していることであり、請求書が正当であることや商品が実在することではありません。

目にする場面

BIP70が用語として今も出回っている主な理由は、bitcoin.orgの開発者向けリファレンスがこのプロトコルを現在形で説明しており、そのリファレンスが何年もBitcoin Coreの変更を追いかけていないことです。

それ以外では、BIP70はアーカイブされたウォレットのソースコード、大手決済処理業者がこれを推し進めた頃に書かれた古い統合ガイド、そして時折、10年前の請求書に添付された.bitcoinpaymentrequestファイルの中で見かけます。今日購入するものにこれが必要になることはありません。決済画面を求める加盟店は、BTCPay Serverのようなソフトウェアを使います。これはBIP21 URIとライトニングのインボイスを発行し、顧客のウォレットに特別なことを求めません。

ペイメントプロトコル(BIP70)vs PaymentRequest

ペイメントプロトコルはやり取り全体であり、PaymentRequestはその中の1つのメッセージです。ウォレットと加盟店の間では3つのメッセージが行き交い、PaymentRequestはその最初のもので、加盟店が配信する署名済みの封筒でした。この2つの名前を同じ意味で使うと、古いドキュメントが必要以上に読みにくくなります。また、PaymentRequestはカードやウォレットによる決済のための、無関係なブラウザ標準の名前でもあるため、今日この語を使う開発者がビットコインを指している可能性は低いです。

混同しやすい用語

よくある質問

BIP70は今もどこかで使われていますか?

維持管理されているソフトウェアでは使われていません。Bitcoin Coreは0.19でこれを非推奨とし、2020年6月に0.20.0で削除しており、現在のウォレットはこれを実装していません。今もこれを要求するものは、2010年代半ばに作られた統合が動いているだけです。

ペイメントプロトコルに代わるものは何ですか?

その信頼モデルを引き継ぐものはありません。オンチェーン決済には単純なBIP21 URI、ライトニングにはBOLT11とBOLT12のインボイス、再利用可能な宛先にはBIP352のサイレントペイメントが使われます。いずれも認証局に依存しません。

関連用語

開発者向けリファレンスのその他の用語

このページを英語で読む