Розробка кастодіального MPC-гаманця під ключ

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

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

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

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

  • 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

Ми будуємо кастодіальні MPC-гаманці, де приватний ключ ніколи не існує в повній формі на жодному пристрої. Замість цього кожна сторона тримає «частку» (share) ключа, і підпис транзакції обчислюється спільно через MPC протокол. Вкрасти один share марно — для підпису потрібні всі учасники схеми. Така архітектура усуває single point of failure і робить гаманець стійким до компрометації серверів: навіть якщо зловмисник отримає доступ до серверного share, він не зможе підписати транзакцію без частки користувача. Наші інженери мають 10+ років досвіду в блокчейн-розробці та криптографії. Ми гарантуємо, що ваш сервіс отримає захист рівня institutional custody без єдиної точки відмови. Це корпоративне зберігання крипти на новому рівні — гаманець без seed phrase, де доступ відновлюється через backup share.

Це принципова відмінність від традиційного мультисигу (M-of-N on-chain): мультисиг видимий у блокчейні, потребує N підписів on-chain (газ), і факт використання мультисигу публічний. MPC-підпис виглядає як звичайний одиночний підпис — ні блокчейн, ні спостерігач не бачить, що за ним стоїть спільне обчислення. Fireblocks, ZenGo, Coinbase WaaS, Web3Auth — MPC-based продукти. Банківський та institutional сектор переходить на MPC саме через відсутність single point of failure при зберіганні ключів. Економія на газі сягає 50% порівняно з on-chain мультисигом.

Як працює MPC-гаманець?

Threshold Signature Scheme (TSS)

Для Ethereum (secp256k1) найпоширеніший GG20 протокол (Genaro-Goldfeder 2020) або його покращення CGGMP21. Схема t-of-n: будь-які t з n учасників можуть обчислити підпис, без t — неможливо.

Процес складається з двох фаз:

  • Keygen (distributed key generation): учасники інтерактивно генерують shares, не розкриваючи фінальний ключ. По закінченні кожен має share_i, а публічний ключ P = G * privateKey відомий всім. Приватний ключ privateKey не існує ніде.
  • Signing: для підпису транзакції t учасників запускають MPC протокол, кожен вводить свій share_i, на виході — валідний ECDSA підпис. Жоден учасник не дізнався ключі інших.

Реальні MPC бібліотеки

Production-готові реалізації:

  • tss-lib (Binance): Go бібліотека, реалізує GG18/GG20. Використовується в Binance Chain, Thorchain. Відкритий вихідний код.
  • multi-party-ecdsa (ZenGo): Rust, реалізує GG20. Більш актуальна, активна підтримка.
  • @sodot/sodot-node-sdk: комерційне SDK для MPC-as-a-service. Швидкий старт, не потрібно реалізовувати протокол самостійно.
  • Silence Laboratories SDK: академічно верифікована реалізація, використовується в Web3Auth для MPC as a service.

Самостійна реалізація MPC протоколу — це місяці роботи криптографа та високий ризик помилок. Для більшості проєктів правильний вибір — готова бібліотека або MPC-as-a-service.

Вибір MPC-бібліотеки

Бібліотека Мова Протокол Ліцензія Особливості
tss-lib (Binance) Go GG18/GG20 Open source Перевірена в Binance Chain, Thorchain
multi-party-ecdsa (ZenGo) Rust GG20 Open source Активна підтримка, аудит
Sodot SDK TypeScript CGGMP21 Комерційна Fast integration, MPC-as-a-service
Silence Laboratories SDK Rust/Python Академічний Комерційна Формальна верифікація

Чому MPC-гаманець кращий за мультисиг?

Критерій MPC Wallet On-chain Multisig
Видимість у блокчейні Звичайний підпис N підписів публічно
Газ за транзакцію Звичайний +20-50% (додаткові підписи)
Single point of failure Відсутній Залежить від конфігурації
Recovery при втраті пристрою Через backup share Через інших підписантів
Сумісність Будь-який EVM гаманець Потребує multisig aware dApp
Складність реалізації Висока Низька (Gnosis Safe)

