3⃣
Trade calculation
Before trade calculation you should Set up SDK first.
Swaps in our SDK separated to two different type of swaps:
- On-chain swaps- Since Rubic aggregates several DEXs, users can execute On-Chain Swaps and Bridges on Ethereum, BNB Smart Chain, Polygon, Harmony, Avalanche, Fantom, Moonriver, Solana, Arbitrum, Aurora, NEAR, and Telos networks. By also utilizing external DEXs, users are ensured the best possible rates.
- Cross-chain swaps: Rubic's protocol offers easy trading for more than 15,000+ assets across Polygon, BNB Smart Chain, Ethereum, Avalanche, MoonRiver, Fantom, Solana, Harmony, Arbitrum, Aurora, NEAR, and Telos networks, using our custom and unique Cross-Chain Protocol. We utilize liquidity pools and our own smart contracts, Rubic provides an extremely easy-to-use Cross-Chain solution to all traders. Cross-Chain swaps are available between 12 major networks right now
To use on-chain swaps and calculate them, you need an
instantTrades
object located in the SDK instance. Inside the object is the calculateTrade
method, which takes the input token, the input swap amount, the output token address, and the transaction parameters.calculateTrade(
fromToken:
| Token
| { address: string; blockchain: BlockchainName; },
fromAmount: string | number,
toToken: Token | string,
options?: SwapManagerCalculationOptions
): Promise<Array<InstantTrade | InstantTradeError>>
The method returns an array of calculated DEX which can be represented as
InstantTrade
object or InstantTradeError
object. Both contains DEX type, but first contains the trade and the second contains error reason. Example:const sdk = await SDK.createSDK(config);
const fromToken = {
blockchain: BLOCKCHAIN_NAME.ETHEREUM,
address: '0x0000000000000000000000000000000000000000'
};
const fromAmount = 1;
const toTokenAddress = '0xdac17f958d2ee523a2206206994597c13d831ec7';
// calculate trades
const trades = await sdk.instantTrades.calculateTrade(fromToken, fromAmount, toTokenAddress);
const bestTrade = trades[0];
Done!
To use cross-chain swaps and calculate them, you need a
crossChain
object, located in the SDK instance. Inside the object is the calculateTrade
method, which takes the input token, the input swap amount, the output token, and the transaction parameters.async calculateTrade(
fromToken:
| Token
| {
address: string;
blockchain: BlockchainName;
},
fromAmount: string | number,
toToken:
| Token
| {
address: string;
blockchain: BlockchainName;
},
options?: Omit<SwapManagerCrossChainCalculationOptions, 'providerAddress'>
): Promise<WrappedCrossChainTrade[]>
It returns
WrappedCrossChainTrade
object.interface WrappedCrossChainTrade {
/**
* Calculated cross chain trade.
* Sometimes trade can be calculated even if error was thrown.
* Equals `null` in case error is critical and trade cannot be calculated.
*/
trade: CrossChainTrade | null;
/**
* Type of calculated trade.
*/
tradeType: CrossChainTradeType;
/**
* Error, thrown during calculation.
*/
error?: RubicSdkError;
}
Using example:
// create SDK instance
const sdk = await RubicSDK.SDK.createSDK(configuration);
// Define trade parametres
const fromToken = {
blockchain: BLOCKCHAIN_NAME.ETHEREUM,
address: '0x0000000000000000000000000000000000000000'
};
const fromAmount = 1;
const toToken = {
blockchain: BLOCKCHAIN_NAME.BINANCE_SMART_CHAIN,
address: '0xe9e7cea3dedca5984780bafc599bd69add087d56'
};
// calculated trades
const trades = await sdk.crossChain.calculateTrade(fromToken, fromAmount, toToken);
const bestTrade = trades[0];
In this step, you get the real trade object. You have one last step left - execute a swap.
Last modified 9mo ago