Qu'est-ce qu'un jeu de validation ou « comment lancer une blockchain de preuve de participation »

Votre équipe a donc terminé la version alpha de votre blockchain, et il est temps de lancer testnet puis mainnet. Vous disposez d’une véritable blockchain, avec des acteurs indépendants, un bon modèle économique, de la sécurité, vous avez conçu la gouvernance et il est maintenant temps d’essayer tout cela en action. Dans un monde crypto-anarchique idéal, vous mettez le bloc de genèse sur le réseau, le code final du nœud et les validateurs eux-mêmes lancent tout, déclenchent tous les services auxiliaires, et tout se passe tout seul. Mais c'est dans un monde fictif, mais dans le monde réel, l'équipe doit préparer pas mal de logiciels auxiliaires et diverses manipulations pour aider les validateurs à lancer un réseau stable. C’est de cela que parle cet article.

Le lancement de réseaux basés sur des consensus de type « proof-of-stake », où les validateurs sont déterminés par les votes des détenteurs de jetons système, est un événement assez spécifique, car même le lancement de systèmes traditionnels, gérés de manière centralisée, avec des dizaines et des centaines de serveurs n'est pas une tâche facile. tâche en soi, et la blockchain doit être démarrée avec des efforts de participants loyaux mais indépendants. Et, si dans une entreprise, au démarrage, les administrateurs ont un accès complet à toutes les machines, journaux et surveillance générale, alors les validateurs ne permettront à personne d'accéder à leurs serveurs et, très probablement, préféreront construire leur infrastructure de manière indépendante, car elle contrôle l'accès. aux principaux atouts du validateur - les enjeux des électeurs. C'est ce comportement qui permet de construire des réseaux distribués sécurisés - l'indépendance des fournisseurs de cloud utilisés, des serveurs virtuels et « baremetal », différents systèmes d'exploitation, tout cela permet de rendre les attaques sur un tel réseau extrêmement inefficaces - trop différentes un logiciel est utilisé. Par exemple, Ethereum utilise deux implémentations de nœuds principales, dans Go et dans Rust, et une attaque efficace pour une implémentation ne fonctionne pas pour l’autre.

Par conséquent, tous les processus de lancement et d'exploitation des blockchains doivent être organisés de telle manière que tout validateur, ou même un petit groupe de validateurs, puisse à tout moment jeter son ordinateur par la fenêtre et partir, alors que rien ne doit se casser et que les validateurs restants doivent continuer à soutenir efficacement le réseau opérationnel et connecter de nouveaux validateurs. Lors du lancement d'un réseau, lorsqu'un validateur est en Europe, le deuxième en Amérique du Sud et le troisième en Asie, il est assez difficile de parvenir au travail coordonné de plusieurs dizaines de groupes indépendants et de les intéresser en conséquence.

Validateurs

Imaginons le lancement d'une hypothétique blockchain moderne (la plupart de ce qui est décrit convient aux blockchains basées sur n'importe quelle famille moderne de blockchains : Ethereum, EOS, Polkadot, Cosmos et autres, qui fournissent un consensus de preuve d'enjeu. Les personnages principaux de ces blockchains sont des équipes de validateurs, engagées dans l'installation de leurs propres serveurs indépendants qui valident et produisent de nouveaux blocs, et reçoivent des récompenses fournies par le réseau pour ceux qui participent au consensus. Pour lancer de nouveaux réseaux, plusieurs dizaines de validateurs sont nécessaires (donc beaucoup peuvent désormais parviennent plus ou moins efficacement à un consensus en quelques secondes), c'est pourquoi le projet annonce l'enregistrement, dans lequel les validateurs partagent des informations publiques les concernant avec les utilisateurs, les convainquant qu'ils vont fournir un service de haute qualité au réseau lancé.

La validation est un métier qui permet d'évaluer de manière extrêmement précise les revenus potentiels du validateur, de transférer rapidement le pouvoir entre les projets, et si le réseau qu'il a choisi réussit, le validateur peut, en tant qu'acteur à part entière du DAO et personne responsable, développer le projet, ou simplement fournir un excellent service technique pour un argent totalement transparent et honnêtement gagné. Lors du calcul de la récompense des validateurs, les projets tentent de prendre en compte les coûts des validateurs et de rendre la récompense des blocs telle que cette activité soit rentable, mais en même temps ne permet pas aux validateurs de faire tomber l'économie en les inondant d'argent et en privant les autres utilisateurs du réseau.

