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.
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 0x00
Bitcoin verwenden
0x30
für Litecoin Hauptnetz bzw
0x6F
fü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 ( 0x30
fü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
$ 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/
Thalis K.
0x6f
auch vorhanden ist. Anscheinend teilen Bitcoin und Litecoin das gleiche Testnet-Präfix.