Clarification règles de validation (Number, PreviousHash, PreviousIssuer, Currency)

Bonjour, dans le cadre de l’implémentation de Dunixir (protocoles Duniter en Elixir), j’aimerais avoir quelques précisions sur les règles de validation pour les champs:

Est-ce que ce sont bien des comparaisons ?
Number = HEAD.number
Car le signe égal est utilisé une fois, et correspond à une assignation ailleurs dans la RFC, comme dans BR_G01 par exemple:
HEAD.number = HEAD~1.number + 1

Ensuite, en supposant que ce sont des comparaisons, à quoi fait référence le membre de gauche dans ces expressions ?

Si j’ai bien compris la logique, cela correspond à la valeur du champ dans le bloc à valider ?

Pour résumer l’enchaînement pour ces champs:

  1. HEAD dans le BINDEX n’est pas initialisé avec la valeur présente dans le bloc mais avec la valeur null
  2. HEAD est mis à jour par récurrence sur l’entrée HEAD~1 du BINDEX (number BR_G01, previousHash BR_G02, previousIssuer BR_G03, currency BR_G99)
  3. on compare ensuite les valeurs du HEAD avec le bloc lui-même (Number BR_G51, PreviousHash BR_G52, PreviousIssuer BR_G53, Currency BR_G98)

Est-ce bien cela ?

@HugoTrentesaux nous a informé que l’un de vous saurait probablement répondre
@cgeek @elois @gerard94 @tuxmain @matograine

Merci d’avance

Bonjour,

Je ne suis pas sûr du sens du = ni de l’opérande de gauche, mais je pense qu’en substance ça veut dire qu’il faut vérifier que

  • block.number == head_block.number+1
  • block.previous_hash == head_block.hash
  • block.previous_issuer == head_block.issuer
  • block.currency == parameters.currency

Je ne pense pas qu’il soit utile de chercher beaucoup plus loin pour ces règles assez élémentaires, les détails qui tuent sont plutôt dans des règles concernant la toile de confiance par exemple. (surtout concernant les index, je dirais que tant que la validation des blocs est ok, c’est l’essentiel)