Filter discovery nodes on forkId (#1162)

This commit is contained in:
Kim De Mey 2020-06-12 16:14:18 +02:00 committed by GitHub
parent 8e76b7d9a6
commit 68a8b7d969
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 3 deletions

View File

@ -63,6 +63,7 @@ type
connQueue: AsyncQueue[PeerInfo] connQueue: AsyncQueue[PeerInfo]
seenTable: Table[PeerID, SeenItem] seenTable: Table[PeerID, SeenItem]
connWorkers: seq[Future[void]] connWorkers: seq[Future[void]]
forkId: ENRForkID
EthereumNode = Eth2Node # needed for the definitions in p2p_backends_helpers EthereumNode = Eth2Node # needed for the definitions in p2p_backends_helpers
@ -762,12 +763,14 @@ proc connectWorker(network: Eth2Node) {.async.} =
proc runDiscoveryLoop*(node: Eth2Node) {.async.} = proc runDiscoveryLoop*(node: Eth2Node) {.async.} =
debug "Starting discovery loop" debug "Starting discovery loop"
let enrField = ("eth2", SSZ.encode(node.forkId))
while true: while true:
let currentPeerCount = node.peerPool.len let currentPeerCount = node.peerPool.len
if currentPeerCount < node.wantedPeers: if currentPeerCount < node.wantedPeers:
try: try:
let discoveredPeers = let discoveredPeers =
node.discovery.randomNodes(node.wantedPeers - currentPeerCount) node.discovery.randomNodes(node.wantedPeers - currentPeerCount,
enrField)
for peer in discoveredPeers: for peer in discoveredPeers:
try: try:
let peerRecord = peer.record.toTypedRecord let peerRecord = peer.record.toTypedRecord
@ -808,9 +811,10 @@ proc init*(T: type Eth2Node, conf: BeaconNodeConf, enrForkId: ENRForkID,
result.seenTable = initTable[PeerID, SeenItem]() result.seenTable = initTable[PeerID, SeenItem]()
result.connQueue = newAsyncQueue[PeerInfo](ConcurrentConnections) result.connQueue = newAsyncQueue[PeerInfo](ConcurrentConnections)
result.metadata = getPersistentNetMetadata(conf) result.metadata = getPersistentNetMetadata(conf)
result.forkId = enrForkId
result.discovery = Eth2DiscoveryProtocol.new( result.discovery = Eth2DiscoveryProtocol.new(
conf, ip, tcpPort, udpPort, privKey.toRaw, conf, ip, tcpPort, udpPort, privKey.toRaw,
{"eth2": SSZ.encode(enrForkId), "attnets": SSZ.encode(result.metadata.attnets)}) {"eth2": SSZ.encode(result.forkId), "attnets": SSZ.encode(result.metadata.attnets)})
newSeq result.protocolStates, allProtocols.len newSeq result.protocolStates, allProtocols.len
for proto in allProtocols: for proto in allProtocols:

2
vendor/nim-eth vendored

@ -1 +1 @@
Subproject commit be9a87848e068d68aa8fa1a7bfa07d7c7271eba7 Subproject commit 225a9ad41cc0f4cd6d42153e64b356bb03f26274