Falsche Testnet-Adressgenerierung [python]

Ich versuche erfolglos, eine Testnetzadresse zu generieren. Die Hauptnetzadresse funktioniert einwandfrei. Hier ist mein Code. Die generierte Testnet-Adresse aus diesem Code lautet: CNFNz61dzQ2NQ9RCnjJFrm2de7nLbbT9xSv, was ein falsches Format hat.

import os
import ecdsa
import hashlib
import base58

#private_key = os.urandom(32).encode("hex")
private_key = 
"7c7cd1c5f24b255ae113459dccdba8df3ff2e76ca0932d02f81be27311c64e32"

print "this is my private key: " + private_key

sk = ecdsa.SigningKey.from_string(private_key.decode("hex"), curve = 
ecdsa.SECP256k1)

vk = sk.verifying_key

public_key = ('\04'+ vk.to_string()).encode("hex")

print "this is my public key: " + public_key

ripemd160 = hashlib.new('ripemd160')

ripemd160.update(hashlib.sha256(public_key.decode("hex")).digest())

ripemd160.digest()
#main network id
#middle_man = '\00' + ripemd160.digest()

#testnet id
middle_man = '\6f' + ripemd160.digest()

checksum = 
hashlib.sha256(hashlib.sha256(middle_man).digest()).digest()[:4]

binary_addr = middle_man + checksum

addr = base58.b58encode(binary_addr)

# main address = 19kyG9Q5QXMEZSpte6fpTeo1BWKV5Pa6ch
print "testnet address: " + addr

Update: Endlich habe ich eine Lösung gefunden. Anscheinend gab es ein Problem in der Leitung

middle_man = '\6f' + ripemd160.digest()

beim Importieren von Rohbytes in eine Zeichenfolge

Also importiere ich struct und ersetze den obigen Code durch:

middle_man = struct.pack('=B',111) + ripemd160.digest()

http://gobittest.appspot.com/Address war wirklich hilfreich, danke.

Antworten (1)

Sie haben nicht das falsche Ergebnis gepostet, das Sie erhalten ... Da ich kein Python-Spezialist bin und die Bibliotheksaufrufe nicht kenne, habe ich eine Idee: Sie möchten vielleicht Ihren privaten Schlüssel hier platzieren und print ( s) nach jedem Schritt als Debug-Befehle und vergleichen Zeile für Zeile. Ich habe gerade den Privkey und den Pubkey überprüft, die Seite liefert das gleiche Ergebnis wie Ihre Hauptadresse. Wenn Sie in Schritt 4 das „6f“ eingeben, erhalten Sie diese Testnet-Adresse: „mpGvZCV4DYnVLZJWMfeCHa1L3VvC1hetT8“.

Wenn Sie fertig sind, können Sie Ihre Frage bearbeiten und zeigen, wie Sie sie behoben haben, oder die Frage mit Ihren Ergebnissen erweitern.