MPC виправданий для: institutional custody, wallets-as-a-service, гаманців без seed phrase (mobile-first), вбудованих гаманців у додатки. Gnosis Safe (on-chain multisig) виправданий для: DAO treasury, team wallets, випадків де потрібна максимальна прозорість on-chain.

Архітектура 2-of-2 MPC гаманця

Типова схема для consumer гаманця: одна частка на пристрої користувача, одна на сервері. Транзакція потребує участі обох сторін.

Сервер не знає повного ключа. Пристрій не знає повного ключа. Без сервера користувач не може підписати (захист від крадіжки пристрою). Без пристрою сервер не може підписати (сервер не може вкрасти кошти).

Keygen flow

// Спрощена ілюстрація flow (не production-ready код)
import { MpcSigner } from '@sodot/sodot-node-sdk';

class MPCWallet {
  private deviceSdk: MpcSigner;
  private serverSdk: MpcSigner;

  async generateKey(): Promise<string> {
    const keygenId = crypto.randomUUID();
    const [deviceShare, serverShare] = await Promise.all([
      this.deviceSdk.initKeygen(keygenId, { threshold: 2, parties: 2, partyIndex: 1 }),
      this.serverSdk.initKeygen(keygenId, { threshold: 2, parties: 2, partyIndex: 2 }),
    ]);
    await this.runKeygenRounds(keygenId, deviceShare, serverShare);
    const publicKey = await this.deviceSdk.getPublicKey(keygenId);
    const address = ethers.computeAddress('0x' + publicKey);
    await this.deviceSdk.storeShare(keygenId, deviceShare);
    await this.serverSdk.storeShare(keygenId, serverShare);
    return address;
  }

  async signTransaction(address: string, transaction: ethers.TransactionRequest): Promise<string> {
    await this.authenticateUser();
    const txHash = ethers.keccak256(ethers.Transaction.from(transaction).unsignedSerialized);
    const signingId = crypto.randomUUID();
    const signature = await this.runSigningProtocol(signingId, txHash, address);
    const signedTx = ethers.Transaction.from({ ...transaction, signature });
    return signedTx.serialized;
  }
}

Share refresh (proactive security)

Share refresh вирішує проблему компрометації серверного share: учасники періодично оновлюють свої shares без зміни підсумкового ключа. Вкрадений share рік тому сьогодні марний.

async function refreshShares(walletId: string): Promise<void> {
  await Promise.all([
    deviceSdk.refreshShare(walletId),
    serverSdk.refreshShare(walletId),
  ]);
}

setInterval(() => {
  for (const walletId of activeWallets) {
    refreshShares(walletId).catch(console.error);
  }
}, 7 * 24 * 60 * 60 * 1000);

Відновлення доступу при втраті пристрою

Схема 2-of-2 має слабке місце: якщо сервер недоступний, користувач не може підписати транзакції. Схема 2-of-3 вирішує це:

  • Share 1: пристрій користувача
  • Share 2: сервер (онлайн signing)
  • Share 3: backup (зашифрований паролем користувача, зберігається в хмарі або роздрукований)

При нормальній роботі: Device + Server = підпис. Якщо сервер недоступний: Device + Backup = підпис (аварійний recovery). Якщо пристрій втрачено: Server + Backup = відновлення на новий пристрій.

Схема Поріг Учасники Recovery Використання
2-of-2 2 Device + Server Через backup share Consumer wallets
2-of-3 2 Device + Server + Backup Device lost: Server+Backup Enterprise custody
async function recoverToNewDevice(
  backupShare: CloudEncryptedShare,
  backupPassword: string
): Promise<string> {
  const decryptedBackup = await decryptBackupShare(backupShare, backupPassword);
  await verifyUserIdentity();
  const newDeviceShare = await sdk.refreshWithParties([serverShare, decryptedBackup]);
  await secureStore.save(newDeviceShare);
  return 'Recovery complete';
}

