@anywalletkit/wallet-evm

中文文档
0.7.0发布于 2026/11/03Apache-2.0TypeScriptESM + CJS构建来源已验证近 30 天下载 2765

任何钱包包的EVM钱包:BIP-32 m/44'/60'/0'/0/i账户,EIP-191 / EIP-712 / EIP-1559签名,ERC-20转帐和批准,以viem为基础.

中文使用文档
文档目录3 节
  1. 安装
  2. 输入信息
  3. 安全层

@anywalletkit/wallet-evm (英语)

npm

EVM账户中的任何钱包套件,来源于 m/44'/60'/0'/0/i 一样 路径作为 MetaMask 和 ethers,由金向量粘住 @anywalletkit/conformance。 。 。 .

安装

npm install @anywalletkit/wallet-evm
# or: pnpm add @anywalletkit/wallet-evm  ·  yarn add @anywalletkit/wallet-evm

时间: @anywalletkit/wallet-evm (英语)发表于 发布工作流程 与出处.

import WalletManagerEvm from '@anywalletkit/wallet-evm'

const wallet = new WalletManagerEvm(seedPhrase, { provider: ['https://rpc-a', 'https://rpc-b'] })
const account = await wallet.getAccount(0)
await account.transfer({ recipient: '0x…', amount: 10n ** 15n })                  // ETH
await account.transfer({ token: USDT, recipient: '0x…', amount: 1_000_000n })      // ERC-20
await account.approve({ token: USDT, spender: ROUTER, amount: 1_000_000n })
const sig = await account.signTypedData({ domain, types, message })               // EIP-712
wallet.dispose()                                                                  // zeroizes seed + keys

离线签名: 省略 provider,通过 chainId (或把它放在tx上)和呼叫 signTransaction 与每一个字段组合——没有任何东西触及网络.

输入信息

getTokenInfo(address) 从其合同中读取了ERC-20: { address, standard: 'erc20', decimals, symbol, name, totalSupply, flags }。 。 。 . bytes32 符号(MKR)被解码;不是UTF-8的文本是 ''。 。 。 . flags 持有 upgradeable 当地址是 EIP-1967 / EIP-1822 / 信标/齐柏林飞船 代理服务器。 无代码、EIP-7702-授权账户或无 decimals() (NFT,普通合同)抛出 NotATokenError; RPC 失败按原样投出. @anywalletkit/tokens 构建“ 添加 ” 标志"流动在它上.

安全层

