Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 259|Resposta: 0

Explicação detalhada da codificação blockchain Base58, Base58Check, Bech32 e Bech32m

[Copiar link]
Postado em 2025-10-17 09:01:55 | | | |
Base58, Base58Check, Bech32 e Bech32m são formatos de codificação comumente usados na tecnologia blockchain, principalmente para melhorar a legibilidade, reduzir erros e garantir a integridade dos dados. Esses quatro códigos têm suas próprias vantagens para garantir segurança, compatibilidade e capacidades de correção de erros, sendo importantes pilares dos sistemas modernos de endereços blockchain.

Base58

"Base58" é um método de codificação inventado por Satoshi Nakamoto, que foi adaptado de um método de codificação bem conhecido chamado "Base64". O conjunto de caracteres Base64 inclui: todos os números e letras maiúsculas e minúsculas, além de dois símbolos ("+" e "/"); Um total de 64 caracteres. Satoshi Nakamoto removeu o número 0, as letras maiúsculas I e O, a letra minúscula l e o símbolo, e passou a ser Base58.

Conjunto de caracteres: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz



Base58Check

Comparado ao Base58, a codificação Base58Check tem apenas um cálculo de soma de verificação a mais. Como mostrado abaixo:



O Base58Check resolve os problemas de propensos a erros, difíceis de reconhecer e não verificados em métodos tradicionais de codificação, fornecendo um método de representação seguro, compacto, amigável para humanos e que detecta erros para dados de chave na blockchain (como endereços e chaves privadas). Embora agora esteja sendo gradualmente substituído pelo mais avançado Bech32/Bech32m (para endereços SegWit), ele desempenhou um papel crucial no ecossistema inicial do Bitcoin.

Bech32

"Bech32" é um método de codificação definido pelo BIP 0173, que foi escrito por Pieter Wuille e Greg Maxwell. No entanto, essa codificação também tem suas origens: "Bech" refere-se a "BCH", um algoritmo de codificação de correção de erros cíclico inventado por três matemáticos em 1959 e 1960, respectivamente (o nome BCH vem dos nomes desses três matemáticos). "32" significa que o conjunto de caracteres do método de codificação tem apenas 32 caracteres: letras minúsculas e números, excluindo os números "1", as letras "b", "i" e "o".



No início do BIP 0173, os autores apontam os aspectos indesejáveis do Base58:

  • O Base58 utiliza letras inglesas em maiúsculas e maiúsculas, o que faz com que seus dados sejam desenhados em códigos QR não no modo menor do "alfabeto numérico", mas apenas no modo maior de "dados de bytes".
  • O uso tanto de case quanto de case também dificulta transcrever, digitar e ler no teclado do celular.
  • A soma de verificação exigia duas operações consecutivas do SHA256, que eram lentas e não tinham capacidade de localizar a posição errada.
  • A maioria dos métodos localizáveis de codificação de erros só funciona se o tamanho do conjunto de caracteres for de potência prima, e 58 não for uma potência prima.
  • Base58 é mais complexo de decodificar e mais lento de decodificar.

Como resultado, a nova abordagem do Bech32 usa apenas letras minúsculas e números; Quando necessário, como ao desenhar um código QR, todas essas letras podem ser substituídas por letras maiúsculas para uma representação mais compacta. Códigos QR menores, como endereços Bech32 são singulares, você pode codificar como códigos QR usando o modo alfanumérico. Isso significa que você pode criar um QR code mais compacto porque o Base58 exige letras maiúsculas e minúsculas (ou seja, você não pode usar o modo alfanumérico), enquanto o Bech32 não usa. Como mostrado abaixo:



Como você pode ver, apesar do endereço Bech32Contém mais caracteres, mas a capacidade de usar padrões alfanuméricos significa que os códigos QR usam menos dados no geral

Ao mesmo tempo, o Bech32 tem a capacidade de localizar erros: ele não só pode identificar que você cometeu um erro de cópia, mas também apontar quais bits você copiou incorretamente (essa capacidade de encontrar erros é muito superior à do Base58).

Na verdade, o algoritmo BCH também possui uma função de "correção de erros": ela pode não só indicar quais bits você copiou incorretamente, mas também quais caracteres deve ser. No entanto, os autores do BIP 0173 identificaram seus perigos inerentes: por um lado, fortalecer a correção de erros enfraquece a capacidade de localizar erros; Por outro lado, se o usuário confiar demais nas capacidades de correção de erros do software, o software pode corrigir os dados errôneos inseridos pelo usuário em um dado "válido, mas inútil" – embora seja válido como um dado codificado em BCH; No entanto, é possível que o script restaurado do Bitcoin não esteja sob o controle do destinatário, ou mesmo de qualquer pessoa. Isso é extremamente perigoso. Portanto, o BIP 0173 alerta: "Além de lembrar os usuários quais bits podem ter sido copiados incorretamente, o software não deve implementar capacidades de correção de erros (dar sugestões de correção)." ”

Além disso, o Bech32 segue o padrão encontrado na codificação Base58:

1. Os dados do Bech32 começam com um parágrafo "dados com significado (hrp)", semelhante ao prefixo do Base58, que pode indicar que tipo de dado se trata.
HRP pode usar muito mais de 32 caracteres; O Bech32 também usa o número "1" como separador para separar o HRP dos dados que realmente devem ser decodificados.
Além do Bitcoin, há muitos outros projetos que também adotaram o Bech32; O HRP é usado para distinguir dados de diferentes itens. Aqui está uma lista de HRPs registrados, que é muito interessante (mas só interessante).
2. O Bech32 também projetou uma soma de verificação que ocupa os últimos 6 caracteres dos dados codificados.

Bech32m

"Bech32m" é um método de codificação definido pelo BIP 0350. Link:O login do hiperlink está visível.Foi proposto porque os desenvolvedores descobriram uma vulnerabilidade na codificação do Bech32:

Quando o último caractere é "p", inserir ou remover qualquer número de "q" à frente desse caractere não causará erro de soma de verificação (os dados ainda serão considerados válidos), entãoO mecanismo de soma de verificação perde completamente sua funçãoAcabar.

Se você não adicionar um script padronizado do Bitcoin, esse problema pode ser facilmente resolvido: tanto o endereço P2WPKH quanto o endereço P2WSH têm um certo comprimento, basta adicionar a verificação de comprimento. No entanto, considerando que também adicionaremos novos scripts padronizados no futuro, o comprimento do endereço pode mudar, então é necessário corrigir esse problema.

O Bech32m resolve esse problema alterando um parâmetro no gerador de soma de verificação do Bech32.

Atualmente, o Bech32m é usado apenas para codificar endereços para scripts "P2TR" adicionados com a atualização "Taproot". Pode ser usado na codificação de endereços de outros scripts padronizados no futuro.

Referência:

O login do hiperlink está visível.
O login do hiperlink está visível.
O login do hiperlink está visível.




Anterior:tiktok, Douyin capturam o pacote e eliminam o script da Frida, que pode localizar a localização do patch do arquivo SO
Próximo:Introdução aos tipos de endereço do Bitcoin Legacy, SegWit aninhado, SegWit nativo e Taproot
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com