Qué es una dirección de Bitcoin
May 17, 2022Alguna vez te preguntaste que son todas esas letras y números extraños y que significan realmente? En este post vamos a ver que es una dirección de Bitcoin y como funciona.
Aquí tienes una dirección de Bitcoin:
19ewDAKXkr7TfUJdmQM2LzTCuHxp8jNZG3
Como puedes ver es una mezcla de números y letras que empiezan con el dígito “1” (Si ves una dirección de Bitcoin que no empieza con el número “1” es muy probable que sea una nueva dirección de Bitcoin generada a través del protocolo Segwit). Esta cadena de caracteres es lo que los usuarios se envían unos a otros para saber hacia dónde enviar los Bitcoins.
Una dirección de Bitcoin puede representar una persona o algo mas, como por ejemplo un script de pago (llamado P2SH, pero eso es otro blog post :)). La dirección de Bitcoin también puede ser representada por un código QR para hacer mas fácil y directo el manejo de la dirección. Si te estas preguntando todavía como funcionan, vas muy bien! sigue leyendo!
Aquí, es donde entra en juego la criptografía asimétrica de Llave Pública/Llave privada! En este post te explico básicamente como funciona la llave pública y llave privada.
Repasemos: Las dos llaves son un par en donde la pública depende de la privada: La llave privada es generada aleatoriamente, y la llave pública es generada a partir de la llave privada. Bueno, ahora que tienes un mejor entendimiento de la criptografía básica de llave pública/privada, vamos a ver como afecta esto a Bitcoin!
Cómo afecta esto a Bitcoin?
En Bitcoin, la llave pública es usada para recibir fondos y la privada para firmar transacciones. Un usuario puede enviar una cantidad de btc a otro en una transacción y “firmar” esta transacción con su propia llave privada y enviar su llave pública hacia cualquier otra persona. Esta “firma” puede ser validada por cualquier persona en la red (sin revelar la llave privada) para saber si la persona tiene el derecho de gastar esa cantidad de btc en ese momento.
En resumen, una persona puede “firmar” una transacción unívocamente con su llave privada y cualquier persona con la llave pública correspondiente, puede verificar que la “firma” viene de la persona que posee la llave privada. Todo esto, sin revelar la llave privada.
Nota: Por razones de privacidad y seguridad, las firmas generadas con una misma llave privada, pueden diferir unas de otras en diferentes transacciones.
La relación entre la llave privada y la llave pública esta basada en una función matemática “de una sola dirección” (aka “Hash Function”) que es irreversible, esto significa que dado una entrada de datos en la función, obtenemos un resultado, y con solo este resultado, es imposible saber la entrada de datos de la función.
Mas claro:
F(x) = H
“F” es la función (Hashing Function) y “x” es los datos. Cuando aplicamos la función “F” a los datos “x”, obtenemos el resultado “H”. Si solo poseemos “H” es imposible obtener el valor de “x”. Existen muchas funciones criptográficas de este estilo, Bitcoin utiliza una función llamada multiplicación por curvas elípticas como base criptográfica para generar llaves públicas seguras.
Vamos a ver que existen otras funciones criptográficas en la creación de una dirección de Bitcoin. Este es un ejemplo que describe como se genera una dirección de bitcoin a partir de una llave privada.
Vale remarcar nuevamente, que no hay ninguna forma de averiguar la llave privada a partir de la llave pública o de la dirección de Bitcoin.
Generando la Llave Privada
Vamos a ver como obtener la llave privada, si eres un lector sin conocimientos técnicos, puede resultar un poco pesado este párrafo, así que puedes saltar a la curiosidad directamente, o quédate conmigo y aprenderás mas en profundidad como funciona Bitcoin! :)
Para generar la llave privada en Bitcoin se elige un número aleatoriamente entre 1 y 2 ²⁵⁶. Es responsabilidad del desarrollador de software, elegir el tipo de algoritmo aleatorio para seleccionar ese número. Lo mas importante es que la fuente de aleatoriedad elegida tenga la suficiente entropía para no ser predecible o repetible. En palabras mas simples, es MUY importante asegurar que la llave privada sea generada lo mas aleatoriamente posible. No es recomendable que los desarrolladores escriban sus propias funciones aleatorias o usen alguna provista por el lenguaje de programación. Lo mas recomendable es usar un generador de números pseudo-aleatorio que es criptográficamente seguro con una semilla de suficiente entropía.
Curiosidad acerca las direcciones de BTC
Si una dirección de Bitcoin proviene de una llave privada que solo puede ser un numero entre 1 y 2 ²⁵⁶, nos quedaremos algún día sin direcciones de Bitcoin? Bueno, primero debemos darnos una idea de que tan grande es 2 ²⁵⁶. Es un número tan grande que es RIDICULO!! Para compararlo, 2 ²⁵⁶ es aproximadamente igual a 10⁷⁷ en sistema decimal, y el universo visible esta estimado que contiene alrededor de 10 ⁸⁰ partículas! Entonces, es seguro decir que no nos quedaremos sin direcciones de Bitcoin! Otra curiosidad es que algunos cálculos estiman que existe una dirección de bitcoin disponible por cada 64 átomos en este planeta!!! 🤯🤯🤯🤯
Convirtiendo la Llave Pública a Dirección de Bitcoin
Cómo llegamos desde la llave pública hacia la dirección de Bitcoin? Pues de la misma manera que venimos trabajando! Aplicamos una “función de encriptamiento de una sola dirección” a la llave pública. Vas a escuchar mucho acerca de funciones de encriptamiento o “Hashing Functions” en Bitcoin y Blockchain, así que acostúmbrate! :)
En Bitcoin, las dos funciones de Hashing para generar una dirección son: “Secure Hash Algorithm” (SHA) y “RACE Integrity Primitives Evaluation Message Digest” (RIPEMD), específicamente las variaciones SHA256 y RIPEMD160.
Primero, tomamos la llave pública, aplicamos la función SHA256 y luego a este resultado aplicamos la función RIPEMD160! Este doble hash, nos deja a un solo paso de la dirección final de Bitcoin!
Hay solo un paso mas en este proceso!! Necesitamos codificar el resultado del doble hash como “Base58”. 🤔 Huh:??? Si te estas preguntando que es “Base58” es normal! Ja!
Base58 es un formato de codificación basado en texto binario que fue creado para usar específicamente en Bitcoin. Ya se, no te ayuda mucho esto verdad? Vamos a entenderlo mejor explicando so uso:
El objetivo de Base58 es hacer una dirección de Bitcoin mas legible para humanos, lo que hace Base58 es excluir caracteres que puedan llegar a ser confusos, como por ejemplo el número cero (que puede confundirse con la letra “O”). Los caracteres que excluye son: “0”, “O”, “o”, “l”, “I” y los símbolos “+” y “/”.
Una capa de seguridad extra se agrega a Base58, para prevenir errores de transcripción. Base58Check es otro formato de codificación que tiene como objetivo prevenir enviar bitcoins a direcciones inexistentes. Este formato es usado por la wallet que enviar los btc, y puede usarlo para validar que la dirección de Bitcoin es valida.
Si me seguiste hasta aquí, debo felicitarte y quiero que hagas algo para festejar, por que acabas de aprender algo muy interesante e importante sobre Bitcoin y Blockchain! Te felicito por invertir este tiempo en tu crecimiento y tu conocimiento!
Si estas dispuesto a seguir creciendo y aprendiendo sobre Blockchain y Bitcoin, puedes unirte a nuestro newsletter en español, haciendo click aquí!
Si quieres aprender mas sobre Bitcoin y las Criptomonedas, puedes chequear este curso preparado para entender la tecnología detrás de las criptos y operar de forma segura sacándole el mejor provecho.
Descarga Guía Gratuita 11 Formas de Ganar Dinero con las Criptomonedas!
Hemos preparado una guía gratuita con 11 Formas de Ganar Dinero con las Criptomonedas, con links y recursos para que entiendas las mejores formas para sacarle provecho a tus criptomonedas.