@circle-fin/adapter-solana-kit

中文文档
1.7.1发布于 2026/11/06TypeScriptESM + CJS近 30 天下载 9814

索拉纳区块链适配器由@solana/kit供电

中文使用文档
文档目录43 节
  1. 目录
  2. 概览
  3. 为什么是索拉纳・克特・适配器?
  4. 我何时该用索拉纳套装机?
  5. 安装
  6. 同伴依赖关系
  7. 解决同伴依赖的问题
  8. 快速启动
  9. * * 采用工厂方法的简单设置(建议)
  10. 生产考虑
  11. QQ 浏览器支持钱包提供者
  12. 高级手动设置
  13. 下一个Generation API( /next (中文(简体) )
  14. 开始 /next
  15. 为什么 /next ? 吗?
  16. 套装大小注释
  17. 目前的限制 /next
  18. 已编制交易:估计、模拟、执行
  19. 日志
  20. 计量
  21. 托肯书记官处
  22. 交易调制
  23. 迁移路径
  24. 特征
  25. 用法实例
  26. 工厂方法的基本使用
  27. 多密钥格式支持
  28. 横琴桥(EVM-索拉纳)
  29. 浏览器钱包集成
  30. 用 @ solana/ kit 客户端进行手动设置
  31. 支持的网络
  32. API 参考
  33. 工厂方法
  34. 构造选项
  35. 方法
  36. 额外出口
  37. 建筑
  38. 与 @ solana/web3.js 的密钥差异
  39. 效益 @ solana/ kit (英语) 建筑
  40. 交易楼模式
  41. 与 App Kit 整合
  42. 发展
  43. 许可证

索拉纳 Kit 适配器

TypeScript License

@solana/kit提供索拉纳适应器执行动力

App Kits生态系统的索拉纳现代功能集成

目录

概览

Solana Kit适配器是执行《公约》的有力类型 Adapter 接口 索拉纳区块链. 建于现代之上 @ solana/ kit (英语) 库(successor to @solana/web3.js),它通过一个统一接口提供类型安全、功能性的块链交互,设计与该接口无缝工作 桥套 用于索拉纳网络和EVM网络之间跨链的USDC转移,以及用于额外稳定币业务的任何未来工具包.

为什么是索拉纳・克特・适配器?

  • @ @ solana/ kit 集成: 采用现代可变树型建造 @ solana/ kit (英语) 图书馆
  • {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}对面准备: 为与BridgeKit生态系统无缝结合而设计
  • QQ 类型安全: 完整类型脚本支持, 严格类型检查
  • 函数 API@solana/kit的功能交易构建模式
  • ++ 多个签名人: 支持私人密钥和钱包提供者签名器
  • ### 有树摇动: 优化捆绑大小并有选择地进口
  • 行动系统: 代号操作和CCTP综合操作处理器

我何时该用索拉纳套装机?

我是一个使用工具包的开发商

如果你用其中一个工具箱来做一些动作,例如从链"A"到链"B"的连接,那么你只需要将适配器切换为你的链并传递到工具箱.

示例
const adapter = createSolanaKitAdapterFromPrivateKey({
  privateKey: process.env.SOLANA_PRIVATE_KEY!,
})

见 快速启动 关于如何使用Solana Kit适配器的更深入的指南.

我是一个开发商 制作一个 Kit 提供者

如果您正在制作一个供其他 Kit 用户插入套件的提供者, 例如 a BridgingProvider,你需要与不同的链子互动, 然后,你需要使用抽象的 Adapter 在链上执行的方法.

安装

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

同伴依赖关系

这个适配器需要 @solana/kit 财务报告和审定财务报表 @solana/web3.js 作为对等依赖,允许您自己管理版本并避免与您现有的依赖冲突.

必要的同伴依赖性 :

  • @solana/kit数字 : ^5.0.0 (支持@solana/kit 5.0.0至 5.x.x,不包括 6.x.x)
  • @solana/web3.js数字 : ^1.98.2 (支持@solana/web3.js 1.98.2至 1.x.x,不包括 2.x.x)

安装 :

# Install the adapter and all peer dependencies
npm install @circle-fin/adapter-solana-kit @solana/kit @solana/web3.js

# Or with yarn
yarn add @circle-fin/adapter-solana-kit @solana/kit @solana/web3.js

版本兼容性 :

软件包范围含义
@solana/kit^5.0.0✅ 5.0.0至 5.x.x
6.x.x及以上(突破性变化)
@solana/web3.js^1.98.21.98.2至1.x.x
2.x.x及以上(突破性变化)

同伴依赖的好处:

  • 减少捆绑大小:避免重复安装索拉纳图书馆
  • 版本控制: 使用最适合您项目的版本
  • 预防冲突:适配器与您的代码之间没有版本不匹配
  • 灵活性: 在需要时独立升级
  • 树摇: @solana/kit的模块化架构从单一安装中受益

说明: 适配器使用 SPL Token 内置帮助器 @core/adapter-solana-base 避免拉入被腐烂的 @solana/spl-token b. 一揽子方案及其脆弱性 bigint-buffer 过渡性依赖(GHSA-3gc7-fjrx-p6mg). 列出的同级依赖关系(@solana/kit 财务报告和审定财务报表 @solana/web3.js)直接用于适配器的源代码.

解决同伴依赖的问题

缺少同伴依赖性警告

如果您看到警告, 如:

npm WARN @circle-fin/[email protected] requires a peer of @solana/kit@^5.0.0 but none is installed.
npm WARN @circle-fin/[email protected] requires a peer of @solana/web3.js@^1.98.2 but none is installed.

解决方案: 在适配器旁安装所有对等依赖性 :

npm install @solana/kit @solana/web3.js

版本冲突

如果您看到冲突版本的错误 :

npm ERR! Could not resolve dependency:
npm ERR! peer @solana/kit@"^5.0.0" from @circle-fin/adapter-solana-kit
npm ERR! peer @solana/web3.js@"^1.98.2" from @circle-fin/adapter-solana-kit

解决方案: 确保您的项目使用兼容的版本 :

# Check your current versions
npm list @solana/kit @solana/web3.js

# Update to compatible versions if needed
npm install @solana/kit@^5.0.0 @solana/web3.js@^1.98.2

在@solana/web3.js和@solana/kit之间选择

如果你不确定哪个索拉纳适配器使用:

  • 使用 @ circle- fin/ adapter- solana- kit 如果:

    • 您想要现代功能 API
    • 需要摇倒花花花花样
    • 你要开始一个新项目了
    • 您想要利用 @ solana/ kit 的模块架构
  • 使用 @ circle- fin/ adapter- solana 选项 如果:

    • 您已经在您的工程中使用了 @ solana/ web3.js
    • 您需要与已有的 Web3.js 代码兼容
    • 你在迁移一个已有的项目

使用不兼容的版本

如果您需要使用更新的主要版本,适配器可能无法正确工作:

@solana/kit 6.x.x 或 @solana/web3.js 2.x.x:

  1. 保留所支持的版本: 使用所支持范围内的版本
    • @solana/kit: 5.0.0 - 5.x.x
    • @solana/web3.js: 1.98.2 - 1.x.x
  2. 检查更新: 寻找支持更新库版本的更新适配器版本
  3. 报表兼容性: 在 App Kits 存储器上打开一期

再来点帮助 拜访一下我们 服务台 或者说 解析器。 。 。 .

快速启动

最简单的开始方法是我们工厂的方法. 有可靠的默认 RPC 端点 - 不需要配置索拉纳RPC供应商!

import { createSolanaKitAdapterFromPrivateKey } from '@circle-fin/adapter-solana-kit'

// Create an adapter with built-in reliable RPC endpoints
const adapter = createSolanaKitAdapterFromPrivateKey({
  privateKey: process.env.SOLANA_PRIVATE_KEY!, // Base58, Base64, or JSON array format
})

// Ready to use with Stablecoin Kits!
const address = await adapter.getAddress()
console.log('Connected address:', address)

关键特性: 所有索拉纳链条包括使用 @solana/ kit 的可靠默认 RPC 端点 createSolanaRpc()。 。 。 .

生产考虑

对生产很重要:工厂方法在不提供自定义的RPC时默认使用公共RPC端点,这可能会有率限制和较低的可靠性. 对于生产应用,我们强烈建议提供定制的RPC客户端.

import { createSolanaKitAdapterFromPrivateKey } from '@circle-fin/adapter-solana-kit'
import { createSolanaRpc } from '@solana/kit'

// Production-ready setup with custom RPC endpoints
const customRpc = createSolanaRpc(
  `https://solana-mainnet.g.alchemy.com/v2/${process.env.ALCHEMY_KEY}`,
)

const adapter = createSolanaKitAdapterFromPrivateKey({
  privateKey: process.env.SOLANA_PRIVATE_KEY!,
  getRpc: () => customRpc,
})

QQ 浏览器支持钱包提供者

对于带有Phantom, Solflare 或 Backpack 等钱包提供者的浏览器环境:

import { createSolanaKitAdapterFromProvider } from '@circle-fin/adapter-solana-kit'

// Create an adapter from a browser wallet
const adapter = await createSolanaKitAdapterFromProvider({
  provider: window.solana, // Phantom, Solflare, etc.
})

执行情况时间轴: 已完全执行

  • ✅ 连接管理: 完成 RPC 代理和签名抽象
  • ✅ 类型安全齐全 TransactionSigner 与本地加密 API 接口
  • ✅ 处理错误: 全面验证和描述性错误信息
  • ✅ 钱包整合: 在 @ solana/ kit 和钱包标准之间完成交易格式转换

建议: 使用 createSolanaKitAdapterFromPrivateKey() 用于服务器侧应用程序。 浏览器钱包集成遵循钱包标准模式.

高级手动设置

对于需要全面控制RPC和签名人的高级使用案例:

import { SolanaKitAdapter } from '@circle-fin/adapter-solana-kit'
import { createSolanaRpc, generateKeyPairSigner } from '@solana/kit'

// Use your existing @solana/kit setup
const rpc = createSolanaRpc('https://api.mainnet-beta.solana.com')
const signer = await generateKeyPairSigner()

// Create the adapter
const adapter = new SolanaKitAdapter({
  rpc,
  signer,
})

下一个Generation API(/next(中文(简体) )

预览 - 电话 /next 入口是即将到来的默认适配器架构. 它与目前所支持的桥梁流量的切入点相当,并且与所有现有工具包(Bridge Kit等)完全兼容。 在下一个主要发布, /next 将会成为默认的导入,当前切入点将会被退出。 见 目前的限制 /next 在通过之前.

开始 /next

通过改变单一导入路径来切换到新架构. 其他一切不变:

import { createSolanaKitAdapterFromPrivateKey } from '@circle-fin/adapter-solana-kit/next'

const adapter = createSolanaKitAdapterFromPrivateKey({
  privateKey: process.env.SOLANA_PRIVATE_KEY!, // Base58, Base64, or JSON array
})

// Pass it to the Bridge Kit exactly as before — no changes needed downstream

浏览器钱包工作相同 :

import { createSolanaKitAdapterFromProvider } from '@circle-fin/adapter-solana-kit/next'

const adapter = await createSolanaKitAdapterFromProvider({
  provider: window.solana, // Phantom, Solflare, etc.
})

为什么 /next? 吗?

当前切入点/next 切入点
套装大小包含全部适配器私人进口 解锁树摇; 默认工厂仍然拉 compat shim — 看 捆绑大小
准备结果estimate() 财务报告和审定财务报表 execute()estimate(), (中文(简体) ), simulate(),以及 execute()
收费模式适应器特定形状{ fee, units, unitPrice } ——所有生态系统保持一致
观察性不详内建伐木、计量和事件仪器
重试恢复能力( R)不详可配置重试, 以指数倒置表示短暂的失败
调制解析硬码地址累加式符号登记——用符号解决任何符号跨链
交易调试固定默认配置确认超时和重试政策

套装大小注释

这个 /next 入口的清洁建筑设计 按原产地计算可动摇树:进口 createPrepare 无 createBatchExecute 只能运送准备路径。 单位 当前预览释放默认 createAdapter 工厂仍然 牵扯在遗产 compat shim (withLegacyCompat → @core/adapter-compat消费者可以通过 生成的适配器与现有工具包和提供者不作改动. 那闪电是默认的 /next 捆绑量度~11% 大于我们内部基准中遗留的切入点.

如果捆绑大小对您至关重要,则直接通过 assembleAdapter 从 @core/adapter-base 跳过 withLegacyCompat。未来微小的释放将分裂共通 在单独的入口后面,所以默认的工厂 仅新建 API.

目前的限制 /next

这个 /next 索拉纳 Kit 适配器与当前切入点对等 对于支持的桥梁流量,但有一些警告。 他们是 在项目问题跟踪器中跟踪后续发布情况:

  • 圆形钱包适配器尚未迁移到 /next。 。 。 . 仅 eVM (viem/ethers) 和索拉纳适配器显示 /next 入场点; 圆形钱包留在目前的出入口上.
  • 中止语义只停止本地等待 . 通过中止(或 可中止) signal 取消数 waitForTransaction 并预防 未经同意 execute 从广播,但 一经交易 播放, 中止不会在链上取消 交易 继续,并应当通过签署实现和解.

已编制交易:估计、模拟、执行

当您准备通过 /next 适配器,你用三种生命周期方法返回更丰富的对象:

const prepared = await adapter.prepare(
  {
    instructions: [transferInstruction],
    feePayer: payerPublicKey,
  },
  { chain: 'Solana' },
)

// 1. Estimate fees before committing
const { fee, units, unitPrice } = await prepared.estimate()

// 2. Simulate the transaction to catch errors without spending fees
const simulation = await prepared.simulate()

// 3. Execute when ready
const result = await prepared.execute()

// `result` is a `{ txId, wait }` envelope:
// - `txId` is the transaction signature (base58 string on Solana —
//   named `txId` for cross-ecosystem symmetry with the EVM adapters).
// - `wait()` resolves once the transaction is confirmed on the cluster.
console.log('submitted signature:', result.txId)
const confirmation = await result.wait()

这个 simulate() 步骤是新建的 /next ——它根据当前分类账状态对交易进行干燥并浮出错误来支付交易费.

日志

传出 a runtime 选项以获取每个适配器操作的结构化日志,包括 RPC 调用、重试和出错。 最快的方法是使用内置 createRuntime 帮助者 :

import {
  createSolanaKitAdapterFromPrivateKey,
  createRuntime,
} from '@circle-fin/adapter-solana-kit/next'

const adapter = createSolanaKitAdapterFromPrivateKey({
  privateKey: process.env.SOLANA_PRIVATE_KEY!,
  runtime: createRuntime(), // Logs to stdout via pino at 'info' level
})

要与自己的日志集成, 请通过执行对象 debug, (中文(简体) ), info, (中文(简体) ), warn, (中文(简体) ), error,以及 child 改为 createRuntime。日志接口使用 (message, fields) 参数顺序——皮诺等库使用 (fields, message),所以需要一个薄薄的包装:

import {
  createSolanaKitAdapterFromPrivateKey,
  createRuntime,
} from '@circle-fin/adapter-solana-kit/next'
import pino from 'pino'

function wrapPino(p: pino.Logger) {
  return {
    debug: (msg: string, fields?: Record<string, unknown>) =>
      p.debug(fields, msg),
    info: (msg: string, fields?: Record<string, unknown>) =>
      p.info(fields, msg),
    warn: (msg: string, fields?: Record<string, unknown>) =>
      p.warn(fields, msg),
    error: (msg: string, fields?: Record<string, unknown>) =>
      p.error(fields, msg),
    child: (tags: Record<string, unknown>) => wrapPino(p.child(tags)),
  }
}

const adapter = createSolanaKitAdapterFromPrivateKey({
  privateKey: process.env.SOLANA_PRIVATE_KEY!,
  runtime: createRuntime({ logger: wrapPino(pino({ level: 'debug' })) }),
})

计量

这个 runtime 选项还接受 metrics 用于计数器、直方图和计时器的执行。 插入普罗米修斯,StatsD, Datadog, OpenTeleometry, 或任何其他后端 :

import {
  createSolanaKitAdapterFromPrivateKey,
  createRuntime,
} from '@circle-fin/adapter-solana-kit/next'

const adapter = createSolanaKitAdapterFromPrivateKey({
  privateKey: process.env.SOLANA_PRIVATE_KEY!,
  runtime: createRuntime({
    metrics: {
      counter: (name) => ({
        inc: (labels, value) => {
          /* emit counter */
        },
      }),
      histogram: (name) => ({
        observe: (labels, value) => {
          /* emit histogram */
        },
      }),
      timer: (name) => ({
        start: (labels) => {
          const t0 = Date.now()
          return () => {
            /* observe Date.now() - t0 */
          }
        },
      }),
      child: (labels) => {
        /* return scoped Metrics with base labels merged */
      },
    },
  }),
})

否时 metrics 平面电话是无声的 无声的 零起落.

托肯书记官处

默认情况下,适配器知道USDC(和其他内置符)在每个支持链上的情况. 这个 tokens 选项允许您注册额外的符号,以便它们可以通过符号而不是原始地址来引用.

import {
  createSolanaKitAdapterFromPrivateKey,
  createTokenRegistry,
} from '@circle-fin/adapter-solana-kit/next'

const tokens = createTokenRegistry({
  tokens: [
    {
      symbol: 'BONK',
      decimals: 5,
      locators: {
        Solana: 'DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263',
      },
    },
  ],
})

const adapter = createSolanaKitAdapterFromPrivateKey({
  privateKey: process.env.SOLANA_PRIVATE_KEY!,
  tokens,
})

登记册自动解决每个链条的正确程序地址和小数,因此下游代码可以指: 'BONK' 而不是硬编码薄荷地址.

交易调制

这个 config 选项允许您调制重试行为和确认超时 :

import { createSolanaKitAdapterFromPrivateKey } from '@circle-fin/adapter-solana-kit/next'

const adapter = createSolanaKitAdapterFromPrivateKey({
  privateKey: process.env.SOLANA_PRIVATE_KEY!,
  config: {
    transaction: {
      confirmationTimeoutMs: 60_000, // 60 second confirmation timeout
    },
    retry: {
      maxAttempts: 5,
      baseDelayMs: 500,
    },
  },
})
设置它控制着什么默认
confirmationTimeoutMs多长时间 waitForTransaction 等待时间结束客户违约
retry.maxAttempts最大尝试次数( 不包括初始尝试)3
retry.baseDelayMs以毫秒为单位的重试之间的基数延迟( 每次重试时通过指数倒置)200

设定 retry: false 完全禁用自动重试.

迁移路径

这个 /next 入站点设计为零平移:

  1. 现在 - 从 @circle-fin/adapter-solana-kit/next. 返回的适配器与所有现有的工具包和提供者完全兼容——他们方面不需要改动.
  2. 下一个主要发布 - 电话 /next 架构成为默认条目(@circle-fin/adapter-solana-kit) (中文(简体) ). 当前基于类的适配器将被删除.

我需要改变什么?

  • 将导入路径更改为 @circle-fin/adapter-solana-kit/next。 。 。 .
  • 这个 chain 参数已经从工厂中删除。 链条现在通过 capabilities.supportedChains (默认情况下所有索拉纳链)和指定的操作通过 OperationContext。 。 。 .
  • 如果只将适配器传递给一个工具包,工具包会自动处理链选择——不需要其他修改.

特征

  • ✅ 完全索拉纳兼容性 - 与索拉纳主网和德文网合作
  • ✅ @ solana/ kit 整合 - 使用有树摇动支持的现代功能性API
  • ✅ 钱包提供者支持 - 与幽灵、索尔夫拉尔和其他索拉纳钱包合作
  • ✅ 工厂方法 - 容易设置和合理默认
  • ✅ 交易周期 - 使用@solana/kit模式完成编制/估计/执行工作流程
  • ✅ 类型安全 - 严格模式的完整类型脚本支持
  • ✅ 跨链准备 - 索拉纳链和EVM链之间的无缝接通USDC

用法实例

工厂方法的基本使用

import { createSolanaKitAdapterFromPrivateKey } from '@circle-fin/adapter-solana-kit'
import { BridgeKit } from '@circle-fin/bridge-kit'

// Create adapter with factory method - supports multiple key formats!
const adapter = createSolanaKitAdapterFromPrivateKey({
  privateKey: process.env.SOLANA_PRIVATE_KEY!, // Accepts Base58, Base64, or JSON array
})

// Use directly with App Kit
const kit = new BridgeKit()
const result = await kit.bridge({
  from: { adapter: evmAdapter, chain: 'Base' },
  to: { adapter, chain: 'Solana' },
  amount: '10.50',
  token: 'USDC',
})

多密钥格式支持

这个 createSolanaKitAdapterFromPrivateKey 函数自动检测和处理不同的私钥格式:

// Base58 format (most common for Solana)
const adapterBase58 = createSolanaKitAdapterFromPrivateKey({
  privateKey: '5Kk7z8gvn...', // Base58 string
})

// Base64 format
const adapterBase64 = createSolanaKitAdapterFromPrivateKey({
  privateKey: 'MIGHAgEAMB...', // Base64 string
})

// JSON array format (array of bytes)
const adapterArray = createSolanaKitAdapterFromPrivateKey({
  privateKey: '[1,2,3,4,5,...]', // JSON array string
})

横琴桥(EVM-索拉纳)

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

const kit = new BridgeKit()

// EVM source adapter
const evmAdapter = createViemAdapterFromPrivateKey({
  privateKey: process.env.EVM_PRIVATE_KEY as `0x${string}`,
})

// Solana destination adapter
const solanaAdapter = createSolanaKitAdapterFromPrivateKey({
  privateKey: process.env.SOLANA_PRIVATE_KEY!,
})

// Execute cross-chain bridge operation
const result = await kit.bridge({
  from: { adapter: evmAdapter, chain: 'Base_Sepolia' },
  to: { adapter: solanaAdapter, chain: 'Solana_Devnet' },
  amount: '10.50',
  token: 'USDC',
})

浏览器钱包集成

import { createSolanaKitAdapterFromProvider } from '@circle-fin/adapter-solana-kit'
import { BridgeKit } from '@circle-fin/bridge-kit'

// Connect to user's Solana wallet
const adapter = await createSolanaKitAdapterFromProvider({
  provider: window.solana, // Phantom, Solflare, etc.
})

// Use with App Kit
const kit = new BridgeKit()
const result = await kit.bridge({
  from: { adapter: evmAdapter, chain: 'Base' },
  to: { adapter, chain: 'Solana' },
  amount: '50.0',
  token: 'USDC',
})

用 @ solana/ kit 客户端进行手动设置

import { SolanaKitAdapter } from '@circle-fin/adapter-solana-kit'
import { BridgeKit } from '@circle-fin/bridge-kit'
import { createSolanaRpc, generateKeyPairSigner } from '@solana/kit'

// Initialize with your @solana/kit setup
const rpc = createSolanaRpc('https://api.mainnet-beta.solana.com')
const signer = await generateKeyPairSigner()

const adapter = new SolanaKitAdapter({
  rpc,
  signer,
})

// Use directly with App Kit
const kit = new BridgeKit()
const result = await kit.bridge({
  from: { adapter: evmAdapter, chain: 'Ethereum' },
  to: { adapter, chain: 'Solana' },
  amount: '10.50',
  token: 'USDC',
})

支持的网络

与App Kit支持的所有索拉纳网络合作:

  • 索拉纳主网 - 生产网络
  • 索拉纳·德夫内 - 开发和测试网络

API 参考

工厂方法

createSolanaKitAdapterFromPrivateKey(options)

从私钥创建适配器(支持多格式).

interface CreateAdapterFromPrivateKeyParams {
  privateKey: string // Supports Base58, Base64, or JSON array formats
  getRpc?: (params: { chain: ChainDefinition }) => Rpc<SolanaRpcApi> // Custom RPC factory
  capabilities?: AdapterCapabilities // Optional addressContext and supportedChains
}

createSolanaKitAdapterFromProvider(options)

从 Solana 钱包提供者创建适配器 .

interface CreateAdapterFromProviderParams {
  provider: SolanaKitWalletProvider // Phantom, Solflare, etc.
  getRpc?: (params: { chain: ChainDefinition }) => Rpc<SolanaRpcApi> // Custom RPC factory
  capabilities?: AdapterCapabilities // Optional addressContext and supportedChains
}

构造选项

interface SolanaKitAdapterOptions {
  getRpc: (params: {
    chain: ChainDefinition
  }) => Promise<Rpc<SolanaRpcApi>> | Rpc<SolanaRpcApi>
  getSigner: (
    ctx: OperationContext,
  ) => TransactionSigner | Promise<TransactionSigner>
}

缓存性能( P) :

适配器为 RPC 客户端和签名人执行智能缓存:

  • RPC 缓存: RPC 客户端每个链被缓存以防止冗余初始化
  • 签名人缓存:每个操作上下文都缓存签名符(基于链和地址),以避免为同一上下文重新创建签名符
  • 同时安全: 两种缓存机制均优雅地处理并行呼叫,防止重复初始化

这保证了在与多个链条或操作背景合作时的最佳性能.

方法

  • getAddress() - 获取连接的钱包地址
  • getChain() - 获取链条信息
  • prepare() - 使用@solana/ kit模式准备执行交易
  • estimate() - 估计交易费用
  • execute() - 执行已准备好的交易
  • waitForTransaction() - 等待交易确认
  • calculateTransactionFee() - 用可选缓冲器计算交易费

额外出口

CCTP 整合 :

  • CctpActionBuilder, (中文(简体) ), SolanaAction - CCTP行动接口
  • CoreCctpActionBuilder - CCTP核心逻辑与@solana/kit之间的桥梁

公用事业:

  • convertInstruction, (中文(简体) ), convertInstructions - 将 Web3.js 指令转换为 @ solana/ kit 格式

您可以在索拉纳 Kit Adapter 的主要执行文件中看到每种方法的实施.

建筑

与 @ solana/web3.js 的密钥差异

@solana/kit代表着从基于班级到功能编程模式的完整的建筑转变:

类别@solana/web3.js (法语)@solana/kit 3.0.2(现代)移徙影响
RPC 客户端new Connection(rpcUrl)createSolanaRpc(rpcUrl)RPC 代理对象
签名人Keypair.fromSecretKey()generateKeyPairSigner()原始加密 APIs
地址new PublicKey(string)address(string)品牌类型系统
交易Transaction.add(ix)pipe(createTransactionMessage, append)职能组成
签名transaction.sign(signer)signTransactionMessageWithSigners(tx)自签名消息
说明TransactionInstructionInstruction 有角色元数据加强账户作用
执行connection.sendTransaction()rpc.sendTransaction().send()代理方法调用

效益 @ solana/ kit (英语) 建筑

  • 树能震动: 完整的库可以是树形折叠的,会大幅缩小捆绑大小
  • 原生密码: 流水浏览器内置 CryptoKeyPair 财务报告和审定财务报表 SubtleCrypto APIs 密码
  • 不可改变: 具有不可改变的交易信息构建功能模式
  • 可编曲: 基于管道 pipe() 交易结构
  • 基于代理: 动态 RPC 方法构建无论API 覆盖范围如何,都保持捆绑大小常数

交易楼模式

import {
  pipe,
  createTransactionMessage,
  setTransactionMessageFeePayerSigner,
  setTransactionMessageLifetimeUsingBlockhash,
  appendTransactionMessageInstruction,
  signTransactionMessageWithSigners,
} from '@solana/kit'

// Functional transaction building with immutable message construction
const transactionMessage = pipe(
  createTransactionMessage({ version: 0 }),
  (tx) => setTransactionMessageFeePayerSigner(signer, tx),
  (tx) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, tx),
  (tx) => appendTransactionMessageInstruction(instruction, tx),
)

// Self-signing transaction messages
const signedTransaction =
  await signTransactionMessageWithSigners(transactionMessage)

// Send using RPC proxy
await rpc.sendTransaction(signedTransaction, { encoding: 'base64' }).send()

与 App Kit 整合

这个适配器的设计可以无缝地跨越App Kits生态系统. 举个例子 桥套数字 :

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

const kit = new BridgeKit()

// Solana adapter
const solanaAdapter = createSolanaKitAdapterFromPrivateKey({
  privateKey: process.env.SOLANA_PRIVATE_KEY!,
})

// EVM adapter
const evmAdapter = createViemAdapterFromPrivateKey({
  privateKey: process.env.EVM_PRIVATE_KEY as `0x${string}`,
})

// Bridge from EVM to Solana
const result = await kit.bridge({
  from: { adapter: evmAdapter, chain: 'Ethereum' },
  to: { adapter: solanaAdapter, chain: 'Solana' },
  amount: '50.0',
  token: 'USDC',
})

发展

这个包是App Kits monorepo的一部分.

# Build
nx build @circle-fin/adapter-solana-kit

# Test
nx test @circle-fin/adapter-solana-kit

许可证

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


准备好了吗?

加入磁盘 二. 支助 访问我们的救世主

由 Circle 创建

版本与发布记录

@circle-fin/adapter-solana-kit 共发布 34 个版本,首次发布于 2025/11/12;过去 12 个月发布了 34 个版本。

版本发布日期距今
1.7.1latest2026/11/063 天前
1.7.02026/10/319 天前
1.6.72026/10/2317 天前
1.6.62026/10/2119 天前
1.6.52026/10/1624 天前
1.6.42026/09/301 个月前

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

@circle-fin/adapter-solana-kit 是什么?

索拉纳区块链适配器由@solana/kit供电

如何安装 @circle-fin/adapter-solana-kit?

在项目目录运行 npm install @circle-fin/adapter-solana-kit,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@solana/kit(^5.0.0)、@solana/web3.js(^1.98.2)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@circle-fin/adapter-solana-kit 支持 TypeScript 吗?

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

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

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

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

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

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

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

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

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

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

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