Розробка некастодіального гаманця
Некастодіальний гаманець — це програма, в якій приватний ключ ніколи не покидає пристрій користувача. Жодного проміжного сховища, жодних серверів, які можна взломати або заморозити. Ключі у користувача — значить, і активи у користувача.
Архітектурні рішення
Вибір архітектури визначається двома питаннями: на якому пристрої зберігається ключ та як відбувається підписання транзакцій.
HD-гаманець (Hierarchical Deterministic) за стандартом BIP-32/BIP-44 — базова архітектура для більшості сучасних гаманців. З однієї seed-фрази (BIP-39, 12 або 24 слова) деривується дерево ключів. Користувач бекапить лише мнемоніку, а гаманець відновлює всі акаунти автоматично.
Дерево деривації для Ethereum: m/44'/60'/0'/0/n, де n — індекс акаунта. Для Bitcoin різні мережі використовують різні coin_type: 0 для mainnet, 1 для testnet.
MPC-гаманець (Multi-Party Computation) — приватний ключ ніколи не існує цілком ні в однієї сторони. Підписання відбувається через протокол threshold signature scheme (TSS), наприклад GG20 або CGGMP21. Це усуває single point of failure, але ускладнює реалізацію.
Smart contract wallet — EOA (Externally Owned Account) замінюється смарт-контрактом. Стандарт ERC-4337 (Account Abstraction) дозволяє реалізувати:
- соціальне відновлення
- batched транзакції
- gasless операції через Paymaster
- мультипідпис без окремого multisig-контракту
Безпечне зберігання ключів
Це найкритичніша частина. Підходи за платформами:
| Платформа | Рішення | Рівень безпеки |
|---|---|---|
| iOS | Secure Enclave + Keychain | Високий |
| Android | StrongBox / TEE + Keystore | Високий |
| Desktop | OS keychain + AES-256 шифрування файлу | Середній |
| Browser Extension | SubtleCrypto API + encrypted storage | Середній |
| Hardware | Secure Element (HSM) | Максимальний |
Seed-фраза шифрується через Argon2id (key derivation) з користувацьким паролем до запису в storage. Ні в якому разі не через MD5/SHA1.
Підключення до блокчейна
Web3 провайдери: ethers.js 6.x або viem для EVM-сумісних мереж. Для мультичейна — wagmi як абстракція поверх.
RPC-ендпоінти: публічні ноди (Infura, Alchemy, QuickNode) для production. Для приватності — власна нода або підтримка кількох провайдерів з fallback.
WalletConnect v2 — стандартний протокол для підключення до dApp. Використовує relay-сервер лише для передачі зашифрованих повідомлень, ключі по ньому не передаються.
Підписання транзакцій
Користувач ініціює транзакцію → гаманець показує деталі → користувач підтверджує → ключ зі Secure Storage підписує дані → підписана транзакція відправляється в мережу.
EIP-1559 транзакції використовують maxFeePerGas та maxPriorityFeePerGas замість gasPrice. Гаманець повинен отримувати актуальні дані з eth_feeHistory та пропонувати три рівні швидкості.
EIP-712 — структуровані дані для підписання (типізовані повідомлення). Дозволяє користувачу бачити що саме він підписує, а не просто хеш.
Transaction simulation
Перед підписанням критично важливо симулювати транзакцію. Tenderly, Alchemy Simulation API або локальний forked node дозволяють:
- Показати очікувані зміни балансів
- Попередити про підозріле approve (unlimited approval)
- Виявити спробу drain гаманця
Підтримка токенів та NFT
Автоматичне виявлення ERC-20 через события Transfer + Moralis/Alchemy NFT API. Для користувальницьких токенів — ручний import за адресою контракту з верифікацією через Etherscan API.
Що ми розробляємо
Повний стек некастодіального гаманця: мобільне додаток (React Native або Flutter) або browser extension, HD-деривація з безпечним зберіганням seed, інтеграція WalletConnect v2, підтримка EVM-мереж (Ethereum, BSC, Polygon, Arbitrum, Optimism), базове token/NFT discovery, transaction simulation перед підписанням. Архітектура — без будь-яких серверних компонентів, які зберігають ключи.







