🧰 UtlKit

Como Usar o Validador de Checksum de Endereço ETH: o 0x Deve Permanecer em Minúscula, Exatamente 40 Dígitos Hexadecimais, os Espaços das Bordas são Removidos Antes da Verificação, a Maiúscula do EIP-55 é Decidida pelo keccak256 Um Dígito de Cada Vez, e o Formato em Maiúscula Até Muda o Prefixo 0x para 0X

Percorra o validador de checksum de endereço ETH com os comportamentos exatos: a exigência de 0x em minúscula, 40 dígitos hexadecimais ou falha, espaços de borda removidos, a regra keccak256 que torna maiúscula uma letra quando o dígito do resumo é 8 ou mais, e os três estados de resultado com três formatos de cópia.

O Validador de Checksum de Endereço ETH responde a uma única pergunta sobre um endereço Ethereum: a maiúscula e minúscula das letras é a que o EIP-55 prescreve? Você cola um endereço, pressiona Validar, e a ferramenta faz o hash do endereço com keccak256, deriva a forma canônica com maiúsculas e minúsculas misturadas e compara com o que você digitou letra por letra. Tudo acontece no seu navegador: a função keccak256 vem empacotada na página, nada é enviado, e o endereço nunca sai da sua máquina.

Cole o endereço e pressione Validar

Não há verificação ao vivo: a entrada é lida somente quando você pressiona o botão Validar. Se você pressionar com a entrada vazia, o resultado é simplesmente o estado vermelho de formato de endereço inválido, sem travar e sem mensagem especial. Quando a entrada passa pela porta de formato, a ferramenta compara sua string com a forma com checksum letra por letra, e o resultado é ou bem checksum válido, quando as duas são idênticas, ou bem formato válido mas a checksum não confere, quando as letras estão certas mas a maiúscula e minúscula não.

A porta de formato: 0x mais exatamente 40 dígitos hexadecimais

A porta é uma única expressão regular com três exigências. O endereço deve começar com o prefixo 0x em minúscula: um X maiúsculo é rejeitado mesmo que tudo depois esteja certo. Depois ele deve levar exatamente 40 caracteres hexadecimais, o que torna a string inteira de 42 caracteres; um dígito a menos ou um a mais, os dois falham. Por fim, os espaços iniciais e finais são removidos antes da verificação, então uma cópia que trouxe preenchimento ao redor do endereço passa mesmo assim, enquanto um espaço em qualquer ponto interno não é um caractere hexadecimal e falha.

Como o EIP-55 decide a maiúscula de cada letra

Uma vez que o formato é válido, a ferramenta calcula a forma canônica. Ela remove o prefixo 0x, passa os 40 caracteres hexadecimais para minúscula e os entrega ao keccak256, que devolve um resumo hexadecimal de 64 caracteres. Então ela percorre o endereço posição por posição: para cada uma das 40 posições, olha o caractere correspondente do resumo, e se esse dígito do resumo tem valor 8 ou mais, ou seja 8, 9 ou qualquer letra de a a f, a letra do endereço nessa posição vira maiúscula; caso contrário fica minúscula. Aproximadamente metade das letras termina em maiúscula, e quais são, o hash decide por completo.

O que significam os três estados de resultado

Um checksum válido em verde significa que sua string é byte por byte a forma canônica de maiúsculas e minúsculas misturadas, a forma que o EIP-55 foi desenhado para produzir. O estado de aviso, formato válido mas a checksum não confere, significa que os 40 dígitos hexadecimais estão todos corretos mas pelo menos uma letra tem a maiúscula errada; o endereço ainda aponta para a mesma conta, ele só não passa na verificação ortográfica. Um endereço todo em minúscula é o exemplo clássico do estado de não confere: o formato é válido e a checksum nunca confere. O mesmo vale para um 0x em minúscula seguido de 40 dígitos hexadecimais em maiúscula: a porta de formato é atravessada, mas a forma canônica sempre começa com um x minúsculo no prefixo, de modo que as duas nunca podem ser iguais. Uma string com X maiúsculo no prefixo nem chega à comparação, porque a regra do prefixo sozinha já a elimina.

As três cópias que você pode levar

Quando o formato é válido, aparecem três cartões de resultado, cada um com seu botão de copiar. O primeiro mostra a string inteira em minúscula. O segundo a mostra em maiúscula, e como a conversão se aplica à string completa, até o prefixo vira 0X, uma forma que você não deveria colar em uma carteira. O terceiro mostra a forma com checksum EIP-55, a que vale a pena copiar: é o endereço com uma maiúscula e minúscula que carrega seu próprio certificado de validade.

Por que a maiúscula e minúscula importa

Na blockchain, a maiúscula e minúscula não significam nada: minúscula, maiúscula e misturadas são a mesma conta, porque um endereço Ethereum são 20 bytes e a maiúscula das letras não faz parte desses bytes. A checksum existe para o lado humano da transação. Enviar para um endereço digitado errado é irreversível, e o EIP-55 transforma aproximadamente metade das letras em dígitos de verificação sensíveis à maiúscula, de modo que um caractere digitado errado ou trocado costuma produzir uma string cuja checksum não confere, e carteiras e formulários de exchange podem rejeitá-la antes de o dinheiro se mover.

O que não existe aqui, e para onde ir a seguir

A ferramenta é deliberadamente estreita: uma entrada, um botão, sem histórico guardado e sem controle de troca, porque não há nada para trocar. Se você quiser ver o hash que dirige as decisões de maiúscula, o Gerador de Hash Keccak-256 calcula o mesmo resumo keccak256 sobre qualquer entrada que você escolher. Se você trabalha com outras famílias de hash, o Gerador de Hash as cobre, e se seu trabalho com Ethereum é sobre codificar chamadas de função e dados mais do que sobre endereços, o Codificador/Decodificador ABI cuida desse lado, enquanto o guia do codificador ABI percorre o mesmo conduto keccak256 a partir do lado da codificação.

Ferramentas Relacionadas

Perguntas Frequentes

A checksum altera o endereço em si mesmo?

Não. A maiúscula e minúscula não faz parte dos 20 bytes do endereço: minúscula, maiúscula e a forma misturada apontam todos para a mesma conta. A checksum só marca qual grafia exata é a forma canônica, então um endereço com a maiúscula errada é o mesmo destino que não passa numa verificação ortográfica.

O que a ferramenta faz com uma entrada vazia ou malformada?

Informa o estado vermelho de formato de endereço inválido, nada mais. Não há travamento nem mensagem de erro extra. Uma entrada vazia, um 0x faltando, um X maiúsculo, o número errado de dígitos hexadecimais e qualquer caractere não hexadecimal produzem todos o mesmo resultado único.

O endereço é enviado para algum lugar para ser verificado?

Não. A função keccak256 vem empacotada na página e roda no seu navegador, de modo que o endereço é hasheado localmente e nunca sai da sua máquina. Nada é guardado entre visitas também.

Por que um endereço todo em minúscula mostra a checksum não conferindo?

Porque a forma com checksum tem aproximadamente metade das letras em maiúscula, decidido pelo hash. Uma string toda em minúscula nunca pode ser igual a essa forma, então um endereço minúsculo válido fica no estado de não confere até você substituí-lo pela versão com checksum.

Qual das três saídas eu devo copiar?

A de checksum EIP-55. É a única forma que carrega uma checksum válida, e a forma que a maioria das carteiras e formulários de exchange esperam. A cópia em minúscula é útil para comparar, e a cópia em maiúscula até muda o prefixo 0x para 0X, então é a que você deve evitar colar em qualquer lugar.

Artigos Relacionados