Le métier de validateur nécessite de garantir une tolérance élevée aux pannes des services, ce qui signifie un niveau élevé de formation des développeurs et des développeurs et des ressources informatiques coûteuses. Même sans avoir besoin d'exploiter des hachages dans les réseaux de preuve de travail, un nœud blockchain est un service volumineux qui occupe beaucoup de mémoire, consomme beaucoup de calculs, valide, écrit sur le disque et envoie de grandes quantités de données au réseau. . Pour stocker les journaux de transactions et les chaînes de blocs pour une blockchain contenant plusieurs milliers de petites transactions dans un bloc, un stockage de 50 Go ou plus est désormais requis, et pour les blocs, il doit s'agir d'un SSD. La base de données d'état des blockchains prenant en charge les contrats intelligents peut déjà dépasser 64 Go de RAM. Les serveurs présentant les caractéristiques requises sont assez chers ; un nœud Ethereum ou EOS peut coûter entre 100 et 200 $/mois. Ajoutez à cela l'augmentation des salaires pour le travail 10 heures sur 000 des développeurs et des développeurs qui, pendant la période de lancement, résolvent les problèmes même la nuit, puisque certains validateurs peuvent facilement se trouver dans un autre hémisphère. Cependant, au bon moment, posséder un nœud de validation peut rapporter des revenus importants (dans le cas d'EOS, jusqu'à XNUMX XNUMX $ par jour).

La validation n'est qu'un des nouveaux rôles informatiques potentiels pour les entrepreneurs et les entreprises ; à mesure que les programmeurs proposent des algorithmes de plus en plus sophistiqués qui récompensent l'honnêteté et punissent la fraude et le vol, des services apparaissent qui remplissent les fonctions de publication de données importantes (oracles), de supervision. (réduction des dépôts et punition des tricheurs en publiant des preuves de tromperie), services de résolution des litiges, assurances et options, même le ramassage des ordures est un marché potentiellement important pour les systèmes de contrats intelligents où il est nécessaire de payer pour le stockage des données.

Problèmes de lancement d'une blockchain

L’ouverture de la blockchain, qui permet aux ordinateurs de n’importe quel pays de participer librement au réseau et la facilité de connecter n’importe quel script kiddie au réseau selon les instructions de GitHub, ne sont pas toujours un avantage. La recherche d'un nouveau jeton oblige souvent les validateurs à « extraire une nouvelle pièce dès le début », dans l'espoir que le taux augmentera et avoir la possibilité de perdre rapidement leurs gains. De plus, cela signifie que votre validateur peut être n'importe qui, même une personne anonyme, vous pouvez voter pour lui de la même manière que pour les autres validateurs (cependant, il sera difficile pour une personne anonyme de recueillir les votes des parties prenantes pour elle-même, donc nous' Je laisserai les histoires effrayantes sur les crypto-monnaies anonymes aux politiciens). Néanmoins

L'équipe du projet a une tâche - intégrer d'une manière ou d'une autre dans son réseau ceux qui, à l'avenir, seront capables d'assurer le fonctionnement stable des nœuds, de comprendre la sécurité, de savoir comment résoudre rapidement les problèmes, de coopérer avec d'autres validateurs et d'agir ensemble - la qualité de cela Tout dépend entièrement de ces qualités, gage dans lequel les participants au réseau vont investir leur temps et leurs ressources. Les fondateurs adéquats, lorsqu'ils évaluent les risques, comprennent bien que lors du lancement d'un logiciel de cette taille, vous devrez certainement rencontrer des erreurs dans le code et la configuration des nœuds, et que la stabilité du réseau dépend de la façon dont les développeurs et les validateurs résoudront conjointement de tels problèmes.

L'équipe est prête à voter sur le réseau principal pour tous les validateurs, juste pour savoir lesquels, lesquels sont bons ? Le plus gros portefeuille ? Presque personne ne l'a maintenant. Basé sur les profils Linkedin de l’équipe ? Les développeurs expérimentés ou les spécialistes de la sécurité ne vous donneront aucun profil Linkedin. D'après les déclarations dans le chat, les publications et l'aide aux autres pendant la phase de préparation ? Bien, mais subjectif et inexact.

