Skip to content
This repository has been archived by the owner on Aug 7, 2023. It is now read-only.

Bisect blocks before bisecting executions #111

Open
norswap opened this issue Dec 23, 2022 · 0 comments
Open

Bisect blocks before bisecting executions #111

norswap opened this issue Dec 23, 2022 · 0 comments
Labels
enhancement New feature or request

Comments

@norswap
Copy link
Contributor

norswap commented Dec 23, 2022

The current plan is to bisect the execution of minigeth to go from an output root to the next, spanning all L2 blocks submitted during the root submission interval (currently 1hr on testnet).

This is a lot of computation done inefficiently (MIPS emulation). Worse than this imho are the memory concerns. First, running for long makes it more likely we run out of memory, as GC is disabled (cf. #88). Next, each step in the bisection needs to create a Merkle root of the entire minigeth memory, which is very expensive.

There is an easy solution to this, which is to bisect on block hashes before bisecting the execution itself. This means the computation part is now bounded to validating a single block. This is what Arbitrum does too.

Note that doing this includes a special case: challenger and defender may agree on all blocks, but not on the output root, in which case it's necessary to show on-chain that the agreed-upon block blockhash leads to one of the claimed output roots.

@norswap norswap added the enhancement New feature or request label Dec 23, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant