Glosario / Direcciones y claves
Clave pública sin comprimir
- ¿Qué es una clave pública sin comprimir?
- Una clave pública sin comprimir escribe las dos coordenadas de un punto de la curva detrás de un prefijo 0x04, ocupa 65 bytes y hoy sobrevive sobre todo en claves generadas antes de 2012.
El primer software de Bitcoin registraba los valores completos de x y de y, y por eso las monedas de 2009 y 2010 están detrás de direcciones derivadas de claves de 65 bytes. Después, SegWit cerró la puerta al formato, ya que BIP-143 prohíbe las claves sin comprimir en los programas de testigo de versión 0 y ninguna dirección bc1q puede usar una. Si usted está recuperando una billetera de papel antigua, este es el detalle que decide si sus fondos aparecen.
Cómo funciona
Una clave pública sin comprimir tiene una estructura tan literal como su nombre. Un byte de prefijo 0x04 anuncia el formato, luego 32 bytes dan la coordenada x y después otros 32 bytes dan la coordenada y, en total 65 bytes. Para leerla no hay que calcular nada: las dos mitades del punto ya están ahí, y precisamente por eso la eligió la implementación original con el hardware de la época.
Las reglas de validez nunca han tratado este formato de forma especial en la capa base. Un nodo que valida un gasto heredado (legacy) de tipo pay-to-public-key-hash o pay-to-script-hash acepta una clave sin comprimir sin objeciones, y las monedas que en 2010 quedaron bloqueadas en una clave así siguen siendo gastables sin ningún plazo. Lo que cambió es todo lo construido encima: las billeteras BIP-32 solo derivan claves comprimidas, así que una frase semilla nunca puede producir una clave sin comprimir, y SegWit las hizo inválidas dentro de los gastos de versión de testigo 0.
El costo de los 32 bytes adicionales se paga en el momento de gastar. Una entrada heredada que lleva una clave comprimida ocupa alrededor de 148 vbytes; la misma entrada con una clave sin comprimir ocupa alrededor de 180 vbytes, aproximadamente un 22 % más por un gasto idéntico. Consolidar una docena de esas entradas durante un pico de comisiones es donde esa diferencia deja de ser una curiosidad.
Dónde aparece
Tres objetos todavía entregan claves sin comprimir a la gente, y los tres datan de la misma época.
Las billeteras de papel impresas por los sitios generadores de 2011 a 2013 solían producir una dirección que empezaba por 1 y una cadena en formato de importación de billetera que empezaba por 5, la marca del lado sin comprimir del formato. Las monedas físicas de la serie Casascius, acuñadas entre 2011 y 2013, ocultaban el mismo tipo de cadena de caracteres bajo un holograma que deja a la vista cualquier manipulación. Y las claves privadas exportadas del software de billetera más antiguo son completamente anteriores al cambio.
Recuperar una clave antigua
La trampa no es la codificación, sino que una misma clave privada produce dos direcciones distintas. Calcular el hash de la clave de 65 bytes da una dirección heredada; calcular el hash de la versión comprimida de 33 bytes de la misma clave da otra completamente distinta. Si se importa la clave en un software moderno que da por hecha la compresión, el saldo puede parecer cero mientras las monedas siguen intactas en la otra dirección.
Las billeteras que manejan bien el material antiguo, entre ellas Electrum, comprueban ambas derivaciones cuando usted barre una clave en lugar de importarla. Barrer es además la operación más segura: traslada las monedas a una dirección controlada por su frase semilla actual, de modo que una impresión que ha pasado tiempo en un cajón, fotografiada por un teléfono o vista por un propietario anterior, deja de poder gastar nada. Compruebe las dos formas de dirección en un explorador de bloques antes de dar por fallida una recuperación.