Розробка криптогаманця, що підтримує кілька мереж, — це не просто «підключити кілька мереж». Це комплексна система, яка має коректно обробляти принципово різні блокчейн-архітектури: EVM-сумісні ланцюги (Ethereum, Arbitrum, Polygon, BSC), EVM-несумісні (Solana, Sui, Aptos), Bitcoin з UTXO-моделлю, Cosmos екосистему з IBC. Кожна має свою криптографію, формат транзакцій, fee-механізм та модель акаунтів. Без грамотної абстракції підтримка кожної нової мережі перетворюється на переписування половини кодової бази — саме так народжуються баги та затягуються терміни. Додатково постають питання gas optimization: в EVM-мережах вартість транзакції залежить від газу, а в Solana — від пріоритету, що потребує різних стратегій оцінки комісії.
Ми вирішуємо цю проблему за допомогою Chain Abstraction Layer — єдиного інтерфейсу для всіх мереж. Це дозволяє додати новий ланцюг за 1-2 тижні замість 2-3 місяців. На практиці це означає економію до $50,000 на проєкті. Такий підхід у 3 рази швидший за ручну реалізацію. Оцінимо ваш проєкт за 2 дні — зв'яжіться з нами.
Як працює деривація ключів у мультичейн гаманці?
Всі сучасні мультичейн гаманці будуються на стандартах BIP-32/BIP-39/BIP-44. Одна seed-фраза (12-24 слова) → один мастер ключ → дерево дочірніх ключів для кожної мережі. Стандарт BIP-44 визначає шлях деривації: m / purpose' / coin_type' / account' / change / index. Шлях складається з 5 рівнів: purpose (фіксований 44'), coin_type (наприклад, 0 для Bitcoin, 60 для Ethereum, 501 для Solana), account, change (0 для зовнішніх, 1 для здачі), index (адреси). Це дозволяє відновлювати всі ключі з однієї seed-фрази.
import { HDNodeWallet, Mnemonic } from 'ethers';
import { derivePath } from 'ed25519-hd-key';
import * as bip39 from 'bip39';
const mnemonic = Mnemonic.fromEntropy(crypto.getRandomValues(new Uint8Array(16)));
const seed = await bip39.mnemonicToSeed(mnemonic.phrase);
const evmWallet = HDNodeWallet.fromSeed(seed).derivePath("m/44'/60'/0'/0/0");
console.log('EVM address:', evmWallet.address);
const solanaPath = "m/44'/501'/0'/0'";
const { key: solanaPrivKey } = derivePath(solanaPath, seed.toString('hex'));
Що таке Chain Abstraction Layer?
Архітектура мультичейн гаманця будується на адаптерах — об'єктах, що одноманітно працюють з різними мережами. Це ключова абстракція, яка приховує відмінності в криптографії, форматах транзакцій та RPC.
interface ChainAdapter {
chainId: string;
chainName: string;
getAddress(publicKey: Uint8Array): string;
getBalance(address: string): Promise<bigint>;
buildTransaction(params: TxParams): Promise<UnsignedTx>;
signTransaction(tx: UnsignedTx, privateKey: Uint8Array): Promise<SignedTx>;
broadcastTransaction(tx: SignedTx): Promise<string>;
getTransactionStatus(txHash: string): Promise<TxStatus>;
estimateFee(tx: UnsignedTx): Promise<FeeEstimate>;
}
class EVMAdapter implements ChainAdapter {
private client: PublicClient;
constructor(rpcUrl: string, public chainId: string, public chainName: string) {
this.client = createPublicClient({ transport: http(rpcUrl) });
}
async getBalance(address: string): Promise<bigint> {
return this.client.getBalance({ address: address as `0x${string}` });
}
async buildTransaction(params: TxParams): Promise<UnsignedTx> {
const nonce = await this.client.getTransactionCount({ address: params.from as `0x${string}` });
const feeData = await this.client.estimateFeesPerGas();
return {
to: params.to,
value: params.value ?? 0n,
data: params.data ?? '0x',
nonce,
maxFeePerGas: feeData.maxFeePerGas,
maxPriorityFeePerGas: feeData.maxPriorityFeePerGas,
chainId: BigInt(this.chainId),
};
}
}
Як додати новий ланцюг у мультичейн гаманець?
- Реалізувати
ChainAdapter— описати криву (secp256k1 або ed25519), формат транзакції, fee-модель. - Додати шлях деривації у BIP-44 — призначити
coin_type(для Bitcoin — 0, Ethereum — 60, Solana — 501). - Протестувати підпис та відправку — перевірити на testnet, переконатися, що explorer показує транзакцію.
- Затвердити через pull request — код-рев'ю та автоматичні тести (Slither, фаззинг).
Цей процес займає 1–2 тижні замість 2–3 місяців при ручній реалізації. Наш Chain Abstraction Layer скорочує час інтеграції в 3 рази.
Порівняння блокчейнів: EVM, Solana, Bitcoin
| Параметр | EVM (Ethereum) | Solana | Bitcoin |
|---|---|---|---|
| Крива підпису | secp256k1 | ed25519 | secp256k1 |
| Тип адреси | hex (0x...) | base58 | bc1... (bech32) |
| Транзакції | nonce-based | parallel processing | UTXO + script |
| Fee-модель | EIP-1559 (base + priority) | signature fee + priority | sat/byte |
| DApp підтримка | WalletConnect, MetaMask | Phantom, Backpack | BIP-322 (limited) |
Безпечне зберігання та підпис
На мобільних платформах використовуємо Secure Enclave (iOS) або StrongBox (Android). Обмеження: вони не підтримують secp256k1 безпосередньо, тому seed зберігається зашифрованим у Keychain з біометрією. У Web Extension приватні ключі живуть лише в background service worker — content script не має до них доступу. Продуктивність підпису на мобільних пристроях вища, ніж у браузерних розширень, завдяки апаратному прискоренню. Як альтернативу для корпоративних рішень пропонуємо MPC (Multi-Party Computation), що усуває єдину точку відмови.
func storeSeed(_ seed: Data) throws {
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: "wallet_seed",
kSecValueData as String: seed,
kSecAttrAccessible as String: kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
kSecAttrAccessControl as String: SecAccessControlCreateWithFlags(
nil,
kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
[.biometryAny, .privateKeyUsage],
nil
)!
]
let status = SecItemAdd(query as CFDictionary, nil)
guard status == errSecSuccess else { throw KeychainError.unhandledError(status) }
}
Token discovery та NFT
Автопошук токенів через Etherscan, Covalent або Solana getParsedTokenAccountsByOwner. NFT — Alchemy NFT API з кешуванням IPFS metadata. Користувачеві не потрібно додавати токени вручну.
WalletConnect v2
Стандартний протокол зв'язку з dApp. Підпис транзакцій через eth_sendTransaction та personal_sign. Обробка сесій у background.
Стек та терміни
Таблиця компонентів
| Компонент | Технології | Термін |
|---|---|---|
| Core HD wallet | bip39 + ethers.js + @solana/web3.js | 2–3 тижні |
| EVM multi-chain | viem, 10+ мереж | 2–3 тижні |
| Solana інтеграція | @solana/web3.js + Metaplex | 2 тижні |
| Mobile (RN) | React Native + Expo SecureStore | 4–6 тижнів |
| Extension (Chrome) | MV3 + chrome.storage | 3–4 тижні |
| WalletConnect v2 | @walletconnect/web3wallet | 1–2 тижні |
| NFT + token discovery | Alchemy/Moralis API | 2–3 тижні |
| UI/UX (повний) | React Native / React | 6–10 тижнів |
Мінімальний production-ready мультичейн гаманець (EVM + Solana, mobile-first) — 4–5 місяців. Додавання Bitcoin (UTXO модель) — ще 4–6 тижнів. Розширення на Cosmos — 3–4 тижні через cosmjs. Вартість розраховується індивідуально, середній бюджет — від $80,000.
Що входить у роботу
- Архітектурна документація та вибір стеку
- Реалізація HD-гаманця з BIP-44, BIP-39
- Інтеграція 2+ мереж на вибір
- Інтерфейс управління токенами та NFT
- Підключення WalletConnect v2
- Аудит смарт-контрактів (зовнішній або автоматизований)
- Тестування на реальних пристроях
- Передача вихідних кодів та інструкція з деплою
- Підтримка протягом 30 днів після релізу
Перед публічним релізом обов'язковий зовнішній аудит — гаманець зберігає ключі користувачів безпосередньо. Ми маємо 10+ років досвіду в блокчейн-розробці, сертифіковані фахівці з безпеки та гарантія на код 12 місяців. Замовте розробку мультичейн гаманця з аудитом та підтримкою. Зв'яжіться з нами — оцінимо ваш проєкт за 2 дні. Отримайте консультацію з архітектури та термінів вже сьогодні.







