Загрузка...

[Python] Understanding Bitcoin

Thread in Articles created by AIexa Dec 6, 2022. (bumped Jun 11, 2025) 780 views

  1. AIexa
    AIexa Topic starter Dec 6, 2022 Лучший софт - lolz.live/threads/1634798/ :+rep: 12,241 Mar 24, 2020
    В этой статье мы посмотрим как получается адресс биткойна из сид фразы

    Что понадобится:
    - Python
    - Умение копипастить


    Теория
    Чтобы получить приват кей и паблик кей из сид фразы, нам нужно выполнить следующие действия:
    - Задействовать pbkdf2hmac_sha512 шифрование на нашу сид фразу, на 2048 кругов, с выходной длиной ключа в 64 байта, с солью 'mnemonic'
    - Задействовать hmac_sha512 на наш результат с предыдущего этапа с ключом 'Bitcoin seed'

    - Вычленить 32 байта, с левой стороны - это наш приват кей
    - Получить публичный ключ из приват кея, с помощью элиптическй кривой secp256k1 и скомпрессировать его, если у вас есть вопросы, что это за кривая, то вок доходчивое описание из вики, поймет даже школьник

    [IMG]


    Теперь у нас на руках есть паблик кей и мы можем получить адресс нашего битка
    - Делаем шифрование sha256 на паблик кей
    - Делаем шифрование Ripemd160 на на хэш из предыдущего этапа и прибавляем нулевой байт в начало
    - Делаем двойной sha256 на хэш из предыдущего этапа и берем из него 4 первых байта
    - Соединяем ripemd хэш с двойным хэшем 21 + 4 байт, у нас получаются 25 байтов в итоге
    - Шифруем это все в base58 и получаем адресс нашего битка


    Код

    Python
    import hashlib
    import hmac
    from ecdsa import SECP256k1, SigningKey
    import binascii
    import base58


    if __name__ == "__main__":
    seed = "mushroom orange black valve erase brother submit biology tortoise debate arrive slim"
    key = hashlib.pbkdf2_hmac('sha512', seed.encode("utf-8"), "mnemonic".encode("utf-8"), 2048, 64)
    master_key_chain_code = hmac.new('Bitcoin seed'.encode("utf-8"), key, hashlib.sha512)
    priv_key = binascii.unhexlify(master_key_chain_code.hexdigest())[:-32]

    priv = SigningKey.from_string(priv_key, curve=SECP256k1)
    pub = priv.get_verifying_key().to_string()
    public_key = pub.hex()[:64]
    public_key_to_int = int(public_key, 16)

    if public_key_to_int % 2:
    public_key = '02' + public_key
    else:
    public_key = '03' + public_key

    public_key_bytes = binascii.unhexlify(public_key)
    first_hash = hashlib.sha256(public_key_bytes)
    second_hash = hashlib.new('ripemd160', binascii.unhexlify(first_hash.hexdigest()))
    second_hash = binascii.unhexlify('00'+second_hash.hexdigest())
    double_hash = hashlib.sha256(second_hash)
    double_hash = hashlib.sha256(binascii.unhexlify(double_hash.hexdigest()))
    final_hash = second_hash.hex() + double_hash.hexdigest()[:8]

    adress = base58.b58encode(binascii.unhexlify(final_hash)).decode("utf-8")

    print(f"Private key: {priv_key.hex()}")
    print(f"Public key: {public_key}")
    print(f"Adress: {adress}")

    Результат
    Code
    Private key: a0ccf14c939faa07b896cd5fb306a37fb3f9cb041196c5364d0cca9dbd82e53a
    Public key: 03d1cc1f6bdea4d17eb7f2573d676f9ddb087f8b784c912c4466407781d8acfe38
    Adress: 18XzGRj3fBqLtkB2b9CfJT8zrHpRaGSacQ

    Проверяем правильность наших операций https://brainwalletx.github.io/#generator

    [IMG]
     
    This article was useful for you?
    You can thank the author of the topic by transferring funds to your balance
    Thank the author
  2. jevgensv98
    jevgensv98 Dec 6, 2022 Banned 419 Aug 14, 2022
    Теперь я смогу сделать свой Бинанс?
     
    1. xZhmih
      jevgensv98, сможешь сделать бизнес на своем бинансе
  3. Gaotan
    Gaotan Dec 6, 2022 Banned 2296 Dec 22, 2021
    Не до конца понимаю практичности этой статьи, так как если захочешь работать напрямую с блокчейном бтк, то придеться поднимать свою ноду, а там это уже вся эта генерация встроена
     
  4. DiWater
    DiWater Dec 6, 2022 Banned 203 Aug 17, 2022
    Годнота буду пользоваться!
     
  5. Fleep
    Fleep Dec 6, 2022 233 Oct 16, 2020
    Неплохо, с базой можно рандомно комбинировать эти фразы и тупо ****ить кошели
     
  6. bludboii
    bludboii Dec 6, 2022 Banned 159 Nov 18, 2021
    а другие токены получаются так же через шифрование?
     
Loading...
Top