Por que seu endereço não se parece com o dele: formatos de endereço e por que os envios falham

·6 min de leitura·Por SSP Editorial Team
Capa da SSP Academy: formatos de endereço cripto e envios que falham

Por que seu endereço não se parece com o dele: formatos de endereço e por que os envios falham

Cedo ou tarde, todo mundo em autocustódia esbarra no mesmo momento confuso. Você copia seu endereço de recebimento para mandar um pouco de Bitcoin para si mesmo, e ele não se parece com os endereços que você já viu. Ou uma corretora o rejeita. Ou você envia Bitcoin Cash para algo que parece exatamente um endereço de Bitcoin e passa uma hora desagradável descobrindo o que aconteceu.

Nada disso é arbitrário. Formatos de endereço codificam informação real sobre como as moedas podem ser gastas, e assim que você aprende a lê-los a confusão praticamente evapora.

Um endereço é um conjunto de condições de gasto

O modelo mental útil não é «um endereço é um número de conta». É este: um endereço é uma descrição comprimida do que precisa ser verdade para essas moedas se moverem.

Envie para um endereço que começa com 1, e a condição é uma chave pública específica precisa produzir uma assinatura. Envie para um endereço bc1q… do tipo mais longo, e a condição pode ser duas chaves específicas precisam ambas assinar. Mesma rede, mesmo dinheiro, regras totalmente diferentes — e o formato do endereço é como a rede lhe diz quais regras valem.

É por isso que os formatos se multiplicaram. Toda vez que o Bitcoin ganhou uma nova forma de trancar moedas, precisou de uma nova forma de escrever onde elas estavam trancadas.

Os formatos que você vai encontrar no Bitcoin

Legacy — 1… O original. Pagamento ao hash de uma chave pública: uma chave, uma assinatura. Suportado em todo lugar, e o mais caro de gastar, porque os dados da assinatura contam integralmente no tamanho do bloco.

Script — 3… Pagamento ao hash de um script. As moedas ficam trancadas a um script em vez de a uma chave — um quórum multisig, um bloqueio temporal, o que for. O endereço é um hash das condições, então de fora você não consegue saber quais são. Foi assim também que o SegWit inicial entrou de contrabando, por compatibilidade.

SegWit nativo — bc1q… Bech32. Os dados de assinatura foram para uma estrutura de testemunha separada, o que barateou o gasto e corrigiu a maleabilidade das transações. Bech32 é minúsculo, tem uma soma de verificação mais forte do que base58, e foi desenhado para que erros de digitação sejam detectados em vez de aceitos em silêncio.

O SegWit nativo vem em dois tamanhos, e a diferença importa:

  • 42 caracteres no total — P2WPKH. Uma chave, uma assinatura.
  • 62 caracteres no totalP2WSH. Um script, por exemplo um multisig dois-de-dois.

Taprootbc1p… O mais novo. Melhor privacidade e gastos complexos mais baratos, ao custo de alguns serviços antigos ainda não aceitarem.

Por que um endereço da SSP parece estranho

É aqui que as pessoas se surpreendem, e a explicação é satisfatória.

A SSP é uma carteira multisig dois-de-dois. Suas moedas não estão trancadas a uma única chave — estão trancadas a um script que exige assinaturas tanto da extensão do navegador quanto do seu celular. Isso significa que um endereço Bitcoin da SSP é P2WSH, não P2WPKH, ou seja, a forma longa do bc1q: 62 caracteres em vez dos 42 a que a maioria está acostumada.

Se você tem olhado para o seu endereço achando que ele parece longo demais, é para ser assim. O comprimento extra é o hash de um script dois-de-dois em vez do hash de uma única chave pública. O endereço é mais longo porque as condições são mais ricas.

Isso vez ou outra atrapalha serviços antigos que só reconhecem por padrão a forma curta. É uma limitação do lado deles — P2WSH tem uma década — mas vale saber por que o erro acontece, porque a mensagem costuma ser o pouco prestativo «endereço inválido».

Cada rede fez escolhas diferentes

A SSP suporta várias redes UTXO, e cada uma escreve endereços multisig do seu jeito:

RedeTipo de script na SSPO endereço parece com
BitcoinP2WSHbc1q… (62 caracteres)
LitecoinP2WSHltc1q…
Bitcoin CashP2SHbitcoincash:p…
DogecoinP2SHcomeça com 9 ou A
ZcashP2SHt3…
RavencoinP2SHcomeça com r
FluxP2SHt3…

