magicblock-labs / magicblock-labs/delegation-program
Add request identity to v2 standalone actions
@snawaz is already working on this.
Since Sep 17, 2026.
- Dominant language
- Rust
- Stars
- 30
- Forks
- 21
- Avg merge
- 20m
- Merged PRs (30d)
- 1
Description
### Goal
Give v2 standalone actions protocol-level request identity through an opaque nonce or request ID in the wrapper and its APIs. Distinct requests use distinct identities; retries and recovery retain the original identity.
### Why
Two standalone-action requests can produce identical base-chain transactions when the validator authority, forwarded action data, and recent blockhash match. They then share a signature, so confirming the second request can merely confirm the first execution.
MBV currently distinguishes transaction messages with a noop containing the scheduled intent ID. This leaves user data unchanged but does not give standalone actions protocol-level request identity.
### Scope
- Include the identity in the transaction message without forwarding it to the destination program or changing the destination's action data.
- Define nonce ownership, validation, replay semantics, and compatibility for callers and instruction encoding. Nonce bytes alone do not guarantee execution once, particularly when a retry uses a new blockhash. Specify how repeated requests are recognized or constrained and what clients can rely on when reconciling an uncertain submission.
- Keep commit/action and undelegate/action identity tied to their existing commit scope. This is v2 work under #132, not a v1 backport.
Keeping MBV's intent-ID noop or varying a compute-budget instruction are transaction-level alternatives, not substitutes for defined replay semantics or additional implementation requirements.
[magicblock-validator#1280](https://github.com/magicblock-labs/magicblock-validator/issues/1280) owns MBV adoption and removal of noop padding once the replacement provides the required guarantees. [magicblock-validator#1702](https://github.com/magicblock-labs/magicblock-validator/issues/1702) owns durable progress and reconciliation of submitted transactions after interruption.
Contributor guide
No contributing guide indexed for this repository
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.