@circle-fin/bridge-kit

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

无缝跨链 USDC 连接的官方 Circle SDK

中文使用文档
文档目录42 节
  1. 目录
  2. 概览
  3. 为什么是桥基特?
  4. 开发者文档
  5. 建筑流程
  6. 安装
  7. 适配器
  8. 快速启动
  9. QQ 最轻松的设置: 单一适配器, 多链
  10. QQ 发送到不同的地址
  11. 生产设置:自定义 RPC 供应商
  12. QQ 浏览器/ Wallet 提供者支持
  13. QQ 高级设置: 全控
  14. 成本估算
  15. 配置
  16. 桥配置类型
  17. 桥速配置
  18. 自定义收费
  19. 自定义收费如何运作
  20. 1,000 USDC 传输示例
  21. 基特级收费政策
  22. 处理错误
  23. 正在重试失败的传输
  24. 方法签名
  25. 基本使用量(EVM-EVM)
  26. 何时重试与人工干预
  27. 限制
  28. 业绩和最佳做法
  29. 解决问题
  30. 转发器集成
  31. 有转发器的标准桥
  32. 仅转发目标( 无目标适配器)
  33. 以来源支付的费用接收-准确转发
  34. API 参考
  35. 核心方法
  36. 桥梁参数
  37. 发展
  38. 大楼
  39. 测试
  40. 地方发展
  41. 社区与支持
  42. 许可证

桥套

npm version TypeScript License Discord

无缝跨链 USDC 连接的官方 Circle SDK

Bridge Kit是EVM链与非EVM链相接的USDC的推荐集成表面,使桥接像单个函数调用一样简单

目录

概览

App Kit生态系统是Circle的开源努力,用SDK来简化稳定币的开发,而SDK是容易正确使用和难以被滥用的. Kit是跨框架的 (viem, ethers, @solana/web3) , 并且干净地融入到任何堆栈中 。 但提供逃生舱, 一个可插接的架构使执行具有灵活性,所有工具包都具有互通性,因此可以编组,以适应广泛的使用案例.

Bridge Kit通过一个类型安全,开发者友好的接口,与强大的运行时间验证,实现了跨链稳定币传输. Kit 可以通过执行您自己的“ Britching Provider” 来插入任何连接提供者, 但默认使用 CCTPv2 的完整支持

为什么是桥基特?

  • 🌉-第一桥设计:所有抽象围绕 来源 ↔ 目标 链式对
  • 零配置默认值: 内建可靠的 RPC 端点 - 立即开始建设
  • 带上自己的基础设施: 在需要时与您的现有设置无缝整合
  • * 生产准备安全: 液相圈的 CCTPv2 有确定性引用和最终性跟踪
  • QQ 开发者经验: 完整的类型Script支持,全面验证,以及即时连接
  • * 跨链连接: 桥基支持 52个链条 与 1300条桥梁路线总数 通过 Circle 的 CCTPv2
    • 主网(26个链): Arbitrum, Arc, Avalanche, Base, Codex, Cronos, Edge, Ethereum, HyperEVM, 注射式,墨水, Linea, Monad, Morph, OP Mainnet, Pharos, Plasma, Plume, Polygon PoS, Sei, 索拉纳, 索尼克, 单链, 世界链, XDC, X层
    • 测试网(26个链): Arc Testnet, Arbitrum Sepolia, Avalanche Fuji, Base Sepolia, Codex Testnet, Cronos Testnet, Edge Testnet, Ethereum Sepolia, HyperEVM Testnet, Impiret Testnet, Iink Testnet, Linea Sepolia, Monad Testnet, 莫夫特网, OP Sepolia, Pharos Atlantic, Plasma Testnet, Plume Testnet, Polygon Pos Amoy, See Testnet, Solana Devnet, Sonic Testnet, Unchain Sepolia, 世界链塞波利亚, XDC Apothem, X地层 Testnet
  • * 弹性适配器: 支持EVM(viem,以太)和索拉纳(@solana/web3)
  • 配置桥速度: FAST/滚动选项,费用优化
  • 实时活动监测:跟踪整个转移周期的进展情况
  • 强力错误处理:优雅的部分成功恢复
  • 飞行前验证: 执行前用成本估算核实转账
  • ++ 转发器集成: Circle 轨道中继器自动处理验证和薄荷
  • * 仅转发目的地: 不需要目标适配器 - 只提供收件人地址

