NameService 采用 Move 合约语言分模块开发,支持灵活的扩展功能
v0.1 版本将提供 NameService 无限制的域名注册、 STC 地址解析、灵魂绑定NFT、反向解析功能
v0.1 版本将在Starcoin Proxima Test Net 上线测试,测试过程中接口及合约地址可能有变化,因为 Proxima Test Net 特性,可能会有 Proxima 网络重置情况发生,您的 Proxima Test Net NameService 可能会丢
合约提供的接口
1 - 注册域名(write):
0xda459d2aa5d58b262038c715a64f6ea5::StarcoinNameServiceScript::register
public (script) fun register(sender:signer, name: vector<u8>,registration_duration: u64)
参数说明:
name: vector<u8>
域名:采用 UTF-8 编码的字符串,域名以 “.stc” 结尾,仅支持一级域名,UTF-8 字符长度应该在 4~19 位,域名在编码前需经过idna-uts46-hx 处理
示例:"starcoin.stc" "test.stc"
错误示例:"中文域名.stc"
registration_duration: u64
注册时长:以秒为单位,最小注册时长需要大于 180 天 (60 * 60 * 24 * 180 = 15,552,000 sec )
2 - 设置反向解析(灵魂绑定模式 NFT)(write)
0xda459d2aa5d58b262038c715a64f6ea5::StarcoinNameServiceScript::use_domain
public (script) fun use_domain<ROOT: store>(sender:signer, id: u64)
泛型说明:
ROOT: store
确定顶级域名:根据需要绑定的 NameSerivce NFT 确定顶级域名,并传入 0xda459d2aa5d58b262038c715a64f6ea5::Root 模块下的 Struct
示例:需要绑定 NFT 顶级域名为 “stc“,泛型传入
0xda459d2aa5d58b262038c715a64f6ea5::Root::STC
错误示例:需要绑定 NFT 顶级域名为 “move“,泛型传入
0xda459d2aa5d58b262038c715a64f6ea5::Root::STC
参数说明:
id: u64
NFT id : 需要绑定的 NameService NFT 的 id
示例:需要绑定的 NameService NFT 的 id 为 1,参数传入 1
3 - 取消反向解析(取消灵魂绑定模式 NFT)(write)
0xda459d2aa5d58b262038c715a64f6ea5::StarcoinNameServiceScript::unuse_domain
public (script) fun unuse_domain<ROOT: store>(sender:signer)
泛型说明:
ROOT: store
确定顶级域名:根据需要取消的 NameSerivce NFT 确定顶级域名,并传入 0xda459d2aa5d58b262038c715a64f6ea5::Root 模块下的 Struct
示例:需要取消 NFT 顶级域名为 “stc“,泛型传入
0xda459d2aa5d58b262038c715a64f6ea5::Root::STC
错误示例:需要取消 NFT 顶级域名为 “move“,泛型传入
0xda459d2aa5d58b262038c715a64f6ea5::Root::STC
4 - 修改解析地址(write)
0xda459d2aa5d58b262038c715a64f6ea5::StarcoinNameServiceScript::change_NFTGallery_stc_address
public (script)fun change_NFTGallery_stc_address<ROOT: store>(sender:signer,id:u64,addr:address)
泛型说明:
ROOT: store
确定顶级域名:根据需要操作的 NameSerivce NFT 确定顶级域名,并传入 0xda459d2aa5d58b262038c715a64f6ea5::Root 模块下的 Struct
示例:需要操作 NFT 顶级域名为 “stc“,泛型传入
0xda459d2aa5d58b262038c715a64f6ea5::Root::STC
错误示例:需要操作 NFT 顶级域名为 “move“,泛型传入
0xda459d2aa5d58b262038c715a64f6ea5::Root::STC
参数说明:
id: u64
NFT id : 需要操作的 NameService NFT 的 id
示例:需要操作的 NameService NFT 的 id 为 1,参数传入 1
addr:address
STC 地址:需要解析到的地址
示例:希望解析到 0xda459d2aa5d58b262038c715a64f6ea5,填写 0xda459d2aa5d58b262038c715a64f6ea5
5 - 获取反向解析域名(read)
0xda459d2aa5d58b262038c715a64f6ea5::StarcoinNameServiceScript::change_NFTGallery_stc_address
public fun resolve_domain_name<ROOT: store>(addr:address):vector<u8>
泛型说明:
ROOT: store
确定顶级域名:根据需要解析的 NameSerivce NFT 确定顶级域名,并传入 0xda459d2aa5d58b262038c715a64f6ea5::Root 模块下的 Struct
示例:需要解析 NFT 顶级域名为 “stc“,泛型传入
0xda459d2aa5d58b262038c715a64f6ea5::Root::STC
错误示例:需要解析 NFT 顶级域名为 “move“,泛型传入
0xda459d2aa5d58b262038c715a64f6ea5::Root::STC
参数说明:
addr:address
STC 地址:需要解析的地址
示例:希望解析 0xda459d2aa5d58b262038c715a64f6ea5 的主域名,填写 0xda459d2aa5d58b262038c715a64f6ea5
返回值:
vector<u8>
反向解析的域名:返回该 地址解析到的域名
6 - 域名解析地址(read)
0xda459d2aa5d58b262038c715a64f6ea5::StarcoinNameServiceScript::resolve_4_name
public fun resolve_4_name<ROOT: store>(name:vector<u8>):address
泛型说明:
ROOT: store
确定顶级域名:根据需要解析的 NameSerivce NFT 确定顶级域名,并传入 0xda459d2aa5d58b262038c715a64f6ea5::Root 模块下的 Struct
示例:需要解析 NFT 顶级域名为 “stc“,泛型传入
0xda459d2aa5d58b262038c715a64f6ea5::Root::STC
错误示例:需要解析 NFT 顶级域名为 “move“,泛型传入
0xda459d2aa5d58b262038c715a64f6ea5::Root::STC
参数说明:
name: vector<u8>
域名:采用 UTF-8 编码的字符串,域名以 “.stc” 结尾,仅支持一级域名,UTF-8 字符长度应该在 4~19 位,域名在编码前需经过idna-uts46-hx 处理
示例:"starcoin.stc" "test.stc"
错误示例:"中文域名.stc"
返回值:
address
解析地址:返回该 域名解析的 STC 地址
7 - 获得域名的过期时间(read)
0xda459d2aa5d58b262038c715a64f6ea5::StarcoinNameServiceScript::get_domain_expiration_time
public fun get_domain_expiration_time<ROOT: store>(name:vector<u8>):u64
泛型说明:
ROOT: store
确定顶级域名:根据需要解析的 NameSerivce NFT 确定顶级域名,并传入 0xda459d2aa5d58b262038c715a64f6ea5::Root 模块下的 Struct
示例:需要解析 NFT 顶级域名为 “stc“,泛型传入
0xda459d2aa5d58b262038c715a64f6ea5::Root::STC
错误示例:需要解析 NFT 顶级域名为 “move“,泛型传入
0xda459d2aa5d58b262038c715a64f6ea5::Root::STC
参数说明:
name: vector<u8>
域名:采用 UTF-8 编码的字符串,域名以 “.stc” 结尾,仅支持一级域名,UTF-8 字符长度应该在 4~19 位,域名在编码前需经过idna-uts46-hx 处理
示例:"starcoin.stc" "test.stc"
错误示例:"中文域名.stc"
返回值:
u64
过期时间:返回该 域名过期时间
8 - 获得全部的 NameService NFT info(read)!暂无
0xda459d2aa5d58b262038c715a64f6ea5::StarcoinNameServiceScript::get_all_domain_info
public fun get_all_domain_info<ROOT: store>(addr: address):vector<NFT::NFTInfo<SNSMetaData<ROOT>>>
泛型说明:
ROOT: store
确定顶级域名:根据需要获得的 NameSerivce NFT 确定顶级域名,并传入 0xda459d2aa5d58b262038c715a64f6ea5::Root 模块下的 Struct
示例:需要获得 NFT 顶级域名为 “stc“,泛型传入
0xda459d2aa5d58b262038c715a64f6ea5::Root::STC
错误示例:需要获得 NFT 顶级域名为 “move“,泛型传入
0xda459d2aa5d58b262038c715a64f6ea5::Root::STC
参数说明:
addr:address
STC 地址:需要获得的地址
示例:希望获得 0xda459d2aa5d58b262038c715a64f6ea5 的全部 域名信息,填写 0xda459d2aa5d58b262038c715a64f6ea5
返回值:
vector<NFT::NFTInfo<SNSMetaData<ROOT>>>
Info 数组:返回该地址全部的 NameSerivce NFT Info
9 - 获得域名注册信息以及解析地址(read)(之后可能持续会增加内部结构)
0xda459d2aa5d58b262038c715a64f6ea5::StarcoinNameServiceScript::get_domain_info
public fun get_domain_info<ROOT: store>(name:vector<u8>):Option::Option<DomainInfo>
泛型说明:
ROOT: store
确定顶级域名:根据需要获得的 NameSerivce NFT 确定顶级域名,并传入 0xda459d2aa5d58b262038c715a64f6ea5::Root 模块下的 Struct
示例:需要获得 NFT 顶级域名为 “stc“,泛型传入
0xda459d2aa5d58b262038c715a64f6ea5::Root::STC
错误示例:需要获得 NFT 顶级域名为 “move“,泛型传入
0xda459d2aa5d58b262038c715a64f6ea5::Root::STC
参数说明:
name: vector<u8>
域名:采用 UTF-8 编码的字符串,域名以 “.stc” 结尾,仅支持一级域名,UTF-8 字符长度应该在 4~19 位,域名在编码前需经过idna-uts46-hx 处理
示例:"starcoin.stc" "test.stc"
错误示例:"中文域名.stc"
返回值:
Option::Option<DomainInfo>
struct DomainInfo has copy,drop{
registryDetails : Registrar::RegistryDetails,
stc_address : address
}具体信息:返回该 域名注册信息
示例:
starcoin% dev call --function 0xda459d2aa5d58b262038c715a64f6ea5::StarcoinNameServiceScript::get_domain_info -t 0xda459d2aa5d58b262038c715a64f6ea5::Root::STC --arg b"iamtimhhh.stc"
{
"ok": [
{
"vec": [
{
"registryDetails": {
"expiration_time": 1687462137,
"id": 4
},
"stc_address": "0x7b61790fe2545ee8792d682699b1508a"
}
]
}
]
}