概念以及基本架构
Ethereum Name Service 也就是以太坊命名服务,对标DNS,但和DNS不同架构。就目前,我感觉ENS的存在让我不用保存记录冗长的地址或二维码了,但ENS的作用不止如此。
ens中存在两大架构,注册表和解析器。(应该还有个注册器,负责域名的子域名分配。)
注册表相当于ENS的户籍系统,记录着所有的域名的{地址、解析器、TTL},解析器帮助解析域名到相应元数据。
除了基本架构外,我在学习过程中还遇到了一些问题,如术语、注册流程、一些函数的工作方式,都将一一做入坑记录。(才疏学浅,也是处涉领域,文章仅做记录,慎重参考!)
开发前的准备
注册人、管理员、所有者
注册人在注册完域名后可以添加管理员,可以设置子域名并将子域名权限转移,也就是增添或者说更换了子域名的所有者。
Namehash
https://eips.ethereum.org/EIPS/eip-137
eip-137中对这种算法进行了描述:
首先点分域名,总最后往前依次进行hash。
不过话说这不是Python的代码吗,为啥他说是伪代码(pseudocode)。。
Node、Label
经过namehash的域名就是node,
二级域名部分就是label,比如cnmf.com.cn,这里cnmf.com就是label。
控制器合约、注册表合约、解析器合约
这三个合约是我们将要用到的,没有选择使用web3.py中的ens库,而是直接与合约交互。
0x283af0b28c62c092c9727f1ee09c02ca627eb7f5
0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
0x42d63ae25990889e35f215bc95884039ba354115
需要注意的是这是ropsten下的。
一点点django知识
一点点前端知识
DAPP架构
想了一下,要完成的功能如下:
1.可以自己注册一个.eth的域名。
2.可以自由设置二级域名。
3.可以自由设置二级域名的指向。
4.需要一个页面将二级域名指向页面调用者。
5.需要一个合约用与和页面调用者交互。
总的来说,就是完成了一个页面。
在这个页面用户可以通过给合约0.01eth来获得一个他指定的二级域名。