WEB3DEV

Cover image for ERC-55: Codificação de Endereço com Checksum de Letras Mistas
Paulo Gio
Paulo Gio

Posted on • Atualizado em

ERC-55: Codificação de Endereço com Checksum de Letras Mistas

Introdução

A Ethereum é uma plataforma blockchain amplamente reconhecida por sua flexibilidade e capacidade de interoperabilidade. No entanto, a representação dos endereços Ethereum, utilizados para identificar carteiras e contratos inteligentes, apresenta algumas limitações. Atualmente, os endereços são compostos por sequências de caracteres hexadecimais. Essa forma de representação pode ser difícil de ler e propensa a erros de digitação, o que pode gerar problemas ao compartilhar endereços ou realizar transações.

Para abordar essas questões e melhorar a experiência dos usuários, foi proposto o padrão ERC-55. Esse padrão propõe uma codificação de endereço que utiliza um checksum (soma de verificação) de letras mistas, tornando os endereços mais legíveis e menos propensos a erros de digitação. Neste artigo, vamos explorar em detalhes o padrão ERC-55, seu funcionamento, implementação e um caso de uso para demonstrar sua utilidade.

Checksum de Endereço e Problemas com Endereços Ethereum

Compreender a importância do checksum de endereços e os problemas associados aos endereços Ethereum é fundamental para compreender a necessidade do padrão ERC-55.

Quando os usuários compartilham ou digitam manualmente endereços Ethereum, a falta de diferenciação visual entre letras maiúsculas e minúsculas pode levar a erros de digitação. Esses erros são especialmente problemáticos, pois um único caractere incorreto pode resultar em uma transação enviada para um endereço inválido, potencialmente levando à perda de fundos.

Além disso, os endereços Ethereum são compostos por uma sequência alfanumérica de 40 caracteres hexadecimais, o que torna sua leitura e verificação visual um desafio. Sem a capacidade de diferenciar entre letras maiúsculas e minúsculas, é difícil para os usuários verificar se um endereço foi digitado corretamente apenas olhando para ele.

O Padrão ERC-55 e sua Proposta

O padrão ERC-55 foi desenvolvido com o objetivo de abordar as limitações de legibilidade e erros de digitação associados aos endereços Ethereum. Para alcançar esse objetivo, o padrão propõe a introdução de um checksum de letras mistas nos endereços.

O algoritmo ERC-55 implementa um processo que adiciona letras maiúsculas aos endereços Ethereum existentes, mantendo a compatibilidade com a representação de 40 caracteres. Esse algoritmo utiliza o hash Keccak-256, uma função criptográfica, para calcular um valor de checksum com base no endereço original.

O processo de cálculo do checksum envolve a conversão do endereço original em letras minúsculas, seguida pela aplicação do hash Keccak-256. O resultado do hash é convertido em uma sequência de caracteres hexadecimais. Em seguida, cada caractere do endereço original e do hash resultante é comparado.

Se o valor numérico do caractere correspondente no hash for maior ou igual a 8, o caractere do endereço original é convertido em maiúsculo. Caso contrário, o caractere é mantido em minúsculo. Dessa forma, as letras maiúsculas adicionadas ao endereço indicam visualmente quais caracteres passaram no checksum.

Implementação do Algoritmo ERC-55

A implementação do algoritmo ERC-55 é relativamente simples e pode ser realizada em várias linguagens de programação. Vamos analisar o processo passo a passo:

  1. Remover o prefixo "0x" do endereço Ethereum, se estiver presente.
  2. Converter o endereço para letras minúsculas.
  3. Calcular o hash Keccak-256 do endereço convertido para letras minúsculas.
  4. Converter o resultado do hash em uma sequência de caracteres hexadecimais.
  5. Comparar cada caractere do endereço original e do hash resultante:
    • a. Se o valor numérico do caractere correspondente no hash for maior ou igual a 8, converter o caractere do endereço original em maiúsculo.
    • b. Caso contrário, manter o caractere do endereço original em minúsculo.
  6. Adicionar o prefixo "0x" novamente ao endereço resultante.

Com isso, o endereço resultante terá uma representação de letras mistas, onde as letras maiúsculas indicam que o caractere correspondente passou no checksum.

Implementação do Algoritmo ERC-55 em JavaScript

const createKeccakHash = require('keccak')

function toChecksumAddress(address) {
  address = address.toLowerCase().replace('0x', '')
  const hash = createKeccakHash('keccak256').update(address).digest('hex')
  let checksummedAddress = '0x'

  for (let i = 0; i < address.length; i++) {
    if (parseInt(hash[i], 16) >= 8) {
      checksummedAddress += address[i].toUpperCase()
    } else {
      checksummedAddress += address[i]
    }
  }

  return checksummedAddress
}
Enter fullscreen mode Exit fullscreen mode

Caso de Uso: Verificação de Endereço com Checksum de Letras Mistas

Suponhamos que um usuário deseje enviar uma transação para um contrato inteligente específico na Ethereum. Para verificar se o endereço do contrato está correto, o usuário pode usar o algoritmo ERC-55 para converter o endereço original em uma representação de letras mistas e compará-lo visualmente com o endereço original.


const contractAddress = '0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359'
const checksummedAddress = toChecksumAddress(contractAddress)

console.log('Endereço original:', contractAddress)
console.log('Endereço com checksum:', checksummedAddress)
Enter fullscreen mode Exit fullscreen mode

Saída:

Endereço original: 0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359
Endereço com checksum: 0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359
Enter fullscreen mode Exit fullscreen mode

No exemplo acima, o endereço original é convertido usando o algoritmo ERC-55 e o endereço resultante com checksum é exibido. O usuário pode comparar visualmente os endereços para verificar se estão corretos. Nesse caso, as letras maiúsculas "B" indicam que o endereço foi digitado corretamente.

Conclusão

No geral, o padrão ERC-55 desempenha um papel crucial na melhoria da usabilidade e segurança dos endereços Ethereum. Ao introduzir um checksum de letras mistas, o padrão resolve os problemas de legibilidade e erros de digitação associados aos endereços Ethereum.

Com o uso do algoritmo ERC-55, os endereços Ethereum se tornam mais legíveis e verificáveis visualmente. Os usuários podem facilmente distinguir letras maiúsculas e minúsculas, permitindo que eles identifiquem erros de digitação com maior facilidade. Isso reduz a probabilidade de enviar transações para endereços inválidos e evita a perda de fundos.

A implementação do algoritmo ERC-55 é relativamente simples e pode ser realizada em várias linguagens de programação. Isso permite que desenvolvedores e desenvolvedoras integrem facilmente a codificação de endereço com checksum de letras mistas em suas carteiras, aplicativos e outras ferramentas relacionadas à Ethereum.

Além disso, o caso de uso apresentado demonstra como o padrão ERC-55 pode ser aplicado na prática. Ao verificar um endereço usando o algoritmo ERC-55, os usuários podem ter confiança adicional ao realizar transações, garantindo que os endereços estejam corretos antes de enviar qualquer valor.

Referências

ERC-55: Mixed-case checksum address encoding - https://eips.ethereum.org/EIPS/eip-55

Top comments (0)