Las billeteras son herramientas esenciales que permiten a los usuarios gestionar sus cuentas de blockchain, almacenar sus activos de forma segura y firmar transacciones para realizar cambios en el estado de la blockchain.
En esta publicación, cubriremos qué es una billetera, cómo se hacen las billeteras y cómo utilizan la criptografía de curva elíptica para generar y asegurar pares de claves privadas-públicas, derivar frases de semilla y facilitar interacciones seguras en la cadena de bloques.
Cada cuenta en la cadena de bloques se compone de un par de claves criptográficas; un conjunto de 2 claves que están vinculadas entre sí. En el contexto de las cadenas de bloques, este tipo de cuenta se llama típicamente Cuenta Propia Externa (EOA) y consta de una clave pública y una clave privada:
Clave pública: La dirección de tu billetera. Puede ser compartida con cualquier persona y otras personas (o contratos inteligentes) pueden usarla para enviarte criptomonedas.- Clave privada: La "clave de firma" que utilizas para firmar mensajes o transacciones. Cualquier persona que tenga acceso a la clave privada tiene control total sobre los fondos en la billetera.Este par de claves tiene una característica poderosa, llamada función de puerta trampa; lo que significa que es:
Fácil de averiguar la clave pública si se tiene la clave privada (A→B).- Imposible descubrir la clave privada si tienes la clave pública (B→A).
Las billeteras proporcionan una forma de saber qué mensajes o transacciones ha aceptado una billetera; ya que la clave pública del remitente de la transacción se puede recuperar de la firma de la transacción. Esto es esencial para evitar que se acepten transacciones falsas/maliciosas en la cadena de bloques.
Por ejemplo, Jarrod podría enviar una transacción afirmando que Abril le envió 5 ETH, incluso si ella nunca estuvo de acuerdo con esta transacción. Sin embargo, dado que la cadena de bloques verifica la firma de cada transacción, rápidamente rechazará la transacción, ya que la dirección recuperada de la firma no coincide con el "remite" de la transacción (es decir, Abril).
Blockchains como Ethereum utilizan ECDSA (Algoritmo de Firma Digital de Curva Elíptica) para comprobar si la clave pública recuperada de la firma de la transacción coincide con la clave pública de la persona que envió la transacción a la red.
A continuación, profundizaremos en cómo se deriva una clave pública utilizando una curva elíptica y una clave privada. Pero antes de eso, responderemos algunas otras preguntas que puedas tener sobre billeteras, como:
Esto permite a los usuarios recordar un solo conjunto de palabras para acceder a todas sus cuentas; cada una con un par de claves público-privadas individuales. Cualquier número de claves privadas nuevas se pueden derivar de una frase semilla única utilizando una función de derivación de claves específica (KDF).
Entonces, primero cubramos cómo se generan las frases semilla a través de la entropía aleatoria y cómo se pueden derivar las claves privadas de una frase semilla, antes de volver a visitar cómo se derivan las claves públicas de las claves privadas.
Para hacer esto, se genera un número aleatorio utilizando CSPRNG (Generador de números pseudoaleatorios criptográficamente seguro), que puedes hacer en tu navegador:
Este número aleatorio se llama entropía. Esta entropía se utiliza para crear el conjunto de palabras que forman una frase de inicio. En nuestro caso, 128 bits se traducen en 12 palabras, pero también es posible utilizar otras longitudes, como:
Entonces, ahora tenemos 128 bits de entropía + 4 bits del checksum, para hacer un total de 132 bits. A continuación, los 132 bits se convierten en binario; específicamente, se dividen en trozos de 11 bits.
Ahora tenemos un conjunto de 12 números binarios, cada uno de los cuales tiene una longitud de 11 bits. Pista: ¡tenemos 12 números y nuestra frase de semilla va a tener 12 palabras!
Recuerde que tenemos 2048 palabras en nuestra lista y que se eligió 2048 porque 2048 es 2^11, ya que hay 2048 números binarios diferentes posibles que se pueden hacer con 11 bits.
Ahora solo tenemos que convertir estos números binarios en palabras de nuestra lista de palabras. Esto se realiza utilizando el número binario como índice para buscar una palabra en la lista de palabras. es decir, si el número binario es 10, usamos la 9ª palabra de la lista (ya que comenzamos en el índice 0), por ejemplo:

