Разработка системы chain abstraction

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Разработка системы chain abstraction
Сложная
от 2 недель до 3 месяцев
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1056
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Разработка системы chain abstraction

Мультичейн реальность DeFi создала UX кошмар: у пользователя ETH на Ethereum, он хочет заплатить на Base, а приложение развёрнуто на Arbitrum. Нужно три шага: bridge ETH на Base, свапнуть на нужный токен, потом снова bridge на Arbitrum. Каждый шаг — отдельное ожидание, отдельные gas fees, отдельный risk.

Chain abstraction — архитектурный подход, при котором приложение и пользователь перестают думать о том, на какой цепи что происходит. Пользователь видит единый баланс, подписывает одну операцию, система сама разбирается с routing, bridging и execution. Near Protocol Foundation продвигает этот термин, но реализации появляются повсюду: NEAR Chain Signatures, Socket Protocol, Particle Network, Agoric Orchestration.

Компоненты системы chain abstraction

1. Unified Account Layer

Пользователь имеет один идентификатор (адрес или DID), который работает на всех цепях. Варианты реализации:

ERC-4337 Smart Account + cross-chain ownership. Smart account на каждой цепи имеет одинаковый адрес (через CREATE2 с одинаковым salt + factory) и одного owner. Ключ на Ethereum = ключ на Arbitrum = ключ на Base.

NEAR Chain Signatures (MPC). NEAR аккаунт может подписывать транзакции для любой внешней цепи — Bitcoin, Ethereum, Cosmos. MPC ноды NEAR сети генерируют подпись для целевой цепи. Пользователь авторизует через NEAR, платит gas в NEAR токенах.

Particle Network Omnichain Account. Объединяет AA и MPC: один master account, кастодированный через MPC, deployable на любую EVM цепь через universal AA.

2. Intent Layer

Вместо явных транзакций пользователь выражает намерение:

interface CrossChainIntent {
    from: {
        chain: 'ethereum'
        asset: 'ETH'
        amount: '1.5'
    }
    to: {
        chain: 'arbitrum'
        asset: 'USDC'
        minAmount: '5000'
    }
    deadline: number
    recipient: string
    // Пользователю не важно как — важен результат
}

Intent routing engine анализирует доступные пути и выбирает оптимальный: через bridge + swap, через агрегатор ликвидности с встроенным bridging (Li.Fi, Socket, Squid), через solver сеть (UniswapX-style cross-chain).

3. Solver / Filler Network

Solvers конкурируют за исполнение cross-chain intent. Solver берёт на себя complexity: он имеет ликвидность на нескольких цепях, может исполнить намерение пользователя немедленно (из собственных средств), затем самостоятельно реконсилирует через bridge.

Это ключевое преимущество: пользователь получает токены на целевой цепи за секунды, не ждёт 15 минут финализации Ethereum. Solver берёт на себя bridge latency risk.

// Упрощённый cross-chain fill механизм
contract CrossChainSettlement {
    struct Fill {
        bytes32 intentHash;    // хэш исходного намерения
        address solver;
        address recipient;
        address outputToken;
        uint256 outputAmount;
        uint32  sourceChain;
        uint256 fillTimestamp;
    }

    mapping(bytes32 => Fill) public fills;

    // Solver исполняет на target chain
    function fill(
        bytes32 intentHash,
        address recipient,
        address outputToken,
        uint256 outputAmount,
        uint32 sourceChain
    ) external {
        IERC20(outputToken).safeTransferFrom(msg.sender, recipient, outputAmount);

        fills[intentHash] = Fill({
            intentHash: intentHash,
            solver: msg.sender,
            recipient: recipient,
            outputToken: outputToken,
            outputAmount: outputAmount,
            sourceChain: sourceChain,
            fillTimestamp: block.timestamp
        });

        emit IntentFilled(intentHash, msg.sender, outputAmount);
    }

    // Solver доказывает fill на source chain и получает возмещение
    function claimReimbursement(bytes32 intentHash, bytes calldata proof) external {
        Fill storage f = fills[intentHash];
        require(f.solver == msg.sender, "Not solver");
        // Верификация proof (cross-chain message от source settlement)
        _verifyAndReimburse(intentHash, proof);
    }
}

4. Cross-chain Message Passing для proof

