Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions crates/rpc/rpc-convert/src/transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1066,6 +1066,7 @@ pub mod scroll {
self.as_ref().clone().try_into_tx_env(cfg_env, block_env)?,
Some(Bytes::new()),
Some(TX_L1_FEE_PRECISION_U256),
Some(0),
))
}
}
Expand Down
26 changes: 16 additions & 10 deletions crates/scroll/alloy/evm/src/block/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ use crate::{
feynman::apply_feynman_hard_fork,
},
system_caller::ScrollSystemCaller,
FromTxWithCompressionRatio, ScrollDefaultPrecompilesFactory, ScrollEvm, ScrollEvmFactory,
ScrollPrecompilesFactory, ScrollTransactionIntoTxEnv, ToTxWithCompressionRatio,
FromTxWithCompressionInfo, ScrollDefaultPrecompilesFactory, ScrollEvm, ScrollEvmFactory,
ScrollPrecompilesFactory, ScrollTransactionIntoTxEnv, ToTxWithCompressionInfo,
};
use alloc::{boxed::Box, format, vec::Vec};

Expand Down Expand Up @@ -39,8 +39,11 @@ use revm_scroll::builder::ScrollContext;
use scroll_alloy_consensus::L1_MESSAGE_TRANSACTION_TYPE;
use scroll_alloy_hardforks::{ScrollHardfork, ScrollHardforks};

/// A cache for transaction compression ratios.
pub type ScrollTxCompressionRatios = Vec<U256>;
/// Compression info is a pair of (compression ratio, compressed size).
pub type ScrollTxCompressionInfo = (U256, usize);

/// A cache for transaction compression infos, i.e. (compression ratio, compressed size) pairs.
pub type ScrollTxCompressionInfos = Vec<ScrollTxCompressionInfo>;

/// Context for Scroll Block Execution.
#[derive(Debug, Default, Clone)]
Expand Down Expand Up @@ -102,30 +105,31 @@ where
DB = &'db mut State<DB>,
Tx: FromRecoveredTx<R::Transaction>
+ FromTxWithEncoded<R::Transaction>
+ FromTxWithCompressionRatio<R::Transaction>,
+ FromTxWithCompressionInfo<R::Transaction>,
>,
R: ScrollReceiptBuilder<Transaction: Transaction + Encodable2718, Receipt: TxReceipt>,
Spec: ScrollHardforks,
{
/// Executes all transactions in a block, applying pre and post execution changes. The provided
/// transaction compression ratios are expected to be in the same order as the
/// transaction compression infos are expected to be in the same order as the
/// transactions.
pub fn execute_block_with_compression_cache(
mut self,
transactions: impl IntoIterator<
Item = impl ExecutableTx<Self>
+ ToTxWithCompressionRatio<<Self as BlockExecutor>::Transaction>,
+ ToTxWithCompressionInfo<<Self as BlockExecutor>::Transaction>,
>,
compression_ratios: impl IntoIterator<Item = U256>,
compression_infos: impl IntoIterator<Item = ScrollTxCompressionInfo>,
) -> Result<BlockExecutionResult<R::Receipt>, BlockExecutionError>
where
Self: Sized,
{
self.apply_pre_execution_changes()?;

for (tx, compression_ratio) in transactions.into_iter().zip(compression_ratios.into_iter())
for (tx, (compression_ratio, compressed_size)) in
transactions.into_iter().zip(compression_infos.into_iter())
{
let tx = tx.with_compression_ratio(compression_ratio);
let tx = tx.with_compression_info(compression_ratio, compressed_size);
self.execute_transaction(&tx)?;
}

Expand Down Expand Up @@ -335,10 +339,12 @@ where
let l1_block_info = &self.ctx().chain;
let transaction_rlp_bytes = self.ctx().tx.rlp_bytes.as_ref()?;
let compression_ratio = self.ctx().tx.compression_ratio;
let compressed_size = self.ctx().tx.compressed_size;
Some(l1_block_info.calculate_tx_l1_cost(
transaction_rlp_bytes,
self.ctx().cfg.spec,
compression_ratio,
compressed_size,
))
}
}
Expand Down
7 changes: 4 additions & 3 deletions crates/scroll/alloy/evm/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,14 @@
mod block;
pub use block::{
curie, feynman, EvmExt, ReceiptBuilderCtx, ScrollBlockExecutionCtx, ScrollBlockExecutor,
ScrollBlockExecutorFactory, ScrollReceiptBuilder, ScrollTxCompressionRatios,
ScrollBlockExecutorFactory, ScrollReceiptBuilder, ScrollTxCompressionInfo,
ScrollTxCompressionInfos,
};

mod tx;
pub use tx::{
compute_compression_ratio, FromTxWithCompressionRatio, ScrollTransactionIntoTxEnv,
ToTxWithCompressionRatio, WithCompressionRatio,
compute_compressed_size, compute_compression_ratio, FromTxWithCompressionInfo,
ScrollTransactionIntoTxEnv, ToTxWithCompressionInfo, WithCompressionInfo,
};

mod system_caller;
Expand Down
Loading