@@ -145,6 +145,43 @@ proc publishRouteBlock(
145145 signature = shortLog (blck.signature),
146146 delay
147147
148+ proc publishSidecars (
149+ router: ref MessageRouter ,
150+ blck: gloas.SignedBeaconBlock ,
151+ sidecarsOpt: Opt [seq [gloas.DataColumnSidecar ]]
152+ ): Future [Opt [gloas.DataColumnSidecars ]] {.async : (raises: [CancelledError ]).} =
153+ let cols = sidecarsOpt.get ()
154+ var workers = newSeq [Future [SendResult ]](len (cols))
155+
156+ for i, dc in cols:
157+ let subnet = compute_subnet_for_data_column_sidecar (dc.index)
158+ workers[i] = router[].network.broadcastDataColumnSidecar (subnet, dc)
159+
160+ let resAll = await allFinished (workers)
161+
162+ for i in 0 ..< resAll.len:
163+ let r = resAll[i]
164+ doAssert r.finished ()
165+ if r.failed ():
166+ notice " Data column not sent" ,
167+ data_column = shortLog (cols[i]), error = r.error[]
168+ else :
169+ notice " Data column sent" ,
170+ data_column = shortLog (cols[i])
171+
172+ # Custody filtering
173+ let metadata = router[].network.metadata.custody_group_count
174+ let allowed =
175+ router[].network.cfg.resolve_columns_from_custody_groups (
176+ router[].network.nodeId, metadata)
177+
178+ var finalCols: gloas.DataColumnSidecars
179+ for dc in cols:
180+ if dc.index in allowed:
181+ finalCols.add newClone (dc)
182+
183+ Opt .some (finalCols)
184+
148185proc publishSidecars (
149186 router: ref MessageRouter ,
150187 blck: fulu.SignedBeaconBlock ,
@@ -267,15 +304,8 @@ proc routeSignedBeaconBlock*(
267304 await router.publishRouteBlock (blck)
268305
269306 # 3. Publish sidecars
270- when someSidecarsOpt is NoSidecarsAtFork and
271- typeof (blck).kind in ConsensusFork .Phase0 .. ConsensusFork .Capella :
307+ when someSidecarsOpt is NoSidecarsAtFork :
272308 const finalSidecars = noSidecars
273- elif someSidecarsOpt is NoSidecarsAtFork and
274- typeof (blck).kind in ConsensusFork .Deneb .. ConsensusFork .Electra :
275- let finalSidecars = Opt .none (BlobSidecars )
276- elif someSidecarsOpt is NoSidecarsAtFork and
277- typeof (blck).kind in ConsensusFork .Fulu .. ConsensusFork .Gloas :
278- let finalSidecars = Opt .none (fulu.DataColumnSidecars )
279309 else :
280310 let finalSidecars = await publishSidecars (router, blck, someSidecarsOpt)
281311
0 commit comments