Handshake资源记录指南

Handshake具有代表DNS资源记录的记录。 其中一些与DNS资源记录类型一对一映射,而另一些则没有。 这些资源记录包含在 REGISTERUPDATE 中输出并写入到 Urkel tree中,以便可以向轻客户提供证明。

每个Handshake域名存储一个单独的 Resource,最大为512字节。

更新资源记录

要更新域名的资源记录,请使用钱包的RPC命令 sendupdate。 如果域名与主钱包不在同一个钱包中,请首先使用调用 selectwallet,然后再发送更新。 在尝试发送更新之前,可以使用节点RPC方法 verifyresource 检查资源是否有效。

$ hsw-cli rpc sendupdate easyhandshake '{"records": []}'

请注意,records此示例中未包含任何内容。在赢得竞标后第一次调用 sendupdate 时,将创建一个寄存器输出和一个更改输出,其中包括用户出价与第二高出价之间的差额。 使用节点RPC getnamesource 查看名称的资源。新更新的名称不会通过DNS反映它们的记录,直到tree inverval被传递(每36个块发生一次)。

资源记录类型

  • DS
  • NS
  • GLUE4
  • GLUE6
  • SYNTH4
  • SYNTH6
  • TXT

DS

DS Handshake资源记录与DNS DS资源记录相同。 它用于DNSSEC,并在RFC 4033RFC 4034RFC 4035中指定。 其目的是通过在父区域和子区域之间创建身份验证链来实现区域的安全委派。 该DS记录包含 DNSKEY 资源记录的哈希。它被插入到父区域中,而 DNSKEY 记录被插入到子区域中。Handshake DS 记录必须包含的字段 typekeyTagalgorithmdigestTypedigest。有关这些字段的定义,请参见RFC 4034

例子:

{
"records": [{
"type": "DS",
"keyTag": 24620,
"algorithm": 8,
"digestType": 2,
"digest": "297595dc199b947aa8650923619436fbdfd99fd625195111ab4efe950900cade"
}]
}

NS

NS Handshake记录与DNS NS 是一样的资源记录。 它用于将名称的授权委托给权威的域名服务器。 在RFC 1035中指定。 Handshake NS记录必须包含的字段 typens。 该ns字段必须是完全合格的域名,包括结尾点。该 ns 名称通过ICANN解析时很有用,但也可以将权限委派给以Handshake为根的名称。

例子:

{
"records": [{
"type": "NS",
"ns": "ns1.easyhandshake.org."
}]
}

GLUE4

GLUE4 Handshake资源记录对应于两个DNS资源记录, 一个 NS 记录和 A 记录。该 A记录用作胶水。A记录在RFC 1035中定义, 并且必须包含IPv4地址。 Handshake GLUE4记录必须包含字段 typens 以及 address。 这对于设置权威的名称服务器来管理Handshake域名的子域很有用。 该地址字段将作为 A 记录包含在DNS响应的附加部分中。

例子:

{
"records": [{
"type": "GLUE4",
"ns": "ns1.bitcoin.hat.",
"address": "172.21.0.08"
}]
}

在此处使用 GLUE4记录设置了名称 easyhandshake

$ hsd-cli rpc getnameresource easyhandshake
{
"records": [
{
"type": "GLUE4",
"ns": "ns1.coop.easyhandshake.",
"address": "127.0.1.1"
}
]

这表示有一个名为 ns 的权威名称服务器 ns1.coop.easyhandshake。 仅此名称对客户端没有用,它还需要该名称的IP地址。 IP地址在所谓的glue记录中。对于handshake GLUE4记录,A 用作glue的记录。glue记录的名称为 ns,IPv4地址为address

它将通过如下所示的权威名称服务器进行解析:

$ dig @127.0.0.1 -p 25349 easyhandshake
; <<>> DiG 9.16.2 <<>> @127.0.0.1 -p 25349 easyhandshake
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31231
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 2
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;easyhandshake. IN A
;; AUTHORITY SECTION:
easyhandshake. 21600 IN NS ns1.coop.easyhandshake.
;; ADDITIONAL SECTION:
ns1.coop.easyhandshake. 21600 IN A 127.0.1.1
;; Query time: 0 msec
;; SERVER: 127.0.0.1#25349(127.0.0.1)
;; WHEN: Wed May 13 22:23:11 PDT 2020
;; MSG SIZE rcvd: 81

127.0.1.1上设置权威域名服务器,该区域提供的资源记录现在可以通过handshake递归解析器使用。

GLUE6

GLUE6 handshake资源记录对应于两个DNS资源记录,一个 NS 记录和 AAAA记录。 该 AAAA 记录用作 glueAAAA记录在 RFC 1035中定义, 并且必须包含IPv6地址。handshake GLUE6 记录必须包含的字段 typens 以及 address。 这对于设置权威的名称服务器来管理handshake域名的子域很有用。该地址字段将作为 AAAA记录包含在 DNS 响应的其他部分中。

例子: { "records": [{ "type": "GLUE6", "ns": "ns1.bitcoin.lawl.", "address": "9530:f7fb:dc28:c1a3:d17f:d3f0:b875:aba8" }] }

IPv6的配置与GLUE4相同。

TXT

TXT handshake资源记录对应的DNS TXT记录。 它用于存储任意数据,并且在此基础之上构建了许多协议。TXT 记录在RFC 1035 中定义。它对于在链上放置任意数据非常有用。handshake TXT记录必须包含的字段 typetext。该 text字段必须是字符串数组。

例子:

{
"records": [{
"type": "TXT",
"text": ["my text record"]
}]
}

easyhandshake 这里设置了两个 TXT 记录的名称。

{
"records": [
{
"type": "TXT",
"txt": [
"imagine if gold turned to lead when stolen, if thief gives back, it turns to gold again"
]
},
{
"type": "TXT",
"txt": [
"proof of",
"work speaks",
"for itself"
]
}
]
}

它将通过权威名称服务器和递归名称服务器进行解析,如下所示:

$ dig @127.0.0.1 -p 25349 easyhandshake TXT
; <<>> DiG 9.16.2 <<>> @127.0.0.1 -p 25349 easyhandshake TXT
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8003
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;easyhandshake. IN TXT
;; ANSWER SECTION:
easyhandshake. 21600 IN TXT "imagine if gold turned to lead when stolen, if thief gives back, it turns to gold again"
easyhandshake. 21600 IN TXT "proof of" "work speaks" "for itself"
;; Query time: 3 msec
;; SERVER: 127.0.0.1#25349(127.0.0.1)
;; WHEN: Wed May 13 22:59:28 PDT 2020
;; MSG SIZE rcvd: 186

hh