CNS架构

介绍cns合约的功能、之间的调用过程

ENS有两个主要组件:注册器(registry)和解析器(resolver)。

CNS注册表由单个智能合约组成,该合约维护所有域和子域的列表,并存储有关每个域的三个关键信息:
  • 域的所有者
  • 域的解析器
  • 域下所有记录的缓存时间
域的所有者可以是外部帐户(用户)或智能合约。注册服务商只是一份智能合约,它拥有一个域,并向遵循合同中定义的一组规则的用户发出该域的子域。
CNS注册表中的域所有者可能:
  • 将解析器和TTL设置为域
  • 将域的所有权转移到另一个地址
  • 改变子域的所有权
CNS注册器有意直接,并且仅存在从一个名称到负责其的解析器的映射。
解析器负责将名称转换为地址的实际过程。任何实现相关标准的合同都可以在CNS中充当解析器。通用解析器实施是为要求直接要求的用户提供的,例如为名称提供不经常更改的地址。
每个记录类型 - 加密货币地址等等 - 定义了解析器必须实现的方法或方法,以提供此类记录。可以通过标准化过程随时定义新的记录类型,而无需更改CNS注册器或现有解析器以支持它们。
在CNS中解决名称是一个两步的过程:首先,询问注册器对该名称负责的解析器,其次,请问该解析器以查询查询。
在上面的示例中,我们试图找到“ foo.eth”指向的地址。首先,我们询问注册器哪些解析器负责“ foo.eth”(node)。然后,我们查询该解析器的地址“ foo.eth”。
如果使用的是Text格式解析保存的数据,则可以对任意的key值(如 avatar 头像)进行映射

Namehash

智能合约中的资源限制使直接与可读的名称效率低下进行交互,因此CNS纯粹与固定长度的256位密码哈希一起工作。为了在仍保留其层次属性的同时从名称中得出哈希,使用了称为namehash的过程。例如,“ alice.cns”的名称为0x787192FC5378CC32A956DDFDEDBF26B24E8D78E40109ADD0EEA2C1A012C3DEC;这是仅在CNS内部使用的名称的表示。
NameHash是一个递归过程,可以为任何有效域名生成唯一的哈希。从任何域的名字开始 - 例如,“ alice.cns” - 可以得出任何子域的名称 - 例如'iam.alice.cns' - 而不必知道或处理原始的人类可读名称。正是这种属性使CNS可以提供​​层次结构系统,而无需在内部处理可读的文本字符串。
在使用NameHash进行哈希时,首先使用称为UTS-46归一化的过程将名称进行标准化。这样可以确保对上和下案例的名称进行等效处理,并禁止无效的字符。任何哈希和解决名称的东西都必须首先将其归一化,以确保所有用户都能对CNS进行一致的视图。

流程图

域名搜索注册
域名管理