Les clés d’un nœud
Un opérateur de nœud ZooBC utilise deux clés. La clé de nœud est l’identité de la machine : elle réside sur le nœud et signe ce que le nœud fait toute la journée. La clé du propriétaire est un compte ordinaire dans le portefeuille de l’opérateur : elle contrôle le siège et la mise. Les séparer garantit qu’une intrusion sur le serveur ne livre pas le portefeuille de l’opérateur.
La clé de nœud
La clé de nœud est une clé Ed25519 de 32 octets, écrite avec le préfixe ZNK_. Elle est conservée dans le fichier de configuration du nœud, node.conf, et elle signe :
- les blocs que produit le nœud, ainsi que la preuve de graine de chaque bloc (graine du bloc (VRF)) ;
- les reçus des blocs et des transactions qu’il reçoit de ses pairs (reçus et la topologie du réseau) ;
- les messages à ses pairs, y compris la poignée de main qui ouvre chaque connexion ;
- ses signatures sur la chaîne dorsale ;
- les attestations et les votes, comme les votes de prix et les veto opposés à des versions ;
- les preuves qu’il détient des fragments du stockage décentralisé (stockage décentralisé).
Comme node.conf contient la clé privée, le nœud refuse de démarrer si d’autres utilisateurs de la machine peuvent lire le fichier ; lorsque le nœud est propriétaire du fichier, il en fixe lui-même le mode à 0600.
Le compte propre du nœud
Les mêmes 32 octets écrits avec le préfixe ZBC_ forment un compte ordinaire : le compte propre du nœud. Il envoie les transactions de devoir du nœud, comme les preuves de stockage, les attestations et les votes, avec des frais d’exactement 0 (frais). Pour chaque siège de genèse, ce compte démarre avec 10 ZBC.
Les deux écritures d’une même clé partagent les 51 premiers caractères après le préfixe et ne diffèrent que par les cinq derniers, car la somme de contrôle de 3 octets placée à la fin couvre aussi le préfixe. Remplacer ZNK par ZBC à la main casse donc la somme de contrôle, et le texte modifié est refusé (comptes et adresses).
La clé du propriétaire
La clé du propriétaire est un compte ZBC_ ordinaire dans le portefeuille de l’opérateur. Elle signe les transactions du registre :
- NodeRegistration (type 2), qui enregistre le nœud et bloque sa mise ;
- une augmentation de la mise ;
- NodeRegistrationUpdate (type 258), qui transfère le siège vers une nouvelle clé de nœud ;
- RemoveNodeRegistration (type 514), qui retire le nœud ;
- ClaimNodeRegistration (type 770), qui revendique la mise.
La mise provient de ce compte, et les gains du nœud à la loterie lui sont reversés. Un nœud ne détient jamais la clé de son propriétaire.
Deux clés liées : la preuve de propriété
Un enregistrement nécessite les deux clés. La clé de nœud signe un court message qui désigne le compte du propriétaire et un bloc récent, et la clé du propriétaire signe la transaction qui le contient. Aucune des deux clés ne peut à elle seule enregistrer la paire, et personne ne peut enregistrer le nœud de quelqu’un d’autre sous son propre compte. La même preuve est exigée pour augmenter la mise et pour la revendiquer. Sa structure exacte est détaillée dans l’article sur l’enregistrement d’un nœud.
Les opérateurs créent eux-mêmes les deux clés. Rien n’est délivré, et personne d’autre n’en détient de copie.
Transférer le siège vers une nouvelle clé de nœud
Si une clé de nœud est exposée, ou si la machine est remplacée, le propriétaire peut transférer le siège vers une nouvelle clé de nœud sans s’enregistrer à nouveau. NodeRegistrationUpdate contient la nouvelle clé de 32 octets, avec une preuve de propriété signée par la nouvelle clé. Le nœud conserve son identifiant, son score, son état dans la file d’attente et son admission. Le changement prend effet 120 blocs (30 minutes) après le bloc qui l’inclut.
La clé de nœud peut aussi déplacer la mise
Protégez la clé de nœud aussi soigneusement qu’une clé de portefeuille. Quiconque la détient peut, avec ClaimNodeRegistration, revendiquer la mise du siège vers un compte qu’il contrôle. La revendication du propriétaire lui-même est traitée comme un retrait, avec le même délai de carence de 7 jours. Celle de toute autre personne est annoncée et s’exécute 40 320 blocs (7 jours) plus tard, sauf si le propriétaire retire le nœud avant : un propriétaire qui surveille la chaîne dispose ainsi d’une semaine pour réagir (quitter le registre). C’est aussi le recours prévu pour un propriétaire qui a perdu l’accès au compte propriétaire : la revendication vient alors d’un autre compte, et elle s’exécute donc elle aussi 7 jours plus tard.
Autres clés
Les clés natives peuvent être dérivées d’une phrase de récupération selon le chemin m/44'/883'/n', et la même clé de 32 octets peut aussi s’écrire comme clé de relais (ZBR_) ou clé de passerelle (ZBG_) (clés et les types de comptes). Les quatre clés de rôle du protocole (autorité de publication, autorité des pages, trésorerie et teneur de marché) sont des clés distinctes, conservées sur des appareils distincts (ZooBC Foundation) ; un opérateur n’a besoin d’aucune d’elles.