Інтеграція Wormhole: крос-чейн передача токенів та даних

Ми інтегруємо **Wormhole** для крос-чейн передачі токенів та даних — від простого bridge UI до складних custom messaging протоколів. За плечима нашої команди 30+ проєктів на стику EVM та Solana. Типове завдання: перевести USDC з Ethereum в Arbitrum без зайвих комісій та затримок. Або відправити дові

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1003

Ми інтегруємо Wormhole для крос-чейн передачі токенів та даних — від простого bridge UI до складних custom messaging протоколів. За плечима нашої команди 30+ проєктів на стику EVM та Solana. Типове завдання: перевести USDC з Ethereum в Arbitrum без зайвих комісій та затримок. Або відправити довільний сигнал з Solana в BNB Chain для синхронізації стану. Wormhole вирішує це завдання, але потребує розуміння Guardian-мережі та VAA.

Як Wormhole забезпечує довіру між ланцюгами?

Wormhole використовує мережу з 19 Guardian валідаторів. Кожен Guardian спостерігає події на вихідному ланцюгу та підписує VAA (Verified Action Approval) — доказ того, що подія відбулася. Для прийняття VAA необхідно 13 з 19 підписів. Це компроміс між безпекою та швидкістю: компрометація 13 Guardian нод дає повний контроль над протоколом. Розуміння цього trade-off критичне при виборі методу інтеграції.

Архітектура протоколу

Source Chain Wormhole Guardians Target Chain │ │ │ │ publishMessage(payload) │ │ │ → Core Bridge Contract │ │ │ emits LogMessagePublished │ │ │ observe event │ │ sign VAA │ │ (19 guardians, │ │ 13-of-19 threshold) │ │ │ VAA signed │ │ │ ──────────────────────────► │ │ receiveMessage(VAA) │ verify Guardian sigs │ execute payload 

Швидкий старт з Wormhole Connect

Для додавання bridge UI в додаток використовуємо Wormhole Connect компонент. Не потрібно писати смарт-контракти:

npm install @wormhole-foundation/wormhole-connect 
import WormholeConnect from '@wormhole-foundation/wormhole-connect' export default function BridgePage() { return ( <WormholeConnect config={{ network: 'Mainnet', chains: ['Ethereum', 'Solana', 'Arbitrum', 'Base', 'BNB'], tokens: ['ETH', 'USDC', 'USDT', 'WBTC'], rpcs: { Ethereum: 'https://eth-mainnet.g.alchemy.com/v2/...', Solana: 'https://api.mainnet-beta.solana.com', }, ui: { title: 'Bridge', defaultInputs: { fromChain: 'Ethereum', toChain: 'Arbitrum', tokenKey: 'ETH', } } }} /> ) } 

