Conversor de direcciones de Bitcoin Cash: CashAddr ↔ Legacy

Pega una dirección BCH en cualquiera de sus dos formas y obtén la otra, junto con el tipo de dirección, la red y el hash subyacente. El checksum se verifica primero, así que una dirección mal escrita se rechaza en lugar de convertirse.

Acepta CashAddr con o sin el prefijo bitcoincash: (q… o p…), direcciones de testnet bchtest: y direcciones legacy Base58Check 1… / 3….

Se comprueba en tu navegador con JavaScript. Las direcciones nunca se suben ni se almacenan.

¿Qué es un conversor de direcciones de Bitcoin Cash?

Un conversor de direcciones de Bitcoin Cash traduce una misma cuenta BCH entre sus dos formas de escritura: la forma CashAddr bitcoincash:q… / p… definida en la especificación CashAddr, y la forma legacy Base58Check 1… / 3… heredada de Bitcoin. Ambas contienen el mismo hash de 160 bits de una clave pública (P2PKH) o de un script (P2SH); solo cambian la codificación y el checksum.

Cómo funciona la codificación CashAddr

  1. Byte de versión. Un byte cuyos bits superiores indican el tipo (0 = P2PKH, 1 = P2SH) y cuyos tres bits inferiores codifican el tamaño del hash (0 = 160 bits, 3 = 256 bits).
  2. Reagrupación en 5 bits. El byte de versión y el hash se concatenan y se vuelven a cortar en grupos de 5 bits, rellenados con bits cero, exactamente como hace bech32.
  3. Checksum. Se calcula un código BCH de 40 bits sobre el prefijo expandido (los 5 bits inferiores de cada carácter, seguidos de un cero), el payload y ocho grupos cero, usando las constantes generadoras 0x98f2bc8e61, 0x79b76d99e2, 0xf33e5fb3c4, 0xae2eabe2a8 y 0x1e4f43e470. Los ocho grupos del checksum se añaden al final.
  4. Alfabeto. Cada grupo se escribe con el conjunto de 32 caracteres qpzry9x8gf2tvdw0s3jn54khce6mua7l, por lo que la cadena nunca contiene 1, b, i ni o.

Ejemplo práctico

El primer vector de la especificación es 1BpEi6DfDAUFd7GtittLSdBeYJvcoaVggu. La decodificación Base58Check da la versión 0x00 (P2PKH) y el hash160 76a04053bda0a88bda5177b86a15c3b29f559873. Al anteponer el byte de versión CashAddr 0x00, reagrupar en valores de 5 bits y añadir el checksum se obtiene bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a. La variante P2SH del mismo hash empieza por 3 en forma legacy (3CWFddi6m4ndiGyKqzYvsFYagqDLPVMTzC) y por p en CashAddr (bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq). Pega cualquiera de ellas arriba para ver la conversión en vivo.

Formatos de un vistazo

FormaEjemploChecksum¿Se distingue de BTC?
Legacy P2PKH1…, 26–35 caracteres4 bytes de doble SHA-256no
Legacy P2SH3…, 34 caracteres4 bytes de doble SHA-256no
CashAddr P2PKHbitcoincash:q…, 42 caracteres tras el prefijopolymod de 40 bitssí
CashAddr P2SHbitcoincash:p…, 42 caracterespolymod de 40 bitssí
CashAddr P2SH-32bitcoincash:p…, 62 caracterespolymod de 40 bitssí, sin forma legacy
Testnetbchtest:q… o m… / n… / 2…igualsolo por el prefijo

Por qué importa la advertencia de legacy

Los exchanges todavía muestran direcciones legacy para los depósitos de BCH, y los usuarios siguen pegando direcciones de Bitcoin en formularios de retiro de BCH. Como los bytes son idénticos, una transacción BCH a la dirección 1… de un usuario de Bitcoin es válida y se confirma en la cadena de Bitcoin Cash, donde la billetera del destinatario nunca mira. Las monedas no se destruyen, pero solo quien tenga esa clave privada puede recuperarlas con una billetera BCH, y la mayoría de los destinatarios no tiene idea de cómo hacerlo. Convertir todas las direcciones a CashAddr antes de enviar elimina la ambigüedad: una billetera que acepta bitcoincash: es una billetera BCH.

Usos habituales

Para Bitcoin en sí usa el validador de direcciones de Bitcoin; para cadenas bech32 genéricas, el codificador / decodificador bech32.

Preguntas frecuentes

¿Cuál es la diferencia entre las direcciones CashAddr y legacy de Bitcoin Cash?

Ambas codifican el mismo hash de 20 bytes. Las direcciones legacy usan el Base58Check de Bitcoin (1… para P2PKH, 3… para P2SH) y son idénticas a las direcciones de Bitcoin. CashAddr, introducido en enero de 2018, usa un alfabeto al estilo bech32 con el prefijo bitcoincash: y un checksum de 40 bits, así que una dirección BCH ya no puede confundirse con una dirección BTC.

¿Una dirección legacy 1… es de Bitcoin o de Bitcoin Cash?

Puede ser cualquiera de las dos. El formato es byte a byte el mismo en ambas cadenas, y justo por eso se creó CashAddr. Si un exchange te da una dirección 1… para BCH, convertirla a bitcoincash:q… es seguro; pero no des por hecho que una dirección 1… que encontraste en otro sitio es una dirección BCH. El conversor muestra una advertencia con cada entrada legacy.

¿Por qué el conversor rechaza mi dirección?

Falló el checksum polymod de CashAddr o el checksum de doble SHA-256 de Base58Check, lo que significa que al menos un carácter está mal o falta. Las cadenas CashAddr con mayúsculas y minúsculas mezcladas también son inválidas: la especificación exige todo en minúsculas o todo en mayúsculas.

¿Puedo omitir el prefijo bitcoincash:?

Sí. El prefijo forma parte del checksum, pero la mayoría de las billeteras aceptan la cadena q… o p… sin prefijo y asumen mainnet. Cuando no hay prefijo, la herramienta prueba con bitcoincash, bchtest y bchreg y te indica cuál coincidió.

¿Qué son las direcciones P2SH-32?

Desde la actualización CashTokens de 2023, Bitcoin Cash admite hashes de script de 32 bytes (bits de tipo 1, bits de tamaño 3). Son cadenas CashAddr válidas que empiezan por p… pero son más largas, y no tienen forma legacy en Base58. El decodificador muestra el hash y explica por qué no se ofrece una forma legacy.

¿Funciona con Bitcoin SV o eCash?

No. eCash (XEC) usa el mismo algoritmo CashAddr con el prefijo ecash:, y Bitcoin SV mantiene las direcciones legacy. Si pegas un CashAddr con otro prefijo, el checksum se verifica contra ese prefijo, pero se marca como un prefijo de Bitcoin Cash no estándar.