@allbridge/bridge-core-sdk

中文文档
3.38.0发布于 2026/10/29MITTypeScriptESM + CJS构建来源已验证近 30 天下载 1万


中文使用文档
文档目录19 节
  1. 目录
  2. 安装
  3. 如何使用
  4. 找出如何整合 Allbridge Core SDK 和浏览器扩展钱包
  5. 1. 初始化SDK
  6. 2. 获取支持的符号列表
  7. 3. 选择信使
  8. 4.1 批准转让令牌(仅用于Evm,Tron)
  9. 4.2 发送托肯斯
  10. 完整实例
  11. 其他行动
  12. 交易建立器
  13. 获取已发送交易的信息
  14. 计算收费后应收取的代币金额
  15. 计算要发送的令牌数量
  16. 获得天然气费
  17. 获得最大额外气体量
  18. 获得平均移交时间
  19. 已知的审计警告


网站 二. 支助 文档 二. 支助 SDK TS 医生

全桥核心SDK

为浏览器或节点.js中的DApps提供与Allbridge Core桥的简单集成

目录

安装

$ npm install @allbridge/bridge-core-sdk

如何使用

找出如何整合 Allbridge Core SDK 和浏览器扩展钱包

埃夫姆语Name 索拉纳 斯特拉尔 龙

1. 初始化SDK

import {AllbridgeCoreSdk, nodeRpcUrlsDefault} from "@allbridge/bridge-core-sdk";
// Connections to blockchains will be made through your rpc-urls passed during initialization
const sdk = new AllbridgeCoreSdk({
  ...nodeRpcUrlsDefault,
  TRX: "your trx-rpc-url",
  ETH: "your eth-rpc-url"
});
// Sdk will be using your rpc url for fetch data from blockchain to create tx
const rawTx = await sdk.bridge.rawTxBuilder.send(sendParams);

苏伊苏伊完全节点不再服务 JSON -RPC,所以 SUI uRL必须是gRPC-web(sui.rpc.v2)一个完整节点的基url,例如. https://fullnode.mainnet.sui.io。 。 。 .

(2) 初始化 SDK 实例( 使用经过的提供者连接区块链)

import {AllbridgeCoreSdk, nodeRpcUrlsDefault} from "@allbridge/bridge-core-sdk";

const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
// The Provider parameter must be passed in order for it to be used to connect to the blockchain, for example:
const rawTx = await sdk.bridge.rawTxBuilder.send(sendParams, provider);

提普: 为(Web3:v1.9.0,tronweb:v4.4.4.0)进行测试和开发,在其他情况下使用方法1

2. 获取支持的符号列表

const supportedChains = await sdk.chainDetailsMap();
// extract information about ETH chain
const {tokens, chainId, name, oftBridgeAddress} = supportedChains[ChainSymbol.ETH];
// Choose one of the tokens supported on ETH
const usdcOnEthToken = tokens.find(token => token.symbol === 'USDC');

