Appearance
域名服务
域名服务是一个SPL程序,用于发行和管理域名、Solana公钥、URL、Twitter用户名、IPFS CID等内容的所有权。
该程序的目标是创建一种简单的方法,通过各种链接来识别 Solana 公钥。例如可以通过浏览器扩展实现DNS、公钥等查找。
当然也可以有更广泛的用途。
关键点:
- 域名(Name)是一个字符串,它映射到可以保存数据的记录(程序派生帐户)。
- 每个域名属于特定的类别,且有特定的所有者,两者都由其公钥标识。一个域名的类别需要签名才能发放这个域名。
- 域名可以有一个父域名,由其记录的地址标识。父域名的所有者(如果存在)需要签名才能发放子域名。
- 域名注册表的数据由类别密钥对控制,或者当设置为
Pubkey::default()
时,由域名所有者的密钥对控制。 - 只有所有者可以删除域名注册表。
注意事项和应用场景:
- 域名声明:可以任意设置一个类别为顶级域名(TLD)类别。该类别中的域名只能在类别密钥对(即管理员)的许可下发放,管理员可以确保 TLD 域名为
".something"
类型。从那时起,可以创建并拥有".sol"
的 TLD,并创建 ".sol" 子域名类别,通过将父域名设置为".sol"
注册表的地址来管理"something.sol"
子域名的发放。
一个离线浏览器扩展可以类似于 DNS 解析用户的 SPL 域名服务 URL 输入,沿着域名链解析,验证域名是否存在并具有正确的父子关系,最后使用最后一个子域名的数据(或父母数据的组合)来解析此调用,指向实际的 DNS URL 或任何类型的数据。
尽管所有权和类别系统使特定类别的管理中心化,但创建新类别是无权限的,作为类别所有者,可以使用任何去中心化治理签名程序。
- 可以将 Twitter 添加为特定类别的域名。类别的权限人有权添加 Twitter 用户名域名。这可以通过要求用户发布他们的公钥或签名消息来验证 Twitter 账户。然后,持有私有签发权限密钥的机器人可以签名创建指令(元数据权限是已推文的公钥),并将其发送回用户,用户再提交给程序。在这种情况下,类别仍可以控制域名注册表的数据,而不是用户。
另一种使用域名服务程序的方法是创建一个域名(例如 "verified-twitter-handles"
),类别为 Pubkey::default()
,所有者为权限人。这样,已验证的 Twitter 用户名可以作为此父域名的子域名由所有者发放,同时允许用户修改其 Twitter 域名注册表的数据。