This is a CoreDNS plugin that scrapes addresses of peers from a Zcash network and returns them on A or AAAA queries. It's intended as a safer, more configurable, and more scalable replacement for the zcash-seeder project.
It's written in Go and uses btcsuite for low-level networking.
It works by connecting to a list of bootstrap peers and requesting new peers by sending getaddr
messages. The process is then periodically repeated with the current list of known peers.
This plugin accepts both addr
and addrv2
messages, though it ignores addresses that are not
IPv4 nor IPv6. It does not answer getaddr
requests from other peers.
This code cannot be used independently of CoreDNS. See coredns-zcash for instructions.
A sample Corefile that configures seeders on a domain for each network, using two local Zcash nodes for bootstrap:
mainnet.seeder.example.com {
dnsseed {
network mainnet
bootstrap_peers 127.0.0.1:8233
crawl_interval 30m
record_ttl 600
}
}
testnet.seeder.example.com {
dnsseed {
network testnet
bootstrap_peers 127.0.0.1:18233
crawl_interval 15m
record_ttl 300
}
}
# Returns 200 OK on .:8080/health
. {
health :8080
}
The seeder is dual-licensed under the terms of both the MIT license and the Apache License (Version 2.0).
See LICENSE-APACHE and LICENSE-MIT.