每一个符号都作为 TokenWithChainDetails 对象。 除了一般符号数据外(symbol, (中文(简体) ), name, (中文(简体) ), decimals, (中文(简体) ), tokenAddress它包含一切需要 找出 哪些使者可以发送 标志:

外地现时含义
cctpAddress, (中文(简体) ), cctpFeeShare符号由 CCTP 支持CCTP 桥梁合同地址(核准支出人)和CCTP收费份额
cctpV2Address, (中文(简体) ), cctpV2FeeShare符号由 CCTP V2 支持CCTP V2 桥梁合同地址(批准支出者)和CCTP V2 收费份额
oftId, (中文(简体) ), oftBridgeAddressoFT 支持符/ 链Id 在不同链条上由同一同物共享 OFT桥合同地址
xReservexReserve 支持符号xReserve桥梁合同地址(核准支出人), feeShare 财务报告和审定财务报表 feeConst
lifiIntents符号在 LI.FI 路线上bridgeAddress (批准支出者,仅限源链)和 destinations
transferTime永远每信使平均向其他链条转移时间
abrPayer链式支持在 ABR 中支付费用ABR 付款人合同地址和每信使可用性

3. 选择信使

每一次传输都由被支持的信使之一执行(行距协议). 信使是所有依赖路由的 SDK 方法的要求参数 : bridge.checkAllowance, (中文(简体) ), bridge.rawTxBuilder.approve, (中文(简体) ), bridge.rawTxBuilder.send, (中文(简体) ), getAmountToBeReceived, (中文(简体) ), getAmountToSend, (中文(简体) ), getGasFeeOptions, (中文(简体) ), getExtraGasMaxLimits 财务报告和审定财务报表 getAverageTransferTime。 。 。 .

通讯员议定书当
Messenger.CCTP圆 CCTPcctpAddress 定义在源代码和目的符号上
Messenger.CCTP_V2圆 CCTP V2cctpV2Address 定义在源代码和目的符号上
Messenger.OFT层零 OFToftId 来源和目的地的符号和 oftBridgeAddress 在两个链上定义
Messenger.X_RESERVEx 保存xReserve 定义在源代码和目的符号上
Messenger.LIFI_INTENTSLI.FI 意图源代码有 lifiIntents.bridgeAddress 并列出在 lifiIntents.destinations (EVM和索拉纳源链),参见 isLifiIntentsRouteSupported

Messenger.ALLBRIDGE 财务报告和审定财务报表 Messenger.WORMHOLE 已贬值,不得使用.

import {isLifiIntentsRouteSupported, Messenger} from "@allbridge/bridge-core-sdk";

function getAvailableMessengers(sourceToken: TokenWithChainDetails, destinationToken: TokenWithChainDetails): Messenger[] {
  const messengers: Messenger[] = [];
  if (sourceToken.cctpAddress && destinationToken.cctpAddress) {
    messengers.push(Messenger.CCTP);
  }
  if (sourceToken.cctpV2Address && destinationToken.cctpV2Address) {
    messengers.push(Messenger.CCTP_V2);
  }
  if (
    sourceToken.oftId &&
    sourceToken.oftId === destinationToken.oftId &&
    sourceToken.oftBridgeAddress &&
    destinationToken.oftBridgeAddress
  ) {
    messengers.push(Messenger.OFT);
  }
  if (sourceToken.xReserve && destinationToken.xReserve) {
    messengers.push(Messenger.X_RESERVE);
  }
  if (isLifiIntentsRouteSupported(sourceToken, destinationToken)) {
    messengers.push(Messenger.LIFI_INTENTS);
  }
  return messengers;
}

getAverageTransferTime 返回时 null 当信使无法在来源链和目的地链之间找到时, 因此,它可以作为额外的检查。 如果选择的路由不支持信使, SDK 方法将丢出 CCTPDoesNotSupportedError, (中文(简体) ), OFTDoesNotSupportedError, (中文(简体) ), LifiIntentsDoesNotSupportedError 或者说 SdkError ( 对于xReserve).

提普: 详情见 示例

CCTP和CCTP V2

本地USDC通过 Circle CCTP 传输. 必须批准的桥梁合同是 token.cctpAddress (CCTP)或 (中文(简体) ) token.cctpV2Address (中文(简体) ). 收费是转移金额的一部分,参见: token.cctpFeeShare 编号 : token.cctpV2FeeShare· ; 使用情况 getAmountToBeReceived 要得到准确的结果.

实例: EVM (CCTP) (英语), (中文(简体) ), EVM( CCTP V2), (中文(简体) ), EVM(CCTP V2,用稳定币支付的煤气费), (中文(简体) ), 索拉纳, (中文(简体) ), 苏

办公室

通过 LayerZero OFT 传输. 不同链条上的指针由 token.oftId。 。 。 . 必须批准的桥梁合同是 oftBridgeAddress 源链. 收费份额由Allbridge核心API为线路提供, 使用情况 getAmountToBeReceived 要得到准确的结果.

实例: 龙, (中文(简体) ), Tron (用马币支付的天然气费)

发觉

通过xReserve协议进行传输. 路线配置在 token.xReserve数字 : bridgeAddress 是必须批准的合同, feeShare 财务报告和审定财务报表 feeConst 说明收费. 由于收费的固定部分,有最低的转账额; getAmountToBeReceived 丢出一个 SdkError 如果数额太低,则最低数额. 此信使不支持额外的气体 : getExtraGasMaxLimits 返回零限制.

实例: 堆栈

缩略语( N)

通过LI.FI的转账 意向,一个解析器市场:信使被锁入源链上的代管和a 解决者在秒内向目的地链上的接收者支付. 原生地代币(如ETH)也可以被寄出. 路线配置在 token.lifiIntents数字 : bridgeAddress 是全桥 LifiIntentsBridge 合同 须经批准(土著标志不需要批准), destinations 列出每个链条的目的地符号. Allbridge核心API的市场价格报价 getAmountToBeReceived 编号 : getAmountToSend 请求引用, sdk.lifiIntents.getQuote 与全桥返回 fee。 。 。 . 引用错误被键入 : LifiIntentsAmountTooLowError (单位:千美元)minAmount, (中文(简体) ), LifiIntentsAmountTooHighError (单位:千美元)maxAmount, (中文(简体) ), LifiIntentsNoQuoteError 财务报告和审定财务报表 LifiIntentsQuoteError。 。 。 .

订单交易由 Core API 构建,并且是短寿命的(引文对 40-120 s 有效,交易) 在大约10分钟后返回,所以首先批准,然后在签署前立即创建订单:

const messenger = Messenger.LIFI_INTENTS;
if (!(await sdk.bridge.checkAllowance({token: sourceToken, owner: fromAddress, amount, messenger}))) {
  const rawTransactionApprove = await sdk.bridge.rawTxBuilder.approve({token: sourceToken, owner: fromAddress, messenger});
  // sign and send rawTransactionApprove, wait for it to be mined
}
// creates the order and returns its LifiIntentsBridge call; order.orderId is the transfer id for getTransferStatus
const {rawTransaction, order} = await sdk.lifiIntents.buildSendTransaction({
  amount,
  fromAccountAddress: fromAddress,
  toAccountAddress: toAddress,
  sourceToken,
  destinationToken,
});
// sign and send rawTransaction at once

bridge.rawTxBuilder.send 与 Messenger.LIFI_INTENTS 进行相同的交易,只返回原始交易. 煤气费为零,额外的煤气不受此信使的支持: getExtraGasMaxLimits 返回零限制. LI.FI向发送人退还未填单(getTransferStatus 报告 refunded); Allbridge 收费不退.

索拉纳无需批准: buildSendTransaction 返回未签名 VersionedTransaction (单位:千美元)RawBridgeSolanaTransaction全桥 lifi-intents-bridge 以发件人为付费人和新人的程序 blackash, 签个名,马上寄出去. 索拉纳岛上的收件人是钱包(所有者)地址:解决者支付 相关符名账户.

对索拉纳来说,解答者不创建该账户:没有该账户的收款人的命令不会被填充并被退还. 发送前检查, 请收件人先创建账户( 本地的 SOL 传输不需要 ):

if (!(await sdk.utils.sol.hasTokenAccount(toAddress, destinationToken))) {
  // warn: the recipient has no token account for destinationToken on Solana
}

实例: EVM( 视频), (中文(简体) ), 索拉纳

4.1 批准转让令牌(仅用于Evm,Tron)

发信人出道前,桥要经批准使用出道人出道的道具. 这是通过建造 approve 与 SDK 实例交易. 施花者取取之于使者,故曰:"所取之所取也 messenger 需要参数.

由于Ethereum USDT合同的特殊性:
如果目前的津贴不是0, 3⁄4 ̄ ̧漯b.

const rawTx = await sdk.bridge.rawTxBuilder.approve({
  token: sourceToken,
  owner: accountAddress,
  messenger: Messenger.CCTP_V2,
});

使用 bridge.checkAllowance 确定批准是否足够:

const isApproved = await sdk.bridge.checkAllowance({
  token: sourceToken,
  owner: accountAddress,
  amount: "1.01",
  messenger: Messenger.CCTP_V2,
});

4.2 发送托肯斯

以 send sDK实例中的方法.

const rawTx = await sdk.bridge.rawTxBuilder.send({
  amount: "1.01",
  fromAccountAddress: fromAddress,
  toAccountAddress: toAddress,
  sourceToken: sourceToken,
  destinationToken: destinationToken,
  messenger: Messenger.CCTP_V2,
});

完整实例

使用 CCTP V2 从 ETH 链向 ARB 链发送 USDC

import {
  AllbridgeCoreSdk,
  ChainSymbol,
  Messenger,
  nodeRpcUrlsDefault,
  RawEvmTransaction,
} from "@allbridge/bridge-core-sdk";
import * as dotenv from "dotenv";
// Utils method
// For more details, see Examples (https://github.com/allbridge-io/allbridge-core-js-sdk/tree/main/examples)
// import { getEnvVar } from "../../../utils/env";
// import { sendEvmRawTransaction } from "../../../utils/web3";
// import { ensure } from "../../../utils/utils";

dotenv.config({path: ".env"});

async function runExample() {
  const fromAddress = getEnvVar("ETH_ACCOUNT_ADDRESS"); // sender address
  const toAddress = getEnvVar("ARB_ACCOUNT_ADDRESS"); // recipient address

  const sdk = new AllbridgeCoreSdk({ ...nodeRpcUrlsDefault, ETH: getEnvVar("WEB3_PROVIDER_URL") });

  const chains = await sdk.chainDetailsMap();

  const sourceChain = chains[ChainSymbol.ETH];
  const sourceToken = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));

  const destinationChain = chains[ChainSymbol.ARB];
  const destinationToken = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));

  const amount = "1.01";
  const messenger = Messenger.CCTP_V2;

  //check if sending tokens already approved
  if (!(await sdk.bridge.checkAllowance({ token: sourceToken, owner: fromAddress, amount, messenger }))) {
    // authorize the bridge to transfer tokens from sender's address
    const rawTransactionApprove = (await sdk.bridge.rawTxBuilder.approve({
      token: sourceToken,
      owner: fromAddress,
      messenger,
    })) as RawEvmTransaction;
    const approveTxReceipt = await sendEvmRawTransaction(rawTransactionApprove);
    console.log("Approve tx id:", approveTxReceipt.transactionHash);
  }

  // initiate transfer
  const rawTransactionTransfer = (await sdk.bridge.rawTxBuilder.send({
    amount: amount,
    fromAccountAddress: fromAddress,
    toAccountAddress: toAddress,
    sourceToken: sourceToken,
    destinationToken: destinationToken,
    messenger,
  })) as RawEvmTransaction;
  console.log(`Sending ${amount} ${sourceToken.symbol}`);
  const txReceipt = await sendEvmRawTransaction(rawTransactionTransfer);
  console.log("tx id:", txReceipt.transactionHash);
}

