Skip to main content

Jupiter

Jupiter V6 поддерживается нативно в SDK. Предоставляются утилитарные методы для простого получения котировок для свопа, формирования и отправки транзакций, необходимых для выполнения свопов. Jupiter является ключевым агрегатором ликвидности для Solana, предлагая наибольший выбор токенов и оптимальный поиск маршрута между любой парой токенов. Для подробного описания обратитесь к официальной документации. Jupiter documentation.

Выполнить своп

Создайте экземпляр IDex, указав аккаунт по умолчанию:
IDexAggregator dex = new JupiterDexAg(Web3.Account);
Создайте экземпляр IDex:
TokenData tokenA = await dex.GetTokenBySymbol("SOL");
TokenData tokenB = await dex.GetTokenBySymbol("USDC");
Получите котировку свопа для 1 SOL:
SwapQuoteAg swapQuote = await dex.GetSwapQuote(
    tokenA.MintAddress,
    tokenB.MintAddress,
    DecimalUtil.ToUlong(1, tokenA.Decimals)
);
var quote = DecimalUtil.FromBigInteger(swapQuote.OutputAmount, tokenB.Decimals);
Debug.Log(quote); // Amount of espected USDC token to receive
Отобразите путь маршрута:
Debug.Log(string.Join(" -> ", swapQuote.RoutePlan.Select(p => p.SwapInfo.Label)));

// Lifinity V2 -> Whirlpool
Создайте транзакцию для свопа:
Transaction tx = await dex.Swap(swapQuote);
Подпишите и отправьте транзакцию свопа:
await Web3.Wallet.SignAndSendTransaction(tx);

Использование Jupiter Payments API

API Jupiter Payments также доступен, что позволяет использовать Jupiter вместе с SolanaPay для проведения платежей пользователей любым SPL-токеном, с возможностью указания цены в USDC или других токенах. Создайте экземпляр IDex, указав аккаунт по умолчанию:
IDexAggregator dex = new JupiterDexAg(Web3.Account);
Создайте экземпляр IDex:
TokenData tokenA = await dex.GetTokenBySymbol("SOL");
TokenData tokenB = await dex.GetTokenBySymbol("USDC");
Получите котировку свопа для количества SOL, необходимого для получения 5 USDC:
SwapQuoteAg swapQuote = await dex.GetSwapQuote(
    tokenA.MintAddress,
    tokenB.MintAddress,
    DecimalUtil.ToUlong(5, tokenB.Decimals),
    SwapMode.ExactOut
);
var quote = DecimalUtil.FromBigInteger(swapQuote.InputAmount, tokenA.Decimals);
Debug.Log(quote); // Amount of espected SOL token to pay
Создайте транзакцию свопа:
Transaction tx = await dex.Swap(swapQuote);
Подпишите и отправьте транзакцию свопа:
await Web3.Wallet.SignAndSendTransaction(tx);