协议演进 / BIP/比特币改进提案 / BIP-179

BIP-179 支付接收方标识符命名

提议把一次性使用的收款 address 改称为 invoice,强调它只对应一笔付款、而不像传统地址那样长期不变。本 BIP 目前处于已完成状态。

一、档案卡

档案卡
编号BIP-179
标题Name for payment recipient identifiers
作者Emil Engler <[email protected]>, Luke Dashjr <[email protected]>
指定日期2019-10-17
类型Informational(信息类)
状态Complete(已完成)
阅读版https://bips.dev/179
官方原文https://github.com/bitcoin/bips/blob/master/bip-0179.mediawiki

二、放在哪一族

术语与用户教育族,是全仓库最短的提案之一:它不提任何新格式、新字段或新规则,只给一个早已存在的字符串换个名字。同族的是 BIP-176(给 100 聪命名为 bits)这类“只动称呼”的文档——它们的共同点是:改的是人脑子里的模型,不是机器执行的协议。

本篇的词源在致谢里交代: “Bitcoin Invoice Address” 一词由 Chris Belcher 提出。地址格式本身的演进见 BIP-173 等文档,与本篇无关。

三、它要解决什么

比特币地址的设计意图是只用一次:每来一笔新付款,就应生成一个新地址。

但 “address(地址)” 这个词在日常生活里恰好暗示相反的性质:邮政地址、电子邮件地址、IP 地址(视服务商而定)——几乎所有叫“地址”的东西都很少变、甚至从不变。用户带着这种直觉使用比特币,就会自然地把一个地址存下来反复收款,与一次性使用的设计意图背道而驰。

本篇的动机就是把术语换成一个能暗示“只对应一笔交易”的词,让名字本身起教育作用。

四、规则本身

4.1 新术语

新词是:

Bitcoin Invoice Address

其中 “Bitcoin” 与 “Address” 两部分都是可选的;“Address” 后缀只应作为过渡步骤使用。由此得到四种合法说法:

定义:Bitcoin Invoice Address 是可用来表明一笔交易的预期接收方与用途的字符串——注意,这与今天所说的“地址”所指的东西完全相同,变的只有名字。

4.2 为什么保留两个可选部分

原文给出的理由分两边:

保留 “Bitcoin”:方便多币种钱包标明这属于比特币;也用来区分闪电网络发票(lightning invoice)与链上发票。

保留 “Address”(过渡期):不让用户面对一个全然陌生的新词;仍能传达“这是往哪儿发东西的地方”;并保持向后兼容——用户看到带 Address 的说法应能立刻认出它是什么,直到新词广为人知。

4.3 向后兼容

为避免混乱,后缀 “Address” 被允许保留,但原文明确写的是“允许、但不推荐”(permitted, but not recommended)。也就是说,长期方向是只说 Invoice。

五、谁必须动

普通持币人:无人必须改任何操作。只是将来在钱包里看到 “Invoice” 字样时,要知道它就是收款地址,按惯例仍应一笔付款用一个、不要重复使用。

钱包开发者:可自愿在界面文案中改用 Invoice 系称呼;不改也不违反任何协议,因为本篇不设机器可执行的规则。

全节点与矿工、共识层:完全无关。地址的生成、校验与上链形式没有任何变化。

六、现在算不算数,以及一个常见误读

状态为 Complete(已完成)。对这份纯术语提案来说,Complete 表示提案文本本身已经定稿:新词及其可选组合、过渡安排都写完了。它不意味着钱包界面已经普遍改口——原文没有任何强制条款,也无法强制;某款产品今天显示 “Address” 还是 “Invoice”,只能看该产品自己的文案,不能由本篇状态推出。

常见误读:

“Invoice 是一种和 address 不同的新东西,付款时要另外生成。”

不对。本篇的定义写得很清楚:Bitcoin Invoice Address 就是指今天那个字符串本身——用来表明交易接收方与用途的那串字符。换名不换物:不需要新格式、不需要转换工具,把旧地址叫作 invoice,它的功能与用法与从前完全一致。

七、延伸

本页内容整理自 bitcoin/bips 仓库与 bips.dev,事实已与仓库核对;解读仅供学习参考。