python-bitcoinlib | Crear Claves Privadas, Claves Públicas y Direcciones - ¿Cómo Hacerlo?

Estoy tratando de usar la biblioteca python-bitcoinlib pero sus documentos no son del todo claros para mí. Soy programador pero bastante nuevo en Python y no muy versado en el protocolo Bitcoin.

¿Cuál es el proceso, en términos de código, con la biblioteca, para lo siguiente?

  1. Generando una clave privada
  2. Crear una clave pública
  3. Crear una dirección a partir de la clave pública

Intenté varias cosas y no estoy completamente seguro de qué argumentos proporciono para qué funciones y qué funciones se supone que debo usar en el proceso.

Apreciaría mucho, y creo que me ayudaría más si me proporcionaran un código para lograr cada paso.

Pude seguir el protocolo de Bitcoin (específicamente, la referencia del desarrollador y la guía del desarrollador en bitcoin.org para hacer todas esas cosas, y estoy buscando específicamente cómo hacerlo con la biblioteca, para poder tener mi código completo compatible con otra funcionalidad de la misma, ya que me gustaría usar la biblioteca para fines adicionales.

Respuestas (2)

Lo siento, no estoy familiarizado con python-bitcoinlib, pero si su objetivo es simplemente crear claves/direcciones, puede usar esta biblioteca (divulgación: la escribí) de la siguiente manera:

Generando una clave privada

private = PrivateKey.random()

oprivate = PrivateKey.from_hex('yourhexkeyhere')

oprivate = PrivateKey.from_wif('yourwifhere')

y luego para obtener el uso de representación hexadecimal private.hex()deprivate.wif()

Crear una clave pública

public = private.to_public()
public.hex()
'044cc549c65f4b0b7713d7a763a01221f85fd34602ac8ff0386995349c55de7111d16b5...'
public.hex(compressed=True)
'034cc549c65f4b0b7713d7a763a01221f85fd34602ac8ff0386995349c55de7111'

Crear una dirección a partir de la clave pública

public.to_address('P2PKH')
'16B2Ghyu5C1CofKfXF2Zi9JycqaAyaE8cd'
public.to_address('P2WPKH')
'bc1qtqshpjw8kr7jlk27gcvj7pvzt8lp6vn5dc2f24'

Si usa esta biblioteca, utilícela solo como una herramienta de aprendizaje y no para enviar monedas reales, ya que aún puede haber algunos errores.

Algunos ejemplos de uso ya están disponibles en el repositorio.