Skip to content

feat: backbone of l1sload_inspector created#39

Closed
Gohnnyman wants to merge 2 commits intofeature/l1sload-prover-changesfrom
feat/l1sload-inspector
Closed

feat: backbone of l1sload_inspector created#39
Gohnnyman wants to merge 2 commits intofeature/l1sload-prover-changesfrom
feat/l1sload-inspector

Conversation

@Gohnnyman
Copy link
Copy Markdown

What's new

  • L1SloadInspector added. It works like a tracer and it is called at each step in eth interpreter
  • in TaikoWithOptimisticBlockExecutor raiko creates block executor with this inspector.
  • inspect arg added for disabling inspector for zk execution

We could add l1sload logic into this L1SloadInspector, in function call that executes before the actual call. This inspector in this PR only works in preflight. So we could add logic in this inspector for storing l1sload values and then load them

@Gohnnyman Gohnnyman requested a review from dipkakwani October 31, 2025 13:40
///
/// Returning `CallOutcome` will override the result of the call.
#[inline]
fn call(&mut self, context: &mut CTX, inputs: &mut CallInputs) -> Option<CallOutcome> {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suppose we only need the call function for detecting all the calls to L1SLOAD precompile? The rest of the functions can be left as default?

use alloy_primitives::{Address, U256};
use reth_primitives::Log;
use revm::{
interpreter::{CallInputs, CallOutcome, CreateInputs, CreateOutcome, Interpreter},
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You might have already seen, but I stumbled across the repo containing some common inspectors for REVM https://github.com/paradigmxyz/revm-inspectors/tree/main , might be useful to refer this.

info!("execute_txs: execute_transactions start");
builder
.execute_transactions(pool_txs.clone(), num_iterations + 1 < max_iterations)
.execute_transactions(pool_txs.clone(), num_iterations + 1 < max_iterations, true)
Copy link
Copy Markdown
Member

@dipkakwani dipkakwani Nov 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I understand correctly: the precompile calls can be detected only during preflight, so during actual execution, we should populate the data fetched during preflight? Might have to ensure the l1sload data is populated and cleared after each batch is processed (prefight -> execution).

@Gohnnyman Gohnnyman marked this pull request as draft February 16, 2026 13:35
@jmadibekov
Copy link
Copy Markdown

Closing this PR as these changes have been incorporated in the new PR #50

@jmadibekov jmadibekov closed this Feb 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants