@circle-fin/earn-kit

中文文档
1.13.0发布于 2026/11/06TypeScriptESM + CJS近 30 天下载 3.1万

DeFi 出借金库的SDK 存款、提款和奖励

中文使用文档
文档目录10 节
  1. 安装
  2. 快速启动
  3. 存款
  4. 退出费
  5. 断接操作( SCA 钱包)
  6. 发现缺陷
  7. 支持的链条
  8. 核心业务
  9. 配置
  10. 许可证

荣杰

License

说明: 恩杰快来了 本文中记录的API为: 早期整合和反馈;金库可用性和生产准备 将提前宣布.

Earn Kit是DeFi出借金库收入流的圆形SDK. 它提供类型 用于发现金库、取取钱包位置、预览的操作 押金、提款、奖励债权、执行押金、提款、以及 债权奖励交易.

安装

npm install @circle-fin/earn-kit
# or
yarn add @circle-fin/earn-kit

为您使用的钱包堆栈安装适配器 。 对于EVM流量:

npm install @circle-fin/adapter-viem-v2 viem
# or
yarn add @circle-fin/adapter-viem-v2 viem

快速启动

import { Blockchain, EarnChain, EarnKit } from '@circle-fin/earn-kit'
import { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'

const kit = new EarnKit()
const adapter = createViemAdapterFromPrivateKey({
  privateKey: process.env.PRIVATE_KEY,
})

const quote = await kit.getDepositQuote({
  from: { adapter, chain: EarnChain.Arc_Testnet },
  vaultAddress: '0xAabbeF1D3971c710276ed41eC791BbE14CdB8E88',
  amount: '100.50',
})

console.log(`Expected shares: ${quote.expectedShares.amount}`)

const depositResult = await kit.deposit({
  from: { adapter, chain: EarnChain.Arc_Testnet },
  vaultAddress: '0xAabbeF1D3971c710276ed41eC791BbE14CdB8E88',
  amount: '100.50',
})

console.log(`Deposit submitted: ${depositResult.txHash}`)

存款

同链存款保持现有批准和收益行动流动。 跨链 只有在 to 已存在 to.chain 与 from.chain。 。 。 .

const bridgeDeposit = await kit.deposit({
  from: { adapter, chain: Blockchain.Ethereum_Sepolia },
  to: {
    chain: EarnChain.Arc_Testnet,
    recipientAddress: '0x1234567890123456789012345678901234567890',
  },
  vaultAddress: '0xAabbeF1D3971c710276ed41eC791BbE14CdB8E88',
  amount: '100.50',
})

console.log(`Bridge deposit submitted: ${bridgeDeposit.execId}`)

对于跨链存款, to.recipientAddress 是目的地钱包 接收金库位置 from.address 可作为可选 源钱包覆盖 。 返回的结果包含桥执行ID, 提交状态、源链、目的地链、金库地址、金额和 准备捆绑过期时间戳。 SDK 生成桥执行 ID 财务报告和审定财务报表 retry() 失败后恢复同一桥的行刑.

跨链收益存款目前支持Ethereum Sepolia, Arbitrum Sepolia, 以 CArc Testnet 为源链 链条.

退出费

提款时引出 quote.fees. 环取费 标记为 type: 'circle' 因此,集成器可以显示收费预览 电话 withdraw。 。 。 .

const quote = await kit.getWithdrawalQuote({
  from: { adapter, chain: EarnChain.Arc_Testnet },
  vaultAddress: '0xAabbeF1D3971c710276ed41eC791BbE14CdB8E88',
  amount: '50.00',
})

const circleFee = quote.fees.find((fee) => fee.type === 'circle')
if (circleFee === undefined) {
  console.log('Circle fee: 0')
} else {
  console.log(`Circle fee: ${circleFee.amount} ${circleFee.symbol}`)
}

当不适用圆形收费,包括后端收费旗被禁用时, quote.fees 没有 type: 'circle' 输入。 EinKit 格式收费金额 人类可读小数字符串, 与工具箱级其他引用一致 表面。 读取返回的收费项 symbol 而不是假设一个固定 收费标志.

断接操作( SCA 钱包)

同链 deposit 财务报告和审定财务报表 withdraw 通常提交两个顺序 交易: ERC-20/金库共享 approve 然后是恩典 execute。 。 。 . 当连接的适配器支持原子分批时, SDK 将 approve 财务报告和审定财务报表 execute 换成一批 适配器可以提交 批次通过EIP-5792, Circle钱包挑战,或ERC-4337用户操作. 这将删除用户批准但从未执行的部分状态窗口 ,并在单个钱包交互中确认.

Batching是自动的,不需要更改代码——它只有在 全部 如下情况:

  • 行动是 同链 deposit 或者说 withdraw (连锁存款) 使用EIP-3009签名,而不是 approve + 键 execute因此批量处理不 (适用).
  • 这个 from.chain 是一个EVM链.
  • 所签有效载荷含有正向符号拉出并未得到批准 跳过.
  • 钱包适配器报告对链和地址的原子批次支持.

SDK在提交前先读取当前备抵. 当需要补上时, 批发 [approve, execute];当津贴已经支付该数额时, 它提交 [execute] 无需通过同一批次的 API 核准。 操作中没有带有批准符号的输入、EOA钱包和 没有批次支持的钱包保持现有相继行为不变. 要强迫相继流动, 即使一个批量的可处理钱包, 设置 batchTransactions: false 操作中 config数字 :

await kit.deposit({
  from: { adapter, chain: EarnChain.Arc_Testnet },
  vaultAddress: '0xAabbeF1D3971c710276ed41eC791BbE14CdB8E88',
  amount: '100.50',
  config: { batchTransactions: false }, // always use sequential approve -> execute
})

发现缺陷

将链条上可用的每个金库进行平移, 不管理平移 :

for await (const vault of kit.exploreVaultsIterator({
  chain: 'Arc_Testnet',
  sortBy: 'apy',
})) {
  console.log(`${vault.name}: ${(vault.currentApy * 100).toFixed(2)}% APY`)
}

对于需要总计的已页 UI, 一次获取一页 :

const { vaults, pagination } = await kit.exploreVaults({
  chain: 'Arc_Testnet',
  page: 1,
})
console.log(`Page 1 of ${pagination.totalPages} (${pagination.totalCount} vaults)`)

支持的链条

使用 kit.getSupportedChains() 函数 getSupportedChains(context) 帮助从配置的收入提供者读取支持的链条定义 .

核心业务

  • getVaults: 获取一个或多个金库的金库元数据.
  • exploreVaultsIterator: 懒散地将链条上可用的每个金库都填平 带有任择议定书、资产、APY和TVL过滤器。 获取页面于 需求,所以没有页面算术来管理.
  • exploreVaults: 以 pagination 元数据, 用于页面化的 UIs .
  • getPosition: 获取金库的钱包位置 .
  • getDepositQuote:预览押金.
  • getWithdrawalQuote: 预览退出.
  • getClaimRewardsQuote: 预览可要求的奖励.
  • deposit:执行存款交易.
  • withdraw:执行退出交易.
  • claimRewards:要求奖励,或在没有交易的情况下返回 可索赔.
  • getCrossChainDepositStatus: 读取当前跨链桥状态 存款人 execId。 。 。 .
  • waitForCrossChainDeposit: 调查跨链存款,直到其达到 终端桥站状态(或等待预算缓冲).

配置

Ein Kit 没有 API 密钥。 API 密钥可以在每次操作中传递 允许的访问和归属 :

await kit.getVaults({
  vaults: [
    {
      chain: 'Arc_Testnet',
      vaultAddress: '0xAabbeF1D3971c710276ed41eC791BbE14CdB8E88',
    },
  ],
  config: {
    apiKey: process.env.CIRCLE_API_KEY,
  },
})

API密钥是服务器唯一的秘密——由浏览器投掷提供. 别动 在您的服务器上, 并将准备的交易转发给客户端 .

从 kitKey数字 : config.kitKey 以有利于 config.apiKey它继续工作 和遗产 KIT_KEY:<keyId>:<keySecret> 值仍然被接受,所以您可以按照自己的速度移动。 当两者 字段已经设置, apiKey 赢了.

许可证

这个项目根据Apache 2.0许可证获得许可. 联系人 支助 详细情况.

版本与发布记录

@circle-fin/earn-kit 共发布 20 个版本,首次发布于 2026/05/19;过去 12 个月发布了 20 个版本。

版本发布日期距今
1.13.0latest2026/11/063 天前
1.12.02026/10/319 天前
1.11.02026/10/2317 天前
1.10.02026/10/2119 天前
1.9.02026/10/1624 天前
1.8.12026/09/301 个月前

关于 @circle-fin/earn-kit 的常见问题

@circle-fin/earn-kit 是什么?

DeFi 出借金库的SDK 存款、提款和奖励

如何安装 @circle-fin/earn-kit?

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

@circle-fin/earn-kit 支持 TypeScript 吗?

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

@circle-fin/earn-kit 支持 ESM 还是 CommonJS?

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

@circle-fin/earn-kit 需要什么版本的 Node.js?

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

@circle-fin/earn-kit 可以商用吗?

@circle-fin/earn-kit 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@circle-fin/earn-kit 的下载量有多少?

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

@circle-fin/earn-kit 还在维护吗?

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