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

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

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

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

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1374
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1256
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    965
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1208
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    667
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    954

Кросс-чейн взаимодействие — узкое место любой multi-chain архитектуры. Мы ежедневно сталкиваемся с кейсами, когда изоляция блокчейнов тормозит продукт: токены заперты в одной сети, пользователи не могут использовать DeFi на другой. История знает дорогие ошибки — взломы мостов Wormhole, Ronin, Nomad на суммы, исчисляемые миллиардами долларов. Расскажем, как правильно строить кросс-чейн мессенджинг на трёх топовых протоколах: LayerZero, Wormhole и Axelar. Кросс-чейн мессенджинг — это не просто пересылка данных, это архитектура доверия между изолированными средами.

Почему кросс-чейн мессенджинг — это сложно?

Проблема не в отправке данных — технически это тривиально. Сложность в доверии: как убедиться, что сообщение на destination chain валидно, а не подделано? Каждый протокол решает это по-своему. LayerZero использует configurable DVN, Wormhole — Guardian сеть из 19 нод, Axelar — валидаторы Cosmos. Выбор определяет не только скорость (от 15 секунд до 5 минут), но и безопасность.

LayerZero: Omnichain messaging

LayerZero v2 — наиболее популярный протокол для EVM-to-EVM и EVM-to-non-EVM, поддерживающий более 50 сетей. Архитектура разделяет верификацию и исполнение: DVN (Decentralized Verifier Networks) подтверждают сообщение, Executors выполняют его на destination chain. Это позволяет настраивать security threshold: например, требуется 2 из 3 (LayerZero Labs DVN + Google Cloud DVN + Polyhedra DVN).

Как устроен протокол

Сообщение в LayerZero проходит путь:

Source Chain: OApp.send() → EndpointV2.send() → emit PacketSent event
                                                          ↓
                                               DVNs мониторят событие
                                               DVNs верифицируют на destination
                                                          ↓
Destination Chain: EndpointV2 получает верификации → Executor вызывает lzReceive()

Написание 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,
        string calldata message,
        bytes calldata options
    ) external payable {
        bytes memory payload = abi.encode(message);
        bytes memory lzOptions = OptionsBuilder.newOptions()
            .addExecutorLzReceiveOption(200_000, 0);
        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 и зачем он нужен?

Стандарт OFT позволяет токену существовать на нескольких сетях без wrapped версий: на source chain токены сжигаются, на destination chain чеканятся. Общий supply остаётся константным. Никаких liquidity pool'ов, никакого lock-and-mint. Это снижает риски impermanent loss и сокращает количество шагов для пользователя.

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) {}
}

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

Wormhole v2 поддерживает 30+ сетей: Ethereum, Solana, Cosmos, Aptos, Sui. Архитектура — Guardian network из 19 нод (PoA), которые публикуют VAA (Verifiable Action Approval) — подписанное подтверждение события. Средняя стоимость газа для VAA на Ethereum — $0.5–$2, а latency составляет 15–60 секунд.

Core механика VAA

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

const coreBridge = new ethers.Contract(WORMHOLE_ETH_BRIDGE, BRIDGE_ABI, signer);
const tx = await coreBridge.publishMessage(0, payload, 1);
const receipt = await tx.wait();
const sequence = parseSequenceFromLogEth(receipt, WORMHOLE_ETH_BRIDGE);
const { vaaBytes } = await getSignedVAAWithRetry(
  ["https://wormhole-v2-mainnet-api.certus.one"],
  CHAIN_ID_ETH,
  emitterAddress,
  sequence,
  { retryTimeout: 1000, retryAttempts: 60 }
);
// vaaBytes содержит подписанный VAA для редима на destination chain

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 blockchain как routing layer. GMP (General Message Passing) для произвольных вызовов смарт-контрактов. Силён для Cosmos↔EVM briding через IBC.

import { AxelarExecutable } from "@axelar-network/axelar-gmp-sdk-solidity/contracts/executable/AxelarExecutable.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,
        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 logic
    }

    function _execute(
        string calldata sourceChain,
        string calldata sourceAddress,
        bytes calldata payload
    ) internal override {
        (address recipient, uint256 tokenId) = abi.decode(payload, (address, uint256));
        // _mintNFT logic
    }
}

Сравнение протоколов по безопасности

Протокол Модель доверия Риски
LayerZero DVN (configurable) Компрометация DVN
Wormhole Guardian (19 nodes) Сговор Guardians
Axelar Cosmos validators 1/3 slashing condition

