Система unified accounts: єдиний акаунт для кросчейн-операцій

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1305 послуг
Система unified accounts: єдиний акаунт для кросчейн-операцій
Складний
від 2 тижнів до 3 місяців
Часті запитання

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

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

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

  • 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

Розробка системи unified accounts

Стикалися з ситуацією, коли для роботи в різних блокчейнах доводиться тримати десяток гаманців і вручну перекидати ліквідність? Наша команда інженерів вирішує цю проблему за допомогою системи unified accounts — єдиного акаунту, який працює на всіх мережах. Це не просто зручна абстракція, а архітектурне рішення, що об'єднує детерміноване розгортання контрактів, кросчейн-синхронізацію та інтент-орієнтоване виконання. Давайте розберемо, як це влаштовано на рівні смарт-контрактів та інфраструктури. Unified accounts еволюціонують від мультичейн-підходу (багато гаманців) до chain-abstracted (один гаманець, прозора мультичейн). Задача нетривіальна: реалізувати її правильно означає вирішити кілька незалежних технічних проблем одночасно. Досвід нашої команди в кросчейн-розробці — понад 10 успішних проєктів.

Як unified account вирішує проблему фрагментації ліквідності?

При роботі з кількома L1/L2 ланцюгами (Ethereum, Polygon, Arbitrum, Optimism, Base) користувач змушений тримати кошти на кожній мережі окремо. Unified account використовує CREATE2 для детермінованої адреси та синхронізує стан через захищений bridge. Це дозволяє мати єдиний логічний баланс, який автоматично доступний на всіх ланцюгах без ручних переказів. Порівняйте: у традиційній схемі для stake 100 USDC в протоколі на Arbitrum потрібно спочатку перевести USDC з Ethereum — це мінімум дві транзакції та 15 хвилин очікування. У unified account користувач вказує намір, а система сама маршрутизує ліквідність через оптимальний bridge за пару кліків. Гарантуємо, що економія на газі та часі досягає 40–60% на типових операціях.

Що таке unified account на технічному рівні?

Наївна реалізація: смарт-контракт на кожному підтримуваному ланцюгу з однаковою адресою (через CREATE2), синхронізація стану через bridge. Це працює, але створює складність: стан розрізнений, синхронізація має затримку та вартість.

Просунута реалізація розділяє чотири шари: Identity, Intent, Execution, Settlement. Кожен шар вирішує своє завдання, а разом вони забезпечують безшовний кросчейн-досвід.

Шар Завдання
Identity Визначає користувача на всіх ланцюгах (одна адреса)
Intent Приймає намір користувача (що зробити)
Execution Вибирає оптимальний ланцюг та маршрут виконання
Settlement Проводить остаточний розрахунок та синхронізацію

Детерміновані адреси через CREATE2

Перший крок — одна й та сама адреса на всіх EVM ланцюгах:

// Factory контракт з однаковою адресою на всіх ланцюгах
contract AccountFactory {
    function deployAccount(
        bytes32 salt,
        bytes calldata initCode
    ) external returns (address account) {
        // CREATE2: адреса залежить тільки від factory address + salt + initCode
        // Якщо factory задеплоєно через keyless deployment (одна адреса на всіх EVM),
        // то і Account матиме однакову адресу
        assembly {
            account := create2(0, add(initCode, 32), mload(initCode), salt)
        }
        
        if (account == address(0)) revert DeploymentFailed();
    }
    
    function predictAddress(
        bytes32 salt,
        bytes32 initCodeHash
    ) external view returns (address) {
        return address(uint160(uint256(keccak256(abi.encodePacked(
            bytes1(0xff),
            address(this),
            salt,
            initCodeHash
        )))));
    }
}

