From 6a938774d04d675a72892b3330a8b7d27bb0c4d7 Mon Sep 17 00:00:00 2001 From: kdeme Date: Thu, 24 Oct 2024 15:30:33 +0200 Subject: [PATCH] Use new historical_summaries beacon API endpoint in portal_bridge --- .../portal_bridge/portal_bridge_beacon.nim | 68 +++++++++---------- vendor/nimbus-eth2 | 2 +- 2 files changed, 33 insertions(+), 37 deletions(-) diff --git a/fluffy/tools/portal_bridge/portal_bridge_beacon.nim b/fluffy/tools/portal_bridge/portal_bridge_beacon.nim index 486ed0bbe..1d64323a7 100644 --- a/fluffy/tools/portal_bridge/portal_bridge_beacon.nim +++ b/fluffy/tools/portal_bridge/portal_bridge_beacon.nim @@ -21,9 +21,7 @@ import ../eth_data_exporter/cl_data_exporter, ./[portal_bridge_conf, portal_bridge_common] -const - largeRequestsTimeout = 120.seconds # For downloading large items such as states. - restRequestsTimeout = 30.seconds +const restRequestsTimeout = 30.seconds # TODO: From nimbus_binary_common, but we don't want to import that. proc sleepAsync(t: TimeDiff): Future[void] = @@ -236,46 +234,44 @@ proc gossipHistoricalSummaries( portalRpcClient: RpcClient, cfg: RuntimeConfig, forkDigests: ref ForkDigests, -): Future[Result[void, string]] {.async.} = - let state = +): Future[Result[void, string]] {.async: (raises: [CancelledError]).} = + let summariesOpt = try: - notice "Downloading beacon state" + notice "Downloading beacon historical_summaries" awaitWithTimeout( - restClient.getStateV2(StateIdent.init(StateIdentType.Finalized), cfg), - largeRequestsTimeout, + restClient.getHistoricalSummariesV1( + StateIdent.init(StateIdentType.Finalized), cfg + ), + restRequestsTimeout, ): - return err("Attempt to download beacon state timed out") - except CatchableError as exc: - return err("Unable to download beacon state: " & exc.msg) + return err("Attempt to download historical_summaries timed out") + except RestError as exc: + return err("Unable to download historical_summaries: " & exc.msg) - if state == nil: - return err("No beacon state found") + if summariesOpt.isNone(): + return err("No historical_summaries found") - withState(state[]): - when consensusFork >= ConsensusFork.Capella: - let - historical_summaries = forkyState.data.historical_summaries - proof = ?buildProof(state[]) - epoch = forkyState.data.slot.epoch() - forkDigest = forkDigestAtEpoch(forkDigests[], epoch, cfg) - summariesWithProof = HistoricalSummariesWithProof( - epoch: epoch, historical_summaries: historical_summaries, proof: proof - ) + let + summaries = summariesOpt.get() + epoch = summaries.slot.epoch() + forkDigest = forkDigestAtEpoch(forkDigests[], epoch, cfg) + summariesWithProof = HistoricalSummariesWithProof( + epoch: epoch, + historical_summaries: summaries.historical_summaries, + proof: summaries.proof, + ) + contentKey = encode(historicalSummariesContentKey(epoch.uint64)) + content = encodeSsz(summariesWithProof, forkDigest) - contentKey = encode(historicalSummariesContentKey(epoch.uint64)) - content = encodeSsz(summariesWithProof, forkDigest) + try: + let peers = await portalRpcClient.portal_beaconRandomGossip( + contentKey.asSeq().toHex(), content.toHex() + ) + info "Beacon historical_summaries gossiped", peers, epoch - try: - let peers = await portalRpcClient.portal_beaconRandomGossip( - contentKey.asSeq().toHex(), content.toHex() - ) - info "Beacon historical_summaries gossiped", peers, epoch - - return ok() - except CatchableError as e: - return err("JSON-RPC error: " & $e.msg) - else: - return err("No historical_summaries pre Capella") + ok() + except CatchableError as e: + err("JSON-RPC error: " & $e.msg) proc runBeacon*(config: PortalBridgeConf) {.raises: [CatchableError].} = notice "Launching Fluffy beacon chain bridge", cmdParams = commandLineParams() diff --git a/vendor/nimbus-eth2 b/vendor/nimbus-eth2 index 5d940b4c1..566e69b1c 160000 --- a/vendor/nimbus-eth2 +++ b/vendor/nimbus-eth2 @@ -1 +1 @@ -Subproject commit 5d940b4c1eaf65475f8cea54d396ebbec35deec2 +Subproject commit 566e69b1c44e4f271af75f6a7a7df6c0498890da