Создаем кристально-чистые кошельки для разных монет

Durov

Новорег
19 Май 2023
3
0
1
Telegram
Сегодня я расскажу вам, про библиотеку hdwallet на питоне, ссылка на саму библиотеку - тык
Сам принцип создания кошелька:
Python:
from hdwallet import HDWallet
from hdwallet.utils import generate_entropy
from hdwallet.symbols import BTC as BITCOIN
from typing import Optional
import json


def create_btc():
    STRENGTH: int = 160
    LANGUAGE: str = "english"
    ENTROPY: str = generate_entropy(strength=STRENGTH)
    PASSPHRASE: Optional[str] = None

    hdwallet: HDWallet = HDWallet(symbol=BITCOIN, use_default_path=False)

    hdwallet.from_entropy(
        entropy=ENTROPY, language=LANGUAGE, passphrase=PASSPHRASE
    )

    hdwallet.from_index(84, hardened=True)
    hdwallet.from_index(0, hardened=True)
    hdwallet.from_index(0, hardened=True)
    hdwallet.from_index(0)
    hdwallet.from_index(0)
    btc_wallet = json.dumps(hdwallet.dumps(), indent=4, ensure_ascii=False)
    vallet = []
     = json.loads(btc_wallet)
    vallet.append(['mnemonic'])
    vallet.append(['private_key'])
    vallet.append(['wif'])
    vallet.append(['hash'])
    vallet.append(['addresses']['p2wpkh'])
    return vallet
Данный код создаст нам новый кошелек битка и вернет список с основными данными для входа в кошелек через условный траст, или в будущем вам может пригодиться wif для реализации функции отправки битков или другой монеты. На этом можно было бы закончить тему, но есть пару нюансов, а именно:


Python:
hdwallet.from_index(84, hardened=True)
hdwallet.from_index(0, hardened=True)
hdwallet.from_index(0, hardened=True)
hdwallet.from_index(0)
hdwallet.from_index(0)
вот эти строчки кода, что они означают? Это путь адресов которые нам в итоге выведет функция, помимо этого кошелька, к нему создается очень много дочерних, но дочерние нам не нужны, потому что в условном трасте при входе по сид-фразе нам будет отображаться другой кошелек, чтобы этого избежать - мы должны прописать этот путь индивидуально под каждую монету, для этого:
  1. Создаем кошелек для битка используя эту функцию
  2. Переходим на сайт - https://iancoleman.io/bip39/ (не реклама)
  3. Вставляем полученную сидку и выбираем нужную нам крипту в параметре coin
  4. Спускаемся ниже и видим:
Derivation Path
  • BIP32
  • BIP44
  • BIP49
  • BIP84
  • BIP141
Для многих монет траст берет BIP84 самый первый path
В случае с битком это - m/84'/0'/0'/0/0
В случае с лайткоином это - m/84'/2'/0'/0/0
Получается наш код должен выглядеть так:


Python:
from hdwallet import HDWallet
from hdwallet.utils import generate_entropy
from hdwallet.symbols import LTC
from typing import Optional
import json


def create_ltc():
    STRENGTH: int = 160
    LANGUAGE: str = "english"
    ENTROPY: str = generate_entropy(strength=STRENGTH)
    PASSPHRASE: Optional[str] = None

    hdwallet: HDWallet = HDWallet(symbol=LTC, use_default_path=False)

    hdwallet.from_entropy(
        entropy=ENTROPY, language=LANGUAGE, passphrase=PASSPHRASE
    )

    hdwallet.from_index(84, hardened=True)
    hdwallet.from_index(2, hardened=True)
    hdwallet.from_index(0, hardened=True)
    hdwallet.from_index(0)
    hdwallet.from_index(0)
    ltc_wallet = json.dumps(hdwallet.dumps(), indent=4, ensure_ascii=True)
    wallet = []
     = json.loads(ltc_wallet)
    wallet.append(['mnemonic'])
    wallet.append(['private_key'])
    wallet.append(['wif'])
    wallet.append(['hash'])
    wallet.append(['addresses']['p2wpkh'])
    return wallet
Спасибо за прочтение данной темы
 

Pashok576

Новорег
19 Май 2021
3
0
1
Годно, а то я на ts-node мучался с созданием криптокошелька