索拉纳 Kit 适配器
目录
- 索拉纳 Kit 适配器
概览
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.2 | 1.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:
- 保留所支持的版本: 使用所支持范围内的版本
- @solana/kit: 5.0.0 - 5.x.x
- @solana/web3.js: 1.98.2 - 1.x.x
- 检查更新: 寻找支持更新库版本的更新适配器版本
- 报表兼容性: 在 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 入站点设计为零平移:
- 现在 - 从
@circle-fin/adapter-solana-kit/next. 返回的适配器与所有现有的工具包和提供者完全兼容——他们方面不需要改动. - 下一个主要发布 - 电话
/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) | 自签名消息 |
| 说明 | TransactionInstruction | Instruction 有角色元数据 | 加强账户作用 |
| 执行 | connection.sendTransaction() | rpc.sendTransaction().send() | 代理方法调用 |
效益 @ solana/ kit (英语) 建筑
- 树能震动: 完整的库可以是树形折叠的,会大幅缩小捆绑大小
- 原生密码: 流水浏览器内置
CryptoKeyPair财务报告和审定财务报表SubtleCryptoAPIs 密码 - 不可改变: 具有不可改变的交易信息构建功能模式
- 可编曲: 基于管道
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许可证获得许可. 联系人 支助 详细情况.