Ordinals 主域名协议 (方案B, Beta)
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. 一些示例
钱包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"。
4. API
查询一个钱包对应的主域名:
HTTP 方法: Get
目前支持的 Ordinal 域名协议: BtcName (.btc)、SatsNames(.sats)
一个返回主域名的示例:
https://btcnameapi.com/api/v1/primary_name/query?address=bc1pw9e4d928rsw2x4ma0f9z9kvptt0ycypsyuc9s049y4usha3w946snqc5yh
一个返回空结果的示例:
https://btcnameapi.com/api/v1/primary_name/query?address=bc1pwp3aycchale8k9l6d9kquxhj86ze4dsqmkre7ufqymrq87uw66xs5us7w4
5. 讨论
本协议还处于草案阶段,欢迎通过BtcName Discord primary-name频道讨论和完善本协议。
BtcName Discord : https://discord.gg/eNERqJU85x
Last updated