RS

El formato de dirección Reed-Solomon

La forma abreviada de los números de cuenta (direcciones) de Signum tiene la forma: S-XXXX-XXXX-XXXX-XXXXX

Este formato se conoce como una dirección Reed-Solomon. Es el formato predeterminado en el cliente oficial, donde X es un número no ambiguo o un carácter alfabético (las letras I y O y los números 1 y 0 no se utilizan). Las direcciones siempre tienen el prefijo «S-» y se utilizan guiones para separar la dirección en 4, 4, 4 y 5 caracteres. Las direcciones NO distinguen mayúsculas de minúsculas.

Este formulario mejora la confiabilidad al introducir redundancia para detectar y corregir errores al ingresar y usar números de cuenta Signum.

Fondo

El formato interno de los números de cuenta de Signum es un identificador completamente numérico de 64 bits derivado de la clave privada de la cuenta. Este formato es propenso a errores porque un solo error al escribir un carácter puede provocar que las transacciones se envíen involuntariamente a la cuenta incorrecta.

Los códigos de corrección de errores de Reed-Solomon solucionan en gran medida este problema agregando redundancia a las direcciones. Se eligió el formato Reed-Solomon porque:

  • la tasa de colisión de la cuenta es la misma que el formato de dirección predeterminado;
  • la corrección de errores básica del sistema se puede utilizar para ayudar a los usuarios a escribir direcciones;
  • algunos lenguajes de programación no tienen una función de hash MD5 nativa, y la implementación de Reed-Solomon es más simple que MD5.

Beneficios de las direcciones de Reed-Solomon

  • La posibilidad de una colisión de direcciones aleatoria, utilizando la implementación de Signum de 4 «bits de verificación», es de 1 en un millón (redundancia de 20 bits).
  • Permite corregirhasta 2 errores tipográficos en una dirección.
  • Garantiza que se pueden detectarhasta 4 errores tipográficos.
  • La longitud de la dirección es siempre de 17 caracteres.
  • El prefijo «S» hace que las direcciones sean fácilmente reconocibles como pertenecientes a Signum.

Codificación de direcciones Signum Reed-Solomon

  • El uso de mayúsculas y minúsculas no se aplica en este formato, pero para la unificación, todas las direcciones se muestran en mayúsculas.
  • Los guiones dividen las direcciones en grupos de 4 caracteres y un grupo final de 5 caracteres, pero esto no se aplica durante la entrada de direcciones.
  • Las direcciones numéricas antiguas también se reconocen y admiten para la compatibilidad con versiones anteriores.

Ejemplo de direcciones RS:

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

Técnicas

La primera y más importante regla es que ningún esquema de corrección de errores es infalible: la corrección de errores es una herramienta útil, pero no se puede confiar en ella al azar.

El problema es algo contra-intuitivo: o puede hacer una simple comprobación sí/no de la validez de la dirección, lo que le dará uno en un millón de colisiones, o puede tratar de corregir errores. No puedes hacer ambas cosas.

El problema aquí es que el algoritmo Reed-Solomon sólo se garantiza para corregir hasta 2 errores. Si hay más de 2 errores presentes en una entrada de dirección, producirá falsos positivos con una probabilidad de alrededor del 10%, y las transacciones aún se enviarán a direcciones incorrectas.

Piense en el algoritmo como adivinar errores,en su lugar, para ayudar a los usuarios con errores de detección.

Las direcciones Reed-Solomon (RS) para Signum se codifican de la siguiente manera:

  • Tome el ID de cuenta original de 64 bits, agregue 1 bit cero para obtener 65, luego divídalo en trece “símbolos” de 5 bits (65/5 = 13).
  • Ordene los símbolos del bit más bajo al bit más alto, en orden little-endian, es decir, bits 0-4, 5-9, 10-14, etc., hasta 60-64.
  • Anexar 4 símbolos de paridad (20 bits), producidos por el Codificación Reed-Solomon de nuestros 13 símbolos del paso uno (que quedan intactos). Esto produce una palabra clave de símbolo de 13 + 4 x 17.
  • Mezcle los símbolos de la palabra en clave en un orden predefinido y codifíquelos 1 a 1 con un alfabeto de 32 caracteres, dividiéndolos en grupos por guiones.

Para ponerse en contacto con el equipo de desarrollo o solicitar ayuda con cualquier tema relacionado con este proyecto, póngase en contacto con nosotros en el 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'); }); });

2 + 2 =