Skip to content

Commit 1254093

Browse files
author
Solar Mithril
authored
Fix withdrawals root (#56)
1 parent 77df514 commit 1254093

File tree

4 files changed

+71
-15
lines changed

4 files changed

+71
-15
lines changed

Cargo.lock

Lines changed: 51 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/op-rbuilder/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ serde_yaml = { version = "0.9" }
9898

9999

100100
# `flashblocks` branch
101-
rollup-boost = { git = "https://github.com/flashbots/rollup-boost", rev = "60885346d4cf7f241de82790478195747433d472" }
101+
rollup-boost = { git = "https://github.com/flashbots/rollup-boost", rev = "6945842487ac0b0021800589d1660ec9c20cf254" }
102102

103103
[target.'cfg(unix)'.dependencies]
104104
tikv-jemallocator = { version = "0.6", optional = true }

crates/op-rbuilder/src/payload_builder.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,7 @@ where
817817
block_hash,
818818
transactions: new_transactions_encoded,
819819
withdrawals: ctx.withdrawals().cloned().unwrap_or_default().to_vec(),
820+
withdrawals_root,
820821
},
821822
metadata: serde_json::to_value(&metadata).unwrap_or_default(),
822823
};

crates/op-rbuilder/src/tests/framework/blocks.rs

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ use crate::tx_signer::Signer;
22
use alloy_eips::{eip2718::Encodable2718, BlockNumberOrTag};
33
use alloy_primitives::{address, hex, Address, Bytes, TxKind, B256, U256};
44
use alloy_rpc_types_engine::{
5-
ExecutionPayloadV1, ExecutionPayloadV2, ExecutionPayloadV3, PayloadAttributes,
6-
PayloadStatusEnum,
5+
ExecutionPayload, ExecutionPayloadV1, ExecutionPayloadV2, ExecutionPayloadV3,
6+
PayloadAttributes, PayloadStatusEnum,
77
};
88
use alloy_rpc_types_eth::Block;
99
use op_alloy_consensus::{OpTypedTransaction, TxDeposit};
1010
use op_alloy_rpc_types_engine::OpPayloadAttributes;
11-
use rollup_boost::{Flashblocks, FlashblocksService};
11+
use rollup_boost::{Flashblocks, FlashblocksService, OpExecutionPayloadEnvelope, Version};
1212

1313
use super::apis::EngineApi;
1414

@@ -236,15 +236,24 @@ impl BlockGenerator {
236236
}
237237

238238
let payload = if let Some(flashblocks_service) = &self.flashblocks_service {
239-
flashblocks_service.get_best_payload().await?.unwrap()
239+
flashblocks_service
240+
.get_best_payload(Version::V3)
241+
.await?
242+
.unwrap()
240243
} else {
241-
self.engine_api.get_payload_v3(payload_id).await?
244+
OpExecutionPayloadEnvelope::V3(self.engine_api.get_payload_v3(payload_id).await?)
245+
};
246+
247+
let execution_payload = if let ExecutionPayload::V3(execution_payload) = payload.into() {
248+
execution_payload
249+
} else {
250+
return Err(eyre::eyre!("execution_payload should be V3"));
242251
};
243252

244253
// Validate with builder node
245254
let validation_status = self
246255
.engine_api
247-
.new_payload(payload.execution_payload.clone(), vec![], B256::ZERO)
256+
.new_payload(execution_payload.clone(), vec![], B256::ZERO)
248257
.await?;
249258

250259
if validation_status.status != PayloadStatusEnum::Valid {
@@ -254,19 +263,15 @@ impl BlockGenerator {
254263
// Validate with validation node if present
255264
if let Some(validation_api) = &self.validation_api {
256265
let validation_status = validation_api
257-
.new_payload(payload.execution_payload.clone(), vec![], B256::ZERO)
266+
.new_payload(execution_payload.clone(), vec![], B256::ZERO)
258267
.await?;
259268

260269
if validation_status.status != PayloadStatusEnum::Valid {
261270
return Err(eyre::eyre!("Invalid validation status from validator"));
262271
}
263272
}
264273

265-
let new_block_hash = payload
266-
.execution_payload
267-
.payload_inner
268-
.payload_inner
269-
.block_hash;
274+
let new_block_hash = execution_payload.payload_inner.payload_inner.block_hash;
270275

271276
// Update forkchoice on builder
272277
self.engine_api
@@ -282,7 +287,7 @@ impl BlockGenerator {
282287

283288
// Update internal state
284289
self.latest_hash = new_block_hash;
285-
self.timestamp = payload.execution_payload.timestamp();
290+
self.timestamp = execution_payload.timestamp();
286291

287292
Ok(new_block_hash)
288293
}

0 commit comments

Comments
 (0)