Faire tourner un nœud
Un nœud ZooBC est le logiciel ZooBC qui tourne sur un ordinateur. Il conserve une copie de la chaîne, vérifie chaque bloc et chaque transaction selon les mêmes règles que tous les autres nœuds, et sert une API HTTP publique. N’importe qui peut en faire tourner un, et un nœud qui se contente de suivre la chaîne permet déjà à son propriétaire de tout vérifier sans faire confiance à personne. Produire des blocs est une étape distincte : un nœud ne le fait qu’une fois qu’il détient un siège dans le registre des nœuds.
Ce qu’exécute un nœud
Un nœud est un seul processus, lancé par zoobc-node --start node.conf, avec une seule base de données SQLite. Il écoute sur trois ports :
| Port | Usage | |
|---|---|---|
| 8001 | le réseau pair à pair | |
| 8080 | l’API HTTP, qui sert aussi le [[web-wallet | portefeuille web]] |
| 8545 | l’adaptateur RPC de style Ethereum utilisé par [[metamask | MetaMask]], joignable par défaut depuis la seule machine du nœud (boucle locale) |
Un nœud ne construit jamais de bloc de genèse. Le bloc 0 doit déjà se trouver dans sa base de données, et le hachage de ce bloc est l’identité de la chaîne (voir le bloc de genèse). Si un nœud se retrouve coincé sur une branche qu’il ne peut pas quitter (il est « bloqué »), il abandonne sa chaîne et se reconstruit à partir des instantanés ancrés dans la chaîne dorsale, car le réglage auto_resync est activé par défaut. Une version peut aussi embarquer une épingle de version, un bloc dorsal connu auquel la dorsale du nœud doit correspondre. Les nouvelles versions arrivent par un programme de mise à jour qui tourne à côté du nœud et que le propriétaire contrôle (versions et mises à jour).
De la mise en marche à la production de blocs
- L’opérateur crée deux clés : une clé de nœud pour la machine et une clé du propriétaire dans un portefeuille (clés d’un nœud).
- Le propriétaire envoie un enregistrement qui bloque une mise et contient la preuve que les deux clés vont ensemble (enregistrer un nœud).
- Le nœud attend dans une file d’attente publique, ordonnée selon la mise multipliée par le temps d’attente (file d’attente).
- Une minuterie d’admission fait entrer un nœud à la fois, à un rythme lent fixé par le protocole (rythme d’admission).
- Une fois admis, le nœud est tiré pour produire des blocs (tirage), relaie les blocs et les transactions vers les pairs qui lui sont assignés (reçus et la topologie du réseau) et, après une courte période de maturité, partage les récompenses (maturité et gains).
Chaque chaîne démarre avec 11 sièges de genèse détenus par la ZooBC Foundation. Tous les autres entrent par la file d’attente, et personne ne choisit qui est admis. Aucun siège n’est accordé à la main, et aucun ne peut être gagné par la puissance de calcul comme en preuve de travail.
Rester dans le registre
Un siège se conserve en faisant le travail. Un nœud enregistré qui saute un tour pour lequel il a été tiré, quelle qu’en soit la raison, devient manquant jusqu’à ce qu’il produise son propre bloc suivant. Tant qu’il est manquant, il ne gagne rien, et son score de participation baisse de 5 points (sur 100) par unité de score, soit 12 heures sur un réseau de moins de 2 880 nœuds. Les reçus qu’il signe et les pings ne mettent pas fin à cet état ; seul son propre bloc suivant y met fin.
Au quatrième tour manqué d’affilée, le nœud est aussi suspendu : il sort du tirage des producteurs mais conserve son siège. Quand il est de nouveau en ligne, son logiciel envoie un ping, une petite transaction sans frais que seul un nœud suspendu peut envoyer, qui le ramène dans le tirage à titre probatoire. Si le score atteint zéro, le nœud est expulsé. Le détail figure dans l’article sur les tours manqués ; toutes les façons dont un siège peut prendre fin sont décrites dans celui sur la sortie du registre, et tous les chiffres sont réunis dans les paramètres des nœuds.
Voir aussi
Articles de ce thème
- Enregistrer un nœud
Comment un propriétaire enregistre un nœud : la transaction NodeRegistration, la preuve de propriété qui lie la clé de nœud au propriétaire, et la plus petite mise que la file d’attente accepte. - La file d’attente
Comment les nouveaux venus enregistrés attendent un siège : l’ordre selon la mise multipliée par le temps d’attente, le contrôle de présence quotidien, et ce que coûte la sortie de la file. - Le registre des nœuds et ses sièges
La liste sur la chaîne des nœuds autorisés à produire des blocs : ce que chaque siège enregistre, pourquoi ce sont les sièges et non les pièces qui décident de la production de blocs, et comment n’importe qui peut la consulter. - Le rythme d’admission
Pourquoi ZooBC admet les nouveaux venus dans son registre un par un et lentement, la formule qui fixe le délai entre deux admissions, et le calendrier qu’elle donne sur le mainnet. - Les clés d’un nœud
La clé de nœud qui signe le travail d’un nœud et la clé du propriétaire qui contrôle son siège et sa mise : où chacune réside, ce que chacune signe, et comment elles sont liées. - Maturité et gains
Ce que gagne un nœud enregistré, comment la loterie coinbase partage les récompenses de chaque bloc selon le score de participation, et pourquoi un nouveau nœud doit devenir mature avant de gagner quoi que ce soit. - Paramètres des nœuds sur le mainnet
Tableau de référence des valeurs du mainnet qui régissent l’enregistrement des nœuds, la file d’attente, l’admission, la vivacité, les gains, la sortie, les mises à jour et le processus du nœud, une ligne par valeur. - Quitter le registre
Les façons dont un siège prend fin (retrait par le propriétaire, expulsion à un score nul, revendication avec la clé de nœud), et les cas où le propriétaire récupère toute sa mise ou en perd un dixième. - Versions et mises à jour
Comment les nouvelles versions du nœud sont annoncées sur la chaîne, comment le programme de mise à jour placé à côté de chaque nœud les installe en toute sécurité, et comment un lot de nouvelles règles de consensus s’active.