通常ens注册要用过app.ens.domains,但此种方式有诸多限制,有些特殊字符无法注册,无法自定义注册时间。通过合约注册这些问题迎刃而解!但是,如果存在恶意使用的ZWJ或者其他限制的UNICODE字符,那在opensea或者looksrare会显示为非法域名,更加中心化的opensea会直接隐藏掉你的ens!所以三思而行。下面说下流程:
1、执行 available 确保要注册的ens还未被注册。
2、如果上述返回值为true,执行 makeCommitmentWithConfig
解读下参数的含义:
1:要注册ens
2:当前操作的钱包地址
3:随机64位hash,保证合法64位hash即可,一定要记住这个参数,因为后面还会用到!可以直接用0x40c8ecb31084c4e7b269810997c5772b5f5997260beab1fe0d9e81f5fc450cca
4:ens解析器地址,目前固定为 0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41
5:同2
6:执行**Query ,**记住此处返回结果,下一步要用
3、切换到Write Contract 标签,1.commit 填入上一步结果 点Write,等待结果
此步就是app.ens.domains中的第一步,预注册占坑位
4、上一步成功后,等待1分钟(app.ens.domains中的等待部分),执行下一步
5、执行 registerWithConfig注册
这也是app.ens.domains 中的最后一步
1:注册费用,ens 费用是根据字符长度来的,三位、四位、五位字符费用依次递减,可以先去app.ens.domains了解下。这里可以多填一些费用,因为用不到会退回来的。
2:要注册的名字
3:与第一步中参数2相同
4:注册时长,这里格式为 unixtime,比如 2629743 = 1 month、31556926=1 year。
这里要注意,合约限制最低注册时长为28天
uint constant public MIN_REGISTRATION_DURATION = 28 days;
也就是此值最小为 2419200。其他时长换算可以通过下面链接
5:与第一步中的secret
相同
6:与第一步中的resolver
相同
7:同3
执行Write,如果此时metamask有红色错误提示,说明等待还未超过1分钟。
执行Write成功后,域名就注册完了!!
特别说明:
虽然一些非法字符可以通过合约注册,但目前ens.domains 前端未支持,所以一旦有非法字符在钱包,那ens.domains 也用不了了,显示如下状态
唯一的解决办法是 把这个ens转移到其他地址。
https://mirror.xyz/tokengarden.eth/FadaIonXCIIAlIqBvtIHx_TAzd9sjMJnxtQ0fn3gJpo