Keyless deployment (через ERC-2470 Singleton Factory або Nick's method) забезпечує однакову адресу factory на всіх EVM ланцюгах. Отже — один і той самий salt + initCode = одна адреса account на всіх ланцюгах. ERC-2470: Singleton Factory — це стандартний спосіб розгортання контрактів з однаковою адресою.

Cross-chain state synchronization

Другий крок — синхронізація даних акаунту між ланцюгами. Наприклад: користувач оновлює список owners на Ethereum, це має відобразитися на Polygon.

Паттерн: Primary chain + синхронізація через bridge:

contract UnifiedAccountPrimary {
    // Primary state зберігається на "home" ланцюгу
    mapping(address => bool) public owners;
    uint256 public nonce;
    
    // Синхронізація змін на інші ланцюги
    function addOwnerAndSync(
        address newOwner,
        uint64[] calldata targetChains,
        address[] calldata targetAccounts
    ) external onlyOwner {
        owners[newOwner] = true;
        
        // Відправляємо update через bridge (CCIP, Axelar, LayerZero)
        for (uint i = 0; i < targetChains.length; i++) {
            bytes memory payload = abi.encode(
                "ADD_OWNER",
                newOwner,
                ++nonce
            );
            
            bridge.sendMessage(targetChains[i], targetAccounts[i], payload);
        }
        
        emit OwnerAdded(newOwner);
    }
}

contract UnifiedAccountReplica {
    // Репліка отримує оновлення від Primary
    uint256 public lastSyncedNonce;
    
    function receiveSync(
        bytes calldata payload,
        bytes32 originMessageId
    ) external onlyBridge {
        (string memory action, address target, uint256 nonce) = 
            abi.decode(payload, (string, address, uint256));
        
        // Захист від replay: nonce має бути наступним
        require(nonce == lastSyncedNonce + 1, "Invalid nonce");
        lastSyncedNonce = nonce;
        
        if (keccak256(bytes(action)) == keccak256(bytes("ADD_OWNER"))) {
            _addOwner(target);
        }
    }
}

Intent-based execution

Unified account приймає наміри користувача, а не конкретні транзакції. Користувач каже «хочу stake 100 USDC в протоколі X» — система сама вирішує звідки взяти USDC та на якому ланцюгу виконати:

interface UserIntent {
  action: "stake" | "swap" | "transfer" | "borrow";
  targetProtocol: string;
  targetChain?: number;  // опціонально — якщо не вказано, система обирає
  inputToken: string;
  inputAmount: string;
  outputToken?: string;
  minOutputAmount?: string;
  deadline?: number;
}

class IntentRouter {
  async resolveIntent(intent: UserIntent, userProfile: UserProfile): Promise<ExecutionPlan> {
    // 1. Знаходимо найкращий ланцюг для виконання
    const targetChain = intent.targetChain || 
      await this.findOptimalChain(intent, userProfile);
    
    // 2. Визначаємо звідки взяти кошти
    const fundingSource = await this.findBestFundingSource(
      intent.inputToken,
      intent.inputAmount,
      userProfile.balances,
      targetChain
    );
    
    // 3. Будуємо execution plan
    const steps: ExecutionStep[] = [];
    
    if (fundingSource.chainId !== targetChain) {
      // Потрібен bridge
      steps.push({
        type: "bridge",
        fromChain: fundingSource.chainId,
        toChain: targetChain,
        token: intent.inputToken,
        amount: intent.inputAmount,
        bridgeProtocol: await this.selectBridge(fundingSource.chainId, targetChain),
      });
    }
    
    // Основна дія
    steps.push({
      type: intent.action,
      chainId: targetChain,
      protocol: intent.targetProtocol,
      ...
    });
    
    return {
      steps,
      estimatedGas: await this.estimateTotalGas(steps),
      estimatedTime: this.estimateTime(steps),
    };
  }
}

Gasless cross-chain операції

Для повного UX unified account — користувач не повинен думати про газ. Система абстрагує це:

// Користувач платить в USDC, система конвертує в нативні токени
async function executeGasless(
  intent: UserIntent,
  feeToken: "USDC" | "USDT" | string
): Promise<string> {
  const plan = await intentRouter.resolveIntent(intent, userProfile);
  
  // Розраховуємо загальну вартість у feeToken
  const totalCostInFeeToken = await priceOracle.convertGasCost(
    plan.estimatedGas,
    plan.steps.map(s => s.chainId),
    feeToken
  );
  
  // Отримуємо UserOperation зі sponsored газом
  const userOp = await buildSponsordUserOp(plan, feeToken, totalCostInFeeToken);
  
  // Підписуємо один раз на вихідному ланцюгу
  const signedOp = await userAccount.signUserOperation(userOp);
  
  // Executor relay виконує всі steps
  return relayer.submitIntent(signedOp);
}

Account abstraction як фундамент

Unified accounts нативно будуються на ERC-4337: Smart account замість EOA на кожному ланцюгу, UserOperations як одиниця intent, Bundler як executor, Paymaster як gas abstraction layer. ZeroDev Kernel, Safe з модулями або кастомна реалізація — вибір залежить від необхідної гнучкості.

Проблема атомарності

Критичне питання: що відбувається, якщо крок 1 (bridge) пройшов успішно, а крок 2 (stake на цільовому ланцюгу) завершився помилкою? Варіанти: Optimistic execution (продовжуємо, записуємо pending state, retry при невдачі), Atomic through escrow (кошти в escrow контракті до підтвердження фінального кроку), Two-phase commit (prepare → commit/rollback). На практиці більшість систем використовують optimistic з retry механізмом і ручним fallback (кошти залишаються на цільовому ланцюгу, якщо дія не виконана).

Порівняння підходів до кросчейн-комунікації

Протокол Тип Затримка Безпека
LayerZero light oracle + relayer ~1 хвилина залежить від оракула
Axelar validator set ~5 хвилин 2/3 валідаторів
CCIP (Chainlink) децентралізовані оракули ~10 хвилин перевірений аудитом

Що входить у роботу над unified account

  1. Аналіз цільових мереж і вимог до синхронізації.
  2. Проєктування архітектури identity та intent шарів.
  3. Розгортання factory контрактів через keyless deployment.
  4. Інтеграція bridge-протоколу та налаштування синхронізації.
  5. Реалізація intent router з підтримкою gas abstraction.
  6. Інтеграція frontend SDK.
  7. Розгортання на testnet та проведення аудиту.
  8. Deploy на mainnet та запуск.

Строки

  • Базова unified identity (CREATE2 однакові адреси, базовий sync): 4-6 тижнів
  • Intent routing + cross-chain execution: 6-8 тижнів
  • Gas abstraction + feeToken: 3-4 тижні
  • Production hardening + security audit: 6-8 тижнів
  • Всього: 4-6 місяців

Бюджет на розробку unified account розраховується індивідуально. Зв'яжіться з нами, надайте специфікацію використовуваних мереж і вимоги до синхронізації — ми підготуємо індивідуальну пропозицію з точними строками. Замовте консультацію, щоб оцінити ваш проєкт та отримати професійну розробку під ключ.

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

Ми займаємося розробкою крос-чейн мостів та крос-чейн рішень під ключ. Знаємо, як уникнути катастроф. Кілька років тому міст Binance BNB Chain втратив $570M — атакуючий підробив Merkle proof у BSC's native bridge. Того ж року Wormhole втратив $320M (Wormhole bridge exploit): верифікація підписів 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. Правильно спроектований міст з rate limiting може зекономити до $500k потенційних втрат при атаці.

Як обрати 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. LayerZero OFT інтегрується в 3 рази швидше, ніж кастомний міст.

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

Що потрібно врахувати до першого рядка коду?

Обов'язкові компоненти будь-якого 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.

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

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

Етап Результат
Аналіз та вибір архітектури Технічне завдання, обґрунтування вибору messaging layer
Проектування смарт-контрактів Специфікація, діаграми потоків, опис моделі довіри
Розробка та тестування Вихідний код, unit/інтеграційні тести, симуляція cross-chain сценаріїв
Аудит безпеки Звіт зовнішніх аудиторів, виправлені вразливості
Деплой та моніторинг Контракти в mainnet, дашборд з алертами, документація для експлуатації
Підтримка після запуску 3 місяці гарантійної підтримки, допомога з експлуатацією

Строки та вартість

Простий 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 рішення.

Вартість розраховується індивідуально після оцінки обсягу робіт. Маємо понад 5 років досвіду в індустрії, реалізували 15+ проектів у галузі блокчейн-інфраструктури. Свяжитесь с нами для детальної консультації — оцінимо ваш проект і запропонуємо оптимальну архітектуру мосту.