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

BIP-122 区块链引用/浏览的 URI 方案

定义 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>

原文给出的 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 示例

4.4 生态如何分工

原文设想的分工是:引用方(钱包、帖子、消息)只生成 blockchain: 链接;区块链浏览器在用户首次访问其网站或安装其应用时,主动向系统注册为该 scheme 的处理者(尚无人注册时也可自荐)。用户最终用哪个浏览器打开,取决于自己的注册选择,而不是引用方的安排。原文附有一个演示用的 URI 处理器作为示例实现。

五、谁必须动

普通持币人:可受益的一方。装好自己偏好的浏览器后,点任何 blockchain: 链接都能用顺手的工具打开,不再复制粘贴哈希。

钱包与内容工具开发者:引用链上对象时改生成 blockchain: 链接,不再硬编码某家浏览器的网址,也不用维护备选列表。

区块链浏览器与本地应用开发者:把自己的服务注册为 blockchain: scheme 的处理者即可承接全网的这类引用。

全节点与矿工/共识层:完全不动。纯应用层的链接格式约定,不涉协议与网络规则。

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

状态为 Draft(草案),仍是草案、未激活——这里的“未激活”指它没有成为被普遍实现的通行标准:现实中引用交易与区块,主流做法仍是直接给某家区块链浏览器的 https 链接,blockchain: scheme 并未被钱包与浏览器广泛注册与支持。它仍是一份把问题与解法都写清楚的完整规范。

常见误读:“blockchain: 链接和 bitcoin: 链接是一回事,点开会付款。”不对。bitcoin: 是支付链接,指向收款地址并发起付款;blockchain: 只是引用链接,指向交易、区块或地址供查看,本身不发起任何支付动作。两者的 scheme、参数与处理者都不同。

七、延伸

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