Что входит в разработку кросс-чейн решения

  • Аналитика: выбор протокола, проектирование архитектуры, оценка gas costs.
  • Разработка: смарт-контракты (Solidity/Rust), off-chain relay services, frontend интеграция.
  • Тестирование: unit тесты, integration тесты на testnet, fuzzing с Echidna.
  • Аудит: внутренний код-ревью, привлечение внешних аудиторов (Zellic, OtterSec).
  • Деплой: настройка mainnet, конфигурация мониторинга (Tenderly, Etherscan API).
  • Документация: API reference, deploy guide, troubleshooting.

Как обеспечить безопасность кросс-чейн передачи?

Rate limiting — ограничьте объём средств: если протокол скомпрометирован, ущерб будет ограничен. Pause механизм с multisig (без timelock для экстренных случаев). Trusted path validation — проверяйте, что сообщение пришло именно с вашего контракта.

Как выбрать протокол для кросс-чейн мессенджинга?

LayerZero — если строите omnichain токен (OFT), omnichain NFT, или EVM-to-EVM data messaging с гибкой безопасностью.

Wormhole — если нужны Solana, Aptos или Sui, или максимально широкое покрытие сетей.

Axelar — если в архитектуре есть Cosmos chains, или нужен high-level GMP с абстракцией от сетей.

Мы интегрировали кросс-чейн компоненты в 15+ проектов — от NFT bridge до DeFi aggregator. Получите консультацию по архитектуре кросс-чейн решения — мы проанализируем ваши требования и предложим оптимальный протокол. Закажите разработку безопасного моста под ваш проект.

Разработка кросс-чейн мостов: архитектура, риски, реализация

Мы занимаемся разработкой кросс-чейн мостов и кросс-чейн решений под ключ. Знаем, как избежать катастроф. Несколько лет назад мост Binance BNB Chain потерял $570M — атакующий подделал Merkle proof в BSC's native bridge. В том же году Wormhole потерял $320M: верификация подписей guardians была обойдена через баг в Solana's secp256k1 program. Ronin Bridge — $625M. Это не случайности. Мосты — самая атакуемая инфраструктура в Web3, потому что они агрегируют ликвидность и имеют сложную межцепочечную логику верификации.

Почему мосты ломаются: три архитектурных класса уязвимостей

Проблема finality и reorg. Ethereum имеет probabilistic finality до Merge и economic finality после (2 эпохи, ~12 минут). Bitcoin — ~6 блоков (~60 минут). Solana — ~400ms. Если мост минтит wrapped tokens на целевой цепочке сразу после 1-2 блоков на исходной — reorg на 3+ блоков позволяет атакующему получить токены на целевой цепочке при откате транзакции на исходной. Правильная защита: ждать finality confirmation, специфичный для каждой цепочки. Для Ethereum — 64+ блоков (2 эпохи). Не один блок.

Верификация подписей. Большинство мостов используют multisig committee или threshold signature: N из M валидаторов должны подписать событие с исходной цепочки. Wormhole использовал 13 из 19 guardians. Атака была не на сами ключи — атакующий нашёл уязвимость в коде верификации подписей на Solana, где устаревший sysvar account принимался как валидный без проверки. On-chain верификация подписей — сложнее, чем кажется.

Lock-and-Mint vs Burn-and-Mint. В Lock-and-Mint модели оригинальные токены заблокированы в контракте на исходной цепочке, wrapped токены минтятся на целевой. Контракт на исходной цепочке — honeypot: там весь locked TVL. Один баг в unlock логике — и все средства доступны атакующему без необходимости что-либо делать на целевой цепочке. Native Burn-and-Mint (как у Circle CCTP для USDC) безопаснее: нет locked pool.

Как выбрать messaging layer под ваш проект?

LayerZero — протокол передачи произвольных сообщений между цепочками. Не мост сам по себе, а инфраструктура для построения мостов и omnichain приложений.

Архитектура: Endpoint контракт на каждой цепочке, Executor (доставляет сообщения на целевую цепочку), DVN (Decentralized Verifier Network — верифицирует факт транзакции на исходной цепочке).

Source chain:
  OApp.send() → Endpoint.send() → [emits packet event]

Destination chain:
  DVN verifies packet hash → Executor calls Endpoint.deliver() → OApp.lzReceive()

В v2 разработчик выбирает DVN: официальные (LayerZero Labs, Google Cloud, Polyhedra), или кастомные. Можно настроить required DVN + optional DVN: сообщение принимается только если все required DVN подтвердили. Это позволяет строить мосты с разным trade-off между безопасностью и скоростью.

