协议演进 / BIP/比特币改进提案 / BIP-15
BIP-15
为难记的比特币地址设计好记的别名系统,逐一比较 FirstBits、DNS 记录、服务器查询、HTTPS 服务与 Namecoin 等方案的可用性与安全性;最终未定成标准。本 BIP 目前处于已关闭状态。
一、档案卡
| 编号 | BIP-15 |
|---|---|
| 标题 | Aliases |
| 作者 | Amir Taaki <[email protected]> |
| 指定日期 | 2011-12-10 |
| 层级 | Applications(应用) |
| 类型 | Specification(规范类) |
| 状态 | Closed(已关闭) |
| 阅读版 | https://bips.dev/15 |
| 官方原文 | https://github.com/bitcoin/bips/blob/master/bip-0015.mediawiki |
二、放在哪一族
收款标识易用性这一族:管的是付款方在掏钱之前,怎么把“付给谁”表达出来。它与 BIP-13 那类地址格式文档分工不同——地址格式解决机器编码,别名解决人记不住的问题。
原文在文档开头就自注了后继方向:BIP-70(支付协议)可被视为 Aliases 的替代方案。本页的价值在于它对各候选方案的逐项利弊分析,而不是任何一套被定下来的格式。
三、它要解决什么
用原版比特币付款,必须有一串形如 1Hd44nkJfNAcPJeZyrGC5sKJS1TzgmCTjjZ 的地址。问题是地址不好记——原文的类比是:若没有域名,上网就得逐个输入网站的 IP 地址。
于是目标是设计一个比特币别名系统:用好记的名字解析出收款地址。原文开宗明义地提醒:这是一次不易回头、影响深远的协议级改动,必须稳健、安全,最好一次做对——因此文档用大篇幅“仔细论证”,比较多套方案的性质,而没有草率选定一套格式。
四、规则本身
本 BIP 的主体是对五套候选方案的逐项评估。以下按原文顺序提炼。
4.1 FirstBits:拿区块链当地址簿
原理:地址一旦收到过付款就记录在链上,即可证明它存在过。把地址转成小写,取其前几个唯一字符作为别名。原文示例:布拉格 brmlab 黑客空间的地址 1BRMLAB7nryYgFGrG8x9SYaokb8r2ZwAsX,别名即 1brmlab;配合 Vanitygen(靓号生成器)还能刻意生成有意义的地址。给钱时只需给出别名,省去手敲全址、扫码或上网复制。
原文结论是拒绝,理由有三:
- 能生成的别名受算力限制,想要的完整别名往往只能近似,且耗能;
- 扩展性极差:每个索引/查询节点要跟踪有史以来的每个地址并快速查询,地址数量随网络效应急剧增长,方案将不可行;
- 基于部分默克尔根的轻客户端存不起全部地址,只能依赖可信第三方查询——这一点比其他问题更致命。
4.2 DNS TXT 记录
把别名到地址的映射放进域名的 TXT 记录(具体格式不在本文范围)。问题:
- 可用性:需要用户会配置 DNS 记录与相应工具;
- 安全性:DNS 按设计就是不安全的,同网络者可伪造记录;DNSSEC 自 1990 年代起一直在修补与推广,但截至 2011 年 12 月仍非互联网事实标准,且不少注册商只提供网页界面,未必能配 DNSSEC;
- 更新慢:记录变更生效需要时间,这会促使人们不在每笔交易换新地址,带来安全问题。
4.3 服务器服务
用域名查主机、再连固定端口取地址:付款给 [email protected] 时,客户端先用 DNS 找到 bar.net 的 IP,再连其 4567 端口询问用户 foo 的地址,服务器返回地址或错误码后断开。映射的存储与修改由服务方自理,可配网页前端。
优点是灵活性与扩展性都好,增改别名容易、跑服务便宜。缺点是仍依赖 DNS、同样可被伪造,因此同样需要 DNSSEC。
4.4 HTTPS Web 服务
在服务器方案上用 HTTPS 加密连接,并借证书机构(CA)体系解决伪造问题:有人在本地网络冒充域名时会报错。
流程:把 [email protected] 在最后一个 @ 处拆成用户名与域名,客户端构造查询:
https://foo.org/bitcoin-alias/?handle=genjix
服务器返回收款地址。每次查询返回新地址还是从地址池取、映射如何开通与管理,都留给各站点的运营政策,本文故意不作规定。原文评价:网站式服务搭建简单、成本低、现成的免费服务商很多,任何人用一个可编辑的脚本就能给自己开别名;要做命名服务也可接各种数据库后端扩展。原文还附了一份朴素实现的示例代码(用 curl 完成句柄拆分与 GET 查询,并演示如何在发送 RPC 中先判断输入是否含 @、是别名则先解析再付款)。
4.5 两条附带线索
- IP 交易:一种已禁用、可能被弃用的旧交易形式,直接给 IP 地址付款、连接对方节点取公钥,全程无认证、可被中间人攻击。本文设想用 DNS 解析 IP 交易,并把公钥存进 DNS TXT 记录:后续 “reply” 消息须与该公钥相符,首次使用像 SSH 一样需人工确认接受,以缓解中间人问题。
- Namecoin ID:用 Namecoin 区块链把别名与比特币地址关联,比特币客户端查询 Namecoin 节点,取回结构化数据中的 bitcoin 地址。优点是去中心化命名、无需信任外部服务器或实体,可用性与进入门槛都好;格式可扩展——例如记录中同时给出取址 URL 与签名地址(signedWith),查询返回的地址可用 verify_message 校验未被替换;还可按客户编号动态取址、或用 useOnce 等字段控制复用。原文链接了 Namecoin ID 的规范作进一步说明。
五、谁必须动
普通持币人/付款方:受益方——只需输入 name@domain 形式的别名;但也承担解析环节被欺骗的风险,因此解析走哪条路、是否加密校验,直接关系其资金安全。
钱包客户端开发者:实现别名解析(识别 @、拆分句柄与域名、发起查询、校验返回),并决定在各方案之间如何取舍。
别名服务运营者/域名持有者:维护别名到地址的映射、提供查询服务;用 DNS 路线者还须处理好 DNSSEC 等安全配置。
共识层与节点:无变化。别名是链下的名字解析,不碰地址与交易的共识规则。
六、现在算不算数,以及一个常见误读
状态为 Closed:这份文档逐一论证了多套方案,却没有把任何一套定成全网标准,别名系统也就没有按 BIP-15 落地。原文在页首已注记 BIP-70 支付协议可视为其替代方向——后来比特币处理“如何向对方正确收款”的主流路径,走的是支付请求而不是给地址起别名。它留下的分析框架(可扩展性、可信第三方依赖、伪造与中间人风险)至今仍是评估任何命名/收款标识方案的清单。
常见误读:
“别名就是另一种地址,输别名和输地址一样安全。”
不对。原文通篇在比的正是解析环节引入的新风险:地址是自包含的,抄对即付对;别名必须经过一次查询才能变成地址,查询若走不安全的 DNS,就可能被同网络者伪造、把钱引向别处——这正是它逐案比较加密与校验手段、且对多数方案持保留态度的原因。
七、延伸
- 阅读版:https://bips.dev/15
- 官方原文:https://github.com/bitcoin/bips/blob/master/bip-0015.mediawiki
- 相关:BIP-70(支付协议,原文注记的替代方向)
- 仓库总目录:https://github.com/bitcoin/bips
