Claves
Cómo se controla la posesión de los bitcoins
Las claves se usan para controlar la posesión de los bitcoins.
Para "enviar" y "recibir" bitcoins, todo lo que necesitas es generar un par de clave privada y clave pública:
- La clave pública se coloca en el bloqueo de una salida cuando quieres "enviar" bitcoins a alguien en una transacción.
- La clave privada se usa para crear una firma que desbloquea esa salida cuando quieres "gastarla" como entrada en una nueva transacción.
El par de clave privada y clave pública está conectado matemáticamente, igual que las firmas. La firma te permite dar una prueba de un solo uso de que eres el dueño de la clave privada a partir de la cual se creó la clave pública, sin tener que revelar la clave privada.
Este mecanismo se conoce como criptografía de clave pública. Existía antes de Bitcoin, y Satoshi simplemente lo usó como forma de controlar la posesión de las monedas.
Por último, en Bitcoin convertimos estas claves públicas en direcciones, que no son más que codificaciones amigables de las claves públicas. Entonces, cuando "envías" bitcoins a la dirección de alguien, en realidad estás bloqueando bitcoins a la clave pública de esa persona.
Clave Privada
Una clave privada es un número de 256 bits generado aleatoriamente. El rango de claves válidas va de 0 hasta un poco menos que el valor máximo de 256 bits (el límite exacto es n−1, ligado a la curva elíptica usada). Normalmente se muestra como una cadena hexadecimal de 32 bytes.
Clave Pública
La clave pública se calcula a partir de la clave privada por medio de multiplicación de curva elíptica. Es esencialmente un punto (coordenadas x, y) en la curva secp256k1.
Dirección
Una dirección es una codificación amigable de un script de bloqueo (generalmente basado en una clave pública).
Dirección Base58 (P2PKH)
La dirección heredada es el HASH160 de la clave pública, codificado en Base58Check con el prefijo 0x00 (empieza con "1"):
HASH160
Dirección (Base58)
Dirección Bech32 (P2WPKH)
La dirección segwit es el HASH160 de la clave pública, codificado en Bech32 con la versión de witness 0 (empieza con "bc1q"):