
Por qué tu dirección no se parece a la suya: formatos de dirección y por qué fallan los envíos
Tarde o temprano, todo el mundo en autocustodia se topa con el mismo momento desconcertante. Copias tu dirección de recepción para enviarte algo de Bitcoin y no se parece a las direcciones que has visto antes. O un exchange la rechaza. O envías Bitcoin Cash a algo que parece exactamente una dirección de Bitcoin y te pasas una hora desagradable averiguando qué ha ocurrido.
Nada de esto es arbitrario. Los formatos de dirección codifican información real sobre cómo pueden gastarse las monedas, y en cuanto sabes leerlos la confusión se evapora casi entera.
Una dirección es un conjunto de condiciones de gasto
El modelo mental útil no es «una dirección es un número de cuenta». Es este: una dirección es una descripción comprimida de lo que tiene que ser cierto para que estas monedas se muevan.
Envía a una dirección que empieza por 1 y la condición es una clave pública concreta debe producir una firma. Envía a una dirección bc1q… de las largas y la condición puede ser dos claves concretas deben firmar ambas. La misma cadena, el mismo dinero, reglas completamente distintas: y el formato de la dirección es la manera que tiene la cadena de decirte qué reglas se aplican.
Por eso proliferaron los formatos. Cada vez que Bitcoin ganó una forma nueva de bloquear monedas, necesitó una forma nueva de escribir dónde estaban bloqueadas.
Los formatos que te encontrarás en Bitcoin
Legacy — 1… El original. Pago a hash de clave pública: una clave, una firma. Soportado en todas partes y el más caro de gastar, porque los datos de la firma cuentan íntegros contra el tamaño del bloque.
Script — 3… Pago a hash de script. Las monedas quedan bloqueadas a un script en lugar de a una clave: un quórum multifirma, un bloqueo temporal, lo que sea. La dirección es un hash de las condiciones, así que desde fuera no puedes saber cuáles son. Así fue también como se coló el SegWit temprano por compatibilidad.
SegWit nativo — bc1q… Bech32. Los datos de firma se trasladaron a una estructura testigo aparte, lo que abarató el gasto y arregló la maleabilidad de las transacciones. Bech32 va en minúsculas, tiene una suma de verificación más fuerte que base58 y está diseñado para que las erratas se detecten en lugar de aceptarse en silencio.
El SegWit nativo viene en dos longitudes, y la diferencia importa:
- 42 caracteres en total — P2WPKH. Una clave, una firma.
- 62 caracteres en total — P2WSH. Un script, por ejemplo una multifirma 2 de 2.
Taproot — bc1p… El más nuevo. Mejor privacidad y gastos complejos más baratos, a cambio de que algunos servicios antiguos aún no lo acepten.
Por qué una dirección de SSP parece rara
Aquí es donde la gente se sorprende, y tiene una explicación satisfactoria.
SSP es un monedero multifirma 2 de 2. Tus monedas no están bloqueadas a una sola clave: están bloqueadas a un script que exige firmas tanto de la extensión de tu navegador como de tu teléfono. Eso significa que una dirección de Bitcoin de SSP es P2WSH, no P2WPKH, así que es la forma larga de bc1q: 62 caracteres en lugar de los 42 a los que está acostumbrada la mayoría.
Si llevas rato mirando tu dirección pensando que parece demasiado larga, es que debe serlo. La longitud extra es el hash de un script 2 de 2 en vez del hash de una única clave pública. La dirección es más larga porque las condiciones son más ricas.
Esto a veces hace tropezar a servicios antiguos que solo comprueban por patrón la forma corta. Es una limitación de su lado —P2WSH tiene una década—, pero conviene saber por qué ocurre el error, porque el mensaje suele ser el poco útil «dirección no válida».
Cada cadena tomó decisiones distintas
SSP admite varias cadenas UTXO, y cada una escribe las direcciones multifirma a su manera:
| Cadena | Tipo de script en SSP | La dirección se ve así |
|---|---|---|
| Bitcoin | P2WSH | bc1q… (62 caracteres) |
| Litecoin | P2WSH | ltc1q… |
| Bitcoin Cash | P2SH | bitcoincash:p… |
| Dogecoin | P2SH | empieza por 9 o A |
| Zcash | P2SH | t3… |
| Ravencoin | P2SH | empieza por r |
| Flux | P2SH | t3… |
Litecoin siguió de cerca el diseño de Bitcoin y solo cambió el prefijo legible, y por eso sus direcciones resultan familiares. Zcash y Flux usan una versión de dos bytes, lo que da el característico prefijo t3 para las direcciones de script. Dogecoin eligió su propio byte de versión, así que sus direcciones de script empiezan por 9 o A, nada que ver con sus conocidas direcciones D… de clave única.
Lo importante es que los prefijos de dirección de una cadena son constantes a nivel de consenso, no una cuestión de marca. Son la razón por la que un monedero puede rechazar una dirección antes de que envíes nada.
La trampa de Bitcoin Cash y por qué existe CashAddr
Hay un episodio histórico que conviene conocer porque puede costarte dinero de verdad.
Cuando Bitcoin Cash se bifurcó de Bitcoin en 2017, heredó exactamente el formato de dirección de Bitcoin: los mismos bytes de versión, 0x00 para direcciones de clave y 0x05 para direcciones de script. Una dirección BCH legacy y una dirección BTC legacy eran indistinguibles. No parecidas. Idénticas en su estructura.
La gente enviaba BTC a direcciones BCH y BCH a direcciones BTC constantemente, porque ningún programa podía diferenciarlas. Las monedas no se destruían —la misma clave privada controla ambas—, pero recuperarlas exigía importar claves en un monedero de la otra cadena, algo que muchos usuarios no podían hacer con seguridad.
CashAddr fue la solución: un formato al estilo bech32 con prefijo bitcoincash:, deliberadamente incompatible con el de Bitcoin para que enviar entre cadenas falle de forma ruidosa en lugar de tener éxito en silencio. Por eso SSP muestra las direcciones de Bitcoin Cash con el prefijo completo. Parece recargado. Lo recargado es justamente la función.
Por qué fallan los envíos y qué significa cada fallo
«Dirección no válida». Normalmente un fallo de suma de verificación: una errata, un pegado truncado, una cadena bech32 con mayúsculas y minúsculas mezcladas. Bech32 no distingue mayúsculas, pero no debe mezclarlas; algunas rutas de copiar y pegar estropean esto. A veces significa que el servicio emisor no admite tu formato.
«Tipo de dirección no admitido». El servicio reconoce la dirección pero no envía a ella: normalmente un exchange antiguo que nunca añadió Taproot, o que solo maneja SegWit en su forma corta. No es tuyo el problema que hay que arreglar; usa otra vía de retirada o una dirección intermedia.
Cadena equivocada del todo. Aquí te protege el prefijo legible de bech32: bc1 y ltc1 son distintos, y los monederos lo comprueban. Las cadenas base58 son más arriesgadas, porque una dirección válida de Dogecoin también es estructuralmente válida en varias otras cadenas.
Se envió, pero no llegó nada. O estás mirando el explorador de la cadena equivocada, o los fondos fueron a una dirección válida que no es tuya. No existe la revocación.
Las reglas prácticas
Copia, nunca escribas a mano. Todos los formatos llevan suma de verificación precisamente porque los humanos escriben mal. No la hagas trabajar en algo que no le tocaba.
Antes que nada, cuadra el prefijo con la cadena. Bitcoin es bc1, 1 o 3. Litecoin es ltc1, L o M. Bitcoin Cash es bitcoincash:. Ese único vistazo caza los errores caros.
Espera que las direcciones multifirma sean más largas. Si usas SSP o cualquier monedero basado en scripts, la forma larga es la correcta. La longitud no es síntoma de un error.
Manda una prueba pequeña cuando el destino sea nuevo, especialmente a un exchange y especialmente con cantidades grandes. La comisión es trivial frente a la alternativa.
Usa una dirección de recepción nueva cuando tu monedero te la ofrezca. Reutilizar direcciones enlaza tus transacciones entre sí a ojos de cualquiera que mire la cadena. Evitarlo no cuesta nada.
Los formatos de dirección parecen trivialidades arbitrarias hasta que caes en que cada uno es una afirmación sobre cómo pueden moverse las monedas. En cuanto los lees así, recibir en tu monedero deja de ser un acto de fe y pasa a ser algo que puedes comprobar de verdad, que es justamente el sentido de tener tus propias claves.


