Mise à jour du Proof Of Stake

Afin de tenir la communauté Nimiq au courant des progrès en cours concernant Nimiq Proof-of-Stake, nous voulons d’abord prendre le temps de plonger dans les différents composants de la Blockchain Nimiq, en mettant en lumière leurs fonctionnalités. Grâce à cette mise à jour, nous espérons offrir une image plus claire de notre stade de développement actuel.

Le testnet du PoS de Nimiq a été dévoilé au cours du premier trimestre de cette année. Cette publication marque la mise en œuvre des principales fonctionnalités du réseau et de son fonctionnement stable dans des conditions friendly. Actuellement, nous nous concentrons sur la gestion des conditions inattendues et sur l’amélioration de la sécurité et des efforts d’optimisation.
Le PoS de Nimiq continue d’évoluer vers sa sortie publique ; pour mieux vous informer sur ce sujet complexe, nous aimerions d’abord examiner ses principaux éléments constitutifs et leur état actuel.

Validateurs et stakers

Les validateurs sont les producteurs de blocs du PoS. Un validateur signale sa volonté de participer à la production de blocs en allouant une partie de ses fonds comme enjeu (stake). Plus son enjeu total est élevé, plus grande est la probabilité d’être élu. De même, plus l’enjeu est élevé, plus le nombre de places (slots) attribuées au validateur est élevé.
Un ensemble de places est utilisé pour déterminer les producteurs de blocs. Elles sont attribuées à un validateur en fonction de son enjeu. À chaque bloc, une place est choisie au hasard pour produire le bloc suivant, et le validateur qui lui est attribué procède ensuite à sa production. Les places sont également utilisées pour voter sur les macro-blocs et les blocs de saut (skip blocks), qui seront explorés plus tard.
Un participant qui n’a pas les ressources ou les connaissances pour devenir un validateur peut s’inscrire en tant que staker. Un staker délègue ses fonds à un validateur, qui produit et valide des blocs en son nom. Bien que les stakers n’aient pas besoin d’être en ligne pour recevoir des récompenses, ils sont soumis à des sanctions si leur validateur se comporte mal et ne peuvent pas retirer leur enjeu tant que leur validateur n’a pas purgé sa peine. Même dans une telle situation, les stakers ne perdent pas leur enjeu. De plus, les validateurs effectuent le paiement des récompenses à leurs stakers hors chaîne.

Aperçu de la blockchain

La blockchain PoS de Nimiq est structurée en plusieurs sous-ensembles de blocs appelés époques et lots (epochs and batches). Une époque se compose de plusieurs lots. Une époque se termine toujours par un macro-bloc de clôture électorale. Pendant une époque, l’ensemble des validateurs reste constant, le macro-bloc de clôture électorale sélectionne un nouvel ensemble de validateurs élus pour l’époque suivante. Les lots se composent de micro-blocs et d’un macro-bloc de contrôle de clôture, comme dans l’image suivante.

Analysons les deux en détail.

Micro-blocs

Les micro-blocs sont produits par un validateur sélectionné et contiennent les transactions générées par l’utilisateur. Si un validateur ne produit pas un micro-bloc dans le temps prévu, la liste des validateurs outrepasse et crée un bloc de saut à la place du micro-bloc prévu. Contrairement à un micro-bloc régulier, un bloc de saut n’inclut pas de transactions et est signé par plus des deux tiers des validateurs de l’époque en cours. Ce bloc remplace le micro-bloc, sautant ainsi par-dessus.

Macro-blocs

Après qu’un certain nombre de micro-blocs ait été produit, un macro-bloc est ajouté pour finaliser le lot. Un leader sélectionné au hasard propose des macro-blocs, et le reste de la liste des validateurs vote sur la proposition dans le cadre d’un processus de vote en deux étapes. Le macro-bloc est ajouté à la chaîne lorsqu’un accord est obtenu de plus des deux tiers de l’ensemble des validateurs. Les validateurs ne peuvent pas diviser leurs votes, ils votent donc toujours avec toutes leurs places, ce qui leur donne un plus grand pouvoir de vote en cas de nombre élevé de places.
Il existe deux types de macro-blocs : les blocs d’élection fournissent une finalité périodique et renouvellent l’ensemble des validateurs pour l’époque suivante, tandis que les blocs de contrôle fournissent une finalité tout en conservant l’ensemble des validateurs.

