操作

注册名称

名称注册通过调用相应的 BNSv2 合约函数来执行。调用者将成为该名称的所有者。

高级流程:

  1. 检查可用性

  2. 提交注册交易

  3. 支付所需的 STX 费用

  4. 等待确认

  5. 名称分配给调用者主体(principal)

路径 1 — 预下单 + 注册(安全,防止抢注):

  1. 生成完全限定名称的加盐哈希:hash160(name.namespace.salt)

  2. 提交包含哈希和要销毁的 STX 的名称预下单(name-preorder)

  3. 至少等待 1 个区块

  4. 提交名称注册(name-register),包含实际名称、命名空间和盐值

  5. 合约验证哈希匹配,销毁 STX,将 NFT 铸造给调用者

路径 2 — 快速认领(单笔交易,易被抢注):

  1. 提交 name-claim-fast,包含名称、命名空间和接收者

  2. STX 在一步中被销毁,NFT 立即铸造

  3. 风险:名称在确认前在内存池中可见,可能被抢注。对于托管命名空间:使用 mng-name-preorder + mng-name-register (不销毁 STX,管理者控制定价)。

更新记录

一旦名称被拥有,所有者可以通过合约调用更新记录。更新通过 zonefile-resolver 合约,通过 update-zonefile(name, namespace, new-zonefile)。调用者必须是名称所有者或命名空间管理者(对于托管命名空间)。提及 8KB 限制。

示例记录更新可能包括:

  • 设置 Stacks 地址

  • 更新配置文件元数据

  • 添加自定义键值对

只有当前所有者可以修改记录。

转移名称

名称是可转移的数字资产。 transfer(id, sender, recipient) 在 BNS-V2 合约上。对于托管命名空间,使用 mng-transfer(id, sender, recipient),但仅在管理者转移未被通过 turn-off-manager-transfers .

关闭的情况下可用。

  • 所有者可以:

  • 将所有权转移给另一个主体

  • 在其他合约中使用名称

将名称集成到市场或身份系统中

由于所有权是 Clarity 的原生特性,转移是无需信任的(trustless)。

解析名称

解析涉及查询 BNSv2 合约以获取名称存储的记录。 resolve-name(name, namespace) zonefile-resolver

对应的 BNSv2 SDK 函数:, resolveNameZonefile(), getNameInfo().

getPrimaryName()

  • 应用可以:

  • 通过 RPC 直接调用合约

  • 使用 SDK 助手函数

使用索引器以便捷操作

解析是确定性的,不依赖于集中式服务器。

定价

  • 名称价格基于以下因素计算:

  • 名称长度

  • 是否包含元音

  • 是否包含非字母字符

  • 命名空间特定的定价函数

对于托管命名空间,定价将由命名空间管理者合约直接处理

NFT 集成

  • 每个名称都铸造成 NFT,从而允许:

  • 易于转移所有权

与 NFT 市场及其他应用集成

续期 非托管命名空间的名称在生存期区块后过期。所有者在过期后有 5,000 个区块的宽限期(约 34 天)通过.

  • name-renewal(namespace, name)

  • 续期会根据当前名称价格销毁 STX。

  • 如果在宽限期内未续期,名称将变为任何人可注册。

托管命名空间的名称不会过期(renewal-height = 0)。

市场

  • BNSv2 拥有内置市场:list-in-ustx(id, price, commission-trait)

  • ,将名称列为出售unlist-in-ustx(id)

  • ,移除挂单buy-in-ustx(id, commission-trait)

  • ,购买已挂单的名称。佣金通过 SIP-009 的 commission trait 处理。

对于托管命名空间,管理者合约必须封装这些函数。

  • 设置主要名称 set-primary-name(id)

  • 在 BNS-V2 上允许所有者将其某个名称指定为主要身份。

  • 这是钱包和应用用于显示的名称。只有每个地址可以有一个主要名称。

最后更新于

这有帮助吗?