@accountnujen

Как имея seed фразу получить список bitcoin ключей?

Есть Seed фраза: "forest puppy trophy ice salad train ballet wave adopt regular august".
Если её импортировать в кошелёк electrum и сделать экспорт ключей, то я получу вот такой список
spoiler

17NpJ8uCYpFgZWG3hUjGm3ve8GfrXAfmzx	p2pkh:L1oRXmJYkFqt3kCLME4d3mNhorSWKaPwevjn95V5nCVBFXVhAzFQ
19C68DXYt6XaELy16DyQXtAFbcGjCFhcE8	p2pkh:L3U4JCZn8bQHSx2GV4VJe6NAZx545q7ey8UaNZjR1vM4NPQ9pdxY
19EJYpp46jH8XY8SFudPZHepktRwN3tsVh	p2pkh:L4FTTh5ckeoxz8z8DpUGKENMhXg1Mejp11obeorLt9X924pgRT7g
1F5jcNDJfTxDn5h17RwWZDvH6N3JHP3BSu	p2pkh:L1K1A5Mvp1sm1f4NwFve8nDfV8aexcdm3bkFb8esMUUBCkpPLv9h
1DtSxSgFMjTJthT2e1k14krCiLNiXnNibU	p2pkh:KxocQizDzbdusQ7oq5Morhdjcg5NwdGDumTDAr1vLprpjuGRHFhe
18qNmFdfNubHhdd4TEp81crEesvqGZhXTd	p2pkh:L5fBaKpJTveSjefrhZ2k3FbDkB7iUNDxYCSPoXnFXF2AenaLJMFA
1MndS1pVV8kGk2thxSdXNDqdyA6bQckkt4	p2pkh:KwUvVTRokJx4WzMho55PL1nXn7wmKwtAUZ8gJQrazN83jruaYayJ
и так далее 30 строк



Я хочу сделать тоже самое в офлайне с помощью php.
Я выполнил composer require bitwasp/bitcoin и попытался запустить вот это: https://github.com/Bit-Wasp/bitcoin-php/blob/1.0/e...
Во первых получил 2 ошибки :
Deprecated: Return type of BitWasp\Bitcoin\Mnemonic\Bip39\Wordlist\EnglishWordList::count() should either be compatible with Countable::count(): int

Во вторых получил просто строку:
4617d28cc8303495c9167fd232513a4a4b82de51b7489f7e0a0e58e04c271e605b9584f81a5c7fff812def73d47df89d3cdbb4fff416e363fc3fe4081020ce72


Подскажите, как получить список ключей?
  • Вопрос задан
  • 262 просмотра
Пригласить эксперта
Ответы на вопрос 1
@accountnujen Автор вопроса
Код на питоне по генерации всех типов ключей, которые есть в 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)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы