From db7b1d1c39ee1da779a7fd0c5ab70125eabc02b9 Mon Sep 17 00:00:00 2001 From: Haardik H Date: Wed, 9 Jul 2025 13:58:30 -0400 Subject: [PATCH] fallback to EL for state root if config AND state root is zero from builder --- crates/rollup-boost/src/payload.rs | 18 ++++++++++++++++++ crates/rollup-boost/src/server.rs | 5 ++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/crates/rollup-boost/src/payload.rs b/crates/rollup-boost/src/payload.rs index 38027b71..53ee4234 100644 --- a/crates/rollup-boost/src/payload.rs +++ b/crates/rollup-boost/src/payload.rs @@ -134,6 +134,24 @@ impl OpExecutionPayloadEnvelope { }, } } + + pub fn state_root(&self) -> B256 { + match self { + OpExecutionPayloadEnvelope::V3(payload) => payload + .execution_payload + .payload_inner + .payload_inner + .state_root + .into(), + OpExecutionPayloadEnvelope::V4(payload) => payload + .execution_payload + .payload_inner + .payload_inner + .payload_inner + .state_root + .into(), + } + } } impl From for ExecutionPayload { diff --git a/crates/rollup-boost/src/server.rs b/crates/rollup-boost/src/server.rs index 870808eb..6e2167e4 100644 --- a/crates/rollup-boost/src/server.rs +++ b/crates/rollup-boost/src/server.rs @@ -206,7 +206,10 @@ impl RollupBoostServer { let payload = self.builder_client.get_payload(payload_id, version).await?; - if self.use_l2_client_for_state_root == false { + let should_use_l2_client_for_state_root = + self.use_l2_client_for_state_root && payload.state_root() == B256::ZERO; + + if !should_use_l2_client_for_state_root { let _ = self .l2_client .new_payload(NewPayload::from(payload.clone()))