开发者文档

建筑流程

Bridge Kit采用为灵活性和类型安全而设计的三层结构:

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   Bridge Kit    │────│     Provider     │────│   Adapter       │
│  (Orchestrator) │    │   (Protocol)     │    │ (Blockchain)    │
└─────────────────┘    └──────────────────┘    └─────────────────┘
  1. 适配器: 处理特定区块链的操作(钱包、交易、气体),并允许您使用任何您自在的框架(viem, ethers, @solana/web3, 以及即将到来的更多)
  2. 提供者: 执行过渡协议(目前为CCTPv2)
  3. 桥基特: 具有自动路由和验证功能的管弦乐器和提供商

这种分离可确保每个组成部分承担单一的责任,同时在整个跨链连接生命周期中保持无缝的一体化.

安装

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

适配器

选择目标链的适当适配器 :

# For EVM chains (Ethereum, Base, Arbitrum, etc.)
npm install @circle-fin/adapter-viem-v2 viem
# or
yarn add @circle-fin/adapter-viem-v2 viem

# For EVM chains using Ethers.js
npm install @circle-fin/adapter-ethers-v6
# or
yarn add @circle-fin/adapter-ethers-v6

# For Solana
npm install @circle-fin/adapter-solana @solana/web3.js
# or
yarn add @circle-fin/adapter-solana @solana/web3.js

快速启动

QQ 最轻松的设置: 单一适配器, 多链

最好还是: 快速启动, 使用一个钱包跨链的简单传输

工厂的方法使得它非常容易开始 内建的可靠的 RPC 端点不需要研究提供者或配置终点 - 开始建设! 创建 一个适配器 用在不同的链子上!

