Las direcciones bitcoin o bitcoin address es una cadena única de número y letras que nos permiten enviar y recibir nuestras monedas de forma segura en la red Bitcoin. Pero ¿Cómo se genera una dirección bitcoin? ¿Cuál es su secreto?. Pues bien acá te contamos todo sobre este proceso.

Antes de comenzar, es indispensable mencionar que este artículo está dirigido a aquellos usuarios que poseen ciertos conocimientos sobre Bitcoin y el mundo criptográfico. Así que te recomendamos primeramente que repases ciertos temas propios de este mundo con el fin de que los comprendas. Con esto tendrás bien claro la relación que guardan con Bitcoin y la creación de direcciones. Entre estos artículos están el de criptografía asimétrica, función hash, algoritmos SHA-256 y ECDSA.

Ahora demos un breve repaso sobre qué es una dirección de Bitcoin. Puedes dar un vistazo en nuestro artículo ¿Qué es una dirección Bitcoin? para ampliar tus conocimientos.

Bien, en el mundo de las criptomonedas, una dirección es un identificador, el lugar al que se asocia y destina una determinada cantidad de criptomonedas. Por lo que cualquier persona que desee enviar o recibir criptomonedas necesitará disponer siempre de una dirección. En Bitcoin, las direcciones públicas tienen generalmente esta apariencia: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa. Son un conjunto de letras y números alternados cuya longitud varía entre 26 y 32 caracteres.

Para crear una dirección, hacen falta un total de 9 pasos que explicaremos detalladamente a continuación.

Proceso para crear una dirección Bitcoin

El proceso para crear una dirección Bitcoin primeramente se inicia con la generación de una clave privada. Esta nos proporcionará el uso exclusivo de los fondos. A partir de ésta, se genera una clave pública, que nos permitirá compartir información con otras personas sin poner en riesgo nuestros fondos. La obtención de la clave pública a través de la clave privada se debe gracias a la aplicación del algoritmo ECDSA. Una implementación muy eficiente de la criptografía de curva elíptica, donde se emplea como punto generador a la curva secp256k1 para obtener la clave pública.

Entonces, una vez generadas este par de claves, se da inicio al proceso de generar las direcciones públicas de Bitcoin.

1.- Seleccionar la clave pública obtenida a partir del proceso anterior. Es decir, de la aplicación del algoritmo ECDSA a la clave privada. La cual debe tener una apariencia similar a ésta:

0250863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b2352

2.- Aplicar un hashing a la clave pública por medio de la implementación del algoritmo SHA-256. Este algoritmo permite generar outputs (salidas) de extensión fija a partir de inputs (entradas) de extensión variable, que son irreversibles. Por lo que son unidireccionales y no es posible deducir la clave privada a través de la pública.

Luego de aplicar la función hashing obtendremos una secuencia de 256 bits:

0b7c28c9b7290c98d7438e70b3d3f7c848fbd7d1dc194ff83f4f7cc9b1378e98

3.- Hashear de nuevo la salida obtenida anteriormente, aplicando en este caso el algoritmo RIPEMD-160. Con el cual produce obtendremos una secuencia de 160 bits:

f54a5851e9372b87810a8e60cdd2e7cfd80b6e31

4.- Añadir el byte de versión usado para la red principal de Bitcoin (0x00) delante de la salida obtenida de la aplicación del algoritmo de hashing RIPEMD-160. Con esto obtendremos una dirección Bitcoin en formato hexadecimal, que se verá así:

00f54a5851e9372b87810a8e60cdd2e7cfd80b6e31

Y al añadir este byte también permite identificar y distinguir las direcciones Bitcoin de otras criptomonedas que también emplean el protocolo.

5.- Realizar el hash con el algoritmo SHA-256 al resultado obtenido del RIPEMD-160. Este paso es necesario como mecanismo de verificación para comprobar que la dirección de Bitcoin está bien escrita.

ad3c854da227c7e99c4abfad4ea41d71311160df2e415e713318c70d67c6b41c

6.- Aplicar el hash con el algoritmo SHA-256 al resultado del hash anterior. Con este paso se concatena la dirección obtenida. Como ya mencionamos, el algoritmo SHA-256 se aplica dos veces como mecanismo de verificación.

c7f18fe8fcbed6396741e58ad259b5cb16b7fd7f041904147ba1dcffabf747fd

7.- Elegir los 4 primeros bytes del último hash SHA-256, que representan el checksum de la dirección Bitcoin. En este ejemplo serían:

c7f18fe8

8.- Agregar los 4 bytes del checksum del punto anterior, al hash extendido RIPEMD-160 del punto 4. Esto es una dirección binaria de Bitcoin de 25 bytes:

00f54a5851e9372b87810a8e60cdd2e7cfd80b6e31c7f18fe8

9.- Convertir el resultado de la cadena de bytes utilizando la codificación Base58Check, utilizada para codificar las direcciones de Bitcoin. Con lo que la cadena de bytes se transformará en una cadena base58.

1PMycacnJaSqwwJqjawXBErnLsZ7RkXUAs

Este es el formato más empleado para las direcciones de Bitcoin. Esto es asi porque la codificación Base58Check convierte la cadena de bytes en un conjunto de números y letras mayúsculas y minúsculas más fáciles de distinguir. Aunque siguen siendo caracteres ilegibles.

Este es todo el proceso cuyo termino es crear una dirección bitcoin para que podamos usarla como deseemos.

¿Cuánto sabes, criptonauta?

¿La generación de direcciones en Bitcoin tiene la capacidad de generar direcciones únicas en todo momento?

¡CIERTO!

Una de las más poderosas características del proceso de generación en Bitcoin es que este es capaz de crear direcciones únicas e irrepetibles para Bitcoin para todos sus usuarios en todo momento.

Generalidades de las direcciones Bitcoin

  1. Cada dirección pública de Bitcoin pesa aproximadamente unos 25 bytes.
  2. Están conformadas por una longitud de entre 26 y 32 caracteres.
  3. Pueden comenzar con el número 1, para direcciones estándar (P2PKH) o el número 3, para las direcciones multifirmas (P2SH). Así mismo, las direcciones SegWit inician con bc1 (bech32). Por otro lado, las direcciones testnet de Bitcoin comienzan por m o 2.
  4. La implementación de Base58Check entre sus muchas funciones, impide el uso de caracteres como O, I (en mayúsculas), y l (en minúscula) a fin de evitar que estos se confundan con el número 0 ó el número 1.

¿Te resultó útil este artículo?
Puntuación media: 4
➜ ¡Comparte el conocimiento y promueve la revolución descentralizada!