Комунікаційний канал між сторонами: MPC протокол потребує кількох раундів обміну повідомленнями між учасниками. Для 2-of-2 (пристрій + сервер) оптимальний WebSocket — мінімальна затримка. REST polling простіший, але додає 0.5-2.5 секунди до підпису. Типовий час підпису через MPC: 0.5-2 секунди при хорошій мережі. Показуємо прогрес в UI.

Серверна інфраструктура

Серверний share повинен зберігатися в Hardware Security Module (HSM) — фізичному пристрої, з якого неможливо витягти ключ програмно. Варіанти: AWS CloudHSM (FIPS 140-2 Level 3), AWS KMS (софт), HashiCorp Vault (self-hosted). Для стартапу достатньо AWS KMS + encryption at rest. HSM — при зростанні до institutional клієнтів.

Аутентифікація перед signing

Сервер перевіряє, що запит на підпис ініційований авторизованим користувачем (JWT після біометрії). Додатково застосовуються політики транзакцій: ліміти, whitelist адрес, вимога додаткової верифікації для великих сум.

Що входить в роботу

При замовленні розробки кастодіального MPC-гаманця ви отримуєте:

  • Архітектурний дизайн та вибір MPC протоколу (t-of-n схема)
  • Інтеграцію MPC бібліотеки (tss-lib / multi-party-ecdsa / Sodot SDK)
  • Реалізацію keygen та signing flow з share storage
  • Розробку мобільного/веб-додатку з UX для onboarding, транзакцій та recovery
  • Серверну частину: auth service, signing API, policy engine, HSM інтеграцію
  • Security review та pentest (MPC протокол + інфраструктура) — повний аудит безпеки гаманця
  • Документацію, навчання команди, підтримку на етапі запуску

Процес роботи

  1. Архітектурний дизайн (1-2 тижні): вибір MPC протоколу, share distribution, backup/recovery flows, серверна інфраструктура.
  2. Keygen та signing реалізація (3-4 тижні): інтеграція MPC бібліотеки, комунікаційний канал, share storage.
  3. Мобільний/веб додаток (2-3 тижні): UX onboarding, transaction flow, progress indicators, recovery UI.
  4. Серверна частина (2-3 тижні): auth, signing API, policy engine, HSM інтеграція.
  5. Security review (2 тижні): протокол security analysis, pentest, share storage review.
  6. Тестування та launch (1-2 тижні): end-to-end тести, навантажувальне тестування.

Повний цикл MPC гаманця: 4-6 місяців. Це складніше звичайного гаманця через MPC протокол та необхідність криптографічної експертизи. Вартість розраховується після деталізації схеми та вибору MPC бібліотеки.

Оцінимо ваш проєкт безкоштовно — зв'яжіться з нами, щоб обговорити архітектуру. Також вивчіть Secure multi-party computation для загального розуміння технології. Отримайте консультацію по вашому проєкту — наші інженери відповідають на технічні питання.

Ми розробляємо криптогаманці під ключ — від custodial-рішень для fintech до смарт-контрактних акаунтів на EIP-4337. 5+ років на ринку блокчейн-розробки, 40+ реалізованих проектів. Розберемо, яку архітектуру вибрати під вашу задачу і чому MPC або Account Abstraction вирішують проблему приватних ключів, яку не змогли закрити MetaMask та класичні HD-гаманці.

Як обрати архітектуру гаманця?

Чому класичні гаманці небезпечні для бізнесу?

Seed-фраза у браузерному розширенні — єдиний спосіб відновити доступ. Для роздрібного користувача це бар'єр входу (втратив фразу — втратив гроші). Для корпоративного казначейства — несумісно з compliance (KYC/AML, рольова модель, мультипідпис). Будь-який витік одного ключа компрометує всі кошти. Ці ризики закладені в архітектуру, а не в поганий UX.

Ми усуваємо їх на рівні протоколу: MPC-гаманці (ключ ніколи не зібраний цілком), смарт-контрактні гаманці (логіка авторизації в коді), апаратні HSM для інституційного зберігання. Нижче — деталі.

