Интеграция с Hyperlane
Hyperlane — permissionless interoperability protocol. Ключевое отличие от Axelar и LayerZero: любой может деплоить Hyperlane на любой chain без разрешения протокола. Это делает его подходящим для новых L2/L3, appchains и кастомных сред, где другие протоколы ещё не присутствуют.
Архитектура
Hyperlane состоит из:
- Mailbox — смарт-контракт на каждой цепи, через который отправляются и получаются сообщения
- Interchain Security Module (ISM) — кастомизируемая верификация сообщений. Можно использовать multisig validators, optimistic security, ZK proofs
- Relayers — off-chain агенты, которые передают сообщения между цепями
- Validators — подписывают checkpoint'ы состояния Mailbox
ISM — кастомная безопасность
Уникальность Hyperlane: каждый контракт-получатель определяет свой ISM. Вы сами решаете как верифицировать входящие сообщения.
Варианты ISM:
- Multisig ISM — M-of-N подписей от валидаторов (по умолчанию)
- Aggregation ISM — комбинация нескольких ISM (AND/OR логика)
- Routing ISM — разные ISM для разных source chains
- Optimistic ISM — оптимистичная верификация с периодом fraud proof
- ZK ISM — верификация через zero-knowledge proofs (в разработке)
Отправка сообщений
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {IMailbox} from "@hyperlane-xyz/core/contracts/interfaces/IMailbox.sol";
contract HyperlaneMessageSender {
IMailbox public mailbox;
constructor(address _mailbox) {
mailbox = IMailbox(_mailbox);
}
function sendMessage(
uint32 destinationDomain, // domain ID целевой цепи
bytes32 recipientAddress, // bytes32 адрес контракта-получателя
bytes calldata messageBody
) external payable {
// Рассчитываем стоимость газа для доставки
uint256 fee = mailbox.quoteDispatch(destinationDomain, recipientAddress, messageBody);
require(msg.value >= fee, "Insufficient gas payment");
bytes32 messageId = mailbox.dispatch{value: fee}(
destinationDomain,
recipientAddress,
messageBody
);
emit MessageSent(messageId, destinationDomain);
}
}
Получение сообщений
import {IMessageRecipient} from "@hyperlane-xyz/core/contracts/interfaces/IMessageRecipient.sol";
contract HyperlaneMessageReceiver is IMessageRecipient {
// Маппинг разрешённых отправителей
mapping(uint32 => bytes32) public enrolledSenders;
function handle(
uint32 origin, // domain ID исходной цепи
bytes32 sender, // адрес отправителя (bytes32)
bytes calldata message // тело сообщения
) external payable override {
// Проверяем что вызов от Mailbox
require(msg.sender == address(mailbox), "Only mailbox");
// Проверяем что отправитель доверенный
require(enrolledSenders[origin] == sender, "Unknown sender");
// Обрабатываем сообщение
(address recipient, uint256 amount) = abi.decode(message, (address, uint256));
_processMessage(origin, recipient, amount);
}
}
Domain IDs
Hyperlane использует собственные domain IDs (отличаются от chainId для некоторых цепей):
| Chain | Domain ID |
|---|---|
| Ethereum | 1 |
| Polygon | 137 |
| Arbitrum | 42161 |
| Optimism | 10 |
| Base | 8453 |
| BSC | 56 |
Кастомный ISM с multisig
import {IInterchainSecurityModule} from "@hyperlane-xyz/core/contracts/interfaces/IInterchainSecurityModule.sol";
import {IMultisigIsm} from "@hyperlane-xyz/core/contracts/interfaces/isms/IMultisigIsm.sol";
contract MyCustomISM is IInterchainSecurityModule {
address[] public validators;
uint8 public threshold;
function moduleType() external pure override returns (uint8) {
return uint8(Types.LEGACY_MULTISIG);
}
function verify(
bytes calldata metadata,
bytes calldata message
) external override returns (bool) {
// Кастомная верификация логика
// Например: проверяем что минимум threshold из validators подписали checkpoint
return _verifyMultisig(metadata, message);
}
}
Деплой на новую цепь
Основное преимущество Hyperlane — permissionless deployment. Для деплоя на AppChain:
# Установка Hyperlane CLI
npm install -g @hyperlane-xyz/cli
# Деплой Mailbox и ISM на новую цепь
hyperlane deploy core \
--chains myappchain \
--key 0xYourPrivateKey
# Регистрация валидаторов
hyperlane deploy ism multisig \
--chains myappchain \
--validators 0xValidator1,0xValidator2,0xValidator3 \
--threshold 2
Интеграция с Hyperlane — 2-3 недели для базового GMP. Особенно ценен для: кастомных L2/L3 (Orbit chains, OP Stack chains), где нужна быстрая интеграция без ожидания поддержки от других протоколов; приложений, требующих кастомного ISM (специфическая security модель).







