Skip to content

域名服务

域名服务是一个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 域名注册表的数据。