Интеграция с Axelar
Axelar — decentralized cross-chain communication network. В отличие от мостов с multisig валидаторами (Multichain, Ronin), Axelar использует proof-of-stake сеть с ~75 валидаторами и threshold signatures. Компрометация требует контроля 2/3 валидаторов по стейку — значительно выше порог атаки, чем у 5-of-9 multisig.
Что умеет Axelar
GMP (General Message Passing) — передача произвольных сообщений между цепями. Не только токены: можно вызвать функцию смарт-контракта в другой цепи с произвольными данными.
Canonical token bridging — стандартизированный перевод токенов. USDC через Axelar — это Circle's native USDC (через Circle CCTP) или Axelar Wrapped USDC (axlUSDC), в зависимости от настройки.
Squid — DEX агрегатор поверх Axelar, позволяет делать cross-chain swaps в одну транзакцию (swap на исходной цепи + bridge + swap на целевой).
GMP интеграция
Контракт на исходной цепи
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
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 SourceContract {
IAxelarGateway public gateway;
IAxelarGasService public gasService;
constructor(address _gateway, address _gasService) {
gateway = IAxelarGateway(_gateway);
gasService = IAxelarGasService(_gasService);
}
function sendCrossChainMessage(
string calldata destinationChain, // "Polygon", "avalanche", "binance"
string calldata destinationAddress, // адрес контракта-получателя
bytes calldata payload
) external payable {
// Оплачиваем газ для исполнения на целевой цепи
gasService.payNativeGasForContractCall{value: msg.value}(
address(this),
destinationChain,
destinationAddress,
payload,
msg.sender
);
// Отправляем сообщение
gateway.callContract(destinationChain, destinationAddress, payload);
}
}
Контракт на целевой цепи
contract DestinationContract is AxelarExecutable {
event MessageReceived(string sourceChain, string sourceAddress, bytes payload);
constructor(address gateway) AxelarExecutable(gateway) {}
// Вызывается Axelar когда сообщение доставлено
function _execute(
string calldata sourceChain,
string calldata sourceAddress,
bytes calldata payload
) internal override {
// Декодируем payload
(address recipient, uint256 amount) = abi.decode(payload, (address, uint256));
// Выполняем бизнес-логику
_processMessage(sourceChain, sourceAddress, recipient, amount);
emit MessageReceived(sourceChain, sourceAddress, payload);
}
}
Оплата газа на целевой цепи
Ключевая деталь Axelar GMP — Gas Service. Пользователь оплачивает газ для обеих цепей в одной транзакции (на исходной цепи). Axelar Gas Service конвертирует нативный токен и оплачивает реле на целевой цепи.
Расчёт нужного газа через AxelarGMPRecoveryAPI:
import { AxelarQueryAPI, Environment, GasToken } from "@axelar-network/axelarjs-sdk";
const api = new AxelarQueryAPI({ environment: Environment.MAINNET });
const gasEstimate = await api.estimateGasFee(
"Ethereum", // source chain
"Polygon", // destination chain
GasToken.ETH,
300_000, // gas limit на destination
1.1 // 10% buffer
);
// gasEstimate — сумма в wei для передачи в payNativeGasForContractCall
Token Transfer с GMP
Для transfer токена + вызов функции на целевой цепи — callContractWithToken:
function sendTokenAndCall(
string calldata destinationChain,
string calldata destinationAddress,
bytes calldata payload,
string calldata symbol, // "USDC", "WETH"
uint256 amount
) external payable {
IERC20(gateway.tokenAddresses(symbol)).transferFrom(msg.sender, address(this), amount);
IERC20(gateway.tokenAddresses(symbol)).approve(address(gateway), amount);
gasService.payNativeGasForContractCallWithToken{value: msg.value}(
address(this), destinationChain, destinationAddress, payload, symbol, amount, msg.sender
);
gateway.callContractWithToken(destinationChain, destinationAddress, payload, symbol, amount);
}
Поддерживаемые цепи
Axelar поддерживает 50+ цепей: Ethereum, Polygon, Avalanche, BNB Chain, Fantom, Arbitrum, Optimism, Base, Linea, Scroll, Near, Cosmos экосистема (через IBC).
Cosmos интеграция — уникальное преимущество Axelar: единственный из major cross-chain протоколов с реальной EVM ↔ Cosmos связью.
Squid интеграция для cross-chain swaps
import { Squid } from "@0xsquid/sdk";
const squid = new Squid({ baseUrl: "https://apiplus.squidrouter.com" });
await squid.init();
const { route } = await squid.getRoute({
fromAddress: userAddress,
fromChain: "1", // Ethereum
fromToken: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", // ETH
fromAmount: "1000000000000000000", // 1 ETH
toChain: "137", // Polygon
toToken: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", // USDC
toAddress: recipientAddress,
slippage: 1.0, // 1%
enableBoost: true,
});
// Выполнение свапа
const tx = await signer.sendTransaction(route.transactionRequest);
Интеграция с Axelar GMP — 2-4 недели. Включает: деплой контрактов на нескольких цепях, настройку газ-оплаты, мониторинг статуса транзакций через AxelarScan API, тестирование на testnet (Axelar testnet поддерживает все major EVM testnets).







