返回顶部
s

smart-accounts-kit智能账户工具包

Web3 development using MetaMask Smart Accounts Kit. Use when the user wants to build dApps with ERC-4337 smart accounts, send user operations, batch transactions, configure signers (EOA, passkey, multisig), implement gas abstraction with paymasters, create delegations, or request advanced permissions (ERC-7715). Supports Viem integration, multiple signer types (Dynamic, Web3Auth, Wagmi), gasless transactions, and the Delegation Framework.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
1,236
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

smart-accounts-kit

快速参考

本技能文件提供对 MetaMask 智能账户工具包 v0.3.0 的快速访问。有关详细信息,请参阅特定的参考文件。

📚 详细参考:

包安装

bash
npm install @metamask/smart-accounts-kit@0.3.0

对于自定义限制条件执行器:

bash
forge install metamask/delegation-framework@v1.3.0

核心概念摘要

1. 智能账户 (ERC-4337)

三种实现类型:

  • - 混合型 (Implementation.Hybrid) - EOA + 通行密钥签名者
  • 多签型 (Implementation.MultiSig) - 多个签名者,带阈值
  • 无状态7702型 (Implementation.Stateless7702) - EIP-7702 升级的 EOA

2. 委托框架 (ERC-7710)

从委托方授予权限给被委托方:

  • - 范围 - 初始权限(支出限额、函数调用)
  • 限制条件 - 由智能合约强制执行的限制
  • 类型 - 根委托、开放根委托、再委托、开放再委托
  • 生命周期 - 创建 → 签名 → 存储 → 赎回

3. 高级权限 (ERC-7715)

通过 MetaMask 扩展请求权限:

  • - 人类可读的 UI 确认
  • ERC-20 和原生代币权限
  • 需要 MetaMask Flask 13.5.0+
  • 用户必须拥有智能账户

快速代码示例

创建智能账户

typescript
import { Implementation, toMetaMaskSmartAccount } from @metamask/smart-accounts-kit
import { privateKeyToAccount } from viem/accounts

const account = privateKeyToAccount(0x...)

const smartAccount = await toMetaMaskSmartAccount({
client: publicClient,
implementation: Implementation.Hybrid,
deployParams: [account.address, [], [], []],
deploySalt: 0x,
signer: { account },
})

创建委托

typescript
import { createDelegation } from @metamask/smart-accounts-kit
import { parseUnits } from viem

const delegation = createDelegation({
to: delegateAddress,
from: delegatorSmartAccount.address,
environment: delegatorSmartAccount.environment,
scope: {
type: erc20TransferAmount,
tokenAddress: 0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238,
maxAmount: parseUnits(10, 6),
},
caveats: [
{ type: timestamp, afterThreshold: now, beforeThreshold: expiry },
{ type: limitedCalls, limit: 5 },
],
})

签名委托

typescript
const signature = await smartAccount.signDelegation({ delegation })
const signedDelegation = { ...delegation, signature }

赎回委托

typescript
import { createExecution, ExecutionMode } from @metamask/smart-accounts-kit
import { DelegationManager } from @metamask/smart-accounts-kit/contracts
import { encodeFunctionData, erc20Abi } from viem

const callData = encodeFunctionData({
abi: erc20Abi,
args: [recipient, parseUnits(1, 6)],
functionName: transfer,
})

const execution = createExecution({ target: tokenAddress, callData })

const redeemCalldata = DelegationManager.encode.redeemDelegations({
delegations: [[signedDelegation]],
modes: [ExecutionMode.SingleDefault],
executions: [[execution]],
})

// 通过智能账户
const userOpHash = await bundlerClient.sendUserOperation({
account: delegateSmartAccount,
calls: [{ to: delegateSmartAccount.address, data: redeemCalldata }],
})

// 通过 EOA
const txHash = await delegateWalletClient.sendTransaction({
to: environment.DelegationManager,
data: redeemCalldata,
})

请求高级权限

typescript
import { erc7715ProviderActions } from @metamask/smart-accounts-kit/actions