Dans de telles conditions, il reste une chose - quelque chose qui résout bien les problèmes de chacun - un jeu dans lequel il sera possible de sélectionner les meilleurs validateurs, mais l'essentiel est de tester la force de la blockchain et de procéder à un test de combat à grande échelle du blockchain dans des conditions d'utilisation active, de changements de consensus, d'apparition et de correction d'erreurs . Cette procédure a d'abord été présentée comme un jeu par les gars du projet Cosmos, et cette idée est sans aucun doute un excellent moyen de préparer le réseau au lancement d'un réseau principal fiable et tolérant aux pannes.

Jeu des validateurs

Je décrirai le jeu des validateurs tel que nous l'avons conçu pour la blockchain DAO.Casino (DAOBet) basée sur le fork EOS, qui s'appelle Haya et dispose d'un mécanisme de gouvernance similaire - les validateurs sont choisis en votant depuis n'importe quel compte, dans quelle partie de le solde utilisé pour voter pour le validateur est gelé. Tout compte ayant le jeton BET principal sur son solde peut voter pour le validateur sélectionné avec n'importe quelle partie de son solde. Les votes sont résumés et les meilleurs validateurs sont construits sur la base des résultats. Dans différentes blockchains, ce processus est organisé différemment, et c'est généralement dans cette partie que la nouvelle blockchain diffère de la blockchain parent, et je dois dire que dans notre cas, EOS justifie pleinement le « OS » dans son nom, nous utilisons vraiment EOS comme système d'exploitation de base pour le déploiement d'une version modifiée de la blockchain pour les tâches DAOBet.

Je décrirai les problèmes individuels et comment ils peuvent être résolus dans le jeu. Imaginons un réseau dans lequel votre serveur peut être ouvertement attaqué, où pour maintenir la position du validateur, vous devez interagir en permanence avec le réseau, promouvoir votre validateur et vous assurer qu'il produit des blocs et qu'ils sont livrés aux autres validateurs à temps, sinon le validateur sera exclu de la liste.

Comment choisir les meilleurs gagnants ?

La principale exigence technique du jeu est que ses résultats soient publiquement vérifiables. Cela signifie que les résultats du jeu : les gagnants TOP, doivent être formés strictement sur la base de données pouvant être vérifiées par tout participant. Dans un système centralisé, nous pourrions mesurer la « disponibilité » de chaque validateur et récompenser ceux qui étaient le plus en ligne ou qui ont traversé le trafic réseau maximum. Vous pouvez collecter des données sur la charge du processeur et de la mémoire et récompenser ceux qui ont bien travaillé. Mais une telle collecte de métriques signifie l’existence d’un centre de collecte, et les nœuds sont tous indépendants et peuvent se comporter comme ils le souhaitent et envoyer n’importe quelle donnée.

Par conséquent, la solution naturelle est que les gagnants soient déterminés sur la base des données de la blockchain, car elles peuvent être utilisées pour voir quel validateur a produit quel bloc et quelles transactions y ont été incluses. Nous avons appelé ce nombre de points de validation (VP), et les gagner est l'objectif principal des validateurs du jeu. Dans notre cas, la mesure la plus simple, facilement vérifiable publiquement et efficace de « l’utilité » d’un validateur est VP = nombre de blocs produits par le validateur au cours d’une période de temps donnée.

Ce choix simple est dû au fait que la gouvernance dans EOS prévoit déjà de nombreux problèmes émergents, puisque EOS est l'héritier de trois générations de blockchains réellement fonctionnelles avec une vaste expérience dans la gestion de réseaux complexes et presque tous les problèmes de validation avec le réseau, le processeur, le disque ne pose qu'un seul problème - il signe moins de blocs, reçoit moins de paiement pour le travail, ce qui nous amène encore une fois simplement au nombre de blocs signés - pour EOS, c'est une option excellente et simple.

Pour d'autres blockchains, la façon dont les points de validation sont calculés peut différer, par exemple, pour les consensus basés sur pBFT (Tendermint/Cosmos, consensus Aura de Parity Substrate), où chaque bloc doit être signé par plusieurs validateurs, il est logique de compter chaque validateur. signatures plutôt que blocs. Il peut être judicieux de prendre en compte les cycles de consensus incomplets, qui gaspillent les ressources des autres validateurs, en général, cela dépend fortement du type de consensus.

