O que é um conversor de endereço TON?
Um conversor de endereço TON traduz uma conta da The Open Network entre sua forma raw (workchain:hash, por exemplo 0:83df…31a8) e as formas user-friendly definidas na documentação de endereços da TON: uma estrutura de 36 bytes com flags, workchain, hash e checksum CRC16, codificada em base64 nas conhecidas strings de 48 caracteres EQ… (bounceable) e UQ… (non-bounceable). Todas as formas identificam a mesma conta de contrato inteligente; elas diferem apenas em como o remetente é instruído a tratá-la.
Anatomia de um endereço user-friendly
| Bytes | Campo | Significado |
|---|---|---|
| 0 | Tag | 0x11 bounceable, 0x51 non-bounceable; some 0x80 para somente testnet (0x91, 0xD1) |
| 1 | Workchain | 0x00 basechain, 0xFF masterchain (-1 como byte com sinal) |
| 2–33 | Hash da conta | SHA-256 do estado inicial do contrato (código + dados) |
| 34–35 | CRC16 | CRC-16/XMODEM sobre os bytes 0–33, big-endian |
O base64 de 36 bytes tem exatamente 48 caracteres sem preenchimento, e é por isso que todo endereço TON user-friendly tem o mesmo comprimento. Os dois primeiros caracteres vêm do tag e dos bits superiores do byte de workchain: EQ e UQ para o workchain 0 da mainnet, Ef e Uf para a masterchain, kQ e 0Q para testnet.
Exemplo prático
Tome o endereço raw 0:83dfd552e63729b472fcbcc8c45ebcc6691702558b68ec7527e1ba403a0f31a8. Prefixe o tag 0x11 e o workchain 0x00, acrescente o CRC-16/XMODEM desses 34 bytes e codifique em base64url: o resultado é a forma bounceable EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N. Trocar o tag para 0x51 muda o primeiro caractere e o checksum, resultando em UQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqEBI. Os 43 caracteres do meio são idênticos porque o hash é idêntico. Cole qualquer uma das duas strings acima e a ferramenta recupera a forma raw e mostra as quatro variantes.
Bounceable ou non-bounceable: qual usar
- Enviar para uma pessoa. Use a forma non-bounceable
UQ…. Se o contrato da carteira dela ainda não foi implantado (uma carteira recém-criada), uma transferência bounceable voltaria e ela não receberia nada. - Chamar um contrato inteligente. Use a forma bounceable
EQ…. Se a chamada falhar, o contrato devolve a mensagem e os TON retornam para você, descontadas as taxas, em vez de ficarem presos. - Depósitos em exchanges. Siga as instruções da exchange, incluindo o memo ou comentário. A forma do endereço não muda o destino, mas o flag muda o que acontece em caso de falha.
Por que a verificação CRC importa
Endereços TON são base64, então um único caractere errado muda o hash silenciosamente, e um hash diferente é uma conta diferente, provavelmente inexistente. O CRC16 pega todo erro de um caractere e a maioria dos erros de vários caracteres. Esta ferramenta se recusa a converter qualquer endereço user-friendly cujo checksum falhe, e nunca adivinha o que você quis dizer. Endereços raw não têm checksum algum, então ao converter um endereço raw o resultado é tão correto quanto o hex que você colou; compare os primeiros e os últimos caracteres com a origem.
Usos típicos
- Transformar o endereço raw impresso por um nó, pela API de um explorador ou por um manifesto do TON Connect na forma que uma carteira aceita.
- Trocar um endereço bounceable de uma listagem de contratos para a forma non-bounceable antes de enviar para uma carteira nova.
- Verificar se um endereço que alguém lhe enviou é uma forma somente de testnet.
Outras ferramentas de endereço neste site: o validador de endereço cripto e o conversor de endereço Tron.