@debridge-finance/solana-contracts-client

中文文档
6.2.1发布于 2026/10/05GPL-3.0-onlyTypeScriptESM + CJS近 30 天下载 1.3万
中文使用文档
文档目录12 节
  1. 客户端输入
  2. 如何包装 Sol- > WSol( SPL- Sol)
  3. 如何从索拉纳送信给其他区块链?
  4. 如何从其他区块链向索拉纳索要代币
  5. 外部调用数据准备
  6. 桥梁初始化
  7. 实体
  8. 涉及受影响账户的索赔流量(分机调用)(假设未提出索赔,即存在桥梁/状态/链式支助Info)
  9. 与受影响账户的索赔流量(没有分机调用)(假设未提出索赔,即存在桥梁/状态/链式支助Info)
  10. 实例
  11. 索赔流量
  12. 发送流量

文档

客户端输入

由于 js 不支持 async 构造器,我们必须初始化客户端对象 const client = new DeBridgeSolanaClient() 然后等待它初始化await client.init()) - 装入程序状态等... 初始化后,我们可以从块链中请求数据并构建交易

如何包装 Sol- > WSol( SPL- Sol)

我们不能寄出原生的 SOL 标志,我们需要先将其包装为 SPL-token 形式(SystemProgram.createAccount + 键 SystemProgram.transfer 本地 sol 创建账户 + TokenProgram.InitializeAccount 将系统账户转换为符号账户(SPL-wallet)。 如果我们不想创造新的钱包 我们可以打电话 SystemProgram.transfer 接下来 TokenProgram.SyncNative 转换为 SPL- Sol

如何从索拉纳送信给其他区块链?

  1. 检查用户关联的钱包是否存在, 且用户有困难的令牌 。 我们可以把所有用户的钱包都拿来 getAllWalletsWithBalances
  2. 检查是否支持链条 - 我们不能从索拉纳发送到不支持的链条, 因此 chainSupportInfo 必须存在和在 Supported 状态,参见 getChainSupportInfoSafe 详情
  3. 检查桥是否存在( SPL- tokens通过 发送 桥,去Asset通过 薄荷 100%存在的桥梁)和 工作 状态 - 如果桥不存在, 我们就不能发送符号, 我们需要先进入桥( 见桥初始化 - > send) 。 我们可以检查是否有桥 与得到BridgeBy DeBridgeId
  4. [可选 如果我们想用我们送来的资产支付费用 我们需要设定 useAssetFee 标记为真并检查是否 桥接信息 使用 isBridgeFeeInfoInitialized如果 桥接信息-==YTET -伊甸园字幕组=- 翻译: 桥接信息。 。 。 .
  5. [可选 如果我们想要通过一些额外的数据(外部调用数据),我们有两个选项 - 设置 SEND HASHED 旗和在链外通过外部调用数据(保存气体但自动执行不可用) 或将外部调用数据保存到与发送交易相关的特别索拉纳账户(外部CallStorage)
    • 调用快捷流 - 我们需要通过外部呼叫快捷键(keccak256(ext call data))和用第4位(8)设置的旗帜来发送 - > resultParams
    • 调用流量 - 看见没 外部调用准备部分
  6. 发送! 如果我们有折扣,我们想通过它 send {\fn华文楷体\fs20\bord1\shad1\1che0e0e0\2ch000000}要不然就需要去取相機去取相機了 无贴现 账户(但) buildSendInstruction 计算引擎盖下的所有账户。 我们还需要指定我们想要使用的钱包(用户可能拥有多个钱包,与同一枚硬币相关),执行费是对目标链中自动索赔的奖励

如何从其他区块链向索拉纳索要代币

  1. 检查链条是否被支持 - 我们不能从无支持的链条中声称,因此 chainSupportInfo 必须存在和在 Supported 状态,参见 getChainSupportInfoSafe 详情
  2. 检查桥是否存在 - getBridgeByDeBridgeId (资产索赔通过 发送 桥梁,资产通过 薄荷和在 工作 状态 - 如果桥不存在, 我们就不能发送符号, 我们需要先输入桥( 见桥初始化- > mint) .
  3. 请检查access-date=中的日期值 (帮助) isSubmissionUsed
  4. 从验证器存储确认 storeConfirmations 指令(一项交易最多可存储6个签名),可使用 buildStoreSignaturesTransaction,这些交易可以批发方式签名和发送.
  5. [可选 如果我们有外部呼叫数据,我们需要检查SEND HASHED FLAG是否设定了. 如果国旗没有设定, 我们需要填充外部呼叫集
  6. 第1、第2和第3步的所有检查都可以自动进行,并具有功能 checkClaimParams - 检查是否尚未要求提交,检查桥梁平衡、检查链式支持Info和Bridge.
  7. 请求! 打电话 claim 以 buildClaimTransaction 保存所有签名后 - 此选项可以检查 isTransactionConfirmed 或者说 getConfirmationsCount
  8. [备选]如果存在外部呼叫,我们需要执行它, 我们可以通过呼叫执行它们 buildOptimalExecuteExternalCallTransaction。此函数试图通过尽可能多地执行外部指令来构建 tx 。 在外部调用执行之前需要调用 .

外部调用数据准备

由于Solana的交易大小限制为1232字节,我们不能将所有外部呼叫数据存储在单笔交易中,因此我们需要将数据分成块并在不同的交易中发送一堆块. 我们要打电话 initExternalCallStorage 指令( storageKey = 外部调用快捷键 - 索赔/ extCallShortcut - - - - - - — — — — — — — — — — — — — 发送,外部调用长度=外部调用数据长度,源链 id=源链 - 索赔索拉纳 id - 发送) 分配内存并填充第一个块。 如果外部调用数据大于~800字节,我们需要初始化外部调用存储并用调用的数据填充 extendExternalCallStorage 指令 buildExtendExternalCallStorageInstruction。 。 。 .

函数 prepareExtCallTransactions 将数据分割成最大大小的块并返回要执行的交易数组。 第一个tx是 initExternalCallStorage,休息(可选)为 extendExternalCallStorage。 。 。 . initExternalCallStorage 分配块链中所需的内存空间,并填入初始数据块。 由于我们无法将数据写入未分配的内存中,我们必须等到第一次交易敲定并分配出excallStorage。 之后,我们可以以批量方式发送休息交易,并等待索拉纳处理. 我们可以检查存储是否正确使用 isExtCallStorageCorrect

桥梁初始化

实体

  • 状态 - 独有,包含甲骨文,需要甲骨文,分确认,如果协议是活性的和其他系统信息.
  • 桥梁(一般信息) - 包含桥梁状态(工作/停用),收取的费用和其他系统信息.
  • 发送桥 - 随附符件, 包含大量锁定的符件, 本地 SPL- token 地址和一般桥信息
  • Mint Bridge - 与出道链和外道链ID中的符号相接,包含多位被铸造的符号,出道链ID,出道符地址和通通桥信息
  • 链式支持Info - 与链式连接, 包含 状态 (支持/不支持)目标链和固定Fee/转让Fee值(如果值为零)
  • BridgeFeeInfo - 与桥连接,包含资产ChainFee选项(无或值,如果无资产链费没有支持)

涉及受影响账户的索赔流量(分机调用)(假设未提出索赔,即存在桥梁/状态/链式支助Info)

行动初始账户更新账户已关闭账户评论
storeConfirmations[确认]实数存储签名为确认
initExternalCallStorage外部 呼叫Storage, 外部呼叫Meta分配外部调用存储, 设置外部CallMeta = accumulation
updateExternalCallStorage外部 呼叫Storage, 外部呼叫Meta用数据填充外部呼叫存储, 设置外部CallMeta = accumulation
claim提交、[拿起Wallet]、[拿起Wallet]、[拿起Wallet]、[说起Wallet]桥接 接通 接通 接通 接通实数创建提交账户, 关闭确认存储, 设置外部CallMeta state = execution,更新桥接已锁定/已忽略的金额,将资金移入/移出钱包
executeExternalCall外部呼叫网络外部 调用设置外部CallMeta = executed,关闭外部呼叫存储

与受影响账户的索赔流量(没有分机调用)(假设未提出索赔,即存在桥梁/状态/链式支助Info)

行动初始账户更新账户已关闭账户评论
storeConfirmations[确认]实数存储签名为确认
claim提交、[拿起Wallet]、[拿起Wallet]、[拿起Wallet]、[说起Wallet]桥接 接通 接通 接通 接通实数创建提交账户、 关闭确认存储、 更新锁定/ 忽略的桥值、 移动资金到/ 从钱包中

实例

发送和索赔实例

索赔流量

sendClaim-Page-1 drawio

发送流量

sendClaim-Page-2 drawio

版本与发布记录

@debridge-finance/solana-contracts-client 共发布 60 个版本,首次发布于 2022/11/24;过去 12 个月发布了 3 个版本。

版本发布日期距今
6.2.1latest2026/10/051 个月前
6.2.02026/02/049 个月前
6.1.02025/11/1411 个月前
6.1.0-dev.02025/09/101.2 年前
6.0.52025/07/071.3 年前
6.0.42025/07/011.4 年前

关于 @debridge-finance/solana-contracts-client 的常见问题

@debridge-finance/solana-contracts-client 是什么?

文档

如何安装 @debridge-finance/solana-contracts-client?

在项目目录运行 npm install @debridge-finance/solana-contracts-client,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:buffer(6.0.3)、@solana/web3.js(^1.95.2)、@coral-xyz/anchor(^0.31.1)、@solana/buffer-layout(^4.0.0)、@solana/buffer-layout-utils(^0.2.0)、@debridge-finance/solana-utils(^6.0.0)、@debridge-finance/debridge-external-call(^2.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@debridge-finance/solana-contracts-client 支持 TypeScript 吗?

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

@debridge-finance/solana-contracts-client 支持 ESM 还是 CommonJS?

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

@debridge-finance/solana-contracts-client 可以商用吗?

@debridge-finance/solana-contracts-client 使用 GPL-3.0-only 许可。强 Copyleft:分发包含该代码的软件时,整个作品需以 GPL-3.0 兼容许可开源,并附带专利与反锁定条款。仅内部使用不触发此义务。以上为概括,不构成法律意见,请以许可原文为准。

@debridge-finance/solana-contracts-client 的下载量有多少?

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

@debridge-finance/solana-contracts-client 还在维护吗?

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