Сегодня я расскажу вам, про библиотеку hdwallet на питоне, ссылка на саму библиотеку - тык
Сам принцип создания кошелька:
сиськи:
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 = []
data = json.loads(btc_wallet)
vallet.append(data['mnemonic'])
vallet.append(data['private_key'])
vallet.append(data['wif'])
vallet.append(data['hash'])
vallet.append(data['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
В случае с битком это - m/84'/0'/0'/0/0
В случае с лайткоином это - m/84'/2'/0'/0/0
Получается наш код должен выглядеть так:
pussy:
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 = []
data = json.loads(ltc_wallet)
wallet.append(data['mnemonic'])
wallet.append(data['private_key'])
wallet.append(data['wif'])
wallet.append(data['hash'])
wallet.append(data['addresses']['p2wpkh'])
return wallet
Спасибо за прочтение данной темы, не будьте вафлей