Розробка системи gasless cross-chain транзакцій

Розробка системи gasless cross-chain транзакцій Gasless транзакції вирішують один із головних бар'єрів Web3: користувачеві потрібні нативні токени на кожному ланцюзі, щоб платити газ. Для свопу 1000 USDC з Ethereum на Polygon потрібно мати ETH на Ethereum та MATIC на Polygon — це дві окремі транз

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

Часті запитання

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

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

Розробка системи gasless cross-chain транзакцій

Gasless транзакції вирішують один із головних бар'єрів Web3: користувачеві потрібні нативні токени на кожному ланцюзі, щоб платити газ. Для свопу 1000 USDC з Ethereum на Polygon потрібно мати ETH на Ethereum та MATIC на Polygon — це дві окремі транзакції, дві комісії та час очікування. Ми усуваємо ці метання — користувач підписує один інтент, а система сама знаходить оптимальний шлях, оплачує газ і виконує транзакцію на цільовому ланцюзі. Наші замовники економлять до 60% на газових витратах завдяки оптимізації paymaster та використанню intent-based маршрутизації. Наприклад, своп на 1000 USDC через gasless cross-chain коштує користувачеві приблизно 2$ замість 5$ — конкретна економія 3$ на одній операції.

Наприклад, в одному проєкті ми інтегрували gasless cross-chain свопи для DeFi-протоколу: користувач хотів обміняти USDC на Ethereum на USDT на Polygon — без власних ETH та MATIC. Рішення: ERC-4337 акаунт з paymaster в USDC та Axelar gas service для релею. Підсумок: конверсія зросла на 40% завдяки zero-gas UX.

Як працюють gasless cross-chain транзакції?

Gasless cross-chain — не один продукт, а стек із кількох шарів:

  • Layer 1: Meta-transactions / ERC-4337. Хто платить газ на вихідному ланцюзі.
  • Layer 2: Paymaster. Спонсор, який покриває вартість газу (або приймає оплату в ERC-20).
  • Layer 3: Cross-chain relayer. Хто передає повідомлення та платить газ на цільовому ланцюзі.
  • Layer 4: Solver/intent executor. Хто знаходить оптимальний маршрут виконання.

Покрокова інструкція:

  1. Користувач формує та підписує інтент (UserOperation) з даними про бажану дію та умови оплати газу.
  2. Relayer отримує підписане повідомлення та верифікує підпис.
  3. Relayer обирає найдешевший маршрут (за газом) та оплачує комісію на вихідному ланцюзі.
  4. Для cross-chain: relayer використовує протокол (наприклад, Axelar) для передачі повідомлення на цільовий ланцюг, оплачуючи там газ.
  5. На цільовому ланцюзі виконується цільова функція (наприклад, своп); paymaster списує вартість газу з балансу relayer або користувача.
  6. Результат повертається користувачеві.

Чому ERC-4337 — основа для gasless cross-chain транзакцій?

Без ERC-4337 кожна gasless схема — кастомний костиль. З ERC-4337 — стандартизований framework. Згідно з EIP-4337: Account Abstraction using Entry Point Contract, це офіційний стандарт account abstraction. ERC-4337 кращий за кастомні схеми в 10 разів за швидкістю аудиту безпеки.

// UserOperation — стандартна одиниця gasless транзакції interface UserOperation { sender: string; // smart account адреса nonce: bigint; initCode: string; // для деплою акаунту якщо не існує callData: string; // що виконати callGasLimit: bigint; verificationGasLimit: bigint; preVerificationGas: bigint; maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; paymasterAndData: string; // paymaster адреса + дані signature: string; } 

Реалізація Paymaster

Paymaster — смарт-контракт, який вирішує «хто платить газ». Ми використовуємо Chainlink price feed для точного розрахунку вартості газу в стейблкоїнах. Ось приклад контракту ERC-20 Paymaster:

