From ef184c8959e57adf7b2651b8347e3dff52374cf7 Mon Sep 17 00:00:00 2001 From: tersec Date: Wed, 23 Aug 2023 19:31:41 +0000 Subject: [PATCH] subscribe to Deneb blob subnets (#5342) --- beacon_chain/nimbus_beacon_node.nim | 15 +++++++++++++-- beacon_chain/spec/network.nim | 4 ++++ tests/test_honest_validator.nim | 7 +++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/beacon_chain/nimbus_beacon_node.nim b/beacon_chain/nimbus_beacon_node.nim index fb26bcdd2..bcc16c28c 100644 --- a/beacon_chain/nimbus_beacon_node.nim +++ b/beacon_chain/nimbus_beacon_node.nim @@ -948,6 +948,12 @@ proc addCapellaMessageHandlers( node.addAltairMessageHandlers(forkDigest, slot) node.network.subscribe(getBlsToExecutionChangeTopic(forkDigest), basicParams) +proc addDenebMessageHandlers( + node: BeaconNode, forkDigest: ForkDigest, slot: Slot) = + node.addCapellaMessageHandlers(forkDigest, slot) + for topic in blobSidecarTopics(forkDigest): + node.network.subscribe(topic, basicParams) + proc removeAltairMessageHandlers(node: BeaconNode, forkDigest: ForkDigest) = node.removePhase0MessageHandlers(forkDigest) @@ -963,6 +969,11 @@ proc removeCapellaMessageHandlers(node: BeaconNode, forkDigest: ForkDigest) = node.removeAltairMessageHandlers(forkDigest) node.network.unsubscribe(getBlsToExecutionChangeTopic(forkDigest)) +proc removeDenebMessageHandlers(node: BeaconNode, forkDigest: ForkDigest) = + node.removeCapellaMessageHandlers(forkDigest) + for topic in blobSidecarTopics(forkDigest): + node.network.unsubscribe(topic) + proc updateSyncCommitteeTopics(node: BeaconNode, slot: Slot) = template lastSyncUpdate: untyped = node.consensusManager[].actionTracker.lastSyncUpdate @@ -1115,7 +1126,7 @@ proc updateGossipStatus(node: BeaconNode, slot: Slot) {.async.} = removeAltairMessageHandlers, removeAltairMessageHandlers, # bellatrix (altair handlers, different forkDigest) removeCapellaMessageHandlers, - removeCapellaMessageHandlers # deneb (capella handlers, different forkDigest) + removeDenebMessageHandlers ] for gossipFork in oldGossipForks: @@ -1126,7 +1137,7 @@ proc updateGossipStatus(node: BeaconNode, slot: Slot) {.async.} = addAltairMessageHandlers, addAltairMessageHandlers, # bellatrix (altair handlers, different forkDigest) addCapellaMessageHandlers, - addCapellaMessageHandlers # deneb (capella handlers, different forkDigest) + addDenebMessageHandlers ] for gossipFork in newGossipForks: diff --git a/beacon_chain/spec/network.nim b/beacon_chain/spec/network.nim index 4e92bca1d..1d46a7b21 100644 --- a/beacon_chain/spec/network.nim +++ b/beacon_chain/spec/network.nim @@ -218,3 +218,7 @@ func getSyncSubnets*( # 3. res.setBit(i div (SYNC_COMMITTEE_SIZE div SYNC_COMMITTEE_SUBNET_COUNT)) res + +iterator blobSidecarTopics*(forkDigest: ForkDigest): string = + for i in 0.SubnetId ..< static(BLOB_SIDECAR_SUBNET_COUNT.SubnetId): + yield getBlobSidecarTopic(forkDigest, i) diff --git a/tests/test_honest_validator.nim b/tests/test_honest_validator.nim index 18ca5a784..480b95eb5 100644 --- a/tests/test_honest_validator.nim +++ b/tests/test_honest_validator.nim @@ -80,6 +80,13 @@ suite "Honest validator": "/eth2/00000000/sync_committee_3/ssz_snappy" getBlobSidecarTopic(forkDigest, SubnetId(1)) == "/eth2/00000000/blob_sidecar_1/ssz_snappy" + toSeq(blobSidecarTopics(forkDigest)) == + ["/eth2/00000000/blob_sidecar_0/ssz_snappy", + "/eth2/00000000/blob_sidecar_1/ssz_snappy", + "/eth2/00000000/blob_sidecar_2/ssz_snappy", + "/eth2/00000000/blob_sidecar_3/ssz_snappy", + "/eth2/00000000/blob_sidecar_4/ssz_snappy", + "/eth2/00000000/blob_sidecar_5/ssz_snappy"] test "is_aggregator": check: