Створення надійних криптогаманців для бізнесу
Ми команда блокчейн-інженерів із сумарним досвідом 12+ років у production-рішеннях (Ethereum, Solana, Polygon, Arbitrum, Optimism). За 5 років роботи реалізували понад 50 кастомних гаманців для DeFi-протоколів, централізованих бірж, NFT-маркетплейсів та enterprise-рішень. Наші спеціалісти — автори opensource-бібліотек для BIP-32 та BIP-39, сертифіковані за стандартами безпеки OWASP. Кожен гаманець проходить повний цикл аудиту: статичний аналіз (Slither), fuzzing (Echidna) та перевірку на відповідність BIP-44. Професійна розробка криптогаманця під ключ може заощадити вашому проекту до 60% бюджету на інтеграцію порівняно з типовими рішеннями.
Як працює ієрархічна генерація ключів?
HD-гаманець використовує три ключові стандарти. BIP-39 визначає перетворення ентропії в мнемонічну фразу (12 або 24 слова). BIP-32 будує дерево ключів через CKD-функцію: hardened derivation (з апострофом у шляху) захищає майстер-ключ — навіть якщо зловмисник отримає дочірній private key, він не зможе відновити parent. BIP-44 задає єдиний формат шляхів: m / purpose' / coin_type' / account' / change / index. Наприклад, перший Ethereum-адрес: m/44'/60'/0'/0/0. Офіційні test vectors з репозиторію BIP-39 підтверджують коректність реалізації.
import * as bip39 from "bip39";
import { HDKey } from "@scure/bip32";
import { keccak256 } from "ethereum-cryptography/keccak";
import { secp256k1 } from "ethereum-cryptography/secp256k1";
function generateMnemonic(strength: 128 | 256 = 128): string {
return bip39.generateMnemonic(strength);
}
async function mnemonicToSeed(mnemonic: string, passphrase: string = ""): Promise<Uint8Array> {
if (!bip39.validateMnemonic(mnemonic)) {
throw new Error("Invalid mnemonic");
}
return bip39.mnemonicToSeed(mnemonic, passphrase);
}
| Властивість | Hardened derivation (') | Non-hardened derivation |
|---|---|---|
| Захист майстер-ключа | Так (через HMAC-SHA512 із закритим ключем) | Ні (розкриття дочірнього ключа дозволяє обчислити parent public key) |
| Індекси | >2^31 | 0..2^31-1 |
| Типове застосування | Coin type, account | Change, address index |
Які мережі підтримуються?
Наші гаманці працюють з Ethereum, Polygon, Arbitrum, Optimism, Base, BNB Chain та Solana. CoinType для кожної мережі задається за стандартом BIP-44: 60 для Ethereum, 501 для Solana тощо. При необхідності додаємо будь-яку EVM-сумісну або кастомну мережу через зміну coin_type та додаткове налаштування RPC.
interface DerivedAccount {
path: string;
privateKey: Uint8Array;
publicKey: Uint8Array;
address: string;
xpub: string;
}
function deriveAccount(seed: Uint8Array, accountIndex: number = 0, addressIndex: number = 0, coinType: number = 60): DerivedAccount {
const hdKey = HDKey.fromMasterSeed(seed);
const path = `m/44'/${coinType}'/${accountIndex}'/0/${addressIndex}`;
const derived = hdKey.derive(path);
if (!derived.privateKey) throw new Error("Failed to derive private key");
const publicKey = secp256k1.getPublicKey(derived.privateKey, false);
const address = publicKeyToAddress(publicKey);
return { path, privateKey: derived.privateKey, publicKey, address, xpub: derived.publicExtendedKey };
}
Безпека ключів: апаратне шифрування
Використовуємо апаратне шифрування: Secure Enclave (iOS) та Android Keystore. Для веб-версій — Web Crypto API з PBKDF2 (600 000 ітерацій) та AES-256-GCM, що відповідає актуальним NIST-рекомендаціям. Приклад шифрування keystore:
async function encryptKeystore(privateKey: Uint8Array, password: string): Promise<EncryptedKeystore> {
const salt = crypto.getRandomValues(new Uint8Array(32));
const iv = crypto.getRandomValues(new Uint8Array(16));
const passwordKey = await crypto.subtle.importKey("raw", new TextEncoder().encode(password), "PBKDF2", false, ["deriveBits", "deriveKey"]);
const encryptionKey = await crypto.subtle.deriveKey({ name: "PBKDF2", salt, iterations: 600_000, hash: "SHA-256" }, passwordKey, { name: "AES-GCM", length: 256 }, false, ["encrypt", "decrypt"]);
const encrypted = await crypto.subtle.encrypt({ name: "AES-GCM", iv }, encryptionKey, privateKey);
return { version: 3, crypto: { ciphertext: Buffer.from(encrypted).toString("hex"), cipher: "aes-256-gcm", kdf: "pbkdf2", kdfparams: { dklen: 32, salt: Buffer.from(salt).toString("hex"), c: 600_000, prf: "hmac-sha256" }, iv: Buffer.from(iv).toString("hex"), mac: "" } };
}
Multi-account та watch-only режим: гаманець підтримує кілька BIP-44 акаунтів (зміна account index) та watch-only доступ через xpub. Це дозволяє показувати баланси без приватних ключів — ідеально для cold storage моніторингу.
class HDWalletManager {
private hdKey: HDKey;
constructor(seed: Uint8Array) { this.hdKey = HDKey.fromMasterSeed(seed); }
getAccount(accountIndex: number): DerivedAccount { /* ... */ }
getAccountXpub(accountIndex: number): string { return this.hdKey.derive(`m/44'/60'/${accountIndex}'`).publicExtendedKey; }
static deriveAddressFromXpub(xpub: string, addressIndex: number): string {
const hdKey = HDKey.fromExtendedKey(xpub);
const derived = hdKey.derive(`m/0/${addressIndex}`);
return publicKeyToAddress(derived.publicKey!);
}
}
Підписання транзакцій: підтримуємо EIP-1559 (Ethereum) та legacy-транзакції. Використовуємо viem для підписання:
async function signTransaction(privateKey: Uint8Array, txParams: { to: string; value: bigint; data: string; chainId: number; nonce: number; maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; gas: bigint }): Promise<string> {
const account = privateKeyToAccount(`0x${Buffer.from(privateKey).toString("hex")}`);
return await account.signTransaction({ type: "eip1559", ...txParams });
}
Коли потрібна кастомна розробка HD-гаманця?
Якщо ваш проект вимагає нестандартних crypto-шляхів (наприклад, для NFT-кастодіального зберігання або DeFi-агрегатора), мультичейн-підтримки без зовнішніх мостів або апаратної інтеграції — типові рішення неефективні. Ми будуємо архітектуру з нуля: ви отримуєте код, який працює на всіх L2, не залежить від версій бібліотек і легко розширюється. Приклад: для одного клієнта ми реалізували гаманець з підтримкою 15 мереж та кастомним gas-менеджментом — термін 3 тижні.
Покроковий процес розробки HD-гаманця
- Аналіз вимог — визначаємо необхідні мережі, типи транзакцій, рівень безпеки (холодне/гаряче зберігання).
- Проектування архітектури — обираємо BIP-шляхи, стек (Foundry/Hardhat), схему шифрування.
- Реалізація ядра — генерація мнемоніки, derivation key, підписання транзакцій.
- Інтеграція з мережами — налаштування RPC, підтримка EIP-1559, мультичейн-маршрутизація.
- Безпека та аудит — статичний аналіз, fuzzing, перевірка на OWASP top10.
- Тестування — прогін test vectors, імпорт у MetaMask/Ledger, E2E-тести.
- Деплой та документація — CI/CD, API-документація, навчання команди.
Що входить в роботу
При замовленні розробки HD-гаманця під ключ ви отримуєте:
- Вихідний код з коментарями (TypeScript / React Native)
- Документацію з інтеграції та API
- Доступ до закритого репозиторію та CI/CD
- Тестовий набір (unit, integration, e2e)
- Консультаційну підтримку на етапі впровадження
- Гарантію на код (6 місяців безкоштовних доопрацювань за специфікацією)
Сумісність та тестування
Перед релізом прогоняємо офіційні test vectors з BIP-39 та BIP-32. Перевіряємо імпорт мнемоніки в MetaMask, Ledger Live та Trust Wallet.
| Тест | Перевірка |
|---|---|
| Імпорт у MetaMask | Та ж мнемоніка → ті ж адреси |
| Імпорт у Ledger Live | Через стандартний BIP-44 шлях |
| Імпорт у Trust Wallet | 12/24 слів, перша адреса збігається |
| Test vectors BIP-39 | Офіційні тест-вектори з репозиторію |
Вартість розробки розраховується індивідуально, виходячи зі складності та необхідного функціоналу. Зв'яжіться з нами для консультації — ми підготуємо архітектуру та точний кошторис за 2 робочих дні. Замовте розробку HD-гаманця — отримайте готовий продукт, який масштабується під будь-які блокчейн-завдання.







