Как можно создать список биткоин-ключей, используя мнемоническую фразу (seed фразу)?

Как можно использовать PHP для импорта Seed фразы и создания списка ключей, аналогичного тому, что происходит при экспорте ключей из кошелька Electrum? Я попытался использовать библиотеку `bitwasp/bitcoin` и пример кода из официального репозитория, но столкнулся с ошибками. Как мне успешно выполнить эту операцию?
  • 6 августа 2024 г. 0:43
Ответы на вопрос 2
Для создания списка биткоин-ключей из мнемонической фразы можно использовать библиотеку `bitwasp/bitcoin`. Вот пример кода на PHP, который позволит вам импортировать Seed фразу и создать список ключей:

```php
require 'vendor/autoload.php'; // Подключаем библиотеку bitwasp/bitcoin

use BitWasp\Bitcoin\Bitcoin;
use BitWasp\Bitcoin\Key\Deterministic\HierarchicalKeyFactory;
use BitWasp\Bitcoin\Key\HierarchicalKeySequence;
use BitWasp\Bitcoin\Mnemonic\MnemonicFactory;
use BitWasp\Bitcoin\Mnemonic\Bip39\Bip39SeedGenerator;

// Ваша Seed фраза
$mnemonic = "your seed phrase here";

// Создаем seed с помощью Seed Generator
$seedGenerator = new Bip39SeedGenerator();
$seed = $seedGenerator->getSeed($mnemonic);

// Создаем мастер-ключ из seed
$hdFactory = new HierarchicalKeyFactory();
$master = $hdFactory->fromEntropy($seed);

// Создаем список ключей
$sequence = new HierarchicalKeySequence();
$keys = [];
for ($i = 0; $i < 10; $i++) {
    $keys[] = $master->deriveChild($sequence, $i);
}

// Выводим список ключей
foreach ($keys as $key) {
    echo $key->getPrivateKey() . "\n";
}
```

Помимо указанного кода, убедитесь, что у вас установлена библиотека `bitwasp/bitcoin` через Composer, и все необходимые зависимости подключены.

Если у вас возникают ошибки при выполнении этого кода, убедитесь, что ваши Seed фраза правильно сформирована и что другие зависимости правильно установлены. В случае возникновения конкретных ошибок, вы можете предоставить их для получения более точной помощи.
Код на питоне по генерации всех типов ключей, которые есть в Electron, а именно Bip44, Bip49 и Bip84. Меняем внизу переменную mnemonic на свою и получаем все ключи. Кто далёк от питона, как и я: в начале сделайте из консоли: pip install bip_utils 

from bip_utils import (
    Bip39WordsNum, Bip39MnemonicGenerator, Bip39SeedGenerator, Bip44Changes, Bip44Coins, Bip44, Bip49Coins, Bip49, Bip84Coins, Bip84
)

def generator(type):
    print(f"Type: {type}")
    BipType, BipCoins = bip_mapping[type]
    bip_mst_ctx = BipType.FromSeed(seed_bytes, BipCoins.BITCOIN)
    address = bip_mst_ctx.PublicKey().ToAddress()

    # базовый адрес
    print(f"Base address: {address}")

    # генерация адресов
    bip_acc_ctx = bip_mst_ctx.Purpose().Coin().Account(0)
    bip_chg_ctx = bip_acc_ctx.Change(Bip44Changes.CHAIN_EXT)

    # проверка всех адресов
    for i in range(10):
        bip_addr_ctx = bip_chg_ctx.AddressIndex(i)
        address = bip_addr_ctx.PublicKey().ToAddress()

        # проверка остальных
        print(f"{i}. Address: {address}")


bip_mapping = {
    44: (Bip44, Bip44Coins),
    49: (Bip49, Bip49Coins),
    84: (Bip84, Bip84Coins)
}

# задаём seed фразу
mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"
seed_bytes = Bip39SeedGenerator(mnemonic).Generate()
 print(f"Seed: {mnemonic}")

# генерируем все типы ключей
for key in bip_mapping.keys():
        generator(key)
Похожие вопросы