Реалізація кросс-чейн моста (Bridge) в мобільному крипто-гаманці
Кросс-чейн бридж — найбільш складний сценарій у мобільному гаманці. Средства виходять з мережі A, з'являються в мережі B. Цей процес займає від кількох хвилин до кількох годин, користувач залишається без інформації, якщо не реалізована повноцінна система відстеження.
Варіанти інтеграції: API мостів
Реалізовувати власний bridge-протокол з нуля — не завдання мобільного гаманця. Інтегруються готові рішення:
Li.Fi (https://li.fi/) — агрегатор мостів і свопів. Один API охоплює Stargate, Hop, Across, Squid та десятки інших. Приклад запиту маршруту:
// iOS — маршрути через Li.Fi SDK
import LiFi
let lifi = LIFI()
let routesRequest = RoutesRequest(
fromChainId: 1, // Ethereum
toChainId: 137, // Polygon
fromTokenAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
toTokenAddress: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
fromAmount: "100000000" // 100 USDC (6 decimалів)
)
let routes = try await lifi.getRoutes(request: routesRequest)
Squid Router — спеціалізується на кросс-чейн свопах через Axelar. Добре працює для EVM ↔ Cosmos.
Stargate Finance — протокол LayerZero з прямою інтеграцією через StargateFacet для USDC/USDT в основних EVM-мережах.
Вибір маршруту та порівняння мостів
Li.Fi повертає кілька маршрутів з різними параметрами. Показувати користувачу:
| Маршрут | Час | Комісія | Отримаєте |
|---|---|---|---|
| Stargate | ~5 хв | $2.50 | 97.5 USDC |
| Hop Protocol | ~20 хв | $1.80 | 98.2 USDC |
| Across | ~3 хв | $3.10 | 96.9 USDC |
Сортування за замовчуванням — максимальний результат. Надати перемикач «швидше» / «дешевше».
Відстеження трансферу
Після відправки транзакції в мережі A користувач отримує txHash з вихідної мережі. Средства з'являться в мережі призначення після часу фіналізації, залежно від механізму моста.
Li.Fi надає API статусу: GET /v1/status?txHash={hash}&fromChain={chainId}&toChain={chainId}&bridge={bridgeName}. Статуси: PENDING → DONE / FAILED.
// Android — опитування статусу моста
suspend fun pollBridgeStatus(txHash: String, fromChain: Int, toChain: Int): BridgeStatus {
repeat(180) { // 30 хвилин * 10 сек
delay(10_000)
val status = lifiBridgeApi.getStatus(txHash, fromChain, toChain)
if (status.status == "DONE" || status.status == "FAILED") return status
}
return BridgeStatus(status = "TIMEOUT")
}
Фонове опитування через WorkManager (Android) або BackgroundTasks (iOS) забезпечує надсилання push-сповіщення користувачу при завершенні, навіть якщо програма закрита.
Обробка зависаючих трансферів
Деякі мости не мають автоматичного повернення при помилці. Li.Fi надає API recoverTx для деяких випадків. Потрібно зберігати всю історію bridge-транзакцій локально з можливістю повторної перевірки та посиланням на підтримку моста.
Часовий графік: Інтеграція через агрегатор (Li.Fi або Squid) з одним підтримуваним маршрутом — 1–2 тижні. Мультиагрегаторна система з вибором маршрутів, фоновим відстеженням та історією — 3–6 тижнів.







