@anywalletkit/kit

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

Any Walet Kit管弦乐团:一个种子或签名器,已注册的链条钱包和协议模块,CAIP-2链的账号,在任何节目播出前运行的政策.

中文使用文档
文档目录4 节
  1. 安装
  2. 活动历史
  3. 一般倒置
  4. 意向性期刊——app-side合同

@ anywalletkit/ kit (英语)

npm

管弦乐者. 链包和协议模块已注册;工具包 由 CAIP-2 链式代号及协议按名称排列的账户, 全部由一个输入 种子短语(或它的64字节种子)或一个外部 Signer被同样的政策包裹着. 短语在构造器中变为种子字节, 并且从未保存; 没有种子或密钥 永远拥有自己的财产 Wallet,管理器,账户或签名器,所以日志和序列器显示 没有秘密.

安装

npm install @anywalletkit/kit
# or: pnpm add @anywalletkit/kit  ·  yarn add @anywalletkit/kit

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

import { Wallet } from '@anywalletkit/kit'
import WalletManagerEvm from '@anywalletkit/wallet-evm'
import WalletManagerSolana from '@anywalletkit/wallet-solana'

const wallet = new Wallet(seedPhrase, {
  policies: {
    maxFee: { 'eip155:1': 10n ** 16n },                 // 0.01 ETH
    allowlist: { 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp': [TREASURY] },
    confirm: async (intent) => ui.confirm(intent),      // last word before broadcast
  },
})
wallet.registerWallet('eip155', WalletManagerEvm, { provider: ['https://rpc-a', 'https://rpc-b'] })
wallet.registerWallet('solana', WalletManagerSolana, { provider: SOL_RPC })
wallet.registerProtocol('lido', LidoProtocolEvm, { chain: 'eip155:1' })

const eth = await wallet.getAccount('eip155:1')          // policies applied
await eth.transfer({ recipient: '0x…', amount: 10n ** 15n })
const lido = await wallet.getProtocol<LidoProtocolEvm>('lido')
wallet.dispose()                                          // zeroizes the seed and every chain's keys; later calls throw

在签署或广播之前执行的政策,按此顺序:费用上限 (先引用,账户可以引用的地方),允许列表,块列表, confirm。 。 。 . maxFee (本国基数单位) sendTransaction, (中文(简体) ), signTransaction 财务报告和审定财务报表 transfer,然后作为 WriteOptions.maxFee 故它能保存所签的; approve (欧洲议会), sendSerialized (索拉纳语), signRaw (特伦), revokeDelegation 和交换2's sendSerializedTransaction 钩子也一样,由账户检查 交易它签。 在一个帽子下,一个支付费用但无处可去的书写 选择一个( 3)signBuilt, (中文(简体) ), signCompiled, (中文(简体) ), signTransactionMessage被拒绝; 脱链签名不封顶. 账户的每个写出表面都被覆盖—— sendTransaction, (中文(简体) ), transfer, (中文(简体) ), signTransaction (自行签名和广播的模块无法跳过) 他们, sign, NEAR's (英语) signNep413 还有TON的 signTonProof 编号 : signTonConnectData (消息签名: confirm 只有,没有移动,批准表面 approve, (中文(简体) ), signPermit 和EIP-2612/ 许可证2 signTypedData (对照 开支者· ; confirm 看见了 kind: 'approval' 与 unlimited),EIP-3009 (中文(简体) ) TransferWithAuthorization 编号 : ReceiveWithAuthorization, ERC- 2771 ForwardRequest, (中文(简体) ), MetaTransaction 编辑 1英寸长 Order (单位:千美元)kind: 'send'由谁支付) signTypedData (单位:千美元)kind: 'typedData' 与 destinationUnknown: true页:1 允许列表拒绝它,所以块列表没有 confirm; 块列表 verifyingContract 拒绝), 和连锁店,如Tron's signRaw, NEAR's (英语) signBuilt索拉纳的 sendSerialized。规则是逐一拒绝:任何账户方法 sign* 编号 : send* 编号 : approve* 编号 : revoke* 编号 : transfer* 被保护,除非它 列在 UNGUARDED_WRITES,所以链套件中的新签名方法 不能通过不命名来绕过政策。 阅读从不被截取. 没有什么东西能绕过包装器: signer 隐藏, 一个账户 方法返回( NEAR ) withAccountId回到同样的政策之下, 财务报告和审定财务报表 wallet.getManager(chain) 手出有守卫的账户getAccount, (中文(简体) ), getAccountByPath, (中文(简体) ), getNamedAccount),而无种子或签注者接通. 这个 包件将签名器隐藏在描述和密钥列表中, 拒绝写入 转入账户_config 以冷冻本形式阅读) maxFee 规则 拒绝 sign* 编号 : send* 帮助政策不能引用。 边界是 钱包会发出什么: Wallet 对象本身是应用程序的——给 模块和 dApp 桥口账户、管理器或协议,从不 Wallet。 。 。 . 协议模块总是得到包装,有政策或没有: 任何没有规则的包装(没有限制,但没有标志,没有内部) 帮助者和没有可写设置 。 链条账户保持他们的签名人私密 字段,所以连应用程序自己的账户都没有(getAccount 钱包上没有 (政策)有 signer 财产; signerKind 说什么是钥匙.

名单检查每个目的地的写出姓名(intent.destinations(没有) 只有它所呼叫的合同: 接受者或支出者在标准符号呼叫中 (ERC-20/721/1155转让, approve, (中文(简体) ), increaseAllowance, (中文(简体) ), setApprovalForAll,许可2 approve,一个在线EIP-2612 permit页:1 transferAndCall),TRC-20电话(通过 parameters 内部 raw_data_hex, (中文(简体) ), 没有 ft_transfer(_call) 编号 : nft_transfer(_call) 编号 : storage_deposit 编号 : deleteAccount (同样在基数64borsh),TON喷气通和NFT转移(目的地) 和超额接收人),代号账户的所有人,SPL转账支付 (通过账户阅读) getTokenAccountOwner,仅在列表或 confirm 以及索拉纳学说给付或授权的人。 许可列表必须 把他们全部抓起来 当写作的一部分无法读取时,意图是 destinationUnknown:一个许可列表拒绝,一个没有的块列表也拒绝 confirm 钩. transfer 由 recipient每一条链子都要付. 批准书是 unlimited 类型( uint128 ).max 或以上( 核心) isUnlimitedAllowance(a) 许可证2批次 列出在 intent.approvals。检查和签名使用 第一次核对前的论据副本,以及 confirm 获得自己的: 一个比喻,一个比喻 confirm 钩子或定时器不能更改在它之后所签名的内容 判断.

撤销是 kind: 'revoke'页:1 approve 编号 : signPermit / EIP-2612 许可 0, 原始取消调用数据( e)approve(0x0, tokenId), (中文(简体) ), setApprovalForAll(…, false), (中文(简体) ), 许可证2 lockdown,或只用这批)和 revokeDelegation()原始内容 approve(spender, 0) 非撤销:在ERC-721上批准 spender 页:1 符号 #0,所以检查为批准 spender。它跳过许可列表和开支者块列表条目 (从被封锁的排水者那里收回津贴必须保持可能) blocklist仍然适用于所谓的合同、收费上限和 confirm 适用, 财务报告和审定财务报表 confirm 看见了 revokes: [{ token, spender }]。 。 。 .

活动历史

history() 是钱包的活性种子 : 每个链条都有一页 历史源, 最新的第一, 第一注册协议描述的每行 模块 describeActivity (登记令),或 通用倒计时。 除非要求, 标记为垃圾邮件的来源行会被隐藏 .

import { createEvmHistory } from '@anywalletkit/history-evm'

const wallet = new Wallet(seedPhrase, {
  activity: {
    known: { 'eip155:8453': { '0x3fC9…7FAD': 'Uniswap Universal Router' } }, // subtitle for otherwise-anonymous contract calls
    natives: { 'eip155:999999': { symbol: 'XYZ', decimals: 18 } },            // overrides the built-in table / swap2-assets catalog
    onError: (e) => log.warn('activity', e),                                 // a source down, a recognizer that threw, a journal write that failed
    pendingTtl: 24 * 3600,                                                   // seconds a pending intent waits for its row (default)
  },
})
wallet.registerWallet('eip155', WalletManagerEvm, { provider })
wallet.registerProtocol('aave', AaveProtocolEvm, { chain: 'eip155:8453' })   // every registered protocol is a recognizer
wallet.registerHistorySource(createEvmHistory({ chainId: 8453, etherscanApiKey }))
wallet.registerHistorySource(createEvmHistory({ chainId: 1, etherscanApiKey }))

const page = await wallet.history({ limit: 20 })        // account 0 on every chain with a source
const older = await wallet.history({ limit: 20, cursor: page.cursor })
// or explicit addresses / chains:
await wallet.history({ addresses: [{ chain: 'eip155:1', address }], includeSpam: true, since: lastRefresh })

const item = await wallet.describeTransaction(tx)       // one ChainTx through the same pipeline, for a detail screen

history(query) → { items: FeedItem[], cursor?, errors? }

  • query.addresses (单位:千美元){chain, address}[])或(或) query.index (每个有源链的账户索引,默认为0); chains 限制; limit (违约20); includeSpam· ; since (unix 秒,用于刷新); cursor 从上页.
  • items 为: ActivityItems (单位:千美元)id = chain:hash, (中文(简体) ), kind, (中文(简体) ), title, (中文(简体) ), subtitle, (中文(简体) ), assetsOut 编号 : assetsIn 基数单位,有符号和小数, counterparty, (中文(简体) ), related, (中文(简体) ), spam, (中文(简体) ), fee, (中文(简体) ), explorerUrl+) 加上 (中文(简体) ) intentId 当该行属于日记意图时 approval (单位:千美元)token, (中文(简体) ), spender, (中文(简体) ), amount, (中文(简体) ), null = 无限制) approve 编号 : revoke。 。 。 .
  • cursor 将每个源的光标打包成一个不透明的字符串; 当每个源被耗尽时, 空出 。 订单是时间干燥,然后是链条,然后是散列. 返回短页的源头永远不会被超越:其他链条的更老行会等待它的下一页,所以一行永远不能出现在较后一页上,比起更新的一行. 带有块窗页来解答空页的源后续到 maxEmptyHops (默认3)每个呼叫.
  • errors 列出该调用失败的 stage: 'source' | 'recognizer' | 'journal',与 chain 编号 : module) (中文(简体) ). 一个失败的源保持其在光标上的位置, 并在下一个调用时被重试; 为该行跳过一个丢入的识别器, 而下一个识别器 / 掉入后仍然运行 。 没有什么是默默地放弃的.