runExample();

提普: 详情见 实例

其他行动

交易建立器

核准交易

SDK 方法 bridge.rawTxBuilder.approve 可用于创建批准的交易.

const rawTransactionApprove = await sdk.bridge.rawTxBuilder.approve(approveParams);

发送交易

SDK 方法 bridge.rawTxBuilder.send 可用于创建发送交易.

const rawTransactionSend = await sdk.bridge.rawTxBuilder.send(sendParams);

提普: 详情见 *** 实例 页:1

获取已发送交易的信息

SDK 方法 getTransferStatus 可用于获取有关指使转让的信息.

const transferStatus = await sdk.getTransferStatus(chainSymbol, txId);

计算收费后应收取的代币金额

SDK 方法 getAmountToBeReceived 可用于计算接收方之后将获得的令牌数量 使用被选中的使者的连接费.

const amountToBeReceived = await sdk.getAmountToBeReceived(
  amountToSend,
  sourceToken,
  destinationToken,
  Messenger.CCTP_V2
);

计算要发送的令牌数量

SDK 方法 getAmountToSend 可用于根据需要的 接收方应获得的标志.

const amountToSend = await sdk.getAmountToSend(
  amountToBeReceived,
  sourceToken,
  destinationToken,
  Messenger.CCTP_V2
);

