项目环境 "dependencies": { "@reown/appkit": "1.7.4", "@reown/appkit-adapter-wagmi": "1.7.4", "@wagmi/core": "^2.17.1", "viem": "^2.29.1", "wagmi": "^2.15.2" },
调用方法
// 创建钱包客户端,使用 MetaMask 账户
const walletClient = viem.createWalletClient({
account: address,
transport: viem.custom(provider)
});
// 检查 extend 方法是否存在
if (typeof walletClient.extend !== 'function') {
throw new Error('当前环境不支持 extend 方法');
}
// 添加 EIP-7702 功能
const clientWithEip7702 = walletClient.extend(eip7702Actions);
console.log(clientWithEip7702)
// 检查 signAuthorization 方法是否存在
if (typeof clientWithEip7702.signAuthorization !== 'function') {
throw new Error('当前环境不支持 signAuthorization 方法');
}
// 签署授权
const authorization = await clientWithEip7702.signAuthorization({
contractAddress,
});
console.log('使用 EIP-7702 签署授权成功');
出现异常
使用 EIP-7702 签署授权失败: AccountTypeNotSupportedError: Account type "json-rpc" is not supported.
The signAuthorization
Action does not support JSON-RPC Accounts.
Docs: https://viem.sh/docs/eip7702/signAuthorization Version: viem@2.29.1 at signAuthorization (chunk-LW77YY37.js?v=c83ef351:1557:11) at Object.signAuthorization (chunk-LW77YY37.js?v=c83ef351:2284:34) at signAuthorization (eip7702.js:91:53)