Ordinals 主域名协议 (方案B,草案)

1. 背景

比特币生态目前还没有主域名协议,与比特币相关的区块链浏览器、第三方NFT市场和DApp网站无法像以太坊那样,将用户的钱包地址显示为更易读的名字。如果比特币生态系统中有一个主名称协议,它就可以允许一些钱包地址以更友好的形式在比特币社区内传播,并进一步扩展到非比特币社区,从而增强比特币社区的影响力。

目前已有多个基于Ordinals 的域名协议,包括 .btc, .sats, .bitmap, .unisat, .x 等。期望能够有一个主域名协议兼容主流的 Ordinals名称协议,以降低各方到开发和集成成本。

2. 核心规则

2.1 Ordinals 主名称定义

对于一个 Ordinals 域名 (例如 abc.btc) 的transfer 事件, 会有 "from地址" 和 "to 地址". 一个 Ordinals 域名转移后,如果"from 地址"和 "to 地址"相同, 这个域名就会成为钱包的主域名。也就是说,通过将钱包下的某个Ordinals 域名做自转操作,这个域名就会成为钱包的主域名。

备注:将域名映射为钱包地址, 如通过 abc.btc 得到对应的钱包地址bc1pk0e02kpy2kp2sngkvgpzqh6mhr50k7x2uxkgdxp467frfs9725ws00k89e,称为正向解析;根据钱包地址 bc1pk0e02kpy2kp2sngkvgpzqh6mhr50k7x2uxkgdxp467frfs9725ws00k89e 显示名称 abc.btc ,称为为反向解析。正向解析时,多个域名可以指向同一个钱包地址;但反向解析时,一个钱包地址只能显示一个名字,所以反向解析也称为主域名。

2.2 以最新的为准

钱包的主域名可能会发生变化,如果将不同的域名做自转操作,最后自转的那个域名会成为钱包的主域名。

例如, 钱包A名下有 a.btc 和 b.btc, 先将 "a.btc"做自转操作,再将 "b.btc" 做自转操作,那么最终 "b.btc" 会成为钱包A的主域名。

2.3 协议生效的区块高度

待定

2.4 最大主域名长度

主域名主要用于代替可读性不好的钱包地址,因此太长的名字并不适于用于主域名。

我们将主域名的最大长度设置为 128 。

2.5 支持的地址类型

Native Segwit( 以bc1q开头) 和 Taproot( 以 bc1p开头).

理论上,本协议可以支持所有BTC 钱包地址格式,为了减少非本意的设置主域名操作,暂时仅支持bc1q和bc1p钱包地址格式。

3. 已支持本协议的 Ordinals 域名

  • BtcName (.btc)

如果其他 Ordinals 域名准备支持此协议,欢迎联系 BtcName 社区成员。

4. 一些示例

  • 钱包A有"a.btc",钱包将 "a.btc"做自转操作后,钱包 A 的主域名是 "a.btc"。

  • 钱包A有 a.btc 和 b.btc, 先将 "a.btc"做自转操作,再将 "b.btc" 做自转操作,那么最终 "b.btc" 会成为钱包A的主域名。

  • 钱包A有"a.btc",钱包将 "a.btc"做自转操作后,将 "a.btc" 转给了钱包B, 钱包B又将"a.btc" 转给钱包A,此时钱包A没有主域名。

  • 如果 Sats Names 支持本主域名协议,并且钱包A有"a.btc"和"b.sats"。钱包A 先将"a.btc"做自转操作,后将"b.sats"做自转操作,最终钱包A的主域名是"b.sats"。

5. API

查询一个钱包对应的主域名:

一个返回主域名的示例:

https://btcnameapi.com/api/v1/primary_name/query?address=bc1pw9e4d928rsw2x4ma0f9z9kvptt0ycypsyuc9s049y4usha3w946snqc5yh

{
    "code": "0",
    "msg": "success",
    "data": {
        "primary_name": "163.btc"
    }
}

一个返回空结果的示例:

https://btcnameapi.com/api/v1/primary_name/query?address=bc1pwp3aycchale8k9l6d9kquxhj86ze4dsqmkre7ufqymrq87uw66xs5us7w4

{
    "code": "0",
    "msg": "success",
    "data": {
        "primary_name": ""
    }
}

6. 讨论

本协议还处于草案阶段,欢迎通过BtcName Discord primary-name频道讨论和完善本协议。

BtcName Discord : https://discord.gg/eNERqJU85x

Last updated