For the complete documentation index, see llms.txt. This page is also available as Markdown.

Execute transactions with permissions

After the user grants authorization via wallet_requestExecutionPermissions, the Session Account (to address) can call redeemDelegations on the DelegationManager to perform on-chain operations on the user's behalf within permission constraints. This section explains how to construct and send redeem transactions.

Prerequisites

  1. A PermissionResponse has been obtained (including context and delegationManager).

  2. The Session Account private key is available, and its address equals to in the authorization.

  3. The execution chain matches the authorization chainId.

Core Contract Interface (EIP-7710)

function redeemDelegations(
  bytes[] calldata permissionContexts,
  bytes32[] calldata modes,
  bytes[] calldata executionCallDatas
) external;
Parameter
Description

permissionContexts

[grant.context]

modes

Execution mode; default for a single call is 0x0000...0000 (32 zero bytes)

executionCallDatas

Encoded Execution struct

Execution Encoding

struct Execution {
  address target;
  uint256 value;
  bytes callData;
}

Encoding method:

Constructing Execution by Permission Type

ERC-20 Transfer

Native Token Transfer

Complete Redeem Example

Construct calldata with viem and send the transaction from the Session Account:

Pre-Execution Checklist

Check Item
Description

to address match

Signer = grant.to

Chain ID match

Use wallet_switchEthereumChain if needed

Sufficient allowance

periodic/stream rules + on-chain enforcer

Valid context

Not expired, not revoked

dependencies deployed

Redeem only after factory deployment is complete

Last updated