Comment simuler des conditions réelles de fonctionnement

La tâche des fondateurs est de tester les validateurs dans des conditions proches de la réalité, sans aucun contrôle centralisé. Ce problème peut être résolu à l’aide d’un contrat faucet, qui distribue des quantités égales de jeton principal aux validateurs et à tous les autres. Pour recevoir des jetons sur votre solde, vous devez créer une transaction et vous assurer que le réseau l'inclut dans le bloc. Ainsi, pour gagner, un validateur doit constamment reconstituer son solde avec de nouveaux jetons et voter pour lui-même, se promouvant ainsi au sommet. Cette activité crée une charge constante sur le réseau et les paramètres peuvent être sélectionnés de manière à ce que le flux de requêtes soit suffisamment important pour un test complet du réseau. Par conséquent, planifiez à l'avance le contrat de robinetterie en tant qu'outil important pour le lancement du réseau et commencez à sélectionner ses paramètres à l'avance.

Demander des jetons à partir d'un robinet et valider des votes n'imite toujours pas complètement le fonctionnement d'une ogive, en particulier dans les modes extrêmement chargés. Par conséquent, l’équipe blockchain devra encore écrire des benchmarks supplémentaires d’une manière ou d’une autre pour charger le réseau. Les contrats intelligents spécialement créés qui permettent de tester un sous-système distinct jouent un rôle particulier à cet égard. Pour tester le stockage, le contrat stocke des données aléatoires dans la blockchain, et pour tester les ressources du réseau, le contrat de test nécessite une grande quantité de données d'entrée, gonflant ainsi le volume des transactions - en lançant un flux de telles transactions à des moments arbitraires, l'équipe teste simultanément la stabilité du code et la force des validateurs.

Un autre problème concerne la mise à jour du code des nœuds et la réalisation de hard forks. Il est nécessaire qu’en cas de bug, de vulnérabilité ou de collusion de validateurs malveillants, les validateurs disposent d’un plan d’action déjà élaboré dans le jeu des validateurs. Ici, vous pouvez proposer des schémas pour accumuler des VP pour appliquer rapidement un hard fork, par exemple en infligeant une amende à tous les validateurs qui n'ont pas encore déployé une nouvelle version du code du nœud, mais cela est difficile à mettre en œuvre et complique le calcul. Vous pouvez simuler la situation d’utilisation d’urgence d’un hard fork en « cassant » artificiellement la blockchain sur un bloc donné. La production de blocs s'arrête et à la fin, les gagnants seront ceux qui interviendront en premier et commenceront à signer les blocs, donc le VP basé sur le nombre de blocs signés est un bon choix ici.

Comment informer les participants de l'état du réseau et corriger les erreurs

Malgré la méfiance entre les validateurs, la réception en temps opportun d'informations à jour sur l'état du réseau est bénéfique pour tout le monde afin de prendre des décisions plus rapidement. L'équipe du projet développe donc un service permettant de collecter et de visualiser de nombreuses métriques à partir des serveurs de validation. ce qui vous permet de voir la situation simultanément pour l'ensemble du réseau, vous permettant de déterminer rapidement ce qui se passe. En outre, il est bénéfique à la fois pour les validateurs et pour le projet que l'équipe du projet corrige rapidement les erreurs trouvées. Ainsi, en plus de collecter des métriques, il est logique de commencer immédiatement à collecter les journaux et les données d'erreur des machines des validateurs sur une machine accessible à la blockchain. développeurs. Ici, il n'est avantageux pour personne de déformer les informations, ces services sont donc développés par l'équipe du projet et peuvent être fiables. Il est logique de collecter les métriques du système auprès des validateurs et, bien sûr, les métriques les plus importantes de la blockchain elle-même - pour DAOBet - sont le temps de finalisation et le décalage du dernier bloc finalisé. Grâce à cela, l'équipe constate une augmentation de la consommation de mémoire sur les nœuds lors de l'exécution du benchmark, des problèmes avec les validateurs individuels

Points importants pour mener un jeu de validation