O Litecoin seguiu de perto o desenho do Bitcoin e só trocou o prefixo legível, e por isso seus endereços parecem familiares. Zcash e Flux usam uma versão de dois bytes, o que dá o prefixo característico t3 para endereços de script. O Dogecoin escolheu seu próprio byte de versão, então seus endereços de script começam com 9 ou A — nada parecido com os conhecidos endereços D… de chave única.

O importante é que os prefixos de endereço de uma rede são constantes no nível do consenso, não uma questão de marca. São a razão pela qual uma carteira consegue rejeitar um endereço antes de você enviar qualquer coisa.

A armadilha do Bitcoin Cash, e por que o CashAddr existe

Há um pedaço de história que vale conhecer porque pode realmente lhe custar dinheiro.

Quando o Bitcoin Cash se separou do Bitcoin em 2017, herdou exatamente o formato de endereço do Bitcoin — os mesmos bytes de versão, 0x00 para endereços de chave e 0x05 para endereços de script. Um endereço BCH legacy e um endereço BTC legacy eram indistinguíveis. Não parecidos. Idênticos em estrutura.

As pessoas enviavam BTC para endereços BCH e BCH para endereços BTC o tempo todo, porque nenhum software conseguia diferenciá-los. As moedas não eram destruídas — a mesma chave privada controla as duas — mas recuperá-las exigia importar chaves numa carteira da outra rede, coisa que muitos usuários não conseguiam fazer com segurança.

CashAddr foi a correção: um formato ao estilo bech32 com prefixo bitcoincash:, deliberadamente incompatível com o do Bitcoin, para que enviar entre redes falhe barulhentamente em vez de dar certo em silêncio. É por isso que a SSP mostra endereços de Bitcoin Cash com o prefixo completo. Parece prolixo. A prolixidade é o recurso.

Por que os envios falham, e o que cada falha significa

«Endereço inválido». Em geral uma falha de soma de verificação — um erro de digitação, uma colagem truncada, uma cadeia bech32 com maiúsculas e minúsculas misturadas. Bech32 não diferencia maiúsculas, mas não pode ser misturado; alguns caminhos de copiar e colar estragam isso. Às vezes significa que o serviço remetente não suporta o seu formato.

«Tipo de endereço não suportado». O serviço reconhece o endereço mas não envia para ele — tipicamente uma corretora antiga que nunca adicionou Taproot, ou que só lida com o SegWit curto. Não é problema seu para consertar; use outro caminho de saque ou um endereço intermediário.

Rede completamente errada. Aqui o prefixo legível do bech32 protege você: bc1 e ltc1 são diferentes, e as carteiras conferem. Redes base58 são mais arriscadas, porque um endereço válido de Dogecoin também é estruturalmente válido em várias outras redes.

Foi enviado, mas nada chegou. Ou você está olhando o explorador da rede errada, ou os fundos foram para um endereço válido que não é seu. Não existe estorno.

As regras práticas

Copie, nunca digite. Todo formato tem soma de verificação justamente porque humanos erram ao digitar. Não faça ela trabalhar num serviço que não deveria existir.

Antes de tudo, case o prefixo com a rede. Bitcoin é bc1, 1 ou 3. Litecoin é ltc1, L ou M. Bitcoin Cash é bitcoincash:. Essa única olhada pega os erros caros.

Espere que endereços multisig sejam mais longos. Se você usa a SSP ou qualquer carteira baseada em script, a forma longa é a correta. Comprimento não é sintoma de erro.

Mande um teste pequeno quando o destino for novo, especialmente para uma corretora e especialmente com valores altos. A taxa é irrisória diante da alternativa.

Use um endereço de recebimento novo quando sua carteira oferecer. Reutilizar endereços liga suas transações umas às outras para qualquer um que observe a rede. Evitar isso não custa nada.

Formatos de endereço parecem trivialidades arbitrárias até você perceber que cada um é uma afirmação sobre como as moedas podem se mover. Lidos assim, receber na sua carteira deixa de ser um ato de fé e passa a ser algo que você realmente pode conferir — que é justamente o sentido de guardar as próprias chaves.

Compartilhar este artigo

Artigos relacionados