const walletClient = createWalletClient({
transport: custom(window.ethereum),
}).extend(erc7715ProviderActions())

const grantedPermissions = await walletClient.requestExecutionPermissions([
{
chainId: chain.id,
expiry: now + 604800,
signer: {
type: account,
data: { address: sessionAccount.address },
},
permission: {
type: erc20-token-periodic,
data: {
tokenAddress,
periodAmount: parseUnits(10, 6),
periodDuration: 86400,
justification: 每日转账 10 USDC,
},
},
isAdjustmentAllowed: true,
},
])

赎回高级权限

typescript
// 智能账户
import { erc7710BundlerActions } from @metamask/smart-accounts-kit/actions

const bundlerClient = createBundlerClient({
client: publicClient,
transport: http(bundlerUrl),
}).extend(erc7710BundlerActions())

const permissionsContext = grantedPermissions[0].context
const delegationManager = grantedPermissions[0].signerMeta.delegationManager

const userOpHash = await bundlerClient.sendUserOperationWithDelegation({
publicClient,
account: sessionAccount,
calls: [
{
to: tokenAddress,
data: calldata,
permissionsContext,
delegationManager,
},
],
})

// EOA
import { erc7710WalletActions } from @metamask/smart-accounts-kit/actions

const walletClient = createWalletClient({
account: sessionAccount,
chain,
transport: http(),
}).extend(erc7710WalletActions())

const txHash = await walletClient.sendTransactionWithDelegation({
to: tokenAddress,
data: calldata,
permissionsContext,
delegationManager,
})

关键 API 方法

智能账户

  • - toMetaMaskSmartAccount() - 创建智能账户
  • aggregateSignature() - 合并多签签名
  • signDelegation() - 签名委托
  • signUserOperation() - 签名用户操作
  • signMessage() / signTypedData() - 标准签名

委托

  • - createDelegation() - 创建带被委托方的委托
  • createOpenDelegation() - 创建开放委托
  • createCaveatBuilder() - 构建限制条件数组
  • createExecution() - 创建执行结构体
  • redeemDelegations() - 编码赎回调用数据
  • signDelegation() - 使用私钥签名
  • getSmartAccountsEnvironment() - 解析环境
  • deploySmartAccountsEnvironment() - 部署合约
  • overrideDeployedEnvironment() - 覆盖环境

高级权限

  • - erc7715ProviderActions() - 用于请求的钱包客户端扩展
  • requestExecutionPermissions() - 请求权限
  • erc7710BundlerActions() - Bundler 客户端扩展
  • sendUserOperationWithDelegation() - 使用智能账户赎回
  • erc7710WalletActions() - 钱包客户端扩展
  • sendTransactionWithDelegation() - 使用 EOA 赎回

支持的 ERC-7715 权限类型

ERC-20 代币权限

权限类型描述
erc20-token-periodic每周期限额,每个周期重置
erc20-token-streaming
线性流式传输,按 amountPerSecond 速率 |

原生代币权限

权限类型描述
native-token-periodic每周期 ETH 限额,会重置
native-token-streaming
线性 ETH 流式传输,按 amountPerSecond 速率 |

常见委托范围

支出限额

范围描述
erc20TransferAmount固定 ERC-20 限额
erc20PeriodTransfer
每周期 ERC-20 限额 | | erc20Streaming | 线性流式传输 ERC-20 | | nativeTokenTransferAmount | 固定原生代币限额 | | nativeTokenPeriodTransfer | 每周期原生代

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 metamask-smart-accounts-kit-1776360135 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 metamask-smart-accounts-kit-1776360135 技能

通过命令行安装

skillhub install metamask-smart-accounts-kit-1776360135

下载

⬇ 下载 smart-accounts-kit v1.0.0(免费)

文件大小: 20.37 KB | 发布时间: 2026-4-17 14:45

v1.0.0 最新 2026-4-17 14:45
Initial public release providing quick access to the MetaMask Smart Accounts Kit

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部