¿Cómo se calcula la clave pública a partir de una clave privada codificada en base58?

Seguí esta publicación y creé una clave privada para la billetera bitcoin. La publicación dice que después de encontrar el entero aleatorio de 256 bits (32 bytes), se debe anteponer el número de versión y se le debe agregar la suma de verificación. Esto produce un hexadecimal de 37 bytes. Ahora estoy tratando de encontrar la clave pública asociada con esta clave privada. Aprendí que la clave PÚBLICA se calcula aplicando la curva ECDSA secp256k1 en la clave privada. Pero el algoritmo ECDSA solo acepta 32 bytes como entrada.
Entonces, ¿qué estoy haciendo mal?
Gracias de antemano.

Respuestas (1)

La clave privada es solo la entropía 32B que generaste. Entre billeteras, esta clave privada se puede codificar en un formato que proporciona más información, como la red (principal/prueba/alt) y si se utilizó una clave pública comprimida o sin comprimir. Esta codificación se denomina formato de importación de billetera.

  • version(1B) (red principal 0x80/red de prueba 0xEF)
  • privatekey(32B)
  • 0x01marcador de compresión (1B)
  • checksum(4B)

https://teachbitcoin.io/wallets.html#/2

Checksum es de todo lo que le precede. Los datos finalmente se codifican en base58.

Para tomar estos datos WIF y producir la clave pública, la billetera solo necesita extraer la clave privada 32B) y calcular el punto de clave pública

  • private_key * Generator_point = public_key(x,y)

El punto de clave pública x, y resultante es su clave pública. Si el mercado de compresión está activado, tome la coordenada x y anteponga un 0x02 o 0x03 dependiendo de si es par o impar.

  • clave pública comprimida:0x02/0x03 + x_coordinate(32B)
  • clave pública sin comprimir:0x04 + x_coordinate(32B) + y_coordinate(32B)
Muchas gracias..fue muy útil!!. Estoy empezando a aprender sobre blockchain. Gracias de nuevo :)
¡Impresionante! ¡Feliz de que haya sido útil!