提普: 详情见 示例

获得天然气费

SDK 方法 getGasFeeOptions 允许获取关于支付燃气费的现有方法的信息, 以及完成目的地链转移所需的天然气费数额. 煤气费在 发送 操作 并且可以用源链的货币、源代码或ABR符号支付 (见 gasFeePaymentMethod 内 SendParams) (中文(简体) ).

方法返回具有以下属性的对象:

  • 土生土长:以源链货币单位计价的天然气费金额(例如:Ethereum的wei).
  • 稳定币 : (可选) 燃气费的金额,以来源代币单位为单位计算. 如果该财产不存在,则表明不存在稳定币支付法.
  • abr : (可选) 天然气费,以ABR令牌单位表示. 仅在源链有 abrPayer 并且选定的信使可以支付ABR.
const {native, stablecoin, abr} = await sdk.getGasFeeOptions(
  usdcOnEthToken, // from ETH
  usdcOnArbToken, // to ARB
  Messenger.CCTP_V2
);
console.log(native);
// Output:
// {
//   int: "10000000000000000",
//   float: "0.01" // (0.01 ETH)
// }
console.log(stablecoin);
// Output:
// {
//   int: "10010000",
//   float: "10.01" // (10.01 USDC)
// }

获得最大额外气体量

额外气体是目的地链通货的又一金额,可以与转账一起交付 (见 extraGas 内 SendParams. SDK 方法 getExtraGasMaxLimits 返回每个气体的最大额外值 气费支付方法,以及可在目的地链上得到的最高金额.

const extraGasLimits = await sdk.getExtraGasMaxLimits(
  sourceToken,
  destinationToken,
  Messenger.CCTP_V2
);

提普: 详情见 示例

获得平均移交时间

SDK 方法 getAverageTransferTime 可以用来获得平均时间,以毫秒计 完成一个 以物配主,以物配主, 回返 null 如果信使在路线上没有得到支持.

const transferTimeMs = sdk.getAverageTransferTime(
  sourceToken,
  destinationToken,
  Messenger.CCTP_V2
);

已知的审计警告

由于依赖 @solana/web3.js软件包 [email protected] 被标记为脆弱. 这种脆弱性在此SDK背景下是无法被利用的,而且没有敏感或用户化的代码依赖于 bigint-buffer 直接说.

我们正在监测上游一揽子计划,以便正式解决.

版本与发布记录

@allbridge/bridge-core-sdk 共发布 345 个版本,首次发布于 2022/10/07;过去 12 个月发布了 67 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.38.0latest2026/10/299 天前
3.38.0-beta.1beta2026/10/2612 天前
3.37.02026/10/2216 天前
3.37.0-beta.12026/10/2117 天前
3.36.02026/10/1226 天前
3.36.0-beta.32026/09/291 个月前

其他发布通道:alpha → 3.35.0-alpha.2,beta → 3.38.0-beta.1。

关于 @allbridge/bridge-core-sdk 的常见问题

如何安装 @allbridge/bridge-core-sdk?

在项目目录运行 npm install @allbridge/bridge-core-sdk,或使用 pnpm add / yarn add / bun add。

@allbridge/bridge-core-sdk 支持 TypeScript 吗?

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

@allbridge/bridge-core-sdk 支持 ESM 还是 CommonJS?

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

@allbridge/bridge-core-sdk 需要什么版本的 Node.js?

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

@allbridge/bridge-core-sdk 可以商用吗?

@allbridge/bridge-core-sdk 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@allbridge/bridge-core-sdk 的下载量有多少?

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

@allbridge/bridge-core-sdk 还在维护吗?

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