Las direcciones de Bitcoin distinguen entre mayúsculas y minúsculas, un rasgo poco habitual en los identificadores que manejan los usuarios. En ZeroNet, red descentralizada que las empleaba como direcciones de sitio, ese detalle provocaba pérdidas de información: al copiar una URL a mano, la mayúscula podía desaparecer y dejar un rastro en minúsculas del que ya no se podía reconstruir el original. ¿Se puede recuperar la dirección correcta a partir de su versión en minúsculas y sin saber si la entrada tiene sentido?
La clave está en la estructura de una dirección de Bitcoin. No codifica una clave pública, sino su hash más un checksum de cuatro bytes calculado como SHA256 doble. El conjunto se traduce con base58, un esquema que omite los caracteres visualmente ambiguos (0, O, I, l) y los símbolos conflictivos en URL. Eso significa que solo las letras alfabéticas admiten dos formas válidas, lo que reduce el espacio de búsqueda a 2^n variantes para n letras.
Un primer intento en Python iterando todas las combinaciones de mayúsculas y minúsculas y validando el checksum resultó inviable: tras casi dos minutos seguía sin terminar. Reescrito en Rust, el mismo enfoque encontró la dirección original (1Lbcfr7sAHTD9CgdQo3HTMTkV8LK4ZnX71) en 34 segundos. El artículo describe la optimización posterior: tratar la dirección como un número grande, sumar o restar constantes en lugar de reescribir y volver a descodificar la cadena, y validar el checksum de forma incremental. El proyecto terminado está disponible como btccaserestore, una herramienta pensada para procesos automatizados de archivado que deban distinguir entre entradas genuinas y ruido sin gastar ciclos innecesarios.
