EIP-7702
Stable 支持 EIP-7702,它允许 EOA 将其账户代码设置为现有的智能合约。EOA 在执行委托者的逻辑时保留其原始地址和私钥。
交易格式
EIP-7702 使用交易类型 0x04 和一个 authorizationList 字段。每个授权都指定了一个委托合约,EOA 在该交易中执行其代码。
{
type: 4,
to: eoa.address,
data: delegateCallData,
authorizationList: [signedAuthorization],
maxPriorityFeePerGas: 0n, // always 0 on Stable
// ... standard EIP-1559 fields
}授权包含:
chainId:必须与目标链匹配。address:委托合约地址。nonce:授权账户的 nonce。如果该账户也发送交易,请使用其当前 nonce 加一,因为交易在处理授权之前会增加 nonce。
支持 EIP-7702 的钱包和库会自动处理授权格式。
工具
- ethers.js (v6.14+):
wallet.authorize({ chainId, address, nonce })生成用于包含在authorizationList中的签名授权。 - viem:使用
signAuthorization和一个 walletClient,然后将结果传递给sendTransaction。当同一账户发送交易时,传递executor: "self",viem 会为您设置 nonce。 - Alchemy 钱包 API:委托给经过审计的智能账户并管理会话密钥,而无需自行构建授权。请参阅 使用 EIP-7702 的会话密钥。
- Hardhat / Foundry:当您的工具链版本支持 Pectra 硬分叉时,标准的 EIP-7702 交易格式即可使用。
接下来推荐
- EIP-7702 概念:了解委托模型以及何时使用它。
- 使用 EIP-7702 进行账户抽象:逐步将多个调用批处理到一个交易中。
- 使用 EIP-7702 的会话密钥:授予一个有范围、会过期的密钥,可以在不使用所有者密钥的情况下发送交易。

