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