Comment traitons-nous les comportements malveillants ?

Les validateurs sont récompensés pour leur participation à la production de blocs et sanctionnés s’ils ne contribuent pas conformément au consensus. Les sanctions sont distinguées en fonction de la gravité de l’infraction.
Pour les infractions mineures, comme le retard dans la production de blocs, la place responsable est désactivée et ses récompenses sont brûlées. En revanche, les infractions plus graves entraînent le verrouillage du validateur, y compris de toutes ses places, dans ce que l’on appelle un état de prison, où ils restent pendant une période importante. Pendant cette période, le validateur ne peut pas être réélu, et toutes ses récompenses sont brûlées.

Impact sur les stakers

La période de prison affecte également les stakers du validateur, car la période de verrouillage du staker correspond à la période de verrouillage du validateur. Une fois que le validateur est libéré, les stakers peuvent soit conserver leur enjeu avec leur validateur, soit choisir de le retirer une fois la période de prison terminée si leur enjeu reste inactif.

Comptes et transactions

Il existe quatre types de comptes distincts : les comptes de base, les contrats de gel (Vesting contracts), les contrats HTLC et le contrat d’enjeu unique. L’arbre des comptes (account tree) héberge tous les comptes et contrats, documentant leurs soldes et, le cas échéant, des données spécifiques au contrat.
Pour les utilisateurs réguliers (non-validateurs), les transactions sont votre seul moyen d’interagir avec la blockchain. Les transactions sont donc utilisées non seulement pour le transfert classique de valeur, mais aussi pour des fonctions natives telles que la signature de HTLC (pour les échanges atomiques), la création et le rachat de contrats de gel, l’initiation de stakers, et bien plus encore.

Types de nœuds

Les participants peuvent participer au réseau de Preuve d’Enjeu de Nimiq grâce à différents types de nœuds, chacun offrant des fonctionnalités et des exigences en ressources différentes :


Nœuds d’historique : Ces nœuds possèdent une connaissance complète de l’historique des transactions. Dans le PoS de Nimiq, ce type de nœud était autrefois appelé « nœud complet », et même si le nom a changé dans le protocole de Preuve d’Enjeu, il continue de servir de gardien de l’ensemble de l’historique des transactions.


Nœuds complets : Ces nœuds conservent des informations essentielles nécessaires à la validation et à la production de blocs. Dans la transition de Nimiq PoW à Nimiq PoS, ce qui était autrefois connu sous le nom de « nœud léger » a été renommé « nœud complet », mais il conserve sa fonction principale de conservation de toutes les informations vitales de la blockchain.


Nœuds légers : Les nœuds légers se synchronisent rapidement avec la blockchain car ils ne demandent que des détails liés à leurs comptes. Bien que les navigateurs soient les plateformes typiques pour les nœuds légers, les serveurs peuvent également fonctionner en tant que tels. Auparavant, dans le Proof of Work de Nimiq, ce type de nœud était appelé un « nœud Nano ».

Nœuds de navigateur: En utilisant le même code Rust que le client standard, le client web Nimiq se synchronise rapidement et sert de nœud réseau capable de transmettre directement des transactions et d’obtenir des données de blockchain vérifiées.

Implémentation de la preuve du zéro de connaissance de Nimiq

L’implémentation du PoS de Nimiq utilise des Zero Knowledge Proofs (ZKPs) récursives pour maintenir une taille de données constante lors de la synchronisation de la blockchain, améliorant ainsi la vitesse et l’efficacité. Si vous souhaitez en savoir plus sur les ZKPs, vous pouvez lire la série d’articles de blog que nous avons écrits sur ce sujet : Introduction aux ZKPs Partie 1 et Partie 2.


