Розробка крос-чейн мессенджингу (LayerZero, Wormhole, Axelar)

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка крос-чейн мессенджингу (LayerZero, Wormhole, Axelar)
Складний
~1-2 тижні
Часті запитання

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

Етапи блокчейн-розробки

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

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

Розробка кросс-чейн мессенджингу (LayerZero, Wormhole, Axelar)

Interoperability — одна з невирішених проблем індустрії блокчейна. Ethereum не знає, що відбувається на Solana. Arbitrum ізольований від Cosmos. Кожен кросс-чейн міст — це окрема точка довіри, і історія показує, що це коштує дорого: Wormhole ($325M хак, 2022), Ronin ($625M, 2022), Nomad ($190M, 2022). Незважаючи на це, кросс-чейн мессенджинг — фундаментальна інфраструктура для будь-якого мультичейн продукту. Розберемо три основні протоколи та як правильно з ними працювати.

LayerZero: Omnichain мессенджинг

LayerZero v2 — найпопулярніший протокол для EVM-to-EVM та EVM-to-non-EVM мессенджингу. Архітектура заснована на розподілі відповідальності: DVN (Decentralized Verifier Networks) верифікують повідомлення, Executors виконують їх на цільовому чейні.

Як працює протокол

Повідомлення в LayerZero проходить шлях:

Source Chain: OApp.send() → EndpointV2.send() → emit PacketSent event
                                                          ↓
                                               DVNs моніторять подію
                                               DVNs верифікують на цільовому
                                                          ↓
Destination Chain: EndpointV2 отримує верифікацію → Executor викликає lzReceive()

DVN — верифікатори, які читають вихідний чейн та атестують коректність пакету на цільовому чейні. Можна налаштувати Required DVN + Optional DVN + threshold. Приклад: потрібно 2 з 3 (LayerZero Labs DVN + Google Cloud DVN + Polyhedra DVN).

Написання OApp (Omnichain Application)

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import { OApp, Origin, MessagingFee } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/OApp.sol";
import { OptionsBuilder } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/libs/OptionsBuilder.sol";

contract CrossChainMessenger is OApp {
    using OptionsBuilder for bytes;

    event MessageReceived(uint32 srcEid, bytes32 sender, string message);

    constructor(address _endpoint, address _owner)
        OApp(_endpoint, _owner) {}

    // Відправка повідомлення на іншу мережу
    function sendMessage(
        uint32 dstEid,         // destination endpoint ID (наприклад, 30101 = Ethereum)
        string calldata message,
        bytes calldata options  // ліміт газу для execution на цільовому
    ) external payable {
        bytes memory payload = abi.encode(message);

        // Опції: скільки газу виділити на цільовому чейні
        bytes memory lzOptions = OptionsBuilder.newOptions()
            .addExecutorLzReceiveOption(200_000, 0); // 200k газу, 0 msg.value

        MessagingFee memory fee = _quote(dstEid, payload, lzOptions, false);
        require(msg.value >= fee.nativeFee, "Insufficient fee");

        _lzSend(
            dstEid,
            payload,
            lzOptions,
            MessagingFee(msg.value, 0),
            payable(msg.sender)
        );
    }

    // Отримання повідомлення на цільовому чейні
    function _lzReceive(
        Origin calldata origin,
        bytes32 guid,
        bytes calldata payload,
        address executor,
        bytes calldata extraData
    ) internal override {
        string memory message = abi.decode(payload, (string));
        emit MessageReceived(origin.srcEid, origin.sender, message);
        // Ваша бізнес-логіка тут
    }

    // Оцінка вартості перед відправкою
    function quoteSend(
        uint32 dstEid,
        string calldata message
    ) external view returns (uint256 nativeFee) {
        bytes memory payload = abi.encode(message);
        bytes memory options = OptionsBuilder.newOptions()
            .addExecutorLzReceiveOption(200_000, 0);
        MessagingFee memory fee = _quote(dstEid, payload, options, false);
        return fee.nativeFee;
    }
}

OFT: Omnichain Fungible Token

Найпопулярніший use case LayerZero — кросс-чейн токен. OFT стандарт дозволяє токену нативно існувати на кількох мережах без wrapped версій:

import { OFT } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oft/OFT.sol";

contract MyOFTToken is OFT {
    constructor(
        string memory name,
        string memory symbol,
        address lzEndpoint,
        address owner
    ) OFT(name, symbol, lzEndpoint, owner) {}
}

На вихідному чейні токени спалюються, на цільовому чейні випускаються. Загальна пропозиція залишається постійною. Немає wrapped токенів, немає пулів ліквідності для bridging.

Wormhole: універсальний мессенджинг

Wormhole v2 підтримує 30+ мереж включаючи Ethereum, Solana, Cosmos chains, Aptos, Sui — ширше покриття, ніж LayerZero. Архітектура: Guardian мережа з 19 нод (PoA) публікує VAA (Verifiable Action Approval) — підписане підтвердження події на вихідному чейні.

Основна механіка VAA

import {
  getSignedVAAWithRetry,
  parseSequenceFromLogEth,
  CHAIN_ID_ETH,
  CHAIN_ID_SOLANA,
} from "@certusone/wormhole-sdk";
import { ethers } from "ethers";

