52 lines
1.6 KiB
Markdown
52 lines
1.6 KiB
Markdown
# Zcash DNS seeder
|
|
|
|
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](https://github.com/zcash/zcash-seeder) project.
|
|
|
|
It's written in Go and uses [btcsuite](https://github.com/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.
|
|
|
|
## Build instructions
|
|
|
|
This code cannot be used independently of CoreDNS. See [coredns-zcash](https://github.com/ZcashFoundation/coredns-zcash) for instructions.
|
|
|
|
## CoreDNS configuration
|
|
|
|
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
|
|
}
|
|
```
|
|
|
|
## License
|
|
|
|
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.
|