En général, les Zero Knowledge Proofs sont un concept qui permet à une partie (le prouveur) de prouver à une autre partie (le vérificateur) qu’une déclaration est vraie sans révéler aucune information au-delà de la déclaration elle-même. En d’autres termes, il s’agit d’une méthode pour prouver quelque chose sans révéler le secret réel. Les ZKPs récursives améliorent l’efficacité et la scalabilité en décomposant les preuves en sous-preuves plus petites.


Le système de preuves que Nimiq utilise est basé sur les zk-SNARKs. SNARK est un acronyme pour « succinct non-interactive argument of knowledge » (argument succinct non interactif de connaissance), et un SNARK récursif est une preuve qui vérifie un autre SNARK à son tour. Les SNARKs sont une forme de ZKP qui ne nécessite aucune interaction entre les parties impliquées. Ils sont succincts, ce qui signifie que le vérificateur peut rapidement vérifier une preuve en demandant simplement au prouveur.
La blockchain de Nimiq comprend un nœud spécial chargé de générer ces preuves – le nœud prouveur (prover node). Bien que la vérification des ZKPs puisse être effectuée rapidement, leur génération est gourmande en ressources et exige une grande puissance de calcul. Les nœuds complets ou d’historique peuvent faciliter cet effort en activant la fonction de nœud prouveur dans leur configuration.


Grâce à l’incorporation de cette technologie, Nimiq peut désormais synchroniser la blockchain sans nécessiter le téléchargement de l’ensemble de la blockchain. Cette synchronisation est possible car l’état actuel de la blockchain peut être validé en prouvant que les validateurs ont produit les blocs conformément aux règles du consensus. De plus, cette approche réduit considérablement l’espace de stockage nécessaire sur l’appareil de l’utilisateur, un facteur particulièrement crucial pour les appareils mobiles. Cette amélioration constitue un pas significatif en avant en termes d’expérience utilisateur, rendant la plateforme Nimiq plus facile et plus rapide à utiliser.


Les ZKPs de Nimiq permettent aux utilisateurs de se synchroniser jusqu’au dernier bloc d’élection. Un ZKP a une taille d’environ 1 kilo-octet, et son processus de vérification prend environ 600 ms dans un navigateur moderne. En revanche, le processus de création d’une preuve, ou de prouver, est plus long. Actuellement, il faut environ 6 heures pour générer un ZKP pour une nouvelle époque. Ces preuves sont formulées et fournies par les nœuds prouveurs au sein du réseau.

Perspectives jusqu’au Mainnet

Le testnet offre à la communauté l’opportunité d’explorer la fonctionnalité du PoS de Nimiq sur une chaîne en fonctionnement continu. Alors que les développeurs de la communauté basent leurs projets sur le code actuel et le nouveau réseau, nous invitons tout le monde à pousser le réseau à ses limites et à identifier les éventuelles vulnérabilités de sécurité. L’équipe Nimiq consacre du temps et des ressources pour renforcer le protocole et l’implémentation, le programme public de chasse aux bugs ZKP est actuellement ouvert aux soumissions, et nous élargirons bientôt le champ d’application pour inclure une plus grande section de la base de code. Nous visons à présenter un réseau de blockchain qui soit un candidat à la version Mainnet après des tests approfondis.


Nous apprécions votre soutien continu et votre participation à cette aventure. Restez connectés à nos réseaux sociaux pour plus de mises à jour passionnantes à venir.

Pura Vida,
La Team Nimiq

DISCLAIMER: Aucune des déclarations ne doit être considérée comme une approbation ou une recommandation pour Nimiq, une crypto-monnaie ou un produit d'investissement. Ni les informations, ni les opinions contenues dans ce document ne constituent une sollicitation ou une offre par les créateurs ou participants d'acheter ou de vendre des titres ou d'autres instruments financiers ou de fournir des conseils ou des services d'investissement.