Estoy buscando una biblioteca Bitcoin simple y fácil de usar para Python.
Lo que quiero hacer es verificar que puedo ingresar una clave privada hexadecimal que quiero y obtener la clave pública esperada en formato comprimido y la dirección 1Btc...
Miré cryptotools en github que parecía prometedor y fácil de usar, pero no aceptaría un valor hexadecimal que no fuera un múltiplo de 2. Sé que suena extraño, pero quiero poder ingresar un hexadecimal valor como c12 y hacer que funcione como se esperaba (a menos que tenga que ingresar 0c12 y eso funcionará, con el cero inicial descartado). Espero que cuando ingrese 0cfa721d esto se interprete como big endian.
bitcoinlib parece prometedor, pero lo encuentro confuso y lo he intentado durante un par de horas pero no estoy seguro de cómo obtener lo que quiero.
Me pregunto si esta es una relación matemática estricta. Por ejemplo, ¿podría haber un número arbitrario o infinito de claves de publicación de la clave privada? ¿Hay alguna manera de asegurarme de obtener la clave pública que quiero de la clave privada? Quiero probar las claves privadas conocidas con la clave pública y la dirección BTC generada que corresponde a las claves y direcciones privadas conocidas, para poder tratar de averiguar cómo quien generó estas direcciones a partir de las opciones de claves privadas que puedo intentar replicar y hacer lo mismo. yo mismo.
Gracias por cualquier ayuda o sugerencia.
Para este caso tan reducido, puedes echar un vistazo a https://github.com/circulosmeos/bitcoin-in-tiny-pieces
Tiene cada operación codificada para facilitar su comprensión, aislada en un archivo diferente, pero son fáciles de unir o usar directamente desde la línea de comandos: por ejemplo:
$ echo 0x01 | ./bitcoin-public-from-private.py | ./bitcoin-address-from-public-key.py
Y para la pregunta:
Por ejemplo, ¿podría haber un número arbitrario o infinito de claves de publicación de la clave privada?
En principio, de una clave privada solo se deriva una clave pública: pero esta se puede codificar en tres direcciones de Bitcoin diferentes . Normalmente sólo se utilizan uno o dos de estos formatos.
Esto es en el caso más simple, sin considerar casos más complejos introducidos más tarde en Bitcoin (como claves HD , etc.)...
mike d
myprivatekey.to_public().to_address('P2PKH', compressed=True)