RS

O formato de endereço Reed-Solomon

A forma abreviada dos números de conta Signum (endereços) tem a seguinte forma: S-XXXX-XXXX-XXXX-XXXXX

Esse formato é conhecido como um endereço Reed-Solomon. É o formato padrão no cliente oficial, onde X é um número ou caractere alfabético não ambíguo (as letras I e O e os números 1 e 0 não são usados). Os endereços são sempre prefixados com “S-“ e hífens são usados para separar o endereço em 4, 4, 4 e 5 caracteres. Os endereços não diferenciam maiúsculas de minúsculas.

Este formulário melhora a confiabilidade, introduzindo redundância para detectar e corrigir erros ao inserir e usar números de conta Signum.

Fundo

O formato interno para números de conta Signum é um identificador completamente numérico de 64 bits derivado da chave privada da conta. Esse formato é propenso a erros porque um único erro ao digitar um caractere pode resultar em transações sendo enviadas involuntariamente para a conta errada.

Reed-Solomon erro-códigos de correção em grande parte remediar esse problema, adicionando redundância para endereços. O formato Reed-Solomon foi escolhido porque:

  • a taxa de colisão da conta é o mesmo que o formato de endereço padrão;
  • a correção de erro básica do sistema pode ser usada para ajudar os usuários a digitar endereços;
  • algumas linguagens de programação não têm uma função de hash MD5 nativa, e a implementação de Reed-Solomon é mais simples do que o MD5.

Benefícios dos endereços de Reed-Solomon

  • A chance de uma colisão de endereço aleatório, usando a implementação de 4 “bits de verificação” da Signum, é de 1 em um milhão (redundância de 20 bits).
  • Permite até 2 erros de digitação em um endereço a ser corrigido.
  • Ele garante que até 4 erros tipográficos podem ser detectados.
  • O comprimento do endereço é sempre de 17 caracteres.
  • O prefixo “S” torna os endereços facilmente reconhecíveis como pertencentes à Signum.

Codificação de endereços Signum Reed-Solomon

  • As maiúsculas e minúsculas não são aplicadas neste formato, mas para unificação, todos os endereços são exibidos em maiúsculas.
  • Os travessões dividem os endereços em grupos de 4 caracteres e um grupo final de 5 caracteres, mas isso não é aplicado durante a entrada do endereço.
  • Os endereços numéricos antigos também são reconhecidos e suportados para compatibilidade com versões anteriores.

Exemplo de endereços RS:

  • S-3DH5-DSAE-4WQ7-3LPSE
  • S-K4G2-FF32-WLL3-QBGEL

Detalhes técnicos

A primeira e mais importante regra é que nenhum esquema de correção de erros é infalível: a correção de erros é uma ferramenta útil, mas não pode ser invocada ao acaso.

O problema é um pouco contrário-intuitivo: ou você pode fazer um simples sim/não verificação de validade de endereço, que lhe dará um em um milhão de colisão, ou você pode tentar e corrigir erros. Você não pode fazer os dois.

O problema aqui é que o algoritmo Reed-Solomon só é garantido para corrigir até 2 erros. Se mais de 2 erros estiverem presentes em uma entrada de endereço, ele produzirá falsos positivos com uma probabilidade de cerca de 10%, e as transações ainda serão enviadas para endereços incorretos.

Pense no algoritmo como erro de adivinhação, em vez disso, para ajudar os usuários a detectar erros.

Os endereços Reed-Solomon (RS) para Signum são codificados da seguinte forma:

  • Pegue o ID da conta original de 64 bits, adicione 1 bit zero para obter 65 e divida-o em treze “símbolos” de 5 bits (65/5 = 13).
  • Ordene os símbolos do bit mais baixo para os bits mais altos, na ordem little-endian, ou seja, bits 0-4, 5-9, 10-14, etc., até 60-64.
  • Acrescentar 4 símbolos de paridade (20 bits), produzidos pelo Codificação Reed-Solomon dos nossos 13 símbolos da etapa um (que são deixados intocados). Isso produz uma palavra de código de 13 + 4 = 17 símbolo.
  • Misture os símbolos de palavras-código em uma ordem predefinida e codifique-os 1 para 1 com um alfabeto de 32 caracteres, dividindo-os em grupos por travessões.

Para entrar em contato com a equipe de desenvolvimento ou solicitar assistência com qualquer coisa relacionada a este projeto, entre em contato conosco no canal Signum Discord.

.rv_button.closed:after {content:"3";} .rv_button.opened:after{content:"2";} jQuery(document).ready(function() { // Hide the div jQuery('#reveal').hide(); jQuery('.rv_button').click(function(e){ e.preventDefault();jQuery("#reveal").slideToggle(); jQuery('.rv_button').toggleClass('opened closed'); }); });

1 + 5 =