import { BridgeKit } from '@circle-fin/bridge-kit'
import { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'

// Initialize the kit
const kit = new BridgeKit()

// Create ONE adapter that works across all chains!
const adapter = createViemAdapterFromPrivateKey({
  privateKey: process.env.PRIVATE_KEY as string,
})

const result = await kit.bridge({
  from: { adapter, chain: 'Ethereum' },
  to: { adapter, chain: 'Base' },
  amount: '10.50',
})

关键特性:所有被支持的链都包含可靠的默认RPC端点.

QQ 发送到不同的地址

最好还是:向他人钱包,保管服务送出资金

使用 BridgeDestinationWithAddress 当收件人与适配器的地址不同时:

// Send to a different address on the destination chain
const result = await kit.bridge({
  from: { adapter, chain: 'Ethereum' },
  to: {
    adapter,
    chain: 'Base',
    recipientAddress: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',
  },
  amount: '10.50',
})

// Or use a different adapter for the destination chain
const baseAdapter = createViemAdapterFromPrivateKey({
  privateKey: process.env.PRIVATE_KEY as string,
})

const resultWithDifferentAdapter = await kit.bridge({
  from: { adapter, chain: 'Ethereum' },
  to: {
    adapter: baseAdapter,
    chain: 'Base',
    recipientAddress: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',
  },
  amount: '10.50',
})

生产设置:自定义 RPC 供应商

最好还是: 生产应用,可靠性提高,自定义配置

沟通涉及 两条链 (来源和目的地),两者都要求配置适当的RPC端点. 通过链式ID使用动态RPC映射支持单个适配器中的多条链:

import 'dotenv/config'
import { BridgeKit } from '@circle-fin/bridge-kit'
import { Ethereum, Base } from '@circle-fin/bridge-kit/chains'
import { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'
import { createPublicClient, http, fallback } from 'viem'

// Define RPCs mapped by chain ID
const RPC_BY_CHAIN_ID: Record<number, string[]> = {
  // The array allows providing multiple RPC URLs for fallback, e.g.,
  // `[ "https://primary-rpc-url.com/...", "https://secondary-rpc-url.com/..." ]`
  [Ethereum.chainId]: [
    `https://eth-mainnet.g.alchemy.com/v2/${process.env.ALCHEMY_KEY}`,
  ],
  [Base.chainId]: [
    `https://base-mainnet.g.alchemy.com/v2/${process.env.ALCHEMY_KEY}`,
  ],
}

const adapter = createViemAdapterFromPrivateKey({
  privateKey: process.env.PRIVATE_KEY as `0x${string}`,
  getPublicClient: ({ chain }) => {
    const rpcUrls = RPC_BY_CHAIN_ID[chain.id]
    if (!rpcUrls) {
      throw new Error(`No RPC configured for chainId=${chain.id}`)
    }
    return createPublicClient({
      chain,
      transport: fallback(
        rpcUrls.map((url) =>
          http(url, {
            timeout: 10_000,
            retryCount: 3,
          }),
        ),
      ),
    })
  },
})

const kit = new BridgeKit()

const result = await kit.bridge({
  from: { adapter, chain: 'Ethereum' },
  to: { adapter, chain: 'Base' },
  amount: '10.50',
})

最佳做法:

  • 使用付费的 RPC 供应商 (Alchemy、Infura、QuickNode)以提高可靠性
  • 执行 fallback() 运输 用于结束点之间的自动失效
  • 配置超时和重试选项 处理网络可变性

QQ 浏览器/ Wallet 提供者支持

最好还是:浏览器应用程序,钱包集成,用户控制的交易

import { BridgeKit } from '@circle-fin/bridge-kit'
import { createViemAdapterFromProvider } from '@circle-fin/adapter-viem-v2'

const kit = new BridgeKit()

// Create adapters from browser wallet providers
const adapter = await createViemAdapterFromProvider({
  provider: window.ethereum,
})

// Execute bridge operation
const result = await kit.bridge({
  from: { adapter, chain: 'Ethereum' },
  to: { adapter, chain: 'Base' },
  amount: '10.50',
})

QQ 高级设置: 全控

最好还是:高级用户,自定义客户端配置,具体的RPC要求

import { BridgeKit } from '@circle-fin/bridge-kit'
import { Ethereum, Base } from '@circle-fin/bridge-kit/chains'
import { ViemAdapter } from '@circle-fin/adapter-viem-v2'
import { createPublicClient, createWalletClient, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'

const account = privateKeyToAccount(process.env.PRIVATE_KEY as string)

// Chain-specific RPC URLs mapped by chain ID
const rpcUrls: Record<number, string> = {
  [Ethereum.chainId]: 'https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY',
  [Base.chainId]: 'https://base-mainnet.g.alchemy.com/v2/YOUR_KEY',
}

// Create one multi-chain adapter with chain-specific RPC configuration
const adapter = new ViemAdapter(
  {
    getPublicClient: ({ chain }) =>
      createPublicClient({
        chain,
        transport: http(rpcUrls[chain.id]),
      }),
    getWalletClient: ({ chain }) =>
      createWalletClient({
        account,
        chain,
        transport: http(rpcUrls[chain.id]),
      }),
  },
  {
    addressContext: 'user-controlled',
    supportedChains: [Ethereum, Base], // Support multiple chains!
  },
)

const kit = new BridgeKit()
// Execute bridge operation using the same adapter for both chains
const result = await kit.bridge({
  from: { adapter, chain: 'Ethereum' },
  to: { adapter, chain: 'Base' },
  amount: '10.50',
})

成本估算

最好还是: 显示用户收费,预算规划

// Get cost estimate before bridging
const estimate = await kit.estimate({
  from: { adapter, chain: 'Ethereum' },
  to: { adapter, chain: 'Base' },
  amount: '10.50',
})

console.log('Estimated fees:', estimate.fees)
console.log('Estimated gas:', estimate.gasFees)

配置

桥配置类型

Bridge Kit 支持不同的配置模式来匹配您的使用大小写 :

1. 联合国. 适应器背景 - 你的传输终点

// Create chain-agnostic adapter
const adapter = createViemAdapterFromPrivateKey({...})

// Always specify chain explicitly for clarity
const adapterContext = { adapter, chain: 'Ethereum' }

2. 联合国. 桥接点 - 资金去的地方

// Same as AdapterContext (adapter receives the funds)
const destination = { adapter, chain: 'Base' }

// Or with explicit recipient address
const destination = {
  adapter,
  chain: 'Base',
  recipientAddress: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',
}

3个. 桥连接 - 传输设置

// FAST: Optimized for speed with higher fees
// SLOW: Optimized for lower fees with longer processing time
const config = { transferSpeed: 'FAST' }

桥速配置

// Fast transfer (higher fees, faster completion)
const result = await kit.bridge({
  from: { adapter, chain: 'Ethereum' },
  to: { adapter, chain: 'Base' },
  amount: '100.0',
  config: { transferSpeed: 'FAST' },
})

// Slow transfer (lower fees, slower completion)
const result = await kit.bridge({
  from: { adapter, chain: 'Ethereum' },
  to: { adapter, chain: 'Base' },
  amount: '100.0',
  config: { transferSpeed: 'SLOW' },
})

自定义收费

Bridge Kit 允许您对 USDC 跨链传输收取自定义开发商费 。 了解这些收费如何与钱包借项和CCTPv2协议收费相互作用,对正确执行至关重要.

自定义收费如何运作

定制费为 在转账数额外加没有取出它。 钱包标志 transfer amount + custom fee,因此用户必须有足够的平衡来表达这两个值。 整个转帐金额通过CCTPv2继续不变,而自定义费则在源链上分出:

  • 10% 中,自定义收费将自动路由到 Circle.
  • 90% 发送到您的 recipientAddress。 。 。 .
  • 重要内容: 当实际收取自定义费时,圆只取10%的股份. 如果您省略了定制费, Circle 将不收取协议费以外的任何费用.

收取自定义费后,转出金额(例如1000 USDC)通过CCTPv2(协议适用自己的收费(FAST模式为1–14 bps,标准ANDARD为0))进行.

收费流量(1 000美元转帐+10美元自费):

┌───────────────────────────────────────────────────────────────┐
│ User signs: 1,000 USDC transfer + 10 USDC custom fee = 1,010  │
└──────────────────────┬────────────────────────────────────────┘
                       │
                       ▼
┌───────────────────────────────────────────────────────────────┐
│ Custom fee distribution (source chain)                        │
│  - 1 USDC (10%) → Circle                                      │
│  - 9 USDC (90%) → Your fee recipient                          │
└──────────────────────┬────────────────────────────────────────┘
                       │
                       ▼
┌───────────────────────────────────────────────────────────────┐
│ CCTPv2 processes full transfer amount (1,000 USDC)            │
│  - Protocol fee example (FAST 1 bps): 0.1 USDC                │
│  - Destination receives: 999.9 USDC                           │
└───────────────────────────────────────────────────────────────┘

1,000 USDC 传输示例

设想: 从Ethereum向Base转让1,000美元,并收取10美元自费.

import { BridgeKit } from '@circle-fin/bridge-kit'
import { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'

const kit = new BridgeKit()
const adapter = createViemAdapterFromPrivateKey({
  privateKey: process.env.PRIVATE_KEY as `0x${string}`,
})

await kit.bridge({
  from: { adapter, chain: 'Ethereum' },
  to: { adapter, chain: 'Base' },
  amount: '1000', // Transfer amount forwarded to CCTPv2
  config: {
    customFee: {
      value: '10', // Additional debit charged on top of the transfer amount
      recipientAddress: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
    },
  },
})

链上发生的情况:

阶段数额说明
转账数额1 000美元转交CCTPv2,不减少
自定义费借项+10美元1 010美元总计的钱包标志
定制费-圆(10%)1美元自动去向圆形
自定义费=你(90%)9美元发送到 0x742d35Cc...bEb0 (你的收费接受者)
CCTPv2收费(FAST 1 bps)*-0.1 USDC(美元)礼宾费从1,000美元美元转账额中提取
目标收到999.9 USDC按礼宾费计算的基数

* CCTPv2 FAST 转移收费 根据路线的不同,1–14 bps; STANDARD 转移收费为0 bps.

基特级收费政策

对所有转让的动态收费计算,使用工具包级政策:

import { BridgeKit } from '@circle-fin/bridge-kit'
import { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'

const kit = new BridgeKit()
const adapter = createViemAdapterFromPrivateKey({
  privateKey: process.env.PRIVATE_KEY as `0x${string}`,
})

kit.setCustomFeePolicy({
  computeFee: (params) => {
    const amount = parseFloat(params.amount)

    const feePercentage = 0.01 // 1%
    const calculatedFee = amount * feePercentage

    // Return human-readable fee (e.g., '10' for 10 USDC)
    return calculatedFee.toFixed(6)
  },
  resolveFeeRecipientAddress: (feePayoutChain) => {
    // Return appropriate address for source chain
    return feePayoutChain.type === 'solana'
      ? 'SolanaAddressBase58...'
      : '0xEvmAddress...'
  },
})

// All subsequent bridges will use this policy
await kit.bridge({
  from: { adapter, chain: 'Ethereum' },
  to: { adapter, chain: 'Base' },
  amount: '1000', // Custom fee calculated automatically
})

说明编号: calculateFee 函数已贬值。 使用 computeFee 而不是接受人可读量(例如, '100' 而不是最小单位数额.

处理错误

该工具包采用了深思熟虑的错误处理方法:

  • 硬错误 (推出):验证、配置和认证出错
  • 软错误 (已归还):可收回的问题,如余额不足或网络出错
import { BridgeKit } from '@circle-fin/bridge-kit'
import { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'

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

const params = {
  from: { adapter, chain: 'Ethereum' },
  to: { adapter, chain: 'Base' },
  amount: '100.0',
}

const result = await kit.bridge(params)

if (result.state === 'success') {
  console.log('Bridge successful!')
} else {
  // Handle partial completion with recovery information
  console.log(
    'Successful steps:',
    result.steps.filter((s) => s.state === 'success'),
  )
}

正在重试失败的传输

使用 BridgeKit.retry 当失败是可操作的时恢复失败或不完整的桥接操作(例如短暂的RPC发行,掉出交易,或多步流中的失败步骤). 工具包代表向原供应商(CCTPv2支持可操作的重试)进行再试,并从适当的步骤继续.

方法签名

retry<
  TFromAdapterCapabilities extends AdapterCapabilities,
  TToAdapterCapabilities extends AdapterCapabilities
>(
  result: BridgeResult,
  context: RetryContext<TFromAdapterCapabilities, TToAdapterCapabilities>
): Promise<BridgeResult>

基本使用量(EVM-EVM)

import { BridgeKit } from '@circle-fin/bridge-kit'
import { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'

const kit = new BridgeKit()
const adapter = createViemAdapterFromPrivateKey({
  privateKey: process.env.PRIVATE_KEY as `0x${string}`,
})

const result = await kit.bridge({
  from: { adapter, chain: 'Ethereum_Sepolia' },
  to: { adapter, chain: 'Base_Sepolia' },
  amount: '1',
})

if (result.state === 'error') {
  try {
    const retryResult = await kit.retry(result, { from: adapter, to: adapter })
    console.log('Retry state:', retryResult.state)
  } catch (error) {
    console.error('Retry failed:', error)
  }
}

何时重试与人工干预

  • 重试:瞬态网络/RPC出错,气体重排/滴入txs,步骤失败并记录进度.
  • 手动:资金不足,接收者不正确,路由不支持,或错误表示不可诉状态.

限制

  • 只有可诉失败才能被重审;一些失败需要用户首先采取行动.
  • 来源和目的地链仍然必须得到供应商的支持(CCTPv2).
  • 为两者提供有效的适配器 from 财务报告和审定财务报表 to 环境.

业绩和最佳做法

  • 对瞬态故障使用指数回放; 避免快速重放 .
  • 在拥挤的网络上敏感地重新定价气体.
  • 持久性 result.steps 和帮助观察和支持.

解决问题

  • "不支持此结果的重试,需要用户动作":固定平衡/地址/测试问题并再次尝试.
  • “未找到提供者”:确保同一提供者(例如CCTPv2)存在于 BridgeKit 配置 .

见可运行的例子 examples/basic-usdc-transfer/src/retry.ts (书写: yarn start:retry) (中文(简体) ).

转发器集成

Bridge Kit支持Circle的轨道中继器进行自动验证和薄荷处理. 启用时,中继器会自动取出证明并提交目的地链上的薄荷交易,简化连接过程.

有转发器的标准桥

使用 useForwarder: true 当您拥有两个链条的适配器, 但希望 Circle 处理薄荷交易时:

import { BridgeKit } from '@circle-fin/bridge-kit'
import { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'

const kit = new BridgeKit()
const adapter = createViemAdapterFromPrivateKey({
  privateKey: process.env.PRIVATE_KEY as `0x${string}`,
})

const result = await kit.bridge({
  from: { adapter, chain: 'Ethereum' },
  to: {
    adapter,
    chain: 'Base',
    useForwarder: true, // Circle handles attestation + mint
  },
  amount: '100.50',
})

福利:

  • 没有人工证明投票或提交目的地薄荷
  • 更新处理目标薄荷交易
  • 简化流程,减少客户端业务

仅转发目标( 无目标适配器)

在目的地链上无法访问钱包时,只使用转发器模式. 这是服务器端传输、保管服务或用户在目的地链上没有钱包时的理想:

const result = await kit.bridge({
  from: { adapter, chain: 'Ethereum' },
  to: {
    recipientAddress: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e', // Recipient on destination
    chain: 'Base',
    useForwarder: true, // Required for forwarder-only
  },
  amount: '100.50',
})

与标准连接的关键区别 :

  • 不需要目标适配器
  • 薄荷确认基于IRIS API的响应(不是链上接收)
  • 薄荷步骤 data 字段将会是 undefined

中继费处理 :

  • 中继费自动包含在 maxFee 估计数
  • 在薄荷时间从薄荷USDC中扣除费用
  • 收到净额=燃烧量 -- -- 中继费
// Estimate includes relay fee when forwarder is enabled
const estimate = await kit.estimate({
  from: { adapter, chain: 'Ethereum' },
  to: {
    recipientAddress: '0x...',
    chain: 'Base',
    useForwarder: true,
  },
  amount: '100.50',
})

console.log(estimate.maxFee) // Includes both burn fee and relay fee

如果你提供 config.maxFee 手动,你自己包括转发费. 当工具包计算出路由/速度产生的费用时,自动包容适用. 就索拉纳目的地而言,转发费还包括建立 接收方的USDC代币账户.

您可以用 kit.getSupportedChains({ forwarderSupported: true })。 。 。 .

参见可运行示例 examples/basic-usdc-transfer/src/forwarder-*.ts。 。 。 .

以来源支付的费用接收-准确转发

打开 config.feePayment: 'source' 当接收者必须收到 确切要求的数额。 Bridge Kit 获得短期签名收费服务 引用,批准 amount + feeTotal 直接烧到 amount 结束 TokenMessengerWithFees。目的地薄荷不会减少.

useForwarder: true 仍然需要。 选择 feePayment 保留 已存在的目的地付费行为.

const params = {
  from: { adapter, chain: 'Ethereum' },
  to: {
    chain: 'Base',
    recipientAddress: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',
    useForwarder: true,
  },
  amount: '100',
  config: {
    transferSpeed: 'FAST',
    feePayment: 'source',
  },
} as const

const estimate = await kit.estimate(params)
if ('amountReceived' in estimate) {
  console.log('Recipient receives:', estimate.amountReceived) // 100 USDC
  console.log('Source wallet pays:', estimate.totalDebit) // e.g. 100.42 USDC
  console.log('Quote expires:', estimate.quoteExpiry)

  const result = await kit.bridge({
    ...params,
    quote: estimate.quote,
  })
  console.log(result.state)
}

处理 quote 不透明,永远不要登录。 Bridge Kit 验证所提供的引用 在批准前并立即再次 在燃烧之前 如果无效,不匹配,过期,或者太接近过期, 桥坏了,你必须再估计一次 奥米 quote 让Bridge Kit 打开 自动获取新引号 .

初始发布支持EVM源,EVM目的地和源链 USDC支付费用。 此模式不支持自定义开发商收费 。 在一个 429 个响应, 用调用器管理指数重试估计或桥接 备份. 503 SERVICE_NOT_ENABLED 表示源路由已禁用,并应 不被重审.

API 参考

核心方法

  • kit.bridge(params) - 执行跨链桥操作
  • kit.estimate(params) - 在连接之前获得费用估计数
  • kit.retry(result, context) - 恢复可采取行动的失败/部分转移
  • kit.getSupportedChains(options?) - 使用可选过滤器查询支持的链条
  • kit.setCustomFeePolicy(policy) - 制定动态的关税政策
  • kit.removeCustomFeePolicy() - 删除已配置的自定义收费政策
  • kit.on(event, handler) - 听桥梁事件
  • kit.off(event, handler) - 将听众从桥梁事件中删除

bridge 财务报告和审定财务报表 estimate 不限于USDC。 选择 token (或通过) 'USDC'通过 CCTP v2 的 USDC 桥梁;通过非USDC 符号,例如 cirBTC, (中文(简体) ), wETH 或者说 EURC,或字节32 0x… 代号,通过 CCTPx 表示符号的桥. 见 桥梁参数 被接受的表格.

桥梁参数

interface BridgeParams {
  from: AdapterContext // Source wallet and chain
  to: BridgeDestination // Destination wallet/address and chain
  amount: string // Amount to transfer (e.g., '10.50')
  token?: BridgeToken // 'USDC', a known CCTPx symbol, or a bytes32 token id
  config?: BridgeConfig // Optional bridge configuration (e.g., transfer speed). If omitted, defaults will be used
}

type BridgeToken =
  | 'USDC'
  | 'cirBTC'
  | 'wETH'
  | 'EURC'
  | `0x${string}` // runtime: 0x + exactly 64 hex characters

// AdapterContext: Your blockchain connection
type AdapterContext = {
  adapter: Adapter
  chain: ChainIdentifier
  address?: string // Required for developer-controlled adapters; forbidden for user-controlled
}

// BridgeDestination: Where funds go
type BridgeDestination =
  | AdapterContext
  | {
      adapter: Adapter // Adapter for the destination chain
      chain: ChainIdentifier // Chain identifier
      recipientAddress?: string // Custom recipient address
      useForwarder?: boolean // Enable Circle's Orbit relayer
    }
  | {
      // Forwarder-only destination (no adapter required)
      recipientAddress: string // Required: where to receive USDC
      chain: ChainIdentifier // Chain identifier
      useForwarder: true // Required: must be true
    }

发展

大楼

# From the root of the monorepo
nx build @circle-fin/bridge-kit

测试

# From the root of the monorepo
nx test @circle-fin/bridge-kit

地方发展

# Install dependencies
yarn install

# Build all packages
yarn build

# Build the bridge-kit specifically
nx build @circle-fin/bridge-kit

# Run tests
nx test @circle-fin/bridge-kit

社区与支持

许可证

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


准备好了吗?

加入磁盘

由 Circle 创建

版本与发布记录

@circle-fin/bridge-kit 共发布 35 个版本,首次发布于 2025/10/14;过去 12 个月发布了 32 个版本。

版本发布日期距今
1.17.1latest2026/11/063 天前
1.17.02026/10/319 天前
1.16.12026/10/2317 天前
1.16.02026/10/2119 天前
1.15.32026/10/1624 天前
1.15.22026/09/301 个月前

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

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

无缝跨链 USDC 连接的官方 Circle SDK

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

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

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

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

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

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

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

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

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

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

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

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

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

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