Formatos de llaves públicas y privadas

Clase 13 de 16Curso de Bitcoin para Developers

Resumen

Las llaves públicas y privadas son más que importantes para una wallet. Sobre todo la privada, ya que si perdemos esta, perdemos nuestras cripto. Las mismas pueden representarse en distintos formatos para transportarse y que sea más amena su lectura.

Representación de llaves públicas y privadas

Podremos encontrar diferentes formas de representar las llaves públicas y privadas para que sea más fácil para una persona leer la información o transcribirla.

Formatos de llaves privadas

Las llaves privadas pueden representarse en cuatro formatos distintos:

Formato de llaves privadas
  • Raw: formato en crudo de 32 bytes poco legible.
  • Hex: formato hexadecimal más legible para un usuario.
  • WIF (Wallet Import Format): el formato de importación de billeteras codificado en Base58 es el ideal para transportar claves privadas. Incluye un prefijo para identificar la red de la Blockchain y un algunos bytes de comprobación de la clave.
  • WIF-compressed: similar a WIF, comprimido y con otro tipo de sufijos para determinar de qué tipo de dirección se trata.

Base58
Tal vez conozcas la codificación Base64. Satoshi Nakamoto propuso Base58 como un subconjunto de Base64 que elimina ambigüedades y lo vuelve más legible para un usuario.
Concretamente, se elimina el número 0 y la letra O (mayúscula), se elimina la I (mayúscula) y la L (minúscula). También se eliminan caracteres especiales para que sea más fácil el copy/paste de una clave y evitar saltos de líneas.

Formatos de llaves públicas

Las llaves públicas pueden representarse en dos formatos distintos.

Formato de llaves públicas

Los dos tipos son compatibles, tanto la llave pública comprimida como sin comprimir. Los algoritmos de curva elíptica Secp256k1 por detrás permiten esta compatibilidad. Claramente, la llave comprimida es mucho más amigable para el usuario y más utilizada en wallets.

Conclusión

Cada uno de estos formatos de llaves públicas y privadas representan la misma información. Por detrás de la conversión de un formato a otro existen complejos algoritmos criptográficos.

Es importante que, a no ser que tengas muy en claro el funcionamiento y la lógica de las fórmulas matemáticas y las técnicas de conversión, no realices tus propias implementaciones y te apoyes en librerías confiables ya desarrolladas por terceros en proyectos reales.


Contribución creada por: Kevin Fiorentino (Platzi Contributor).

Indicaciones para correr el código:
Crear un entorno virtual, e instala con pip estos módulos para que lo puedas correr correctamente: requests future cryptos