Enforce minimum protocol version (#18)
* enforce minimum protocol version * use separate min protocol version for mainnet and testnet; don't connect to flux ports * point to merged btcd package
This commit is contained in:
parent
88fc106ef3
commit
309a0064b5
2
go.mod
2
go.mod
|
@ -12,4 +12,4 @@ require (
|
|||
)
|
||||
|
||||
// Currently pointing to "main-zfnd" branch
|
||||
replace github.com/btcsuite/btcd => github.com/ZcashFoundation/btcd v0.22.0-beta.0.20211118133831-ca5d3008dd64
|
||||
replace github.com/btcsuite/btcd => github.com/ZcashFoundation/btcd v0.22.0-beta.0.20220607000607-40dc9492aa42
|
||||
|
|
4
go.sum
4
go.sum
|
@ -41,8 +41,8 @@ github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdko
|
|||
github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
|
||||
github.com/Shopify/sarama v1.21.0/go.mod h1:yuqtN/pe8cXRWG5zPaO7hCfNJp5MwmkoJEoLjkm5tCQ=
|
||||
github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
|
||||
github.com/ZcashFoundation/btcd v0.22.0-beta.0.20211118133831-ca5d3008dd64 h1:G6N+0l3XFLEMFfqWmjsnM0/x8TRgAijitcquCMB2tJU=
|
||||
github.com/ZcashFoundation/btcd v0.22.0-beta.0.20211118133831-ca5d3008dd64/go.mod h1:9n5ntfhhHQBIhUvlhDvD3Qg6fRUj4jkN0VB8L8svzOA=
|
||||
github.com/ZcashFoundation/btcd v0.22.0-beta.0.20220607000607-40dc9492aa42 h1:cVw5apH2Ku2nYxViEP6k+MjyyobbcsnKa63YnxTSgBk=
|
||||
github.com/ZcashFoundation/btcd v0.22.0-beta.0.20220607000607-40dc9492aa42/go.mod h1:9n5ntfhhHQBIhUvlhDvD3Qg6fRUj4jkN0VB8L8svzOA=
|
||||
github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
|
||||
github.com/akamai/AkamaiOPEN-edgegrid-golang v0.9.0/go.mod h1:zpDJeKyp9ScW4NNrbdr+Eyxvry3ilGPewKoXw3XGN1k=
|
||||
github.com/alangpierce/go-forceexport v0.0.0-20160317203124-8f1d6941cd75/go.mod h1:uAXEEpARkRhCZfEvy/y0Jcc888f9tHCc1W7/UeEtreE=
|
||||
|
|
|
@ -36,13 +36,19 @@ var defaultPeerConfig = &peer.Config{
|
|||
//
|
||||
// If this version is too low, newer peers will disconnect from the DNS seeder,
|
||||
// and it will only be able to talk to outdated peers.
|
||||
//
|
||||
// TODO: fork https://github.com/gtank/btcd/blob/master/peer/peer.go
|
||||
// and set MinAcceptableProtocolVersion based on the most recently activated network upgrade
|
||||
// see ticket #10 for details
|
||||
ProtocolVersion: 170100, // Zcash NU5 mainnet
|
||||
}
|
||||
|
||||
// The minimum acceptable protocol version for each network.
|
||||
// Current (post-NU5) values are from https://zips.z.cash/zip-0252
|
||||
const MinAcceptableProtocolVersionMainnet = 170100
|
||||
const MinAcceptableProtocolVersionTestnet = 170050
|
||||
|
||||
// Denied ports. These are from a Zcash fork which uses the same magic numbers.
|
||||
// While they use a smaller protocol version will be filtered out, this
|
||||
// allows us to not connect to those nodes at all.
|
||||
var DeniedPorts = map[uint16]struct{}{16125: {}, 26125: {}}
|
||||
|
||||
var (
|
||||
// The minimum number of addresses we need to know about to begin serving introductions
|
||||
minimumReadyAddresses = 10
|
||||
|
@ -162,6 +168,15 @@ func newSeederPeerConfig(magic network.Network, template *peer.Config) (*peer.Co
|
|||
}
|
||||
newPeerConfig.ChainParams = params
|
||||
|
||||
switch magic {
|
||||
case network.Mainnet, network.Regtest:
|
||||
newPeerConfig.MinAcceptableProtocolVersion = MinAcceptableProtocolVersionMainnet
|
||||
break
|
||||
case network.Testnet:
|
||||
newPeerConfig.MinAcceptableProtocolVersion = MinAcceptableProtocolVersionTestnet
|
||||
break
|
||||
}
|
||||
|
||||
return &newPeerConfig, nil
|
||||
}
|
||||
|
||||
|
@ -358,7 +373,8 @@ func (s *Seeder) RequestAddresses() int {
|
|||
return
|
||||
}
|
||||
|
||||
if !addrmgr.IsRoutable(na) && !s.config.AllowSelfConns {
|
||||
_, denied := DeniedPorts[na.Port]
|
||||
if denied || (!addrmgr.IsRoutable(na) && !s.config.AllowSelfConns) {
|
||||
s.logger.Printf("Got bad addr %s:%d from peer %s", na.IP, na.Port, "<placeholder>")
|
||||
// TODO blacklist peers who give us crap addresses
|
||||
//s.DisconnectAndBlacklist(peerKeyFromPeer(p))
|
||||
|
|
Loading…
Reference in New Issue