Provides an easy integration with the Allbridge Core Bridge for DApps in the browser or Node.js
$ npm install @allbridge/bridge-core-sdk
const AllbridgeCoreSdk = require('@allbridge/allbridge-core-sdk');
const sdk = new AllbridgeCoreSdk();
const supportedChains = await sdk.chainDetailsMap();
// extract information about ETH chain
const {bridgeAddress, tokens, chainId, name} = supportedChains[ChainSymbol.ETH];
// Choose one of the tokens supported on ETH
const usdtOnEthTokenInfo = tokens.find(tokenInfo => tokenInfo.symbol === 'USDT');
Before sending tokens the bridge has to be authorized to use user's tokens. This is done by calling the approve
method
on SDK instance.
const response = await sdk.approve(web3, {
tokenAddress: tokenAddress,
owner: senderAddress,
spender: poolAddress,
});
TIP: To interact with the Tron blockchain:
use tronWeb
instead of web3
Initiate the transfer of tokens with send
method on SDK instance.
await sdk.send(web3, {
amount: '1.01',
fromAccountAddress: senderAddress,
sourceChainToken: usdtOnEthTokenInfo,
toAccountAddress: recipientAddress,
destinationChainToken: usdtOnTrxTokenInfo,
messenger: Messenger.ALLBRIDGE,
});
TIP: To interact with the Tron blockchain:
use tronWeb
instead of web3
Swap BUSD on BSC chain to USDT on TRX chain
const {
AllbridgeCoreSdk,
ChainSymbol,
Messenger,
} = require("@allbridge/bridge-core-sdk");
const Web3 = require("web3");
require("dotenv").config();
async function runExample() {
// sender address
const fromAddress = '0x01234567890abcdef01234567890abcdef012345';
// recipient address
const toAddress = 'AbcDefGHIJklmNoPQRStuvwXyz1aBcDefG';
// configure web3
const web3 = new Web3('https://bsc-dataseed1.binance.org:443');
const account = web3.eth.accounts.privateKeyToAccount(process.env.PRIVATE_KEY);
web3.eth.accounts.wallet.add(account);
const sdk = new AllbridgeCoreSdk();
// fetch information about supported chains
const chains = await sdk.chainDetailsMap();
const bscChain = chains[ChainSymbol.BSC];
const busdTokenInfo = bscChain.tokens.find(tokenInfo => tokenInfo.symbol === 'BUSD');
const trxChain = chains[ChainSymbol.TRX];
const usdtTokenInfo = trxChain.tokens.find(tokenInfo => tokenInfo.symbol === 'USDT');
// authorize a transfer of tokens from sender's address
await sdk.approve(web3, {
tokenAddress: busdTokenInfo.tokenAddress,
owner: fromAddress,
spender: busdTokenInfo.poolAddress,
});
// initiate transfer
const response = await sdk.send(web3, {
amount: "1.01",
fromAccountAddress: fromAddress,
toAccountAddress: toAddress,
sourceChainToken: busdTokenInfo,
destinationChainToken: usdtTokenInfo,
messenger: Messenger.ALLBRIDGE,
});
console.log("Tokens sent:", response.txId);
}
runExample();
TIP: For more details, see Examples
SDK method rawTransactionBuilder.approve
can be used to create approve Transaction.
const rawTransactionApprove = await sdk.rawTransactionBuilder.approve(web3, approveData);
TIP: To interact with the Tron blockchain:
use tronWeb
instead of web3
SDK method rawTransactionBuilder.send
can be used to create send Transaction.
const rawTransactionSend = await sdk.rawTransactionBuilder.send(sendParams, web3);
TIP:
To interact with the Tron blockchain:
use tronWeb
instead of web3
To create send transaction on Solana blockchain:
const { transaction, signer } = await sdk.rawTransactionBuilder.send(sendParams);
TIP: For more details, see Example
SDK method getTransferStatus
can be used to get information about tokens transfer.
const transferStatus = await sdk.getTransferStatus(chainSymbol, txId);
SDK method getAmountToBeReceived
can be used to calculate the amount of tokens the receiving party will get after
applying the bridging fee.
const amountToBeReceived = await sdk.getAmountToBeReceived(
amountToSend,
sourceTokenInfo,
destinationTokenInfo
);
SDK method getAmountToSend
can be used to calculate the amount of tokens to send based on the required amount of
tokens the receiving party should get.
const amountToSend = await sdk.getAmountToSend(
amountToBeReceived,
sourceTokenInfo,
destinationTokenInfo
);
SDK method getTxCost
can be used to fetch information about the amount of gas fee required to complete the transfer on
the destination chain. Gas fee is paid during the send operation in the source chain currency.
const weiValue = await sdk.getTxCost(
usdtOnEthTokenInfo, // from ETH
usdtOnTrxTokenInfo, // to TRX
Messenger.ALLBRIDGE
);
SDK method getAverageTransferTime
can be used to get the average time in ms it takes to complete a transfer for a
given combination of tokens and messenger.
const transferTimeMs = sdk.getAverageTransferTime(
sourceTokenInfo,
destinationTokenInfo,
Messenger.ALLBRIDGE
);
Until bridge-core-sdk reaches a 1.0.0
release, breaking changes will be released with a new minor version. For
example 0.3.1
, and 0.3.4
will have the same API, but 0.4.0
will have breaking changes.