探讨基于Starcoin的Web3生态基础设施——去中心化域名系统
探讨基于Starcoin的Web3生态基础设施——去中心化域名系统
* 本文由Starcoin社区原创,社区投稿

starcoin_web3

Web3.0

从中本聪发表的比特币白皮书开始,一场互联网的变革就在悄无声息的发生。

人们沉浸在互联网生态的发展中,享受着web2.0 的交互,繁多的互联网生态也逐渐催生出了更为方便的移动互联网生态,但随着互联网生态的完善,各种弊端也被放大出来,由于互联网公司关闭一些服务,导致用户在这个公司产品的投入完全无效,用户没有办法访问这个产品,公司对于关闭服务的补偿也变成了检验良心的考验。由于web2.0中心化网络的服务较为集中,例如,在2021年6月,Fastly公司因软件漏洞而瘫痪,用户无法连接到如《纽约时报》、Twitch、Reddit网站等,去中心化系统可以有效避免这样的单点故障引起的全面崩盘。

但随着去中心化浪潮一波又一波的袭来,智能合约的出现带来了新的转机,人们可以通过合约来无信任的交互,使用机器固定的规则来约束人的交互行为,随后逐渐发展出各种生态如DAO(去中心化组织)、DeFi(去中心化金融)、质押稳定币和算法稳定币、隐私与数字基础设施、GameFi等等。

去中心化域名系统

域名系统(DNS)已经成为互联网的一个基本组成部分,人们不必再记住一些ip地址来访问某一个网站,随着网站服务器的升级,只需要域名系统中解析记录新的IP地址,就可以完成无感升级。

域名系统可以有不同的后缀名称,一般作为不同的应用场景,如org一般作为无盈利组织,com为全球性的网站,还有一些不同国家缩写有特殊含义的后缀如io,me等等。

对于处于Web3.0 生态中的我们来说,一个去中心化的域名系统也十分有必要,它可以运行在合约上以数字和字母随机组成的去中心化钱包地址翻译成以eth、stc、bit等结尾的域名,每个域名都可以被解析到一个固定的钱包地址上,大多数去中心化钱包地址都比较长,难以记忆,可读性差,使用过程中难免出错,转账或者提现过程中出现差错时,很可能造成资产损失并且理论上无法找回。

对于Web2.0的互联网产品一般用手机号或者用户名登录网站,但是在Web3.0中,需要通过钱包来登录,将不易读的钱包地址映射为一个个可以便于人类阅读的域名地址再进行相关操作,可以极大的方便记忆同时也方便分享。

大多数的去中心化域名系统不仅仅可以解析钱包地址,同时支持多种Web2.0的网站或者社交帐户地址,通过调用合约API的方式可以轻松的获取其他的信息,通过这种方式可以比较平滑的使用户切换到Web3生态上来。

starcoin_dns

Starcoin上如何实现去中心化域名系统

Starcoin采用Move语言作为合约语言,这使得生态上没有办法与EVM相兼容,虽然生态上不能快速移植,但是可以使用Move语言重新实现它。

在Move语言中最为不同的是对资源的处理,EVM的资源会存放在对应合约中,但是在Move里的资源是存放在个人账户中,这样的优点是用户可以清楚的知道资源的所有人,但这样也会有缺点,比如在域名解析的时候,需要查看域名归属人,但由于资源存放在个人账户中,合约没法知道域名现在正在哪一个账户中,所以需要使用一个公共账户(解析器角色)来存放所有域名的当前所有人,这样通过域名查找对应所有人,再从所有人的账户下找到该域名就可以了。

资源存放在用户下,用户可以通过不同的方式如区块浏览器,或者域名官网等方式获取当前域名的状态和解析情况,这样使得归属权清晰,不会出现EVM中由于忘记资产合约地址导致费时费力查找。对域名进行增加解析时对当前账户中的域名进行操作,结果可以实时在区块浏览器中查看,这样的体验也比EVM中要好。

域名还有一个问题就是过期的问题,在EVM中可以轻易做到修改归属人和过期时间,但是在Move中域名在用户的账户下,可以使用Move的特性对过期的域名进行转移操作,域名不可以被销毁只能被转移,将过期的域名从过期账户转移到新注册的账户,这样也有也可以实现EVM中的效果。

域名的解析可以采用RPC-API的方式进行解析,由合约实现查找函数,这样可以方便其它系统进行域名解析。

1643693979124

与Stdlib中的IdentifierNFT协议结合

在Starcoin的Stdlib中有许多关于NFT的协议,如果将域名系统与IdentifierNFT结合效果也十分不错,IdentifierNFT协议主要作用是作为一个特殊的标识符,而域名系统正巧也是一种特殊的标识,可以结合起来使得每一个用户可以绑定一个自己的域名,这样在链上交易或者做为web2.0与web3.0的桥梁也是十分合适的。

IdentifierNFT协议的特点就是每个用户只能有一个相同种类的NFT,这样也可以使得每个人仅拥有一个域名,在一定程度上可以阻碍了囤积域名的问题,让去中心化域名更为去中心化。

对于域名过期后他人注册的问题,也可以在合约中规定过期后取出归属人过期的域名,或者对域名停止解析。

IdentifierNFT协议默认支持了多种NFT的操作,如取出和存入、授权和撤销操作等

相对于自定义的结构体协议,采用IdentifierNFT协议会减少很多不必要的问题,上面说到的存取和授权问题如果自己实现需要大量的代码,Stdlib也有许多其他的NFT协议,可以满足不同需求。

随着Starcoin生态的不断完善,相信会有更多的Move开发者尝试并使用Move语言开发更多有趣的应用。