OApp (Omnichain Application) — базовый контракт для интеграции. Наследуешь OApp, реализуешь _lzSend и _lzReceive. Для токен-мостов — OFT (Omnichain Fungible Token) стандарт из коробки делает burn-on-source / mint-on-destination.

Wormhole использует сеть из 19 guardians (крупные компании типа Jump Crypto, Everstake и т.д.), каждый из которых подписывает наблюдаемые события. Threshold — 13 из 19. VAA (Verified Action Approval) — подписанное сообщение, которое принимается на целевой цепочке.

Главное отличие от LayerZero: Wormhole имеет нативную поддержку не-EVM: Solana, Aptos, Sui, Algorand, Near. Для проектов, которым нужен мост между Ethereum и Solana — Wormhole часто единственный production-ready вариант.

После эксплойта Wormhole добавил Native Token Transfers (NTT) — архитектура без locked pool, аналогичная CCTP. NTT + Hub-and-Spoke модель: избыточная ликвидность не накапливается на одной цепочке.

Relay архитектура и light client верификация

Relay-based мосты (IBC в Cosmos ecosystem, Succinct's Telepathy) верифицируют состояние исходной цепочки через light client на целевой цепочке. Для EVM→EVM: контракт на Ethereum хранит и верифицирует BLS-подписи блоков исходной цепочки.

ZK-bridges — следующий уровень. Succinct, Polyhedra zkBridge, Electron Labs генерируют ZK-proof корректности консенсуса исходной цепочки. На целевой цепочке верифицируется proof, не подписи валидаторов. Убирает доверие к committee. Но верификация ZK-proof дорогая по газу — от 200k до 500k gas на Ethereum L1 в зависимости от системы доказательств. ZK-bridge безопаснее relay-based моста, но требует в 2-3 раза больше газа на верификацию.

Характеристика LayerZero Wormhole IBC (Cosmos) ZK-bridge
EVM поддержка Все EVM + Solana, Aptos Все EVM + Solana, Aptos, Sui Cosmos chains Растёт
Модель доверия DVN (выбирается) 13/19 guardians Light client ZK proof
Latency 1-5 мин 1-5 мин ~30 сек 5-30 мин
Gas на верификацию ~100-150k ~150-200k ~200-300k 200-500k

Что входит в разработку кросс-чейн моста

Мы реализуем проект под ключ и передаём полный набор результатов. Наши заказчики получают:

Этап Результат
Анализ и выбор архитектуры Техническое задание, обоснование выбора messaging layer
Проектирование смарт-контрактов Спецификация, диаграммы потоков, описание модели доверия
Разработка и тестирование Исходный код, unit/интеграционные тесты, симуляция cross-chain сценариев
Аудит безопасности Отчёт внешних аудиторов, исправленные уязвимости
Деплой и мониторинг Контракты в mainnet, дашборд с алертами, документация для эксплуатации
Поддержка после запуска 3 месяца гарантийной поддержки, помощь с эксплуатацией

Реализация: что нужно учесть до первой строки кода

Обязательные компоненты любого production моста:

Паузер. Emergency pause функция, вызываемая мультисигом или автоматически при обнаружении аномалии (подозрительный объём, нехарактерная последовательность вызовов). Большинство взломанных мостов не имели или не использовали паузер вовремя.

Rate limiting. Ограничение объёма вывода за временной интервал. Если атакующий дренирует мост — rate limit даёт время на реакцию. Реализация: transferVolume[currentEpoch] += amount; require(transferVolume[currentEpoch] <= epochLimit).

Finality checks. Специфичные для каждой цепочки. Не "подождать 1 блок", а использовать finality API или ждать нужного числа confirmations.

Relayer мониторинг. Автономный сервис, который следит за состоянием обеих сторон моста. Если сообщение отправлено но не доставлено за N минут — alert. Если locked balance расходится с totalSupply wrapped token — critical alert.

Сроки и стоимость

Простой ERC-20 мост поверх существующего messaging layer (LayerZero OFT или Wormhole NTT) — 4-8 недель включая тестирование и аудит. Кастомный мост с собственной верификацией, multi-chain поддержкой, rate limiting, мониторингом — 12-24 недели. ZK-bridge с кастомными proof circuits — от 6 месяцев.

Аудит моста занимает больше времени, чем аудит обычного DeFi протокола: нужно тестировать cross-chain сценарии, finality edge cases, атаки через reorg. Минимум 3-4 недели для production-grade решения.

Стоимость рассчитывается индивидуально после оценки объёма работ. Работаем с 2018 года, реализовали 15+ проектов в области блокчейн-инфраструктуры. Пишите — оценим ваш проект и предложим оптимальную архитектуру моста.