操作

注册名称

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

高级流程:

  1. 检查可用性

  2. 提交注册交易

  3. 支付所需的 STX 费用

  4. 等待确认

  5. 名称被分配给调用者主体

路径 1 — 预定 + 注册(安全,可防止抢跑):

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

  2. 提交名称预定,附带哈希和要销毁的 STX

  3. 至少等待 1 个区块

  4. 提交名称注册,使用实际名称、命名空间和盐值

  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 中,转移是无需信任的。

解析名称

解析涉及查询 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 佣金 trait 处理。

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

设置主名称

  • set-primary-name(id) 在 BNS-V2 上允许所有者将其某个名称指定为其主身份。

  • 钱包和应用会使用它进行显示。

  • 每个地址只能有一个主名称。

最后更新于

这有帮助吗?