// 1. Публікуємо повідомлення на ETH стороні
const coreBridge = new ethers.Contract(WORMHOLE_ETH_BRIDGE, BRIDGE_ABI, signer);
const tx = await coreBridge.publishMessage(
  0,              // nonce
  payload,        // bytes дані
  1               // consistency level (вимога фіналізації)
);

// 2. Отримуємо sequence з receipt
const receipt = await tx.wait();
const sequence = parseSequenceFromLogEth(receipt, WORMHOLE_ETH_BRIDGE);

// 3. Чекаємо VAA від Guardians (зазвичай 15-60 секунд)
const { vaaBytes } = await getSignedVAAWithRetry(
  ["https://wormhole-v2-mainnet-api.certus.one"],
  CHAIN_ID_ETH,
  emitterAddress,
  sequence,
  { retryTimeout: 1000, retryAttempts: 60 }
);

// 4. Redeem на цільовому чейні (наприклад, Solana)
// vaaBytes містить підписаний VAA, передайте програмі
// на Solana для верифікації та виконання

Wormhole vs LayerZero: вибір

Критерій LayerZero v2 Wormhole v2
Підтримувані мережі ~50 (EVM-focused) 30+ (включаючи non-EVM)
Модель безпеки Configurable DVN Guardian PoA (19 нод)
Стандарт токена OFT (без ліквідності) NTT / xERC20
Solana підтримка Так Так (нативно)
Developer tooling Відмінний Хороший
Latency ~2–5 хв (EVM→EVM) ~15–60 сек

Для EVM-to-EVM — LayerZero v2. Якщо в проекті Solana, Aptos або Cosmos — дивіться на Wormhole.

Axelar: General Message Passing

Axelar — Cosmos-based блокчейн, який виступає як routing layer між мережами. GMP (General Message Passing) — протокол для довільних викликів смарт-контрактів на цільовому чейні.

import { AxelarExecutable } from "@axelar-network/axelar-gmp-sdk-solidity/contracts/executable/AxelarExecutable.sol";
import { IAxelarGateway } from "@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGateway.sol";
import { IAxelarGasService } from "@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGasService.sol";

contract CrossChainNFTBridge is AxelarExecutable {
    IAxelarGasService immutable gasService;

    constructor(address gateway, address _gasService)
        AxelarExecutable(gateway) {
        gasService = IAxelarGasService(_gasService);
    }

    function bridgeNFT(
        string calldata destChain,      // "Polygon", "Avalanche", тощо
        string calldata destContract,   // адреса контракту на цільовому
        uint256 tokenId
    ) external payable {
        bytes memory payload = abi.encode(msg.sender, tokenId);

        // Оплата газу для виконання на цільовому чейні
        gasService.payNativeGasForContractCall{value: msg.value}(
            address(this), destChain, destContract, payload, msg.sender
        );

        gateway.callContract(destChain, destContract, payload);
        _burnNFT(msg.sender, tokenId);
    }

    // Викликається Axelar relayer на цільовому чейні
    function _execute(
        string calldata sourceChain,
        string calldata sourceAddress,
        bytes calldata payload
    ) internal override {
        (address recipient, uint256 tokenId) = abi.decode(payload, (address, uint256));
        _mintNFT(recipient, tokenId);
    }
}

Axelar особливо сильний для Cosmos↔EVM bridging — нативна IBC підтримка дозволяє маршрутизувати через всю Cosmos екосистему.

Безпека кросс-чейн протоколів

Кросс-чейн мессенджинг — висько-ризикова область. Кілька обов'язкових практик:

Rate limiting — обмежте обсяг коштів, які можна перевести за період. Якщо протокол скомпрометований, це обмежує потенційну шкоду.

mapping(uint256 => uint256) public dailyVolume; // день → обсяг

function _checkRateLimit(uint256 amount) internal {
    uint256 today = block.timestamp / 1 days;
    dailyVolume[today] += amount;
    require(dailyVolume[today] <= DAILY_LIMIT, "Daily limit exceeded");
}

Pause механізм — emergency pause на обох сторонах мосту. Контролюється multisig з коротким timelock (або без нього — для надзвичайних ситуацій).

Trusted path validation — на цільовому чейні перевірте, що повідомлення прийшло саме з вашого контракту на вихідному чейні, а не від довільного дзвінка.

Уникайте зберігання великих сум в bridge контрактах — модель liquidity pool (lock-and-mint) створює величезний honeypot. Mint-and-burn (як у OFT) безпечніше.

Коли вибрати який протокол

LayerZero — будуєте omnichain токен (OFT), omnichain NFT, або EVM-to-EVM data messaging з гнучкою конфігурацією безпеки.

Wormhole — потрібен Solana, Aptos, Sui, або максимальне покриття мереж.

Axelar — архітектура має Cosmos chains, або потрібен high-level GMP абстрагований від конкретних мереж.

Для production систем з реальними коштами: аудит кросс-чейн логіки обов'язковий, команда з досвідом bridge безпеки (Zellic, OtterSec, Trail of Bits).