每一次发送都通过,顺序是:静态拒绝 模拟 收费上限 签 广播.

  • 你签什么. describeTransaction(tx, {chainId}) 财务报告和审定财务报表 describeTypedData(typed, {chainId, account}) 纯的,用于确认屏幕的离线解码器: 等 (native-transfer, (中文(简体) ), erc20-transfer, (中文(简体) ), erc20-approve, (中文(简体) ), contract-call, (中文(简体) ), eip7702-delegation; ; ; ; ; permit, (中文(简体) ), permit2, (中文(简体) ), safe-tx, (中文(简体) ), generic, (中文(简体) ), 已解码的字段和警告approve-unlimited, (中文(简体) ), to-zero-address, (中文(简体) ), chain-mismatch, (中文(简体) ), deadline-passed, (中文(简体) ), owner-mismatch, (中文(简体) ), legacy-fee-fields) (中文(简体) ).
  • 硬拒绝 在任何签名之前: 为另一个链扔出 tx 或打入的数据域 ChainMismatchError (覆盖输入的数据与 allowCrossChainTypedData; 数值为零 地址掷出 UnsafeTransactionError (与 allowBurn) (中文(简体) ).
  • 模拟. simulateTransaction(tx) 运行 eth_call + 气体估计和返回 {ok, gas, returnData} 或者说 {ok: false, reason, data} 用解码器 Error(string) 编号 : Panic 编号 : 自定义错误选择器. sendTransaction 编号 : transfer 编号 : approve 先模拟后抛出 SimulationError 而不是广播回放; simulate: false 选择退出。 估计气体 重新使用,所以要询问一次网络.
  • 收费上限. transferMaxFee 编号 : transactionMaxFee 检查交易即将进行 签字的气体限制x gasPrice 编号 : maxFeePerGas,包括您设置的收费字段—— 之前 每个签名. quoteSendTransaction 一样的价格,所以一个包 maxFee 政策也看待他们.
  • 收费上限. A 类 gasPrice 编号 : maxFeePerGas 编号 : maxPriorityFeePerGas 你设置自己是 被拒绝(UnsafeTransactionError) 当其比率高于 maxFeeRateMultiplier (违约10)× 网络当前引号( 以 eth_gasPrice 以及EIP-1559估计值)和10克/威以上. 帐单上填写的收费不检查;没有提供者,或者引文不能读取时, 无所拒绝( 使用 transactionMaxFee 下线签名);引用最多等待 5 s. (英语). maxFeeRateMultiplier: null (或 Infinity关闭;低于1的值投掷a RangeError 当账户被创建时.
  • 广播. 丢弃的答案 BroadcastUnknownError 用当地计算 hash显示 : 别再发了 与几个RPC, already known 下一个交易是同一个交易 并决心要完成它. nonce too low 仅在下个非ce是 被另一笔交易所证明: 至少两个不同的RPC 计算账户已被布雷 过账(latest他们中没有一个知道被弃绝的大麻。 否则——一个RPC 配置, 或 RPC 不同意 — 发送抛出 NonceConflictError 联合国 BroadcastUnknownError数字 : maybeSent, (中文(简体) ), hash附加时 nonce 和节点 nextNonce),并且没有签署新的文件,因为RPC 被拒绝的字节仍可保留并广播签名的字节。 显示“ 网络没有确认 —— 检查 ” 活动,然后重试";账户的下个发送跳过被拒绝的非ce. replacement transaction underpriced 从来没有被重审.
  • EIP-2612许可. getPermitInfo(token) 读取 name/version/nonces/DOMAIN_SEPARATOR 财务报告和审定财务报表 报告 supported 只有在重建的EIP-712域名等于合同本身的情况下; signPermit({token, spender, value, deadline}) 返回时 {signature, v, r, s, nonce, deadline, typedData}。 。 。 . DAI的遗产 permit(holder, spender, nonce, expiry, allowed) 不被支持.
const d = describeTransaction(tx, { chainId: await account.getChainId() })
if (d.warnings.some((w) => w.code === 'approve-unlimited')) ask(d)
const sim = await account.simulateTransaction(tx)
if (!sim.ok) show(sim.reason)

版本与发布记录

@anywalletkit/wallet-evm 共发布 14 个版本,首次发布于 2026/10/25;过去 12 个月发布了 14 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.7.0latest2026/11/034 天前
0.6.02026/10/308 天前
0.5.02026/10/309 天前
0.4.12026/10/2910 天前
0.4.02026/10/2810 天前
0.3.12026/10/2811 天前

关于 @anywalletkit/wallet-evm 的常见问题

@anywalletkit/wallet-evm 是什么?

任何钱包包的EVM钱包:BIP-32 m/44'/60'/0'/0/i账户,EIP-191 / EIP-712 / EIP-1559签名,ERC-20转帐和批准,以viem为基础.

如何安装 @anywalletkit/wallet-evm?

在项目目录运行 npm install @anywalletkit/wallet-evm,或使用 pnpm add / yarn add / bun add。

@anywalletkit/wallet-evm 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@anywalletkit/wallet-evm 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@anywalletkit/wallet-evm 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@anywalletkit/wallet-evm 可以商用吗?

@anywalletkit/wallet-evm 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@anywalletkit/wallet-evm 的下载量有多少?

根据 npm 官方下载统计,@anywalletkit/wallet-evm 在 2026/10/06 – 2026/11/04 这 30 天内被下载 2,765 次,日均约 92 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@anywalletkit/wallet-evm 还在维护吗?

最新版本 0.7.0 发布于 2026/11/03(4 天前);至今共发布 14 个版本,其中过去 12 个月发布了 14 个;首次发布于 2026/10/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。