Інтеграція з Paraswap
DEX-агрегатори вирішують одну задачу: знайти найкращий маршрут обміну токенів серед десятків джерел ліквідності. Paraswap охоплює Uniswap, Curve, Balancer, Aave, DODO та ще кілька десятків протоколів на 10+ мережах. Для приложення, якому потрібні свопи — це готова інфраструктура маршрутизації без необхідності реалізувати її самому.
Як влаштований Paraswap API
Paraswap надає два еndpoint: /prices для отримання котировки та оптимального маршруту, та /transactions для побудови транзакції по маршруту з котировки. Двохкроковий підхід обґрунтований: котировка дійсна обмежений час, транзакція будується у момент виконання.
// Крок 1: отримати маршрут
const priceRoute = await axios.get(
`https://apiv5.paraswap.io/prices/?srcToken=${srcToken}&destToken=${destToken}&amount=${amount}&network=1`
)
// Крок 2: побудувати транзакцію
const txData = await axios.post(
'https://apiv5.paraswap.io/transactions/1',
{
srcToken, destToken, srcAmount, destAmount,
priceRoute: priceRoute.data.priceRoute,
userAddress: wallet.address,
slippage: 100, // 1% у базисних пунктах
}
)
Важливий нюанс: Paraswap v5 API працює без API-ключа для базового використання, але при високому навантаженню додає rate limiting. Для production-інтеграції з частими запитами — партнерський ключ через форму на сайті.
Одобрення токенів: частої ошибки
Approve потрібен не для router контракту Paraswap напрямку, а для TokenTransferProxy — окремого контракту, що керує переводами. Адреса різниться по мережам. Якщо approve виданий неправильній адресі — кожен swap буде ревертитися з TRANSFER_FROM_FAILED.
Адреси TokenTransferProxy доступні через https://apiv5.paraswap.io/adapters/contracts?network={chainId}. Краще отримувати їх динамічно при ініціалізації, не hardcodити.
Paraswap SDK як альтернатива прямому API
@paraswap/sdk надає типізований клієнт:
import { ParaSwap } from '@paraswap/sdk'
import { ethers } from 'ethers'
const paraswap = new ParaSwap({ chainId: 1, web3Provider: provider })
const priceRoute = await paraswap.getRate({
srcToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC
destToken: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH
amount: '1000000000', // 1000 USDC
side: SwapSide.SELL,
})
SDK абстрагує управління адресами контрактів та форматування, але додає залежність. Для простих інтеграцій достатньо прямих HTTP-запитів.
Обробка slippage та failed транзакцій
Paraswap передає minDestAmount у транзакцію на основі параметра slippage. Якщо ринок зрушився більше — транзакція ревертується з INSUFFICIENT_DEST_AMOUNT. Нормальна поведінка, що захищає від MEV.
У приложенні потрібно передбачити retry логіку: при revert через slippage — заново запросити котировку та пересчитати транзакцію. При failure gas estimation — збільшити газ на 20% та повторити.
Орієнтири за часом
Базова інтеграція Paraswap (fetch quote + build tx + execute) — 2-3 дні. З повноцінною обробкою ошибок, retry логікою та UI для вибору slippage — до 1 тижня.
Вартість розраховується індивідуально.