一般倒置

describeGeneric(tx, ctx, opts) 用于输出和纯度。 从主人入道:

类型何时标题/字幕
send仅属于他人“Sent USDC”,接收者标签
receive只有其他人 —— 拥有(也通过他人的合同电话进行空投)"收到ETH",发件人标签
self(钱包的两个账户)"自转",移动金额 assetsOut
approve 编号 : revoke名为 ERC-20 的拥有者 approve (0x095ea7b3); 金额 0=撤销, ^ 2^255=无限制"授权的USDC许可2", approval 已填满
contract任何其它的呼叫( 移动时挂起)"合同呼吁", opts.known[chain][to] 标签或 0x1234…abcd
unknown没有移动,没有打电话"交易"

发送失败 保留预定数量( 本地值, 或 ERC-20) transfer 调用数据)。 符号和小数来自转接行,然后是互换-资产目录,然后是本地表格(natives 选项 → 内置: TON、SOL、TRX、BTC、NEAR → EVM链的目录原生者 → 命名空间默认值. spam 可从 raw.spam 编号 : tx.spam (历史-evm规则.

意向性期刊——app-side合同

链上行不能说"通过1Click(swapped USDC → ETH)"(链上显示USDC发送到一个存款地址),不能对一桥的两条腿,除非被探险家索引,否则不在那里. 应用程序记录了什么 谓 套件折叠成:

const journal = createMemoryIntentJournal()        // or your own { list, put, remove } over SQLite / AsyncStorage
wallet.setIntentJournal(journal)

写一个 Intent 每个用户动作,在播放后立即:

await journal.put({
  id: crypto.randomUUID(),                 // or the provider's id (1Click deposit address, LI.FI route id)
  kind: 'swap',                            // swap | bridge | stake | unstake | claim | supply | withdraw | borrow | repay | send | wrap | unwrap
  createdAt: Math.floor(Date.now() / 1000),
  chain: 'eip155:1', address: from,        // where it started, who signed
  hashes: [{ chain: 'eip155:1', hash: depositHash }],          // source leg first; push the destination leg when the provider reports it
  expect: { assetsOut: [{ token: USDC, amount, symbol: 'USDC', decimals: 6 }], assetsIn: [{ token: null, amount: quoteOut, symbol: 'ETH', decimals: 18 }] },
  protocol: '@anywalletkit/protocol-swap2-near-intents',
  subtitle: 'NEAR Intents',
  status: 'pending',
})

应用程序所写的

  • 换乘/桥 (刷取2)数字 : kind swap (同样的链条)或 bridge, (中文(简体) ), hashes[0] =源交易(存款/路由器呼叫), expect 从引文。 当供应商的状态终点返回目的地散列时, put 其意图再次附在 hashes (中继器填充不是钱包本身的tx输入) related) (中文(简体) ). 对于1Click,即用户发送到存款地址,供应商在稍后填充时,存款tx是 hashes[0] 填满的散列物附着一次 GET /status 返回它.
  • 活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活数字 : kind supply 编号 : withdraw 编号 : stake 编号 : unstake 编号 : claim, (中文(简体) ), hashes[0] 交易, protocol 模块名称, subtitle 市场标签。 模块自己识别出这些行;意向只在探险家索引行之前才重要.
  • 发送: 可选( n)kind: 'send'; 用于待定行和用于联系人标签 subtitle。 。 。 .
  • 核准:不需要(倒置和批准模块承认它们).

什麽 history() 使用日记 :

  1. 一行的散列要继承 kind, (中文(简体) ), protocol, (中文(简体) ), subtitle 和预期资产 当识别器返回一个通用项目时;承认者的判决被保留. 每件相配的物品 intentId 财务报告和审定财务报表 related (另一条腿).
  2. 在第一页没有一行的待决意图中,每条腿都要检查 getTransaction (勘探滞后);发现 —— 排放确认;没有发现 —— 排放在上方,作为 status: 'pending', (中文(简体) ), id: intent:<id>,标题来自 expect。 。 。 .
  3. 同一页上一个意图的两条腿倒入一个项(源腿), assetsIn 从目的地一行, related 指向它; 目的地行被丢弃。 掉在不同页面上的腿 intentId;如果将页面保存在记忆中,则在应用程序中崩溃.
  4. 等待时间超过 pendingTtl (默认 24 (h) 无行 ) status: 'failed'并坚持下去。 失败的意图一直显示在第一页的顶端,直到应用程序 removes他们(解散行动).
  5. 匹配的意图被写回为 confirmed 编号 : failed。工具箱从不去除意图;prune确认的比保留窗口老.

时间戳是unix 秒像 ChainTx.time; 金额为基单元重金.

版本与发布记录

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

版本发布日期距今
0.8.1latest2026/11/07今天
0.8.02026/11/034 天前
0.7.12026/10/308 天前
0.7.02026/10/309 天前
0.6.02026/10/2810 天前
0.5.12026/10/2811 天前

关于 @anywalletkit/kit 的常见问题

@anywalletkit/kit 是什么?

Any Walet Kit管弦乐团:一个种子或签名器,已注册的链条钱包和协议模块,CAIP-2链的账号,在任何节目播出前运行的政策.

如何安装 @anywalletkit/kit?

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

@anywalletkit/kit 支持 TypeScript 吗?

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

@anywalletkit/kit 支持 ESM 还是 CommonJS?

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

@anywalletkit/kit 需要什么版本的 Node.js?

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

@anywalletkit/kit 可以商用吗?

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

@anywalletkit/kit 的下载量有多少?

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

@anywalletkit/kit 还在维护吗?

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