No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Bitcoin para Developers

Curso de Bitcoin para Developers

Juan Sebastián Marulanda

Juan Sebastián Marulanda

Formatos de llaves públicas y privadas

13/16
Recursos

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

Aportes 16

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Un pequeño recordatorio, útil para ejecutar el Script del reto:
Cómo crear un entorno virtual e instalar paquetes pip en python.

  1. Creamos el entorno virtual
python -m venv nombre_venv
  1. Activamos el ambiente virtual
 .\nombre_venv\Scripts\activate

Ahora para ejecutar el Script, lo copiamos/descargamos de los recursos de la clase y le agregamos la extensión .py dentro de la carpeta ‘nombre_venv’

  1. Con el ambiente virtual activo ejecutamos el siguiente código para instalar las librerias necesarias
pip install requests future cryptos
  1. Por último ejecutamos el script
py nombre_venv\bitcoin_keys.py

Aqui está el código para ejecutarlo en un entorno.

python3 -m venv blockchain-env
source blockchain-env/bin/activate
pip3 install cryptos
pip3 install requests
python3 key-to-address-ecc-example.py

Billeteras de Papel

En estas billeteras tengo impresas las llaves pública y privada.

Formatos (de llaves).

  • Tanto llaves públicas como privadas se pueden representar en distintos formatos.
  • Agregan facilidad para que las personas puedan leer y transcribir llaves.

.
Formatos: llaves privadas.

Tipo Prefijo Descripción Ejemplo
Raw N/A 32 bytes 0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D
Hex N/A 64 dígitos Hexadecimales 1e99423a4ed27608a15a2616a2b0e9e52ced330ac530edcc32c8ffc6a526aedd
WIF 5 Base58Check con prefijo 0x80 5J3mBbAH58CpQ3Y5RNJpUKPE62SQ5tfcvU2JpbnkeyhfsYB1Jcn
WIF-compressed K o L Igual que el anterior + sufijo 0x01 KxFC1jmwwCoACiCAWZ3eXa96mBM6tb3TYzGmf6YwgdGWZgawvrtJ

.
Formatos: llaves públicas.

  • Comprimida: 03F028892BAD7ED57D2FB57BF33081D5CFCF6F9ED3D3D7F159C2E2FFF579DC341A
  • Sin comprimir: 04F028892BAD7ED57D2FB57BF33081D5CFCF6F9ED3D3D7F159C2E2FFF579DC341A07CD33DA18BD734C600B96A72BBC4749D5141C90EC8AC328AE52DDFE2E505BDB

Buen día, en este link hay un cuaderno de Colab, donde se puede ejecutar el código ya esta listo con la dependencia solo dar ctrl+enter en la celda y se ejecuta el código, como decía en linea sin instalar nada si no les funciona simplemente hacen una copia de ustedes y ya: https://colab.research.google.com/drive/1uJr0aBv3UQPpPLMB5plnbIoOEN4H5PGn?usp=sharing

Private Key (hex) is:  8b190f68eb4e8e297e23b40b6916f837b50688b9e1db8762d761c410d11204c2
Private Key (decimal) is:  62915763484503847160890079897021083875239575327126863714233910932760129832130
Private Key (WIF) is:  5JsYegPLv8NZsGoBbY9z28ADt8zqbFHhL8gVzQ1XCanuUZ7uD28
Private Key Compressed (hex) is:  8b190f68eb4e8e297e23b40b6916f837b50688b9e1db8762d761c410d11204c201
Private Key (WIF-Compressed) is:  L1t6hJqcuVYC4tiqmSWefxbhriJHUA4h1SuLxLZJJ89ccB39dp34
Public Key (x,y) coordinates is: (7197675130297107898742386717568837453194295022719731921067843943001533515301, 55479910122938569818543254464113349726433849579481412965593111117842121137304)
Public Key (hex) is: 040fe9bd60a3b4e8a00cde7c7814839ba447e8335791ce66371b470674d0e106257aa8842ead072d434c0db591cc9c0b9abf4564c2655bb7db35f59905679a9c98
Compressed Public Key (hex) is: 020fe9bd60a3b4e8a00cde7c7814839ba447e8335791ce66371b470674d0e10625
Bitcoin Address (b58check) is: 16hMGE3VRSXu8eBbFaLUR2EhGv1THkLue7
Compressed Bitcoin Address (b58check) is: 1CePtDnTvzFNmwmJwwvRP1iXk3JShGanMc

Ejecutando el codigo y me brinda la key privada y public y el btc address

RESUMEN CLASE 13:
FORMATOS DE LLAVES

I.- FORMATOS

  • Tanto llaves públicas como privadas se pueden representan en distintos formatos.

  • Agregan facilidad para que las personas puedan leer y transcribir llaves.

Formatos: Llaves privadas

Formatos: Llaves públicas

![](https://i.imgur.com/FbfhemE.png)
!\[]\(https://i.imgur.com/FbfhemE.png)
!\[image]\(https://imgur.com/FbfhemE)
![]()![](https://imgur.com/FbfhemE)

“A module you have imported isn’t available at the moment. It will be available soon.”

Se generaron las llaves publicas bajos distintos formatos, mencionados en el curso. Finalmente se obtuvo la direccion bitcoin.

<Private Key (hex) is:  b16b283d16abe0f3843cc6730e61a5042adb7475c2adf09631dfce4e8da7f40e
Private Key (decimal) is:  80248704551967633403318141118943285104738343460734753862985386429697164309518
Private Key (WIF) is:  5KARW1uFc3KY6acQqdaDdzmfSVZM8XmfpLPkYNut7raQoT3GpP6
Private Key Compressed (hex) is:  b16b283d16abe0f3843cc6730e61a5042adb7475c2adf09631dfce4e8da7f40e01
Private Key (WIF-Compressed) is:  L3Ab94ydTfEpFdMJDeRcnHz8fX3mrEpAKvbRBViQdFpU3jSfNAfX
Public Key (x,y) coordinates is: (83142563456670743538220110363282001641222369218482212793296363729031210599649, 1393382102868651299104042344384187089921538542533733303875880869672751989354)
Public Key (hex) is: 04b7d105f592f3355ce512e98a09b07ae33034ebafb4ffcd3f28df6803410e04e10314a056a984be333ce3f5c114359ca47f457056a745335aabef4ac908f8026a       
Compressed Public Key (hex) is: 02b7d105f592f3355ce512e98a09b07ae33034ebafb4ffcd3f28df6803410e04e1
Bitcoin Address (b58check) is: 15GyG39TAH4EDRueouNuJQpDZ6Vc6iYKSZ
Compressed Bitcoin Address (b58check) is: 12pebXX6FPomK7F6Gbs6mMzzLdh4dsFZgU
> 

Las diferencias que encontré son:
la llave privada lleva ejecutado en su código "wif"
la llave publica lleva en su código la llave publica comprimida