BIP70 支付协议这台机器已经被比特币核心拆除(时间线见 比特币放弃的支付协议:BIP70 与 Core 0.20 的删除记录),但给它输送消息的一批小零件至今状态还是 Deployed,BIP-71 就是其中最不起眼的一件:Payment Protocol MIME types,2013 年 7 月 29 日立项,作者同样是给支付协议画主图的 Gavin Andresen。它回答的问题只有一个——支付协议的那三种二进制消息,通过 HTTP 或邮件传输时,Content-Type 该写什么。
三个媒体类型
BIP-71 的原话是把支付协议的三类消息各自绑定一个 MIME 媒体类型(MIME 本体定义在 RFC 2046):收款请求 PaymentRequest 用 application/bitcoin-paymentrequest,付款回执 Payment 用 application/bitcoin-payment,商户对回执的确认 PaymentACK 用 application/bitcoin-paymentack。规范正文一共就给了一张三行表,加一句关键说明:支付协议消息是二进制编码。文档里还附了一个完整示例——商户服务器发起收款请求时,在二进制数据前挂两行头:Content-Type: application/bitcoin-paymentrequest 与 Content-Transfer-Encoding: binary。第二行是给邮件场景的:MIME 的邮件框架要求非文本负载声明传输编码,binary 表示逐字节原样搬运。

它在整条支付链路里的位置
把 BIP70 系列拆开看,各件的分工很清楚:协议本体(消息结构、状态机、证书签名)是 BIP-70;把请求挂到 bitcoin: 链接上的 r= 参数扩展是 BIP-72;允许收款端点按请求方能力回不同内容的是 BIP-73(本批另有专文《扫码付款开出的是网页:BIP-73 用 Accept 头做内容协商》);BIP-71 则负责让每一条 HTTP 响应和每一封邮件”自报家门”。媒体类型本身不带任何认证功能——Content-Type 是发送方自己声明的标签,收到标着 application/bitcoin-paymentrequest 的字节流,不代表内容可信,可信与否取决于 BIP-70 消息内的 X.509 证书链,这套信任体系正是支付协议最终败北的原因(详见 BIP70 支付协议兴衰史:比特币收款账单为什么没能标准化)。
Deployed 状态怎么读
BIP 体系里 Deployed 的含义是”提案已经被采纳部署”,而 BIP-71 部署的对象只是一份命名约定:即便解析 application/bitcoin-paymentrequest 的软件全数退场,这三个类型名在文档层面的定义仍然成立,历史归档的邮件和抓包里也随时可能再遇到它们。对今天的技术读者,这条事实有一个实际用途:审计遗留收款系统或分析老抓包时,看到这三个媒体类型可以直接反推协议族归属,不必依赖实现方备注。反过来,任何新系统引用这些名字时,也应理解它们背后绑定的是一套已停止演进的 Protobuf 消息定义,而不是一种通用账单格式。
消息三件套的流水
为了把 71 号文档讲透,值得复述一遍它封装的三种消息在流水里各站哪个岗。第一步,商户生成 PaymentRequest:内含金额、时间戳、退款地址等字段,用证书签名;第二步,钱包付完款(或凑齐一组输出)后回一个 Payment 消息,携带真实的交易与必要的附加数据;第三步,商户回 PaymentACK 表示收讫,或带错误说明的 NAK 语义。BIP-71 只规定这三样东西上线传输时挂什么牌子,消息的字段、顺序、签名规则一概在 BIP-70。这也是好的规范拆分的示范:格式与传输分文件,各改各的不用互相等待。
为什么必须是”贴标签”而不是”猜内容”
支付协议的三种消息是 Protocol Buffers 二进制编码,肉眼和文本工具都读不出名堂。HTTP 与邮件这类通用传输管道本身不认识任何比特币概念,只按标签分发:浏览器按 Content-Type 决定渲染还是下载,邮件客户端按它决定内嵌还是附件,中间代理按它决定是否做字符集转换——对二进制负载做错转换就会损坏消息。没有这层标签约定,支付请求经过任何一个中转环节都可能被当作文本”顺手转码”。BIP-71 的存在理由因此非常基础设施:让结构化支付消息能安全穿过为纯文本设计了一辈子的互联网管道。
与地址收款的关系
对普通用户,这场协议史能落成的唯一常识是:无论收款走的是裸地址、bitcoin: 链接,还是这套带证书的申请-回执流水,最终生效的都只有链上那笔交易。账单字段(金额、商户名、退款地址)全部是链下声明,钱包确认界面上逐项核对地址与金额,才是所有代次的收款协议共用的最后防线。相关语法边界见 bitcoin 链接是什么?比特币 URI 语法与 req 参数规则解读。
风险提示:本文为支付协议机制科普,不构成投资建议;媒体类型与协议支持状态以各软件当期文档为准,遗留系统对接前请先核验消息格式的实际版本。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。