Generación de dirección de red de prueba incorrecta [python]

Estoy tratando de generar una dirección de red de prueba sin éxito. La dirección de red principal funciona bien. Aquí está mi código. La dirección de testnet generada a partir de este código es: CNFNz61dzQ2NQ9RCnjJFrm2de7nLbbT9xSv, que tiene un formato incorrecto.

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

Actualización: finalmente encontré una solución. Parece que hubo un problema en la línea.

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

al importar bytes sin procesar en una cadena

Así que importé la estructura y reemplacé el código anterior con:

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

http://gobittest.appspot.com/Address fue realmente útil, gracias.

Respuestas (1)

No publicó el resultado incorrecto que obtuvo ... Como no soy un especialista en Python y no conozco las llamadas de la biblioteca, tengo una idea: es posible que desee colocar su clave privada aquí y agregar imprimir ( s) después de cada paso como comandos de depuración y comparar línea por línea. Acabo de comprobar la clave privada y la clave pública, la página devuelve el mismo resultado que su dirección principal. Si ingresa en el paso 4 el "6f", obtiene esta dirección de testnet: "mpGvZCV4DYnVLZJWMfeCHa1L3VvC1hetT8".

Cuando termine, puede editar su pregunta y mostrar cómo la solucionó, o ampliar la pregunta con sus resultados.