Format d´adresse RS

From Nxt Wiki
Jump to: navigation, search
This page is a translated version of the page RS Address Format and the translation is 75% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎русский • ‎українська

Depuis la version 1.0.1 du programme Nxt, l´utilisation d´adresses de type "Reed-Solomon" est supportée pour les comptes Nxt. C´est maintenant le format par défaut du client officiel.

Ce type d´adresse améliore la robustesse en introduisant de la redondance permettant de détecter et de corriger une erreur lors de la saisie de numéro de comptes Nxt.

Ces adresses sont toujours présentée sour la forme:

NXT-XXXX-XXXX-XXXX-XXXXX

... où X est un nombre non-ambigu ou un caractère alphabétique (ni les lettres O et I, ni les numéros 1 et 0 ne sont utilisés). Les adresses debutent toujours par "NXT-", et les tirets sont utilisés pour séparer l'adresse en groupes de 4, 4, 4, puis 5 caractères. Les adresses ne sont pas sensibles à la casse.

1 Explications

Le format par défaut pour les numéros de compte NXT est un identifiant entièrement numérique de 64 bits, dérivé de la clé privée du compte. Les "early adopters" de Nxt se sont plaints que ce format était sujet à erreur, car il y a eu de nombreux cas où une faute de frappe sur un seul caractère résultait en des transactions envoyées au mauvais compte.

Reed-Solomon error-correction codes addresses this issue by adding redundancy to addresses. Other options were explored (MD5 hashes, checksum digits, etc.) but a Reed-Solomon format was chosen because:

  • the account collision rate is the same as the default address format;
  • the system's basic error correction can be used to assist users in typing addresses;
  • some programming languages do not have a native MD5 hashing function, and the Reed-Solomon implementation is simpler than MD5.

1.1 Avantages des adresses de type Reed-Solomon

  • The chance of a random address collision, using Nxt's implementation of 4 "check-bits", is 1 in a million (20-bit redundancy).
  • It allows up to 2 typos in an address to be corrected.
  • It guarantees that up to 4 typos can be detected.
  • The address length is always 17 characters, and is always prefixed with "NXT". This makes the addresses easily recognizable as belonging to Nxt
  • C++, PHP, and JavaScript implementations can be found at: https://drive.google.com/file/d/0B7kbeA6whDvNWVczbEtvQ1YtZGc

2 Codage des adresses Nxt Reed-Solomon

  • Case is not enforced in this format, but for unification all addresses are displayed using upper case.
  • Addresses are split by dashes into groups of 4 characters and a final group of 5 characters, but this is not enforced during address input.
  • The old numeric addresses are also recognized and supported for backwards compatibility.

Exemples d´adresse RS:

NXT-3DH5-DSAE-4WQ7-3LPSE
NXT-K4G2-FF32-WLL3-QBGEL

3 Informations techniques

La première et la plus importante règle est qu'aucun système de correction d'erreurs n'est infaillible: Vous ne pouvez pas compter sur la correction d'erreur!!

The problem is somewhat counter-intuitive: either you can do a simple yes/no check of address validity, which will give you one in a million collision, or you can try and correct errors. You cannot do both.

Le problème ici est que l'algorithme de Reed-Solomon ne garanti une correction que jusqu'à deux erreurs. S'il y a plus de deux erreurs présentes lorsqu'une adresse est entrée, il va se produire des faux positifs pour une probabilité d'environ 10% et les transactions seront toujours envoyé à des adresses incorrectes.

Pensez plutôt à l'algorithme comme chercheur d'erreur, qui aide les utilisateurs à détecter les erreurs.

Reed-Solomon (RS) addresses for Nxt are encoded as follows:

  1. Take the original 64-bit account ID, add 1 zero bit to get 65 and then split it into thirteen 5-bit "symbols" (65 / 5 = 13).
  2. Order the symbols from lowest bit to highest bits, in little-endian order, i.e. bits 0-4, 5-9, 10-14, etc. up to 60-64.
  3. Append 4 symbols of parity (20 bits), produced by the Reed-Solomon encoding of our 13 symbols from step one (which are left untouched). This produces a 13 + 4 = 17 symbol codeword.
  4. Scramble the codeword symbols in a predefined order and encode them 1-to-1 with an alphabet of 32 characters, splitting them into groups by dashes.