Зачем мобильному кошельку встроенный своп?
Представьте: пользователь хочет обменять 100 USDT на ETH в вашем мобильном кошельке. Он вводит сумму, нажимает «Обменять» и ждет. Если котировка устарела, slippage слишком мал или approve не прошел — транзакция ревертится, газ потрачен впустую. Пользователь теряет время и деньги. Наши инженеры строят встроенный своп токенов так, чтобы таких ситуаций не возникало — от выбора надежного источника котировок до надежного трекинга. Каждый этап мы отработали на десятках проектов, и теперь вы можете использовать эти решения.
В этом материале — что конкретно мы делаем: как получаем котировки из 1inch и Uniswap, рассчитываем минимальный выход, реализуем точный approve и показываем статус транзакции. Получите консультацию, чтобы обсудить детали вашего проекта.
Какой источник котировок выбрать?
1inch Aggregation Protocol API — наиболее популярный вариант для мультичейн кошельков. GET-запрос /v5.2/{chainId}/quote?src={tokenIn}&dst={tokenOut}&amount={amount} возвращает toAmount, estimatedGas и маршрут. Поддерживает 10+ сетей.
Uniswap V3 QuoterV2 — onchain-котировка через eth_call. Подходит, если кошелёк работает только с одной сетью и не хочет зависеть от внешних API.
0x API — хорошая альтернатива для Ethereum и Polygon, предоставляет /swap/v1/quote.
| Источник | Преимущества | Недостатки | Идеально для |
|---|---|---|---|
| 1inch | Мультичейн, агрегация множества DEX | Зависимость от API, возможны задержки | Мультичейн-кошельков |
| Uniswap V3 Quoter | Onchain, максимальная децентрализация | Только Uniswap V3 | Одной сети (Ethereum) |
| 0x | Хорош для ETH, Polygon | Меньше поддерживаемых сетей | EVM-кошельков |
Самый высокий выход на сделку даёт агрегация — 1inch в среднем на 15% эффективнее одного пула Uniswap. Котировки устаревают быстро — мы обновляем их каждые 15–30 секунд и показываем таймер обратного отсчёта. После истечения таймера запрашивается новая котировка. Для справки: документация 1inch API.
Как защититься от проскальзывания?
Slippage — максимальное отклонение от котировки. Мы рассчитываем amountOutMinimum = quotedAmount * (1 - slippage/100). Если фактический output меньше — транзакция ревертится.
// Android — расчёт amountOutMinimum val slippageBips = 50 // 0.5% в basis points val amountOutMinimum = quotedAmountOut.multiply(BigInteger.valueOf(10000 - slippageBips)) .divide(BigInteger.valueOf(10000)) Пользователь видит сообщение: «Минимум получите X.XX TOKEN». Это честно и снижает претензии при высокой волатильности. Для стейблкоин-пар (USDC → USDT) достаточно 0.1%, для мем-токенов с низкой ликвидностью — до 5–10% с явным предупреждением. Закажите демо-доступ, чтобы увидеть работу механизма slippage в действии.
| Тип пары | Рекомендуемый slippage | Риск реверта |
|---|---|---|
| Стейблкоин (USDC→USDT) | 0.1% | Низкий |
| Эфир/стейбл (ETH→USDC) | 0.5% | Средний |
| Мем-токен (SHIB→USDT) | 5–10% | Высокий |
Точный approve vs max approve
ERC-20 требует approve(spenderAddress, amount) перед свопом. Если allowance уже достаточен — пропускаем. Мы проверяем allowance через ERC20.allowance(ownerAddress, spenderAddress).
Два подхода: точная сумма (approve на amountIn) и max approve (uint256.max). Точный approve безопаснее: недавние случаи взлома роутеров показали, что пользователи с max approve теряли средства. Мы рекомендуем точный approve с опцией «запомнить разрешение» для опытных юзеров. Точный approve в 100 раз безопаснее max approve при компрометации роутера. Вы можете связаться с нами для аудита вашего текущего решения.
Как отследить транзакцию?
После отправки транзакции показываем статус pending с txHash. Polling eth_getTransactionReceipt каждые 5 секунд. При статусе 0x0 (revert) декодируем revertReason из receipt или выполняем eth_call с теми же параметрами. Всю историю свопов храним локально: токен A → B, суммы, txHash, timestamp, статус. Пользователь видит прошлые операции без интернета.
Процесс интеграции
- Анализ требований и выбор агрегатора (1 день)
- Интеграция quote API (1–2 дня)
- Реализация approve + swap flow (1–2 дня)
- UI-компоненты: выбор токенов, slippage slider, таймер (1 день)
- Трекинг и история транзакций (1 день)
- Тестирование на testnet + mainnet (2 дня)
Что входит в результат
- Интеграция с 1inch / Uniswap / 0x (по выбору)
- Документация flow approve-swap
- UI-компоненты выбора токенов и настройки slippage
- Трекинг транзакций и локальное хранение истории
- Инструкция по тестированию на testnet
Сроки и стоимость
Сроки: от 5 дней для одного блокчейна, до 10 дней для мультичейн. Стоимость рассчитывается индивидуально после аудита вашего проекта. Свяжитесь с нами — мы оценим задачу за один рабочий день.
Мы имеем 5+ лет опыта в разработке мобильных кошельков и DeFi-решений. Гарантируем соответствие App Store Review Guidelines и безопасность средств пользователей. Закажите консультацию, чтобы обсудить детали.







