go-ethereum: github.com/ethereum/go-ethereum/p2p/dnsdisc Index | Files

package dnsdisc

import "github.com/ethereum/go-ethereum/p2p/dnsdisc"

Package dnsdisc implements node discovery via DNS (EIP-1459).

Index

Package Files

client.go doc.go error.go sync.go tree.go

func ParseURL Uses

func ParseURL(url string) (domain string, pubkey *ecdsa.PublicKey, err error)

ParseURL parses an enrtree:// URL and returns its components.

type Client Uses

type Client struct {
    // contains filtered or unexported fields
}

Client discovers nodes by querying DNS servers.

func NewClient Uses

func NewClient(cfg Config) *Client

NewClient creates a client.

func (*Client) NewIterator Uses

func (c *Client) NewIterator(urls ...string) (enode.Iterator, error)

NewIterator creates an iterator that visits all nodes at the given tree URLs.

func (*Client) SyncTree Uses

func (c *Client) SyncTree(url string) (*Tree, error)

SyncTree downloads the entire node tree at the given URL.

type Config Uses

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 Resolver Uses

type Resolver interface {
    LookupTXT(ctx context.Context, domain string) ([]string, error)
}

Resolver is a DNS resolver that can query TXT records.

type Tree Uses

type Tree struct {
    // contains filtered or unexported fields
}

Tree is a merkle tree of node records.

func MakeTree Uses

func MakeTree(seq uint, nodes []*enode.Node, links []string) (*Tree, error)

MakeTree creates a tree containing the given nodes and links.

func (t *Tree) Links() []string

Links returns all links contained in the tree.

func (*Tree) Nodes Uses

func (t *Tree) Nodes() []*enode.Node

Nodes returns all nodes contained in the tree.

func (*Tree) Seq Uses

func (t *Tree) Seq() uint

Seq returns the sequence number of the tree.

func (*Tree) SetSignature Uses

func (t *Tree) SetSignature(pubkey *ecdsa.PublicKey, signature string) error

SetSignature verifies the given signature and assigns it as the tree's current signature if valid.

func (*Tree) Sign Uses

func (t *Tree) Sign(key *ecdsa.PrivateKey, domain string) (url string, err error)

Sign signs the tree with the given private key and sets the sequence number.

func (*Tree) Signature Uses

func (t *Tree) Signature() string

Signature returns the signature of the tree.

func (*Tree) ToTXT Uses

func (t *Tree) ToTXT(domain string) map[string]string

ToTXT returns all DNS TXT records required for the tree.

Package dnsdisc imports 23 packages (graph) and is imported by 24 packages. Updated 2020-06-24. Refresh now. Tools for package owners.