协议演进 / BIP/比特币改进提案 / BIP-122
BIP-122
定义 blockchain: URI 方案,让区块、交易与地址的引用统一交给用户自己偏好的区块链浏览器打开。本 BIP 目前处于草案状态。
一、档案卡
| 编号 | BIP-122 |
|---|---|
| 标题 | URI scheme for Blockchain references / exploration |
| 作者 | Marco Pontello <[email protected]> |
| 指定日期 | 2015-08-29 |
| 层级 | Applications(应用) |
| 类型 | Specification(规范类) |
| 状态 | Draft(草案) |
| 阅读版 | https://bips.dev/122 |
| 官方原文 | https://github.com/bitcoin/bips/blob/master/bip-0122.mediawiki |
二、放在哪一族
应用层的 URI 方案族,与支付用的 BIP-21(bitcoin:)、付款证明请求用的 BIP-121(btcpop:)并列,但用途正好错开:那两者是“发起动作”,BIP-122 是“引用与查看”——它不要求付款、不要求证明,只表达“我想看这条链上的这个对象”。
它指向的对象是区块链浏览器(explorer)与本地工具,而不是某个具体网站。这与 BIP-120、BIP-121 一样同出 2015 年那批应用层小规范,原文的讨论出处是 2015 年 8 月的 bitcoin-dev 邮件列表。
三、它要解决什么
原文指出的痛点很具体:用户想看一笔交易或一个区块的详情时,客户端通常随手指给一个区块链浏览器,或者给一列备选让用户挑;帖子与消息里引用某笔交易、某个区块时也常常根本不给链接。大量时候,用户只能复制哈希再粘贴到浏览器里——在移动设备上尤其别扭。
统一的 blockchain: 链接把选择权交回用户:引用方只管写标准链接,用户点开时由自己偏好的工具(网页服务或本地应用)接管。钱包等工具的开发者也不必再为“接哪家浏览器”操心,更不必给用户维护一列备选。
四、规则本身
4.1 URI 形式
blockchain:[//<chain>]/<tx|block|address>/<hash>
- chain:可选。目标链的 chain ID(见 4.2),含前导零;省略时默认比特币主网;
- type:必填,三选一——
tx表示交易,block表示区块(哈希或高度均可),address表示地址; - hash:必填,所引用对象的哈希(含前导零),区块也可以给高度。
原文给出的 ABNF 文法为:
blockchainuri = "blockchain:" ["//" chain] "/" object
object = ("tx" "/" hash) / ("block" "/" (hash / blockheight)) /
("address" "/" address)
chain = hash
hash = 64HEXDIG
blockheight = 1*15DIGIT
address = base58
4.2 chain ID 如何定义
一条链的 chain ID 是其创世区块的区块哈希;分叉链则用分叉后第一个区块的哈希。原文给出的例子:比特币主网为 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f,测试网为 000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,regtest 为 0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206。这样任何链(包括从其他链分叉出去的链)都有天然唯一、不用注册的标识。
4.3 示例
- 主网交易:
blockchain:/tx/b462ae6eb8bdae2e060239a2a3ea5d9c3e0f9ef34d9717beb2dcf0ed42cee7da - 主网区块可用哈希或高度:
blockchain:/block/372338 - 主网地址:
blockchain:/address/16EW6Rv9P9AxFDBrZV816dD4sj1EAYUX3f - 测试网交易须带 chain ID:
blockchain://000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943/tx/…(完整串见原文)
4.4 生态如何分工
原文设想的分工是:引用方(钱包、帖子、消息)只生成 blockchain: 链接;区块链浏览器在用户首次访问其网站或安装其应用时,主动向系统注册为该 scheme 的处理者(尚无人注册时也可自荐)。用户最终用哪个浏览器打开,取决于自己的注册选择,而不是引用方的安排。原文附有一个演示用的 URI 处理器作为示例实现。
五、谁必须动
普通持币人:可受益的一方。装好自己偏好的浏览器后,点任何 blockchain: 链接都能用顺手的工具打开,不再复制粘贴哈希。
钱包与内容工具开发者:引用链上对象时改生成 blockchain: 链接,不再硬编码某家浏览器的网址,也不用维护备选列表。
区块链浏览器与本地应用开发者:把自己的服务注册为 blockchain: scheme 的处理者即可承接全网的这类引用。
全节点与矿工/共识层:完全不动。纯应用层的链接格式约定,不涉协议与网络规则。
六、现在算不算数,以及一个常见误读
状态为 Draft(草案),仍是草案、未激活——这里的“未激活”指它没有成为被普遍实现的通行标准:现实中引用交易与区块,主流做法仍是直接给某家区块链浏览器的 https 链接,blockchain: scheme 并未被钱包与浏览器广泛注册与支持。它仍是一份把问题与解法都写清楚的完整规范。
常见误读:“blockchain: 链接和 bitcoin: 链接是一回事,点开会付款。”不对。bitcoin: 是支付链接,指向收款地址并发起付款;blockchain: 只是引用链接,指向交易、区块或地址供查看,本身不发起任何支付动作。两者的 scheme、参数与处理者都不同。
七、延伸
- 阅读版:https://bips.dev/122
- 官方原文:https://github.com/bitcoin/bips/blob/master/bip-0122.mediawiki
- 相关:BIP-21 URI 方案、BIP-121 付款证明 URI 方案
- 仓库总目录:https://github.com/bitcoin/bips