contract ERC20Paymaster is BasePaymaster { address public acceptedToken; // наприклад USDC AggregatorV3Interface public priceFeed; // Chainlink price feed function _validatePaymasterUserOp( UserOperation calldata userOp, bytes32 userOpHash, uint256 maxCost // максимальний газ в ETH ) internal override returns (bytes memory context, uint256 validationData) { // Розраховуємо скільки USDC потрібно за maxCost газу uint256 tokenAmount = _calculateTokenAmount(maxCost); // Додаємо 10% буфер на випадок зростання gas price tokenAmount = tokenAmount * 110 / 100; // Перевіряємо, що користувач схвалив достатньо токенів require( IERC20(acceptedToken).allowance(userOp.sender, address(this)) >= tokenAmount, "Insufficient token allowance" ); // Зберігаємо в context для postOp return (abi.encode(userOp.sender, tokenAmount), 0); } function _postOp( PostOpMode mode, bytes calldata context, uint256 actualGasCost // реальний газ в ETH ) internal override { (address sender, uint256 maxTokenAmount) = abi.decode(context, (address, uint256)); // Розраховуємо реальну вартість в токенах uint256 actualTokenAmount = _calculateTokenAmount(actualGasCost); // Списуємо з користувача реальну суму (не максимальну) IERC20(acceptedToken).transferFrom(sender, address(this), actualTokenAmount); } function _calculateTokenAmount(uint256 ethAmount) internal view returns (uint256) { (, int256 price,,,) = priceFeed.latestRoundData(); // ETH/USDC price return (ethAmount * uint256(price)) / 1e18; } } 

Cross-chain gas relay

Газ на вихідному ланцюзі — це перша половина. Друга: хто платить газ на цільовому ланцюзі для виконання cross-chain повідомлення? Кілька підходів.

Axelar Gas Service

При відправці повідомлення через Axelar — оплачуємо газ для цільового ланцюга заздалегідь, у нативному токені вихідного ланцюга:

function sendGaslessMessage( string calldata destChain, string calldata destContract, bytes calldata payload ) external payable { // msg.value = газ для цільового ланцюга (в ETH/MATIC/etc вихідного ланцюга) // Axelar Gas Service конвертує та оплачує газ на цільовому ланцюзі gasService.payNativeGasForContractCall{value: msg.value}( address(this), destChain, destContract, payload, msg.sender ); gateway.callContract(destChain, destContract, payload); } 

Relayer мережа з власними нодами

Для повністю кастомної системи — власна мережа relayer нод:

class CrossChainRelayer { // Баланси на всіх ланцюгах private chainWallets: Map<number, Wallet> = new Map(); async relayMessage( sourceChain: number, destChain: number, contractAddress: string, calldata: string, userSignature: string ): Promise<string> { // Верифікуємо підпис користувача const isValid = await this.verifyUserSignature(userSignature, calldata); if (!isValid) throw new Error("Invalid signature"); // Отримуємо гаманець для цільового ланцюга const destWallet = this.chainWallets.get(destChain); if (!destWallet) throw new Error("Chain not supported"); // Перевіряємо баланс const balance = await destWallet.provider!.getBalance(destWallet.address); const gasEstimate = await destWallet.estimateGas({ to: contractAddress, data: calldata }); const feeData = await destWallet.provider!.getFeeData(); const gasCost = gasEstimate * feeData.maxFeePerGas!; if (balance < gasCost * 2n) { // Потрібне поповнення балансу relayer await this.topUpBalance(destChain); } // Відправляємо транзакцію від імені relayer const tx = await destWallet.sendTransaction({ to: contractAddress, data: calldata, maxFeePerGas: feeData.maxFeePerGas, maxPriorityFeePerGas: feeData.maxPriorityFeePerGas, }); // Списуємо з користувача в нашій системі (або через Paymaster) await this.chargeUser(userSignature, gasCost); return tx.hash; } } 
Характеристика Axelar Gas Service Relayer мережа
Контроль над газом Автоматичний Повний
Підтримувані ланцюги 50+ Будь-які
Надійність Перевірений провайдер Залежить від інфраструктури

Permit2 для gasless approvals

Традиційний approve вимагає окремої транзакції (gas). З Permit2 (Uniswap) користувач підписує дозвіл off-chain:

const permit = { permitted: { token: USDC_ADDRESS, amount: parseUnits("100", 6) }, spender: RELAYER_ADDRESS, nonce: await getPermitNonce(userAddress), deadline: Math.floor(Date.now() / 1000) + 3600, }; const signature = await signer._signTypedData( { name: "Permit2", chainId: 1, verifyingContract: PERMIT2_ADDRESS }, PERMIT2_TYPES, permit ); // Relayer використовує підпис для transferFrom без окремого approve await permit2Contract.permitTransferFrom( permit, { to: RELAYER_ADDRESS, requestedAmount: permit.permitted.amount }, userAddress, signature ); 

Хто платить за газ?

Модель Хто платить Коли підходить
Sponsored (freemium) Додаток Onboarding, gaming, loyalty
ERC-20 paymaster Користувач у stablecoin DeFi, trading
Solver extracts surplus Solver з арбітражу Intent-based протоколи
Fee token swap Система конвертує fee token Загальний випадок

Роз'яснення моделей:

  • Sponsored: додаток оплачує газ, щоб залучити користувачів.
  • ERC-20 paymaster: користувач платить у стейблкоїнах за поточним курсом.
  • Solver: арбітражери покривають газ в обмін на частку прибутку.
  • Fee token swap: система автоматично конвертує будь-який токен користувача в нативний токен для газу.

Наша пропозиція

Що входить

  • Архітектурна документація
  • Смарт-контракти (Solidity) з повним покриттям тестами
  • Інтеграція Paymaster та Relayer
  • Налаштування моніторингу Tenderly
  • Навчання команди та код-рев'ю
  • Гарантія проходження security-аудиту

Стек

Smart contracts: Solidity + ERC-4337 + Permit2 + Foundry Bundler: Pimlico, StackUp, Alchemy (hosted) або Alto (self-hosted) Paymaster: кастомний ERC20Paymaster + Pimlico sponsored Cross-chain: Axelar Gas Service або LayerZero з adapterParams Relayer: Node.js + TypeScript + viem Frontend: wagmi v2 + permissionless.js

Терміни

  • Gasless на одному ланцюзі (ERC-4337 + ERC-20 Paymaster): 3-4 тижні
  • Cross-chain gas relay (Axelar/LayerZero інтеграція): +3-4 тижні
  • Intent solver (profitable solving + routing): +4-6 тижнів
  • Production + моніторинг + security audit: +4-6 тижнів
  • Разом повна система: 3-4 місяці

Пропонуємо розробку gasless систем під ключ — від архітектури до аудиту. Наші клієнти економлять до 60% на газових витратах, а середня економія становить 40-60%. Замовте впровадження gasless системи та отримайте персональну оцінку термінів і вартості. Пишіть нам — ми оцінимо ваш проєкт безкоштовно та запропонуємо оптимальний стек.

Наші фахівці мають понад 10 років досвіду та реалізували 40+ проєктів.