Чтобы solver получил возмещение на исходной цепи, нужно доказать, что fill произошёл на целевой цепи. Это требует cross-chain messaging: Wormhole, LayerZero, Hyperlane или optimistic fraud proof (через bridge's canonical messaging).

Optimistic approach (Across Protocol): solver получает возмещение оптимистически через 2-4 часа, если никто не оспорил fill. Быстро и дёшево для solver-а.

Cryptographic proof (через ZK или MSG): дороже по gas, но instant finality для solver-а. Применяется в решениях с ZK light clients.

Конкретные протоколы и SDK

Socket Protocol / Bungee

Socket — meta-routing protocol, агрегирует 10+ bridge и DEX протоколов. SDK для frontend:

import { SocketQuote, getQuote, executeRoute } from '@socket.tech/socket-v2-sdk'

const quote = await getQuote({
    fromChainId: 1,              // Ethereum
    fromTokenAddress: ETH_ADDRESS,
    toChainId: 42161,            // Arbitrum
    toTokenAddress: USDC_ADDRESS,
    fromAmount: '1500000000000000000', // 1.5 ETH
    userAddress: userAddress,
    bridgeWithGas: false,
    singleTxOnly: true           // предпочесть single-tx маршруты
})

const route = quote.result.routes[0] // лучший маршрут
const txData = await getRouteTransactionData(route)

// Пользователь подписывает одну транзакцию
await signer.sendTransaction(txData)

Li.Fi SDK

Li.Fi аналогично агрегирует bridges и DEX, но имеет более зрелый SDK и поддержку ERC-4337:

import { LiFi, ChainId, CoinKey } from '@lifi/sdk'

const lifi = new LiFi({ integrator: 'your-app-name' })

const quote = await lifi.getQuote({
    fromChain: ChainId.ETH,
    fromToken: CoinKey.ETH,
    toChain: ChainId.ARB,
    toToken: CoinKey.USDC,
    fromAmount: '1500000000000000000',
    fromAddress: userAddress,
})

// Исполнение с callbacks на каждый шаг
await lifi.executeRoute(signer, quote.route, {
    updateRouteHook: (updatedRoute) => {
        console.log('Step status:', updatedRoute.steps[0].execution?.status)
    }
})

Hyperlane: permissionless cross-chain messaging

Если нужно строить кастомный cross-chain протокол с собственным messaging — Hyperlane позволяет деплоить свою messaging infrastructure на любую EVM цепь. В отличие от Wormhole/LayerZero, можно настроить собственный Interchain Security Module (ISM).

// Hyperlane: отправка сообщения
interface IMailbox {
    function dispatch(
        uint32 destinationDomain,
        bytes32 recipientAddress,
        bytes calldata messageBody
    ) external payable returns (bytes32 messageId);
}

contract ChainAbstractionSource {
    IMailbox mailbox;

    function initiateIntent(CrossChainIntent calldata intent) external payable {
        bytes32 messageId = mailbox.dispatch{value: msg.value}(
            intent.destinationDomain,
            intent.solver,
            abi.encode(intent)
        );
        emit IntentDispatched(messageId, intent.intentHash);
    }
}

Unified Balance View

Чтобы пользователь видел единый баланс, frontend агрегирует данные со всех цепей:

interface UnifiedBalance {
    asset: string
    totalBalance: bigint
    chains: {
        chainId: number
        chainName: string
        balance: bigint
        usdValue: number
    }[]
}

async function getUnifiedBalance(address: string, asset: string): Promise<UnifiedBalance> {
    const chains = [1, 42161, 8453, 10, 137] // ETH, ARB, BASE, OP, POLYGON

    const balances = await Promise.all(
        chains.map(chainId => fetchBalance(address, asset, chainId))
    )

    return {
        asset,
        totalBalance: balances.reduce((sum, b) => sum + b.balance, 0n),
        chains: chains.map((chainId, i) => ({
            chainId,
            chainName: getChainName(chainId),
            balance: balances[i].balance,
            usdValue: balances[i].usdValue,
        }))
    }
}

Для real-time обновлений — WebSocket подписки через Alchemy / Infura на каждую цепь или multicall polling с разумным интервалом (5-10 секунд).

Газовые абстракции

Chain abstraction неполна без решения gas проблемы: у пользователя нет нативного токена на целевой цепи. Варианты:

Gas sponsorship через Paymaster. На целевой цепи Paymaster оплачивает gas из своего баланса. Solver или протокол несёт эти расходы как cost of acquisition.

Gas included в bridge amount. При bridging небольшое количество нативного токена выдаётся пользователю автоматически (gas airdrop). Across Protocol делает это нативно.

ERC-20 gas payment. Через ERC-4337 Paymaster пользователь платит gas в USDC на целевой цепи, даже без ETH.

Мониторинг и UX статусов

Cross-chain операции занимают от секунд до часов. Пользователю нужен понятный статус:

Initiating... → Source TX confirmed → Bridge in progress (ETA: 5 min) → Destination TX confirmed ✓

Для мониторинга: Socket/Li.Fi предоставляют status API по txHash. Wormholescan для Wormhole маршрутов. Кастомный polling backend с WebSocket → frontend push.

Стек разработки

Компонент Технология
Routing/aggregation Li.Fi SDK / Socket SDK / кастомный
Cross-chain messaging Hyperlane / Wormhole / LayerZero
Unified accounts ERC-4337 (permissionless.js)
Gas abstraction ERC-4337 Paymaster (Pimlico / Alchemy)
Balance aggregation Alchemy / Moralis Streams + Multicall3
Status tracking Socket Status API / кастомный polling
Frontend wagmi v2 + viem + React Query

Процесс разработки

Аналитика и дизайн (1 неделя). Выбор: агрегация через готовые SDK (Li.Fi/Socket) vs кастомный solver protocol. Целевые цепи, токены, UX требования, газовая модель.

Backend и routing (2-3 недели). Intent routing engine, solver logic (если кастомный), cross-chain messaging интеграция, status monitoring.

Smart contracts (2-3 недели). Settlement контракты на каждой цепи, cross-chain proof механизм, Paymaster для gas abstraction. Аудит обязателен.

Frontend и unified UX (2-3 недели). Unified balance view, intent builder UI, cross-chain status tracker, gas estimation.

Тестирование и launch (1-2 недели). End-to-end тестирование на testnets, load testing solver, monitoring setup.

Решение на базе Li.Fi/Socket SDK без кастомных контрактов — 4-6 недель. Полностью кастомный solver protocol с cross-chain messaging — 3-5 месяцев.