diff --git a/crates/flashblocks/builder/src/lib.rs b/crates/flashblocks/builder/src/lib.rs index 97857a950..086816635 100644 --- a/crates/flashblocks/builder/src/lib.rs +++ b/crates/flashblocks/builder/src/lib.rs @@ -266,7 +266,7 @@ where let _enter = span.enter(); - debug!(target: "payload_builder", "building new payload"); + debug!(target: "flashblocks::payload_builder", "building new payload"); // 1. Prepare the db let (bundle, receipts, transactions, gas_used, fees) = if let Some(payload) = &best_payload @@ -295,7 +295,7 @@ where }) .collect::, _>>()?; - trace!(target: "payload_builder", "using best payload"); + trace!(target: "flashblocks::payload_builder", "using best payload"); ( execution_result.bundle.clone(), @@ -371,7 +371,7 @@ where execution_info.total_fees += U256::from(miner_fee) * U256::from(gas_used); } Err(e) => { - error!(target: "payload_builder", %e, "spend nullifiers transaction failed") + error!(target: "flashblocks::payload_builder", %e, "spend nullifiers transaction failed") } } } @@ -396,7 +396,7 @@ where )? .is_none() { - warn!(target: "payload_builder", "payload build cancelled"); + warn!(target: "flashblocks::payload_builder", "payload build cancelled"); if let Some(best_payload) = best_payload { // we can return the previous best payload since we didn't include any new txs return Ok(BuildOutcomeKind::Freeze(best_payload)); diff --git a/crates/flashblocks/payload/src/generator.rs b/crates/flashblocks/payload/src/generator.rs index 1c50c955f..439b45b2f 100644 --- a/crates/flashblocks/payload/src/generator.rs +++ b/crates/flashblocks/payload/src/generator.rs @@ -273,7 +273,7 @@ where if let Some(flashblock) = block { if *flashblock.payload_id() == attributes.payload_id().0 { // If we have a pre-confirmed state, we can use it to build the payload - debug!(target: "payload_builder", payload_id = %attributes.payload_id(), "Using pre-confirmed state for payload"); + debug!(target: "flashblocks::payload_builder", payload_id = %attributes.payload_id(), "Using pre-confirmed state for payload"); let block: RecoveredBlock> = flashblock.clone().try_into().map_err(|_| { diff --git a/crates/flashblocks/payload/src/job.rs b/crates/flashblocks/payload/src/job.rs index a9ad7baaf..e74aede93 100644 --- a/crates/flashblocks/payload/src/job.rs +++ b/crates/flashblocks/payload/src/job.rs @@ -102,7 +102,7 @@ where /// This method creates a new build job using the current `best_payload` as the base, /// allowing each successive build to improve upon the previous one. pub(crate) fn spawn_build_job(&mut self) { - trace!(target: "payload_builder", id = %self.config.payload_id(), "spawn new payload build task"); + trace!(target: "flashblocks::payload_builder", id = %self.config.payload_id(), "spawn new payload build task"); let (tx, rx) = oneshot::channel(); let cancel = CancelOnDrop::default(); let _cancel = cancel.clone(); @@ -150,14 +150,14 @@ where .map_or(0, |p| p.block().body().transactions().count()); let flashblock = Flashblock::new(payload, self.config.clone(), self.block_index, offset); - trace!(target: "payload_builder", id=%self.config.payload_id(), "creating authorized flashblock"); + trace!(target: "flashblocks::payload_builder", id=%self.config.payload_id(), "creating authorized flashblock"); let authorized_payload = self.authorization_for(flashblock.into_flashblock())?; self.flashblocks_state .publish_built_payload(authorized_payload, payload.to_owned()) .inspect_err(|err| { - error!(target: "payload_builder", id=%self.config.payload_id(), %err, "failed to publish new payload"); + error!(target: "flashblocks::payload_builder", id=%self.config.payload_id(), %err, "failed to publish new payload"); }) } @@ -223,12 +223,13 @@ where /// The polling continues until either the deadline is reached or an error occurs, returning /// [`Poll::Pending`] for ongoing work or [`Poll::Ready`] when complete. fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - let _span = span!(target: "payload_builder", tracing::Level::TRACE, "poll").entered(); + let _span = + span!(target: "flashblocks::payload_builder", tracing::Level::TRACE, "poll").entered(); let _enter = _span.enter(); let this = self.get_mut(); // check if the deadline is reached if this.deadline.as_mut().poll(cx).is_ready() { - trace!(target: "payload_builder", "payload building deadline reached"); + trace!(target: "flashblocks::payload_builder", "payload building deadline reached"); return Poll::Ready(Ok(())); } @@ -264,7 +265,7 @@ where this.best_payload = PayloadState::Best(payload.clone()); this.cached_reads = Some(cached_reads); - trace!(target: "payload_builder", current_value = %payload.fees(), "building new best payload"); + trace!(target: "flashblocks::payload_builder", current_value = %payload.fees(), "building new best payload"); let block = payload.block(); let payload_bytes: usize = block @@ -284,9 +285,9 @@ where // publish the new payload to the p2p network if let Err(err) = this.publish_payload(&payload, &prev.payload().cloned()) { this.metrics.inc_p2p_publishing_errors(); - error!(target: "payload_builder", %err, "failed to publish new payload to p2p network"); + error!(target: "flashblocks::payload_builder", %err, "failed to publish new payload to p2p network"); } else { - trace!(target: "payload_builder", id=%this.config.payload_id(), "published new best payload to p2p network"); + trace!(target: "flashblocks::payload_builder", id=%this.config.payload_id(), "published new best payload to p2p network"); } // increment the pre-confirmation index @@ -294,12 +295,12 @@ where this.spawn_build_job(); } BuildOutcome::Freeze(payload) => { - trace!(target: "payload_builder", "payload frozen, no further building will occur"); + trace!(target: "flashblocks::payload_builder", "payload frozen, no further building will occur"); this.best_payload = PayloadState::Frozen(payload); } BuildOutcome::Aborted { fees, cached_reads } => { this.cached_reads = Some(cached_reads); - trace!(target: "payload_builder", worse_fees = %fees, "skipped payload build of worse block"); + trace!(target: "flashblocks::payload_builder", worse_fees = %fees, "skipped payload build of worse block"); } BuildOutcome::Cancelled => { unreachable!("the cancel signal never fired") @@ -307,7 +308,7 @@ where }, Poll::Ready(Err(error)) => { // job failed, but we simply try again next interval - debug!(target: "payload_builder", %error, "payload build attempt failed"); + debug!(target: "flashblocks::payload_builder", %error, "payload build attempt failed"); match &error { PayloadBuilderError::EvmExecutionError(_) => { this.metrics.inc_evm_execution_errors(); @@ -364,10 +365,10 @@ where fn best_payload(&self) -> Result { if let Some(payload) = self.best_payload.payload() { - trace!(target: "payload_builder", id=%self.config.payload_id(), value = %payload.fees(), "returning best payload"); + trace!(target: "flashblocks::payload_builder", id=%self.config.payload_id(), value = %payload.fees(), "returning best payload"); Ok(payload.clone()) } else { - info!(target: "payload_builder", id=%self.config.payload_id(), "no best payload available, building empty payload"); + info!(target: "flashblocks::payload_builder", id=%self.config.payload_id(), "no best payload available, building empty payload"); // No payload has been built yet, but we need to return something that the CL then // can deliver, so we need to return an empty payload. // @@ -397,7 +398,7 @@ where let mut empty_payload = None; if best_payload.is_none() { - debug!(target: "payload_builder", id=%self.config.payload_id(), "no best payload yet to resolve, building empty payload"); + debug!(target: "flashblocks::payload_builder", id=%self.config.payload_id(), "no best payload yet to resolve, building empty payload"); let args = BuildArguments { cached_reads: self.cached_reads.take().unwrap_or_default(), @@ -408,13 +409,14 @@ where match self.builder.on_missing_payload(args) { MissingPayloadBehaviour::AwaitInProgress => { - debug!(target: "payload_builder", id=%self.config.payload_id(), "awaiting in progress payload build job"); + debug!(target: "flashblocks::payload_builder", id=%self.config.payload_id(), "awaiting in progress payload build job"); } MissingPayloadBehaviour::RaceEmptyPayload => { - debug!(target: "payload_builder", id=%self.config.payload_id(), "racing empty payload"); + debug!(target: "flashblocks::payload_builder", id=%self.config.payload_id(), "racing empty payload"); // if no payload has been built yet - // self.metrics.inc_requested_empty_payload(); + self.metrics.inc_requested_empty_payload(); + // no payload built yet, so we need to return an empty payload let (tx, rx) = oneshot::channel(); let config = self.config.clone(); @@ -427,7 +429,7 @@ where empty_payload = Some(rx); } MissingPayloadBehaviour::RacePayload(job) => { - debug!(target: "payload_builder", id=%self.config.payload_id(), "racing fallback payload"); + debug!(target: "flashblocks::payload_builder", id=%self.config.payload_id(), "racing fallback payload"); // race the in progress job with this job let (tx, rx) = oneshot::channel(); self.executor.spawn_blocking(Box::pin(async move { diff --git a/crates/flashblocks/rpc/src/engine.rs b/crates/flashblocks/rpc/src/engine.rs index e4f7150c3..cbe3a1e04 100644 --- a/crates/flashblocks/rpc/src/engine.rs +++ b/crates/flashblocks/rpc/src/engine.rs @@ -18,9 +18,8 @@ use reth_chainspec::EthereumHardforks; use reth_optimism_rpc::{OpEngineApi, OpEngineApiServer}; use reth_provider::{BlockReader, HeaderProvider, StateProviderFactory}; use reth_transaction_pool::TransactionPool; -use tracing::info; +use tracing::trace; -/// TODO: Extend Engine API with Authorized FCU Methods #[derive(Debug, Clone)] pub struct OpEngineApiExt { /// The inner [`OpEngineApi`] instance that this extension wraps. @@ -223,7 +222,8 @@ where payload_attributes: Option, authorization: Option, ) -> RpcResult { - info!( + trace!( + target: "flashblocks::rpc::engine", ?fork_choice_state, "Received flashblocks_fork_choice_updated_v3" );