Documentation ¶
Overview ¶
Package dnsdisc implements node discovery via DNS (EIP-1459).
Index ¶
- func ParseURL(url string) (domain string, pubkey *ecdsa.PublicKey, err error)
- type Client
- type Config
- type Resolver
- type Tree
- func (t *Tree) Links() []string
- func (t *Tree) Nodes() []*enode.Node
- func (t *Tree) Seq() uint
- func (t *Tree) SetSignature(pubkey *ecdsa.PublicKey, signature string) error
- func (t *Tree) Sign(key *ecdsa.PrivateKey, domain string) (url string, err error)
- func (t *Tree) Signature() string
- func (t *Tree) ToTXT(domain string) map[string]string
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client discovers nodes by querying DNS servers. Client对象用于执行DNS查询 查询时先查询缓存entries,缓存中没有则使用cfg.Resolver执行DNS查询
func (*Client) NewIterator ¶
NewIterator creates an iterator that visits all nodes at the given tree URLs. 传入多个链接,生成一个节点的迭代器,在传入的这些链接间迭代节点
type Config ¶
type Config struct { Timeout time.Duration // timeout used for DNS lookups (default 5s) // 每三十分钟重新查询一次域名的根记录 RecheckInterval time.Duration // time between tree root update checks (default 30min) CacheLimit int // maximum number of cached records (default 1000) RateLimit float64 // maximum DNS requests / second (default 3) ValidSchemes enr.IdentityScheme // acceptable ENR identity schemes (default enode.ValidSchemes) Resolver Resolver // the DNS resolver to use (defaults to system DNS) Logger log.Logger // destination of client log messages (defaults to root logger) }
Config holds configuration options for the client.
type Tree ¶
type Tree struct {
// contains filtered or unexported fields
}
Tree is a merkle tree of node records. Tree对象里面保存了两棵树,分别是节点信息的树和其他可以查询的链接组成的树 节点信息树 最底层是enrEntry(enr:xxx),中间各层都是branchEntry(enrtree-branch:xxx,xxx,xxx)直至树根 链接树 最底层是linkEntry(enrtree://xxx),中间各层也都是branchEntry直至树根
func (*Tree) SetSignature ¶
SetSignature verifies the given signature and assigns it as the tree's current signature if valid. 验证给定的签名对这棵树是否合法,合法的话就保存这个签名到树中
func (*Tree) Sign ¶
Sign signs the tree with the given private key and sets the sequence number. 对给定的树进行签名,签名保存在t.root.sig里面 返回链接,例如 enrtree://AM5FCQLWIZX2QFPNJAP7VUERCCRNGRHWZG3YYHIUV7BVDQ5FDPRT2@morenodes.example.org