magicblock-labs / magicblock-labs/delegation-program

Add request identity to v2 standalone actions

Open
#240 0 comments 0 reactions 1 assignee View on GitHub

@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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.