如何申明一个域名

如果您在现有的根域中拥有一个域名,或者在Alexa前10万中拥有一域名, 或者您通过商标声明保留了您的名称,那么它将在区块链上等待您的到来。 您可以通过发布DNSSEC所有权证明来声明所有权-您在ICANN系统上拥有域名的加密证明。

您的姓名必须具有有效的DNSSEC设置才能创建声明。 如果您没有设置DNSSEC,请不必担心–您可以在Handshake区块链启动后进行设置,并且仍然可以追溯接受证明。 这是一些在流行的DNS服务上设置DNSSEC的指南:

如果您运行自己的域名服务器,则将需要一些工具来管理密钥和签署区域文件。BIND有许多用于完成此操作的命令行工具:

先决条件

本指南假定您具有正在运行的 hsd 节点, 并已使用 selectwallet rpc方法选择将控制您的域名的钱包。 否则,以下说明将把您的姓名控制权分配给钱包default帐户中的密钥初始(primary)钱包。首次启动节点时,将自动生成此钱包和帐户。

api文档介绍了如何安装,配置以及如何使用hs-client与你的节点和钱包如何交互。

有关如何配置hsd节点的特定信息,请参阅本指南

有关使用水龙头助记符设置钱包的特定信息,请参阅本指南。有关创建钱包的一般信息,请查看此文档

声明您的域名

首先,我们需要创建一个TXT记录,该记录将在我们的区域中签名(以example.com为例):

$ hsw-cli rpc createclaim example
{
"name": "example",
"target": "example.com.",
"value": 1133761643,
"size": 957,
"fee": 19140,
"block": "fb89a649e4667d8ffc4ce105faec7872ef47e0ce0e60a6a9e58e0b7cc3bb6147",
"address": "rs1qz588tmrclt4x2v48nu4ty2dnyenusul8q5djcj",
"txt": "hns-claim:qnPxvMRKAAAAAAAA+4mmSeRmfY/8TOEF+ux4cu9H4M4OYKap5Y4LfMO7YUcAFBUOdex4+uplMqefKrIpsyZnyHPn"
}

txt字段是必须的:该字段包括对与该域名相关联的handshake地址的承诺,以及我们愿意向矿工支付的挖矿费用。 该TXT记录必须添加到我们域名的区域文件中并签名:

...
example.com. 1800 IN TXT "hns-claim:qnPxvMRKAAAAAAAA+4mmSeRmfY/8TOEF+ux4cu9H4M4OYKap5Y4LfMO7YUcAFBUOdex4+uplMqefKrIpsyZnyHPn"
example.com. 1800 IN RRSIG TXT 5 2 1800 20190615140933 20180615131108 ...

TXT记录的RR名称(example.com.在这种情况下)必须等于target输出字段中显示的名称createclaim(注:不区分大小写)。 请注意,DNSSEC所有权证明是DNSSEC证明的更严格的子集:您的父区域必须通过一系列典型的DS->DNSKEY引用进行操作。 不允许使用CNAME或通配符,并且每个标签分隔符(.)的行为都必须像区域切割(带有适当的子区域引用)。

签署我们的TXT记录的ZSK必须由我们区域的KSK签署。按照典型的DNSSEC设置,必须在父区域中将我们区域的KSK提交为DS记录。

一旦我们的证明在DNS层上发布,我们就可以用 sendclaim 命令搜寻相关区域并创建证明。

$ hsw-cli rpc sendclaim example

这将创建证明并将其广播给您的所有连接节点,最终到达矿工的内存池。您的申明应在5-20分钟之内完成。 一旦被打包,您必须等待 4,320 个区块(约30天),才能将您的申明视为“成熟”。

手动创建证明

如果您已经有DNSSEC设置,则可以通过在本地创建证明来避免公开发布TXT记录。 这要求您可以直接访问区域签名密钥。私钥本身必须以BIND的私钥格式(v1.3)和命名约定存储。 [bns]可用于完成此任务,其中包括用于创建所有权证明的命令行工具。

$ npm install bns
$ bns-prove -x -K /path/to/keys example.com. \
'hns-claim:qnPxvMRKAAAAAAAA+4mmSeRmfY/8TOEF+ux'

上面将输出一个十六进制字符串,然后可以将其传递给RPC:

$ hsd-cli rpc sendrawclaim 'hex-string'