Conversor de Endereço Bitcoin Cash: CashAddr ↔ Legacy

Cole um endereço BCH em qualquer uma das duas grafias e obtenha a outra, com o tipo de endereço, a rede e o hash subjacente. O checksum é verificado primeiro, então um endereço digitado errado é rejeitado em vez de convertido.

Aceita CashAddr com ou sem o prefixo bitcoincash: (q… ou p…), endereços de testnet bchtest: e endereços legacy Base58Check 1… / 3….

Verificado no seu navegador com JavaScript. Os endereços nunca são enviados nem armazenados.

O que é um conversor de endereço Bitcoin Cash?

Um conversor de endereço Bitcoin Cash traduz uma mesma conta BCH entre suas duas grafias: a forma CashAddr bitcoincash:q… / p…, definida na especificação CashAddr, e a forma legacy Base58Check 1… / 3…, herdada do Bitcoin. Ambas contêm o mesmo hash de 160 bits de uma chave pública (P2PKH) ou de um script (P2SH); só a codificação e o checksum mudam.

Como funciona a codificação CashAddr

  1. Byte de versão. Um byte cujos bits superiores guardam o tipo (0 = P2PKH, 1 = P2SH) e cujos três bits inferiores codificam o tamanho do hash (0 = 160 bits, 3 = 256 bits).
  2. Reagrupamento em 5 bits. O byte de versão e o hash são concatenados e recortados em grupos de 5 bits, preenchidos com bits zero, exatamente como o bech32 faz.
  3. Checksum. Um código BCH de 40 bits é calculado sobre o prefixo expandido (os 5 bits inferiores de cada caractere, seguidos de um zero), o payload e oito grupos zero, usando as constantes geradoras 0x98f2bc8e61, 0x79b76d99e2, 0xf33e5fb3c4, 0xae2eabe2a8 e 0x1e4f43e470. Os oito grupos do checksum são acrescentados ao final.
  4. Alfabeto. Cada grupo é escrito com o conjunto de 32 caracteres qpzry9x8gf2tvdw0s3jn54khce6mua7l, por isso a string nunca contém 1, b, i ou o.

Exemplo prático

O primeiro vetor da especificação é 1BpEi6DfDAUFd7GtittLSdBeYJvcoaVggu. A decodificação Base58Check resulta na versão 0x00 (P2PKH) e no hash160 76a04053bda0a88bda5177b86a15c3b29f559873. Prefixando o byte de versão CashAddr 0x00, reagrupando em valores de 5 bits e acrescentando o checksum, obtém-se bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a. A variante P2SH do mesmo hash começa com 3 na forma legacy (3CWFddi6m4ndiGyKqzYvsFYagqDLPVMTzC) e com p em CashAddr (bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq). Cole qualquer um deles acima para ver a conversão ao vivo.

Formatos em resumo

FormaExemploChecksumDistinguível do BTC?
Legacy P2PKH1…, 26–35 caracteres4 bytes de SHA-256 duplonão
Legacy P2SH3…, 34 caracteres4 bytes de SHA-256 duplonão
CashAddr P2PKHbitcoincash:q…, 42 caracteres após o prefixopolymod de 40 bitssim
CashAddr P2SHbitcoincash:p…, 42 caracterespolymod de 40 bitssim
CashAddr P2SH-32bitcoincash:p…, 62 caracterespolymod de 40 bitssim, sem forma legacy
Testnetbchtest:q… ou m… / n… / 2…igualsó pelo prefixo

Por que o aviso de legacy importa

As exchanges ainda mostram endereços legacy para depósitos de BCH, e os usuários ainda colam endereços Bitcoin em formulários de saque de BCH. Como os bytes são idênticos, uma transação BCH para o endereço 1… de um usuário de Bitcoin é válida e confirma na cadeia do Bitcoin Cash, onde a carteira do destinatário nunca olha. As moedas não são destruídas, mas só quem tem aquela chave privada pode resgatá-las com uma carteira BCH, e a maioria dos destinatários não faz ideia de como. Converter todo endereço para CashAddr antes de enviar elimina a ambiguidade: uma carteira que aceita bitcoincash: é uma carteira BCH.

Usos típicos

Para o Bitcoin em si, use o validador de endereço Bitcoin; para strings bech32 genéricas, o codificador / decodificador bech32.

Perguntas frequentes

Qual é a diferença entre endereços CashAddr e legacy do Bitcoin Cash?

Ambos codificam o mesmo hash de 20 bytes. Endereços legacy usam o Base58Check do Bitcoin (1… para P2PKH, 3… para P2SH) e são idênticos a endereços Bitcoin. O CashAddr, introduzido em janeiro de 2018, usa um alfabeto no estilo bech32 com o prefixo bitcoincash: e um checksum de 40 bits, então um endereço BCH não pode mais ser confundido com um endereço BTC.

Um endereço legacy 1… é Bitcoin ou Bitcoin Cash?

Pode ser qualquer um dos dois. O formato é byte a byte o mesmo nas duas cadeias, e foi exatamente por isso que o CashAddr foi criado. Se uma exchange lhe dá um endereço 1… para BCH, convertê-lo para bitcoincash:q… é seguro; mas não presuma que um endereço 1… encontrado em outro lugar é um endereço BCH. O conversor mostra um aviso para toda entrada legacy.

Por que o conversor rejeita meu endereço?

O checksum polymod do CashAddr ou o checksum de SHA-256 duplo do Base58Check falhou, o que significa que pelo menos um caractere está errado ou faltando. Strings CashAddr com maiúsculas e minúsculas misturadas também são inválidas: a especificação exige tudo em minúsculas ou tudo em maiúsculas.

Posso omitir o prefixo bitcoincash:?

Sim. O prefixo faz parte do checksum, mas a maioria das carteiras aceita a string q… ou p… sem prefixo e assume mainnet. Quando não há prefixo, a ferramenta testa bitcoincash, bchtest e bchreg e informa qual deles correspondeu.

O que são endereços P2SH-32?

Desde a atualização CashTokens de 2023, o Bitcoin Cash suporta hashes de script de 32 bytes (bits de tipo 1, bits de tamanho 3). São strings CashAddr válidas que começam com p… mas são mais longas, e não têm forma legacy em Base58. O decodificador mostra o hash e explica por que nenhuma forma legacy é oferecida.

Funciona com Bitcoin SV ou eCash?

Não. O eCash (XEC) usa o mesmo algoritmo CashAddr com o prefixo ecash:, e o Bitcoin SV mantém os endereços legacy. Se você colar um CashAddr com outro prefixo, o checksum é verificado contra esse prefixo, mas ele é sinalizado como um prefixo Bitcoin Cash não padrão.