Il s'avère que si vous souhaitez autoriser officiellement les validateurs à attaquer les machines des autres (officieusement, ils peuvent le faire de toute façon), vous devez formuler cela légalement comme test de sécurité, car selon les lois de certains pays, les attaques DDoS ou réseau peuvent être puni. Une autre question importante est de savoir comment récompenser les validateurs. Les prix naturels sont des jetons de projet, qui seront transférés sur le réseau principal, mais une distribution massive de jetons à quiconque a pu lancer un nœud n'est pas non plus la meilleure option. Très probablement, vous devrez trouver un équilibre entre deux options extrêmes :

Distribuez l'intégralité de la cagnotte en fonction des VP gagnés
c'est très démocratique et permet à tous ceux qui ont investi du temps et des ressources dans le jeu du validateur de gagner de l'argent
mais attire des personnes aléatoires vers le jeu sans infrastructure préparée

Distribuer la cagnotte du top N aux validateurs en fonction des résultats du jeu
Les gagnants seront très probablement les validateurs qui ont tenu le plus régulièrement pendant le jeu et qui sont très strictement déterminés à gagner.
certains validateurs ne voudront pas participer, évaluant peu leurs chances de gagner, surtout si parmi les participants figurent de vénérables validateurs

Quelle option choisir dépend de vous

Il y a encore un point - ce n'est pas du tout un fait que des dizaines de validateurs se précipiteront pour participer au jeu à votre appel, et parmi ceux qui décident d'essayer, tous n'installeront même pas et ne lanceront pas le nœud - généralement, à ce stade, les projets disposent d'une documentation plutôt clairsemée, des erreurs sont rencontrées et les développeurs travaillant sous pression ne répondent pas très rapidement aux questions. Ainsi, avant de lancer le jeu, il faut également prévoir des actions si le nombre requis de validateurs n’est pas atteint. Dans ce cas, au début du jeu, les validateurs manquants sont lancés par l'équipe projet, participent au consensus, mais ne peuvent être gagnants.

Conclusion

En conclusion, j'ai essayé de dresser à partir de ce qui précède une liste de ce qui doit être pensé, réalisé et lancé pour mener efficacement un jeu de validation.

Ce que vous devez faire pour exécuter un vrai jeu de validation :
développez votre propre blockchain :)

  • créer et développer une interface Web et fournir une CLI pour voter pour les validateurs
  • assurez-vous que les métriques d'un nœud de validation en cours d'exécution peuvent être envoyées à un service centralisé (par exemple Prometheus)
  • créer un serveur de collecte de métriques (Prometheus + Grafana) pour le jeu du validateur
  • comprendre comment les points de validation (VP) seront calculés
  • développer un script public qui calcule le VP du validateur en fonction des données de la blockchain
  • développer une interface Web pour afficher les meilleurs validateurs et le statut de jeu des validateurs (combien de temps reste-t-il jusqu'à la fin, qui a combien de VP, etc.)
  • développer et automatiser le lancement d'un nombre arbitraire de vos propres nœuds, concevoir le processus de connexion des validateurs au jeu (quand et comment déconnecter vos nœuds, soumettre et supprimer des votes pour eux)
  • calculer le nombre de jetons à émettre et élaborer un contrat de robinetterie
  • réaliser un script de benchmark (transferts de tokens, utilisation massive du stockage, utilisation massive du réseau)
  • rassembler tous les participants dans un seul chat pour une communication rapide
  • lancer la blockchain un peu plus tôt que le début du jeu
  • attends le starter block, démarre le jeu
  • tester le réseau avec plusieurs types de transactions
  • déployer un hard fork
  • changer la liste des validateurs
  • répétez les étapes 13,14,15, XNUMX, XNUMX dans des ordres différents, en maintenant la stabilité du réseau
  • attendez le dernier bloc, terminez le jeu, comptez les PV

Il faut dire que le jeu des validateurs est une nouvelle histoire, et il n'a été réalisé que quelques fois, il ne faut donc pas prendre ce texte comme un guide tout fait. Il n'y a pas d'analogues dans le secteur informatique moderne - imaginez que les banques, avant de lancer un système de paiement, se fassent concurrence pour voir qui sera le meilleur pour effectuer les transactions des clients. Il est peu probable que les approches traditionnelles vous aident à créer de grands réseaux décentralisés, alors maîtrisez de nouveaux modèles commerciaux, exécutez vos jeux, identifiez ceux qui en valent la peine, récompensez-les et assurez le fonctionnement rapide et stable de vos systèmes distribués.

Source: habr.com

Ajouter un commentaire