magicblock-labs / magicblock-labs/magicblock-validator
Persist and recover committor intent execution stages
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 58
- Forks
- 58
- Avg merge
- 22h 1m
- Merged PRs (30d)
- 53
Description
## Goal
A restart shouldn't mean losing pending intents or repeating transactions that already succeeded. Record execution progress in outbox accounts so the committor can pick up where it left off.
## Why
The tricky part is knowing what happened before the restart. An intent might not have started, a transaction might still be pending, or the commit might have succeeded while finalization is unfinished.
A confirmation timeout doesn't tell us which happened. Before retrying, check the previous transaction's status so we don't submit the same work twice.
## Scope
Replace the committor persister with outbox-backed recovery, following [MIMD-0025](https://github.com/magicblock-labs/magicblock-validator/discussions/1246) and [MIMD-0027](https://github.com/magicblock-labs/magicblock-validator/discussions/1416).
Keep enough information to resume each stage safely:
- Record accepted intents and execution-stage changes, including pending signatures and blockhashes.
- Recover both single-stage and two-stage execution, checking pending transactions before replacing an attempt.
- Validate stage transitions. If only finalization needs retrying, retain the confirmed commit signature.
- Clean up completed intents so recovery doesn't pick them up again.
Before rollout, we still need to decide how to recover work stored by the old persister. Shutdown coordination is tracked separately in #1262.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.