请求执行权限
wallet_requestExecutionPermissions 是 EIP-7715 的核心方法。DApp/Agent 通过它向 TokenPocket 用户请求授权,用户在钱包 UI 中确认后,返回可用于后续 redeem 的权限响应。
前置条件
已连接钱包(
eth_requestAccounts)。建议已调用
wallet_getSupportedExecutionPermissions确认能力。已准备 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
展示给用户的授权说明文案,应清晰描述用途。
数量字段
periodAmount、initialAmount、maxAmount、amountPerSecond 等金额字段使用 hex 编码的最小单位(RPC quantity):
periodDuration、startTime、rules[].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
授权后的步骤
保存
context、delegationManager及完整permission数据。由 Session Account 调用
redeemDelegations
Last updated