Wiki ZooBC
Faire tourner un nœud

Le registre des nœuds et ses sièges

Le registre des nœuds est la liste, tenue sur la chaîne, des nœuds autorisés à produire des blocs ZooBC. Chaque entrée est un siège. En preuve de participation, ce sont les sièges, et non les pièces ou le matériel, qui décident qui produit les blocs : la probabilité qu’un opérateur produise le bloc suivant est égale à sa part des sièges. Chaque modification du registre est une transaction que tous les nœuds valident, et n’importe qui peut le consulter.

De l’enregistrement au siège : s’enregistrer avec une mise, attendre dans la file publique, être admis un à la fois, puis produire des blocs à tour de rôle
De l’enregistrement au siège : s’enregistrer avec une mise, attendre dans la file publique, être admis un à la fois, puis produire des blocs à tour de rôle

Ce qu’enregistre un siège

Pour chaque nœud, le registre conserve :

  • l’identifiant du nœud, un nombre dérivé de la clé de nœud : ses 8 premiers octets lus comme un entier petit-boutiste (little-endian), avec le bit de poids fort mis à zéro ;
  • la clé de nœud, une clé publique Ed25519 de 32 octets qui signe le travail du nœud (voir les clés d’un nœud) ;
  • le compte propriétaire, le compte ordinaire qui a enregistré le nœud et qui le contrôle ;
  • la hauteur d’enregistrement, le bloc dans lequel le nœud s’est enregistré ;
  • la mise bloquée, les ZBC que le propriétaire a bloqués en guise de caution ;
  • le statut : enregistré (actif), en file d’attente ou supprimé.

Le score de participation du nœud est conservé à côté. Le registre est versionné par hauteur de bloc, si bien que sa composition à n’importe quelle hauteur passée peut être reconstruite, et chaque bloc est jugé par rapport au registre tel qu’il était au bloc précédent.

Pourquoi des sièges

En preuve de travail, une part de la production de blocs s’achète aussi vite que du matériel ; en preuve d’enjeu, aussi vite que des pièces. Dans ZooBC, c’est une part des sièges, et les sièges sont admis un à la fois, à un rythme fixé par le protocole (rythme d’admission). Une majorité de la production de blocs ne peut donc pas s’acheter rapidement. Une comparaison détaillée met les trois conceptions côte à côte.

Le tirage des producteurs est uniforme sur les sièges enregistrés qui ne sont pas suspendus (tirage). Chaque siège a la même probabilité d’être tiré, quel que soit le montant bloqué par son propriétaire. Un opérateur qui détient 3 sièges sur 30 produit environ un bloc sur dix, que chacun de ses sièges bloque 100 ZBC ou 10 000 ZBC.

Une roue avec un secteur égal par siège quelle que soit la mise, la mise servant plutôt à ordonner la file d’attente
Une roue avec un secteur égal par siège quelle que soit la mise, la mise servant plutôt à ordonner la file d’attente

À quoi sert la mise

Si la mise n’achète aucun bloc, à quoi sert-elle ?

  • Elle ordonne la file des nœuds qui attendent d’entrer, selon la mise multipliée par le temps d’attente (file d’attente).
  • Elle donne un coût à chaque siège : un nouveau venu doit bloquer au moins le minimum d’entrée (enregistrer un nœud).
  • C’est une caution. Un dixième en est perdu si le nœud est expulsé, ou s’il part alors qu’il est manquant ou suspendu ; ce dixième va au fonds de longévité, qui rémunère les nœuds qui travaillent (quitter le registre).

La mise ne rapporte rien par elle-même. Les récompenses l’ignorent aussi : la loterie coinbase est pondérée par le score de participation, que seul un travail réel fait monter (maturité et gains).

Sièges de genèse et nouveaux venus

Chaque chaîne démarre avec 11 sièges de genèse détenus par la ZooBC Foundation. Ils sont inscrits dans le registre à la hauteur 0, sans mise bloquée, avec le score par défaut de 20 % et un solde de fonctionnement de 10 ZBC sur le propre compte de chaque nœud. Tous les autres entrent par la file d’attente : personne ne choisit les candidats et il n’y a pas d’étape d’approbation. Il n’y a pas non plus de calendrier fixe : le délai entre deux admissions dépend du nombre de sièges comptés. Un enregistrement n’expire pas.

Comment un siège change de statut

DeVersCause
(aucun)enregistréla genèse, à la hauteur 0
(aucun) ou suppriméen file d’attenteun enregistrement
en file d’attenteenregistrél’admission
enregistrésupprimél’expulsion, le retrait par le propriétaire ou une revendication
en file d’attentesuppriméle retrait, une revendication ou une éviction pour défaut de présence

La suspension n’est pas un statut. Un nœud suspendu reste «  enregistré  », mais il est exclu du tirage des producteurs jusqu’à son retour (tours manqués, suspension et expulsion).

Consulter le registre

Le registre est public, et aucune clé n’est nécessaire pour le lire :

  • GET /api/v1/nodes?status=all liste chaque siège avec son propriétaire et sa hauteur d’enregistrement ; les sièges de genèse gardent la hauteur 0.
  • GET /api/v1/nodes?status=queued liste la file d’attente, avec la mise et la hauteur d’enregistrement de chaque nœud.
  • GET /api/v1/blockchain/rules liste les règles en vigueur.

Ce n’est pas une liste de portefeuilles : un compte ordinaire n’a besoin d’aucun enregistrement pour détenir ou envoyer des ZBC.

Voir aussi