Стандарт сід-фрази для Bitcoin, також відомий як BIP-39 (Bitcoin Improvement Proposal 39), є одним з найпоширеніших і використовується для генерації приватних ключів з мнемонічної фрази. Цей стандарт дозволяє користувачам створювати легко запам'ятовувані та безпечні резервні копії їхніх криптовалютних гаманців.
### Основні аспекти BIP-39:
1. **Мнемонічна фраза**: Сід-фраза складається з 12, 15, 18, 21 або 24 слів. Ці слова вибираються з заздалегідь визначеного словника, що складається з 2048 слів.
2. **Генерація сід-фрази**:
- Сід-фраза генерується випадковим чином.
- До випадково згенерованих біт додається контрольна сума.
- Ці біти розбиваються на групи по 11 біт, які потім перетворюються в слова з словника.
3. **Перетворення мнемонічної фрази в сід**:
- Використовується функція PBKDF2 (Password-Based Key Derivation Function 2) для перетворення мнемонічної фрази і (необов'язкового) пароля в сід.
4. **Детерміновані гаманці (BIP-32)**:
- Сід-фраза використовується для створення головного (master) приватного ключа і ланцюга (chain) коду, що дозволяє генерувати ієрархічно детерміновані (HD) ключі.
- Цей процес описується в стандарті BIP-32.
### Приклад мнемонічної фрази:
```plaintext
abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about
```
### Генерація сід-фрази і ключів за допомогою бібліотеки `bip39`:
Ось приклад на JavaScript:
1. Встановіть бібліотеки `bip39` і `bitcoinjs-lib`:
```sh
npm install bip39 bitcoinjs-lib
```
2. Використовуйте наступний скрипт для генерації сід-фрази і ключів:
```javascript
const bip39 = require('bip39');
const bitcoin = require('bitcoinjs-lib');
// Генерація випадкової мнемонічної фрази
const mnemonic = bip39.generateMnemonic();
console.log('Mnemonic:', mnemonic);
// Перетворення мнемонічної фрази в сід
const seed = bip39.mnemonicToSeedSync(mnemonic);
const root = bitcoin.bip32.fromSeed(seed);
// Генерація першої адреси і приватного ключа
const path = "m/44'/0'/0'/0/0";
const child = root.derivePath(path);
console.log('Address:', bitcoin.payments.p2pkh({ pubkey: child.publicKey }).address);
console.log('Private Key:', child.toWIF());
```
### Важливі застереження:
1. **Безпека**:
- Зберігайте вашу мнемонічну фразу в безпечному місці.
- Не передавайте її нікому.
- Використовуйте офлайн методи для генерації і збереження сід-фрази, щоб уникнути витоку інформації.
2. **Резервне копіювання**:
- Записуйте мнемонічну фразу на папір або інший фізичний носій.
- Зберігайте резервні копії в різних безпечних місцях.
Дотримання цих стандартів і рекомендацій допоможе забезпечити безпеку ваших криптовалютних активів.
QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.