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.
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.