Wie wird eine Litecoin-Adresse generiert?

Wie wird eine Litecoin-Adresse generiert? Welches Hashing verwenden sie?

Beispielsweise werden Bitcoin-Adressen wie folgt generiert: https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses

Ich suche nach einer solchen Antwort, kann sie aber nirgendwo finden. Alle Litecoin-Suchen tauchen mit Bitcoin-Links auf.

Bitte geben Sie mir keine Litecoin-Adressgenerierungsseiten oder Brieftaschen zum Herunterladen. Ich möchte wissen, wie ich einen Litecoin-Adressgenerator manuell programmieren kann.

Antworten (2)

Litecoin verwendet genau das gleiche Verfahren, um Adressen zu generieren, der einzige Unterschied ist das Netzwerkpräfix.

In Schritt 4 (Versionsbyte vor dem RIPEMD-160-Hash hinzufügen) anstelle von 0x00Bitcoin verwenden

0x30für Litecoin Hauptnetz bzw

0x6Ffür Litecoin Testnetz.

Ihre Adresse sollte dann mit L beginnen und eine gültige Litecoin-Adresse sein.

Vollständige Sequenz:

0 - Einen privaten ECDSA-Schlüssel haben

18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725

1 - Nehmen Sie den entsprechenden öffentlichen Schlüssel, der damit generiert wurde (65 Bytes, 1 Byte 0x04, 32 Bytes entsprechen der X-Koordinate, 32 Bytes entsprechen der Y-Koordinate)

0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6

2 – Führen Sie SHA-256-Hashing für den öffentlichen Schlüssel durch

600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408

3 – Führen Sie RIPEMD-160-Hashing für das Ergebnis von SHA-256 durch

010966776006953D5567439E5E39F86A0D273BEE

4 - Versionsbyte vor RIPEMD-160-Hash hinzufügen ( 0x30für Litecoin-Hauptnetzwerk)

30010966776006953D5567439E5E39F86A0D273BEE

(Beachten Sie, dass die folgenden Schritte die Base58Check-Codierung sind, für deren Implementierung mehrere Bibliotheksoptionen verfügbar sind.)

5 – Führen Sie einen SHA-256-Hash für das erweiterte RIPEMD-160-Ergebnis aus

27872C1C5DF98F26A09EEBE7A048A52CCFFD647098EACDB6D5D48563B0DBE7B4

6 – Führen Sie einen SHA-256-Hash auf dem Ergebnis des vorherigen SHA-256-Hash aus

713B731B0E30DDD0B6E1F73E2EA2A1E298A35BBDB37FF13C593028515C3B2B50

7 - Nehmen Sie die ersten 4 Bytes des zweiten SHA-256-Hashes. Dies ist die Adressprüfsumme

713B731B

8 – Fügen Sie die 4 Prüfsummen-Bytes aus Stufe 7 am Ende des erweiterten RIPEMD-160-Hash aus Stufe 4 hinzu. Dies ist die 25-Byte-Binär-Litecoin-Adresse.

30010966776006953D5567439E5E39F86A0D273BEE713B731B

9 - Konvertieren Sie das Ergebnis aus einem Byte-String in einen Base58-String mit Base58Check-Codierung. Dies ist das am häufigsten verwendete Litecoin-Adressformat

LKKSCYdyWP7fJDMZ1KUDbpj3yPmQ22MQrv

War verwirrt, weil hier gezeigt wird, dass das Testnet-Präfix von Bitcoin 0x6fauch vorhanden ist. Anscheinend teilen Bitcoin und Litecoin das gleiche Testnet-Präfix.
$ python3.6 ltc_address_generator.py 0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6
LKKSCYdyWP7fJDMZ1KUDbpj3yPmQ22MQrv

Bitte versuchen Sie das folgende py-Skript und generieren Sie eine ltc-Adresse für Ihren öffentlichen Schlüssel.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import hashlib
import base58


def sha256(hexstr):
    """sha256 hash algorithm
    """
    return hashlib.new('sha256', bytes.fromhex(hexstr)).hexdigest()


def rip160(hexstr):
    """ripemd160 hash algorithm
    """
    return hashlib.new('ripemd160', bytes.fromhex(hexstr)).hexdigest()


def get_ltc_address(pubkey):
    """https://bitcoin.stackexchange.com/questions/65282/how-is-a-litecoin-address-generated
    """
    rip160_hash = "30" + rip160(sha256(pubkey.upper()).upper()).upper()
    sha256_hash = sha256(sha256(rip160_hash).upper()).upper()
    return base58.b58encode(bytes.fromhex(rip160_hash + sha256_hash[0:8]))


if __name__ == '__main__':
    import sys

    if len(sys.argv) != 2:
        print("[*] Usage: python %s publickey")
        sys.exit(1)

    print(get_ltc_address(sys.argv[1]))

# references
# https://en.bitcoin.it/wiki/Protocol_documentation#Addresses
# https://gist.githubusercontent.com/circulosmeos/97f2c155777434081cb56886c1b608be/raw/f960b4e89e86dcdf77fb6288c1005a7cb847cc98/easy-litecoin-address-from-public-key.py
# https://bitcoin.stackexchange.com/questions/65282/how-is-a-litecoin-address-generated
# https://bitcoin.stackexchange.com/questions/56923/is-this-how-to-generate-a-bitcoin-address-with-python
# https://iancoleman.io/bip39/