Generando un valor de entropía aleatorio, dividiéndolo en fragmentos binarios y usando esos valores binarios como un índice para buscar palabras en una lista de palabras, llegamos a una frase de semilla aleatoria.
Imagina que olvidamos el paso de generación aleatoria de 128 bits y simplemente seleccionamos manualmente 12 palabras de la lista. Cada vez que seleccionamos una palabra, estamos seleccionando una opción en un conjunto de 2048 palabras.
Entonces, podemos decir que para que alguien más también adivine esta misma secuencia de palabras, necesita adivinar correctamente la misma palabra que nosotros con una probabilidad de 1/2048, 12 veces seguidas. En este momento, probablemente estás pensando, "ok, eso no suena tan difícil...", ¿verdad?*?*Pero, juguemos esto:
Imagina que comenzaste a adivinar en este momento, usando una computadora increíblemente potente que puede adivinar 1 billón de frases semilla por segundo. A esta máquina le llevaría 159 billones de años adivinar una frase semilla. O, (dependiendo en lo que creas), aproximadamente 11,000 veces más que la edad actual del universo.
¿Son mejores las frases de semilla de 24 palabras que las de 12?
Algunas billeteras optan por 128 bits (12 palabras), ¡pero las billeteras más modernas te piden que recuerdes 24 palabras para tu frase de semilla! ¡Lo cual es de nuevo, ridículamente grande!


El valor hash de 64 bytes de salida se puede utilizar para generar cuentas utilizando la lógica que se originó en otros estándares de Bitcoin; a saber, BIP-32 y, opcionalmente, una extensión de BIP-32, BIP-44.

Primero, el hash se divide en dos mitades, cada una de 32 bytes de tamaño:
La especificación de esta curva elíptica incluye un punto base, G, que se utiliza como punto de partida para crear otros puntos en la curva. A partir de este punto de partida, nos "movemos" alrededor de la curva un cierto número de veces (determinado por nuestra clave privada), de una manera específica. El punto de la curva en el que terminamos cuando detenemos este proceso será nuestra clave pública.
La forma en que nos “movemos” alrededor de la curva se llama multiplicación escalar. Al trabajar con curvas elípticas, un escalar se refiere a un número utilizado para escalar un punto en la curva. Tomamos el punto base G y aplicamos el número escalar para llegar a un nuevo punto en la curva al “estirar” ese punto.
El número escalar que aplicamos al punto base es nuestra clave privada; en pocas palabras, tomamos nuestro punto de partida G y lo multiplicamos escalarmente por nuestra clave privada para obtener nuestra clave pública.

En realidad, dado que la curva está definida sobre el campo primo ℤp, parece más bien un montón de puntos dispersos... pero todavía tiene las mismas propiedades de la curva elíptica.
Al final de este proceso de multiplicación escalar (saltando alrededor del número de veces), terminaremos en un nuevo punto en la curva, que es nuestra clave pública. Puede imaginar que este proceso se ve algo así:

Sin embargo, algunas blockchains como Abstract también admiten nuevos tipos de billeteras, llamadas cuentas de contratos inteligentes, que brindan más funcionalidades y permiten una seguridad más fuerte, mecanismos de recuperación y más.
Renuncia de responsabilidad: Las opiniones y puntos de vista expresados en este artículo son exclusivamente los del autor y no constituyen ningún consejo de inversión.
Las traducciones del artículo a otros idiomas son realizadas por el equipo de Gate Learn. A menos que se indique lo contrario, está prohibido copiar, distribuir o plagiar los artículos traducidos.





