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:
- Remover o prefixo "0x" do endereço Ethereum, se estiver presente.
- Converter o endereço para letras minúsculas.
- Calcular o hash Keccak-256 do endereço convertido para letras minúsculas.
- Converter o resultado do hash em uma sequência de caracteres hexadecimais.
- 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.
- 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
}
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)
Saída:
Endereço original: 0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359
Endereço com checksum: 0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359
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)