magicblock-labs / magicblock-labs/magicblock-validator
Use protocol-level nonces for standalone base actions
@snawaz is already working on this.
Since Sep 9, 2026.
- Dominant language
- Rust
- Stars
- 58
- Forks
- 58
- Avg merge
- 22h 1m
- Merged PRs (30d)
- 53
Description
## Scope
Separate standalone action requests can produce byte-identical base-chain transactions when authority, action data, and cached blockhash match. The second request can then confirm the first request's signature without executing its own action.
MBV already mitigates this with a transaction-level noop carrying the scheduled intent ID. Adopt the v2 wrapper/API nonce from [delegation-program#240](https://github.com/magicblock-labs/delegation-program/issues/240) instead, without changing the action data forwarded to the destination program.
Give distinct requests distinct identities and preserve each request's identity across retries and recovery, including #1702's transaction reconciliation. Nonce bytes make transaction messages distinct; they do not by themselves guarantee execution only once. Use the protocol's replay semantics rather than treating a new signature as proof that retrying is safe.
Keep the noop mitigation until the protocol replacement supplies the required uniqueness and recovery guarantees. Commit/action and undelegate/action paths retain their commit-scoped identity.
## Outcome
Standalone base actions use protocol-level identity to distinguish separate requests, while retries remain the same logical request and destination programs receive the original action data unchanged.
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.