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

请求执行权限

wallet_requestExecutionPermissions 是 EIP-7715 的核心方法。DApp/Agent 通过它向 TokenPocket 用户请求授权,用户在钱包 UI 中确认后,返回可用于后续 redeem 的权限响应。

前置条件

  1. 已连接钱包(eth_requestAccounts)。

  2. 建议已调用 wallet_getSupportedExecutionPermissions 确认能力。

  3. 已准备 Session Account 地址,填入请求的 to 字段。

RPC 方法

wallet_requestExecutionPermissions

请求参数

type PermissionRequest = {
  chainId: `0x${string}` // hex 编码的 chainId
  from?: `0x${string}` // 用户账户,可选;多账户时建议显式指定
  to: `0x${string}` // DApp/Agent Session Account / Delegate 地址
  permission: {
    type: string
    isAdjustmentAllowed: boolean
    data: Record<string, unknown>
  }
  rules?: {
    type: string
    data: Record<string, unknown>
  }[]
}

// params 为 PermissionRequest 数组,支持批量(须同链)
params: PermissionRequest[]

完整示例:发起单笔授权

响应结构

字段
说明

context

redeem 时传入 _permissionContexts

delegationManager

调用 redeemDelegations 的目标合约

dependencies

redeem 前可能需要处理的账户部署依赖;为空表示当前无需额外处理预部署步骤

响应可能包含用户调整后的权限参数(当 isAdjustmentAllowed: true 时),勿假设与请求完全一致。

批量请求

params 支持数组,可一次请求多条权限,但必须属于同一 chainId

跨链批量会失败。

字段说明

from

  • 授权来源账户(用户 EOA / 智能账户)。

  • 连接单账户时可省略,由钱包使用当前活跃账户。

to

  • DApp/Agent Session Account / Delegate 地址,即权限接收者。

  • 后续使用该权限 redeem 时,应由该地址作为执行/签名主体。

isAdjustmentAllowed

  • true:允许钱包在用户确认前调整该权限的授权范围,例如额度、周期、流速、有效期等钱包支持编辑的字段。DApp/Agent 必须以钱包最终返回的 permission 为准。

  • false:用户不可调整该权限参数,适合 DApp/Agent 要求固定授权条件的场景。

justification

  • 展示给用户的授权说明文案,应清晰描述用途。

数量字段

periodAmountinitialAmountmaxAmountamountPerSecond 等金额字段使用 hex 编码的最小单位(RPC quantity):

periodDurationstartTimerules[].data.timestamp 使用普通 number

权限类型速查

类型
文档

erc20-token-periodic

ERC-20 周期性

erc20-token-stream

ERC-20 流式

native-token-periodic

原生币周期性

native-token-stream

原生币流式

错误处理

常见失败原因:

  • 权限类型或链不受支持

  • 参数格式错误(如 amountPerSecond 为 0)

  • 用户拒绝授权

  • stream 类型 maxAmount < initialAmount

  • 批量请求包含多个 chainId

授权后的步骤

  1. 保存 contextdelegationManager 及完整 permission 数据。

  2. 由 Session Account 调用 redeemDelegations

Last updated