Custodial vs Non-custodial: у чому реальна різниця

Custodial — провайдер зберігає приватний ключ. Користувач аутентифікується через email/password/OAuth. Відновлення тривіальне, KYC/AML вбудовані. Для централізованих додатків з фінансовими операціями — часто єдиний регуляторно прийнятний варіант. Ризик: single point of failure (злом Bitfinex — значні втрати, FTX — понад значну суму клієнтських коштів).

Non-custodial — ключі у користувача. Провайдер не має доступу до коштів. Відповідальність за зберігання лягає на користувача. Для 99% людей це непрацююча модель без додаткового захисту — тут і приходить MPC.

MPC-гаманці: ключ, якого немає

Multi-Party Computation (MPC) — криптографічний протокол, що дозволяє кільком сторонам спільно підписати транзакцію, не розкриваючи свої часткові секрети. Приватний ключ ніколи не існує в зібраному вигляді.

Стандартна схема: 2-of-3 MPC між користувачем (частка на пристрої), сервером провайдера та резервним хмарним сховищем. Транзакція підписується двома будь-якими з трьох сторін. Телефон втрачено — відновлення через сервер + хмару. Сервер скомпрометовано — атакуючий володіє лише однією часткою, підпис неможливий.

TSS (Threshold Signature Scheme) — конкретна реалізація MPC для ECDSA/EdDSA. Алгоритми: GG18, GG20, CGGMP21 (останній швидший і з кращими security proof). Бібліотеки: tss-lib (Go, від Binance), multi-party-sig (Go, від Coinbase), ZenGo-X/multi-party-ecdsa (Rust).

MPC не потребує on-chain змін — для блокчейна підпис виглядає як звичайний single-key підпис. Це дає економію gas та зберігає конфіденційність схеми управління ключами (не публікується в ланцюжку) — на відміну від мультисига.

Account Abstraction (EIP-4337): смарт-контракт як гаманець

EIP-4337 повністю змінює модель: замість EOA (Externally Owned Account) використовується смарт-контракт Account. Логіка авторизації — в коді контракту, а не в криптографії протоколу. Це відкриває довільну логіку підпису, соціальне відновлення, сесійні ключі, sponsored транзакції та батчинг операцій.

User → UserOperation → Bundler → EntryPoint contract → Account contract
                                          ↑
                                    Paymaster (optional, pays gas)

UserOperation — новий тип об'єкта (не L1-транзакція). Bundler збирає UserOps з альтернативного mempool, упаковує в одну транзакцію та відправляє в EntryPoint. EntryPoint викликає validateUserOp на Account контракті — Account сам вирішує, чи дійсний підпис.

Практичні можливості:

Соціальне відновлення. Контракт зберігає список guardian'ів (інші адреси або сервіс). Втрата ключа — guardians голосують за заміну. Argent використовує схему з 2020 року.

Сесійні ключі. Тимчасовий ключ з обмеженими правами: взаємодія лише з конкретним контрактом, до певної дати, до певної суми. Для GameFi та dApps — користувач не підписує кожну мікро-транзакцію.

Paymaster. Сторонній контракт платить газ за користувача. Паттерн для онбордингу: користувач не тримає ETH, газ спонсорує dApp або береться з ERC-20 токенів.

Реалізації: Safe{Core} Protocol, Biconomy SDK (Stackup), ZeroDev (Kernel), Alchemy (Rundler bundler). На Ethereum mainnet, Polygon, Arbitrum, Optimism EntryPoint v0.6/v0.7 задеплоєний та активний. Гарантуємо сумісність з останніми версіями контрактів.

Hardware Security Module для корпоративних гаманців

Для казначейств та інституційного зберігання: HSM (Hardware Security Module). Ключ генерується і ніколи не покидає захищений чип. Підпис — всередині HSM. Підтримується апаратна атестація. Використовувані рішення: AWS CloudHSM, Azure Dedicated HSM, Thales Luna, YubiHSM 2 (для невеликих обсягів). Інтеграція через PKCS#11 або cloud-specific API.

