Clasifiqué 551 preguntas de recuperación de wallets: casi nadie perdió la semilla
Todo lo que se escribe sobre respaldos asume que el peligro es perder las doce palabras. Fui a mirar qué pregunta la gente que de verdad tuvo el problema.
De las 551 preguntas del tag wallet-recovery de Bitcoin Stack Exchange, sólo 5 son de alguien que perdió una palabra de la semilla. 429 son variantes de «tengo el respaldo y no puedo reconstruir la wallet».
Qué les falta a esas 429
No es la semilla. Es el registro de cómo se reconstruye la wallet a partir de ella: tipo de script, camino de derivación, red, y si había passphrase.
En Bitcoin Core ese registro tiene nombre y sintaxis: el descriptor de salida, documentado en doc/descriptors.md. Casi nadie lo anota, porque a nadie se lo entregan: la semilla viene con ceremonia —anotá estas doce palabras, ahora confirmá tres— y el descriptor no viene con ninguna.
Por qué la falta no avisa
Ésta es la parte que convierte un dato faltante en una tarde de pánico. La misma clave pública se puede escribir en más de un tipo de script, y cada uno produce una dirección distinta y perfectamente válida:
pkh(CLAVE)— direcciones que empiezan con1sh(wpkh(CLAVE))— empiezan con3wpkh(CLAVE)— empiezan conbc1qtr(CLAVE)— empiezan conbc1p
Son cuatro direcciones «tuyas» a partir de la misma clave, y tres pueden estar en cero. Nada falla, nada avisa. Restaurás, ves saldo cero, y el programa se comporta con absoluta normalidad porque hizo exactamente lo que le pediste — sobre la puerta equivocada.
A eso se le suma la passphrase, que tiene la misma propiedad: con BIP-39 cualquier texto que escribas produce una wallet válida y sólo el correcto abre la tuya. No hay mensaje de error porque no hay nada contra qué comparar.
El test que sale de estos números
Si el problema no es perder las palabras sino no poder reconstruir, entonces la pregunta correcta no es «¿puedo volver a escribir mis doce palabras?».
Es: con sólo lo que anotaste, ¿puede un software que nunca vio tu wallet reproducir tu primera dirección?
Esa pregunta se puede contestar sin arriesgar nada, porque la clave pública extendida no puede firmar. Un nodo lo confirma solo: getdescriptorinfo responde hasprivatekeys: false, y deriveaddresses imprime exactamente las direcciones que ese descriptor va a producir.
Y a diferencia del ritual de la semilla —confirmar tres palabras prueba que copiaste bien, no que el respaldo funcione— este test sí es comprobable: tipeás de tu papel, se deriva la dirección cero, y la cotejás contra la que tu wallet te muestra. Si coinciden, tu respaldo reconstruye la wallet. Si no, ya sabés qué te falta y no te enteraste el día que importaba.
La ceremonia hace ese cotejo en menos de dos minutos. Corre en tu navegador, nunca pide la semilla, y la página declara connect-src 'none' — no puede mandar nada a ningún lado, y eso está en el encabezado, se puede verificar.
Los límites de esto
Un recuento de preguntas mide lo que la gente preguntó, no lo que le pasó. Quien perdió la semilla del todo probablemente no escriba: ya sabe que no hay nada que hacer, y esa ausencia no aparece en el conteo. O sea que estos números no dicen «perder la semilla es raro»; dicen que entre los problemas que todavía tienen arreglo, casi ninguno es la semilla.
Que es, justamente, el conjunto donde sirve intervenir.