Connect підтримує кілька протоколів маршрутизації: Token Bridge (lock-and-mint), CCTP (Circle's native USDC bridge, без wrapped токенів), портали ліквідності. Автоматично вибирає оптимальний маршрут.

Програмна інтеграція через Wormhole SDK

Для кастомних cross-chain workflows використовуємо TypeScript SDK (wormhole-sdk v3).

import { wormhole } from '@wormhole-foundation/sdk' import { EvmPlatform } from '@wormhole-foundation/sdk-evm' import { SolanaPlatform } from '@wormhole-foundation/sdk-solana' const wh = await wormhole('Mainnet', [EvmPlatform, SolanaPlatform]) // Отримуємо chain contexts const srcChain = wh.getChain('Ethereum') const dstChain = wh.getChain('Solana') // Token Bridge transfer const tb = await srcChain.getTokenBridge() const transferTxs = tb.transfer( senderAddress, { chain: 'Solana', address: recipientAddress }, 'native', // ETH 1_000_000_000_000_000_000n // 1 ETH в wei ) // Відправляємо транзакцію на Source chain for await (const tx of transferTxs) { await signer.sendTransaction(tx.transaction) } // Чекаємо VAA (зазвичай 15 хвилин для Ethereum finality) const [txid] = await srcChain.sendWait(transferTxs, signer) const vaa = await wh.getVaa(txid, 'TokenBridge:Transfer', 60_000) // Redeem на Target chain const redeemTxs = dstChain.getTokenBridge().redeem(recipientAddress, vaa) for await (const tx of redeemTxs) { await solanaSigner.sendTransaction(tx.transaction) } 

Чому CCTP швидший за Token Bridge?

CCTP (Circle's Cross-Chain Transfer Protocol) через Wormhole спалює USDC на вихідному ланцюгу та мінтить нативний USDC на цільовому, без wrapped токенів. Час переведення: ~2 хвилини проти 15–20 хвилин для Token Bridge. Підтримувані ланцюги: Ethereum, Arbitrum, Base, Optimism, Avalanche, Polygon. Для USDC transfers CCTP завжди кращий.

Custom messaging: крос-чейн додатки

Wormhole — не лише bridge для токенів, але й general-purpose messaging. Контракт-відправник публікує довільний payload, а контракт-отримувач верифікує VAA та виконує логіку.

// Source chain: відправка повідомлення interface IWormhole { function publishMessage( uint32 nonce, bytes memory payload, uint8 consistencyLevel ) external payable returns (uint64 sequence); } contract CrossChainApp { IWormhole wormhole; function sendMessage(bytes memory payload) external payable { uint64 sequence = wormhole.publishMessage{value: msg.value}(0, payload, 1); emit MessageSent(sequence); } } // Target chain: отримання VAA contract CrossChainReceiver { IWormhole wormhole; mapping(bytes32 => bool) processedVAAs; function receiveMessage(bytes memory encodedVAA) external { (IWormhole.VM memory vm, bool valid, string memory reason) = wormhole.parseAndVerifyVM(encodedVAA); require(valid, reason); require(!processedVAAs[vm.hash], "Already processed"); processedVAAs[vm.hash] = true; _processPayload(vm.payload); } } 

Wormhole Queries: крос-чейн дані без транзакцій

Wormhole Queries — on-demand читання on-chain даних з іншого ланцюга без відправки транзакцій. Guardian ноди роблять RPC запити та повертають підписану відповідь. Застосування: перевірити баланс/стейкінг користувача на Ethereum прямо з контракту на Solana. Без oracle, без bridge транзакції.

Інструменти розробки та моніторинг

Wormholescan (wormholescan.io) — explorer для VAA та транзакцій. Незамінний для налагодження: по txHash вихідного ланцюга знайти VAA, перевірити статус Guardian підписів. Testnet: Wormhole підтримує testnets всіх ланцюгів. Ethereum Sepolia → Solana Devnet — стандартний тестовий маршрут.

Компонент Інструмент
SDK @wormhole-foundation/sdk v3
UI компонент @wormhole-foundation/wormhole-connect
Explorer wormholescan.io
VAA моніторинг Wormhole Guardian API
Relayer Wormhole Standard Relayer / кастомний
Тести Foundry + wormhole-solidity-sdk

Що входить в роботу та процес

  1. Аналіз маршрутів: визначаємо, які ланцюги та токени потрібні, вибираємо Token Bridge / CCTP / custom messaging. (2-3 дні)
  2. Проектування архітектури: схема взаємодії контрактів, вибір relayer.
  3. Розробка смарт-контрактів: Solidity/Anchor контракти з обробкою VAA та захистом від повторного використання. (2-4 тижні)
  4. Інтеграція SDK/UI: підключення Wormhole Connect або кастомного frontend. (3-5 днів)
  5. Тестування на testnet: перевірка edge cases (VAA expiry, reorg, double-spend).
  6. Документація: опис конфігурації та інструкції для підтримки.
  7. Деплой та моніторинг: налаштування моніторингу Guardian підписів через Wormholescan.

Типові помилки при інтеграції

  • Неправильне налаштування consistencyLevel (використання instant замість finalized на Ethereum).
  • Відсутність захисту від повторного використання VAA (processedVAAs).
  • Не враховані затримки фіналізації (15 хвилин для Ethereum, 200 slots для Solana).

Порівняння методів передачі

Параметр Token Bridge CCTP Custom Messaging
Активи Будь-які токени Тільки USDC (нативно) Будь-які дані
Безпека Wrapped токени Нативний USDC Залежить від реалізації
Швидкість 15-20 хв ~2 хв Залежить від consistency
Гнучкість Тільки transfer Тільки USDC Будь-які payload

Наша команда — 5+ років на ринку, 30+ успішних крос-чейн інтеграцій. Отримайте консультацію по вашому проєкту: напишіть нам, ми оцінимо складність і запропонуємо архітектуру.