Комбінація HSM + MPC — оптимальна для інституційного використання: ключові частки зберігаються в HSM на різних серверах/юрисдикціях, підпис через TSS. Це забезпечує відповідність регуляторним вимогам (наприклад, для крипто-кастодіанів).

Інтеграція з dApps: WalletConnect та стандарти

Будь-який гаманець повинен вміти взаємодіяти з dApps. Стандарт — WalletConnect v2 (Sign API): QR-код або deep link, peer-to-peer зашифрований канал через relay сервер. Для браузерних розширень — EIP-1193 (Ethereum Provider API).

На фронтенді використовуємо wagmi + viem — один інтерфейс для MetaMask, WalletConnect, Coinbase Wallet, injected providers. Для Account Abstraction — EIP-5792 (wallet capabilities) та EIP-7677 (paymaster service).

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

  1. Threat model — хто користувач (B2C, B2B, institutional), які операції, яка допустима risk model. Від цього залежить архітектура.
  2. Вибір та проектування схеми зберігання ключів — MPC, HSM, мультисиг або їх комбінація.
  3. Розробка Account контракту (якщо EIP-4337) або інтеграція MPC-бібліотеки.
  4. Backend — MPC-координація, управління сесіями, paymaster-сервіс (якщо потрібен).
  5. Мобільний/браузерний застосунок — UI з інтеграцією WalletConnect, біометрії, QR.
  6. Інтеграція з dApps — EIP-1193, WalletConnect v2.
  7. Аудит контрактів та криптографічних реалізацій — обов'язковий етап. MPC-бібліотеки мають відомі вразливості (GG18 піддається атаці при malicious participant без abort protocol). Використовуємо бібліотеки з актуальними security review (CGGMP21). Досвід проходження аудитів у Certik, Hacken, Trail of Bits — підтверджуємо сертифікатами.

Що входить в роботу (deliverables)

  • Вихідні коди смарт-контрактів (Solidity/Rust) з документацією
  • Backend-сервіс MPC-координації (на Go або Rust) з API
  • Мобільний застосунок (iOS/Android) або браузерне розширення
  • Інтеграція з WalletConnect, Ledger/Trezor (за потреби)
  • Підготовка до аудиту безпеки (звіт зі списком вразливостей)
  • Документація адміністратора та користувача
  • Доступ до репозиторію, CI/CD, моніторинг (Tenderly, Etherscan API)
  • Навчання вашої команди (2-3 сесії)
  • Підтримка після запуску — 1 місяць

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

Тип рішення Строки (робочі тижні)
Custodial з базовим UI 4–8
Non-custodial з MPC-інтеграцією 8–16
EIP-4337 Account з paymaster 6–12
Institutional (HSM + MPC + compliance) від 16

Вартість розраховується індивідуально під ваш проект. Оцінимо за 1 день — зв'яжіться з нами. Надаємо гарантію на код та timeline.

Типові помилки при розробці криптогаманців (і як їх уникнути)

  • Використання застарілих MPC-бібліотек — GG18 без abort protocol. Обираємо CGGMP21 або tss-lib з актуальними audit report.
  • Жорстка прив'язка до одного блокчейну — не закладають абстракцію під L2/сайдчейни. Використовуємо viem/wagmi для кросс-чейн.
  • Ігнорування MEV-атак — при використанні мультисига без таймлоків. Додаємо tx simulation (Tenderly) та sandwitching protection.
  • Відсутність fallback-механізму відновлення — для Account Abstraction не налаштовують social recovery. Закладаємо з першого релізу.

Усуваємо ці граблі на етапі проектування — під кожен проект складаємо threat model та security checklist.

Потрібен надійний гаманець без компромісів? Отримайте консультацію нашого архітектора — розберемо вашу задачу та запропонуємо архітектуру з точним кошторисом. Залишайте заявку — відповімо протягом дня.