Name Service
Last updated
Last updated
在web3系统中,地址通常作为用户的身份标识。然而地址的可读性比较差,拿以太坊上的地址为例,一串16进制的数字,长度为40。不便于作为社交应用的身份展示。
为此,我们提供一个Relation Name Service合约,将可读名称(比如 "relation.soul")解析为计算机可以识别的表示符。
同时,我们利用Arweave作为去中心化存储,实现身份属性的扩展,构建完整的profile。用户可以将个人的其他信息存储到Arweave,并在Name Service合约上存储Arweave交易哈希。
Relation Name Service是Relation Protocol中的重要对象,RNS自身是一个SBT,该SBT允许让你控制你在Relation网络中的基础社交身份数据。
Name Service SBT被个人地址拥有,它包含以下两种状态:
hold:hold状态下 ,Name Service SBT可以被转移,无法通过该名称搜索或查询到对应的地址。
resolved:Name Service SBT的只有地址通过resolve动作将token与Soul绑定后,视为name与个人地址的绑定,此时,Name Service SBT与地址在社交网络中可以相互映射。resolved状态的Name Service SBT 不可被转移。
为了使社交图谱的推荐和查询可以得到唯一的结果,一个地址可以拥有多个Name Service SBT,但只能同时resolved一个。
schema 前缀列表
class
:Soul表示接受和绑定域名解析的地址;
:Domain用于表示域名
predicate
p:hold表示地址持有域名,并未解析
p:resolved表示地址已经与域名建立联系,可通过域名解析出地址。
p:profileURI 表示用户的profileURI
Name Service的合约接口如下:
完整的合约代码可访问:
我们对Name Service做了一些规则设置:
域名默认最小长度为3个字符
域名只有设置解析之后,才能被合约正确解析。设置解析有两个方式:
register时即设置解析
register之后,调用setNameForAddr设置解析
如果当前域名已经设置了解析,需要先解绑原地址,才能重新设置
合约默认transfer开关关闭,即所有token不能transfer。如果需要打开,可以调用setTransferable方法进行设置
只有没设置解析的token才能被transfer
我们给出Relation Name Service的。 schema以ttl文件的形式保存至Arweave,交易哈希将作为schemaURI,在初始化合约时传入,参数示例: