* enforce minimum protocol version
* use separate min protocol version for mainnet and testnet; don't connect to flux ports
* point to merged btcd package
* change(nu5): bump version and protocol version
* Apply suggestions from code review
Co-authored-by: teor <teor@riseup.net>
Co-authored-by: teor <teor@riseup.net>
* Add support for receiving addrv2
* Apply suggestions from code review
Co-authored-by: teor <teor@riseup.net>
* Document addrv2 handling
* Improve documentation; point to the main-zfnd branch of btcd
Co-authored-by: teor <teor@riseup.net>
This change should allow the seeder to connect to the network until early 2022.
The `version`, `verack`, `getaddrs`, and `addrs` messages haven't changed,
so the seeder is trivially compatible with future network upgrades.
Previously, when a request timed out, that peer would not be removed
from the pending handshake signal map. Since the peer was still in the
map, any attempt to reconnect would fail since it would look like we
were already waiting on a response.
Previously, the blacklist would never be retried since we queued the
wrong list of addresses. New logic also drops peers from the blacklist
if they've been continuously retried without success for a while.
This will do one hop of additional graph crawl every time the update
interval fires. It will blacklist peers who are not consistently
available and over time should converge to the set of stable peers
suitable for DNS bootstrapping.