Cosmos, rencontrez CometBFT

Feb 02 2023
Aujourd'hui, nous annonçons le lancement de CometBFT, un moteur de réplication de machine d'état pour l'interchaîne et au-delà ! CometBFT est un fork et un successeur de Tendermint Core, et servira de moteur de réplication officiel alimentant la pile Interchain. La vision à long terme de CometBFT est d'être le premier choix de moteur de réplication pour des blockchains fiables, sécurisées, à grande échelle et spécifiques aux applications.

Aujourd'hui, nous annonçons le lancement de CometBFT, un moteur de réplication de machine d'état pour l'interchaîne et au-delà ! CometBFT est un fork et un successeur de Tendermint Core , et servira de moteur de réplication officiel alimentant Interchain Stack . La vision à long terme de CometBFT est d'être le premier choix de moteur de réplication pour des blockchains fiables, sécurisées, à grande échelle et spécifiques aux applications. Validez vos blocs avec CometBFT aujourd'hui !

La Fondation Interchain, Informal Systems, l'équipe Cosmos SDK et de nombreuses autres équipes de l' écosystème Cosmos ont travaillé ensemble pour préparer ce lancement. Cet article aborde certaines des questions les plus importantes entourant ce lancement. Soyez assuré que nous avons travaillé dur pour rendre la mise à niveau ou l'adoption de CometBFT aussi fluide que possible. Nous couvrirons les détails du contexte, la vision et les objectifs de CometBFT, les équipes derrière cet effort et les prochaines étapes en termes d'implications techniques.

Pourquoi maintenant?

Nous avons décidé de développer le moteur phare de consensus Cosmos sous ce nouveau nom pour marquer plusieurs changements importants qui balayent l'écosystème.

Sur le plan technique, l'interchaîne a considérablement évolué au cours des deux dernières années. Nous vivons dans un monde multi-chaînes natif IBC. ABCI 2.0 est un élément essentiel qui manque à la pile Interchain, tout comme les aspects de conception ou d'assurance qualité tels que la modularité, l'intégration ou des tests rigoureux. De plus, l'abandon des versions v0.35 et v0.36 de Tendermint Core a exposé des limitations techniques sur la façon dont le développement a été effectué ; voir ici pour plus de détails.

En 2022, les organisations qui maintiennent la pile Interchain ont lancé une approche stratégique pour atténuer les limitations techniques ci-dessus. Cette approche impliquait de constituer et de dédier une équipe complète à Tendermint Core chez Informal Systems. De plus, lors de la préparation des versions, nous avons commencé à donner la priorité à la qualité et à l'intégration avec le reste d'Interchain Stack (c'est-à-dire Cosmos SDK, IBC et les blocs de construction interchain plus larges).

Sur le plan administratif, nous ne possédons pas l' organisation GitHub de tendermint ni les droits de marque sur "Tendermint". All in Bits (AiB) est le propriétaire. Le développement du logiciel Tendermint Core s'est déroulé en dehors de All in Bits au cours des trois dernières années. Cependant, la propriété de la marque par AiB posait un risque continu d'action en matière de marque. Sans accords compliqués avec AiB, il ne serait pas possible d'atténuer complètement ce risque qui pèse sur la tête des développeurs d'un élément le plus critique de la pile Interchain.

Comme nous l'avons mentionné plus tôt sur Twitter et par cette discussion , AiB a décidé unilatéralement d'archiver le référentiel Tendermint Core. Ainsi, la voie à suivre pour poursuivre la trajectoire de développement, et comme encouragé par AiB, était de bifurquer le référentiel Tendermint Core. CometBFT s'appuiera sur les fondations posées par Tendermint Core, avec un développement renouvelé axé sur les utilisateurs, la qualité et l'intégration.

Conformément à ces préoccupations techniques et administratives, les changements les plus importants concernent la vision à long terme, les objectifs et l'administration du projet. Cela nous amène à la prochaine partie de cette discussion.

Et après?

En tant qu'intendant engagé de l'écosystème Cosmos et interchain, la Fondation Interchain sert d'hôte fiable pour le financement et les actifs des biens publics. L'ICF est propriétaire de la marque "Cosmos" depuis sa création et protège son utilisation dans le meilleur intérêt de la communauté au sens large. De même, l'ICF a déposé le nom "CometBFT" et mis en place l' organisation CometBFT GitHub , et a l'intention de gérer les deux à long terme dans le meilleur intérêt de l'interchaîne en pleine croissance. CometBFT restera open-source et sous licence Apache2.0. Nous invitons toutes les parties intéressées à contribuer à la croissance et au développement de ce logiciel et à promouvoir ses valeurs open source.

Comme mentionné précédemment, le mandat à long terme de CometBFT est d'être le principal choix de moteur de réplication pour l'interchaîne. L'équipe CosmosSDK, les équipes IBC, les mainteneurs de CometBFT et les nombreuses équipes d'ingénierie qui composent l'interchaîne, tant au niveau des applications que des biens publics, partagent la vision commune de faire de CometBFT un endroit où les équipes peuvent expérimenter de nouvelles fonctionnalités, construire et itérer avec des optimisations, et assurer un haut degré de flexibilité pour les utilisateurs, tout en maintenant l'intégrité et la robustesse de la pile. Si vous êtes un contributeur à la pile Interchain, que vous exploitez des validateurs ou des nœuds, que vous vous intégrez à d'autres écosystèmes ou que vous vous frayez un chemin dans Cosmos en tant que nouvel utilisateur, votre aide serait grandement appréciée pour en faire une réalité. Voir les « Références » ci-dessous pour savoir comment nous contacter.

Quels sont les objectifs de CometBFT ?

Comme décrit ci-dessus et précédemment , cela marque une nouvelle phase dans l'interchaîne. Son moteur de consensus évolue pour devenir un bloc de construction spécialisé pour un monde natif IBC. Nous cherchons à continuer à travailler en étroite collaboration avec l'équipe Cosmos SDK et les utilisateurs actuels, tout en facilitant l'adoption pour l'écosystème croissant de développeurs d'applications construits au-dessus d'ABCI et avec IBC. L'objectif sous-jacent à long terme de CometBFT est de jouer un rôle clé dans le soutien de la croissance de l'interchaîne.

Plus précisément, les objectifs de CometBFT sont :

  1. Forte concentration sur l'utilisateur , avec une stratégie de produit clairement articulée qui prend en premier lieu les besoins de ses utilisateurs. Il s'agit d'un choix stratégique pour s'assurer que CometBFT est pertinent et utile.
  2. Améliorer l'assurance qualité et les garanties d'exactitude, dans le but de spécifier et de tester rigoureusement notre implémentation à l'aide de techniques avancées telles que les tests basés sur des modèles. Nous apportons notre expertise dans les spécifications et les méthodes formelles pour renforcer l'assurance qualité existante, qui était déjà complétée par des efforts de test à grande échelle.
  3. La modularité , se concentrant sur les bonnes limites de l'abstraction, permettant au système d'être séparé si et où nécessaire, permettant une intégration au coup par coup dans les projets qui en dépendent. Nous voulons permettre à CometBFT d'être de plus en plus utilisé en tant que bibliothèque et minimiser les fourches et la fragmentation en fournissant de nouvelles interfaces pour prendre en charge le nombre toujours croissant de cas d'utilisation.
  4. Déploiement plus rapide des fonctionnalités sans sacrifier la qualité grâce à la mise à jour progressive de l'architecture du système pour agir comme une plate-forme solide pour le changement, ainsi qu'à une coordination de projet plus fluide sur l'ensemble de la pile Interchain.

Qui est derrière CometBFT ?

Le lancement de CometBFT a été une décision multi-organisationnelle. CometBFT est géré par Informal Systems en collaboration avec un grand nombre d'acteurs de Cosmos. Le lancement a impliqué le travail de plusieurs équipes à travers l'interchaîne, y compris Cosmos SDK, IBC, Osmosis, Cosmos Hub, et la coordination avec Agoric, Axelar, Oasis, Penumbra, Celestia, Anoma, Skip, Umee, Confio, Nomic, Numia, Sei, Evmos. , Sommelier, Andromeda, Cronos parmi tant d'autres.

L'équipe CometBFT d'Informal comprend certains des contributeurs Cosmos les plus talentueux et les plus passionnés. Nous ferons un suivi sur Twitter avec une présentation des membres de l'équipe principale ainsi que des membres contributeurs d'autres équipes interchaînes. Pour le moment, il suffit de dire que l'équipe principale comprend des ingénieurs de recherche, des vétérans DevOps et des ingénieurs logiciels avec des décennies d'expérience combinée, ainsi que des chefs de projet, de produit et de technologie avec plus de 10 ans d'expérience combinée dans Cosmos.

Quelles sont les prochaines étapes immédiates ?

Le lancement de CometBFT est un effort substantiel qui est toujours en cours. Voici quelques choses importantes à savoir.

Si votre travail dépend de CometBFT , alors pensez à rejoindre les appels communautaires, qui sont organisés toutes les deux semaines les jeudis :https://groups.google.com/g/cometbft-community/. En plus du référentiel GitHub, l'appel communautaire est un forum important pour discuter du développement de CometBFT. C'est l'endroit où les développeurs recueillent vos commentaires, répondent à vos questions et où vous, en tant qu'utilisateur, échangez des connaissances précieuses avec d'autres utilisateurs.

Si votre application s'appuie sur le SDK Cosmos : de nouvelles versions du SDK pour les lignes 0.45, 0.46 et 0.47 seront publiées par l'équipe du SDK Cosmos. Ces versions utiliseront CometBFT v0.34 au lieu de Tendermint Core 0.34, conformément à l'accord entre les contributeurs et les projets Interchain Stack. La mise à niveau vers cette version du SDK ne nécessite pas de mise à niveau coordonnée, car il s'agit d'un changement de version mineur. Le journal des modifications du SDK Cosmos documentera les modifications pertinentes pour votre application.

Si vous construisez directement sur Tendermint Core : en tant que mainteneurs, nous vous recommandons de passer de Tendermint Core v0.34 à CometBFT v0.34. Nous fournirons des instructions de mise à niveau une fois que nous aurons coupé nos premières versions. Gardez un œil sur le référentiel Github ici .

Si vous maintenez un fork de Tendermint Core : nous vous recommandons de passer à CometBFT dès que possible, par exemple en rebasant ou en sélectionnant vos modifications pertinentes vers un fork de CometBFT. Nous serions heureux de vous aider dans ce processus. De plus, nous accueillerons vos commentaires et informations sur vos besoins spécifiques afin d'éliminer la nécessité pour vous de maintenir un fork (voir la référence "communauté" ci-dessous).

Les références

Vous trouverez ici des liens officiels et des instructions concernant Comet :

  • Où trouver le moteur de consensus CometBFT ?https://github.com/cometbft/cometbft/. N'oubliez pas de mettre en vedette le dépôt !
  • Comment trouver du soutien ? Si vous êtes un développeur, le meilleur endroit pour obtenir de l'aide est le serveur Cosmos Network Discord, dans le canal `#cometbft` .
  • Nous avons introduit un canal Telegram pour permettre une rétroaction et une communication rapides, et pour gérer cette période de transition. Merci de vous joindre ici :https://t.me/CometBFT
  • Lien vers la documentation :https://docs.cometbft.com/
  • Les nouvelles poignées du projet, comme suit. Organisation GitHub :https://github.com/cometbft/. Discord : sur le serveur Cosmos Network , rejoignez le canal "#cometbft" . Le canal `#tendermint-core` existant sera obsolète.
  • Twitter : les annonces et les mises à jour seront faites à partir de @cometbft et @informalinc .
  • Pour des informations générales : [email protected] .
  • Pour la sécurité ou les vulnérabilités : [email protected] .

Quel est l'algorithme de consensus sous-jacent à CometBFT ?

L'algorithme de consensus sous-jacent à CometBFT est actuellement basé sur (c'est-à-dire est une implémentation de) Tendermint Consensus .

CometBFT s'éloignera-t-il de l'algorithme de consensus Tendermint ?

Pas dans les versions initiales. Notre objectif est de construire CometBFT en tant que bibliothèque de consensus composable où l'algorithme de consensus par défaut peut facilement être remplacé par d'autres, mais pas limité à ceux mis en œuvre par les principaux responsables.

Nous prévoyons également de travailler avec des équipes qui ont apporté des modifications ou des optimisations à l'algorithme de consensus ou ailleurs (voir forks par LINE , PeggyJV , SeiNetwork ou Celestia Org ) pour intégrer en amont les modifications dont les autres utilisateurs ont besoin dans la ligne de développement principale.

Y aura-t-il plusieurs fourches concurrentes de Tendermint Core alimentant l'interchaîne?

Tout est open-source, donc il pourrait y en avoir. Cependant, les blocs de construction canoniques s'appuieront sur CometBFT. Les chaînes Cosmos sont construites avec le SDK Cosmos (@cosmossdk), qui s'appuiera sur CometBFT. Le développement du SDK Cosmos se poursuivra comme d'habitude.

Au niveau de l'IBC, les bibliothèques continueront à prendre en charge les clients légers Tendermint ; CometBFT contient une implémentation de l'algorithme de consensus Tendermint, par conséquent, les clients légers de Tendermint continueront à travailler avec CometBFT comme d'habitude.

Toute équipe peut bifurquer CometBFT et remplacer le moteur de réplication dans ses applications. Mais nous vous recommandons de nous contacter si vous avez besoin de modifications importantes (voir « Comment trouver de l'aide ? » ci-dessus). Nous prendrons en considération vos besoins et adapterons notre feuille de route technique en conséquence pour éviter, si possible, les fourches inutiles ou non sécurisées.

Cela fera-t-il bifurquer une chaîne ?

Un « non » ferme. Les systèmes basés sur Tendermint Core v0.34 peuvent être mis à niveau vers CometBFT v0.34. Et la ligne CometBFT v0.34 restera compatible avec Tendermint Core v0.34.

Si je valide sur un réseau basé sur Tendermint Core, y a-t-il des problèmes pour mes opérations ?

Nous signalerons soigneusement les changements de rupture dans le journal des modifications de la version, et les changements de rupture seront minimes. Le nom binaire de Tendermint Core sera modifié, mais la plupart des applications ont un binaire spécifique à l'application (tel que `osmosisd` , `gaiad` ) avec Tendermint Core compilé (remplacé par CometBFT). À moins que vous n'exécutiez un binaire Tendermint Core séparé, cela n'affectera pas vos opérations. Un changement pertinent est que la variable d'environnement `TMHOME` sera renommée en `CMTHOME` . Les sous-commandes telles que `gaiad tendermint` peuvent être renommées en temps voulu, en fonction de l'équipe qui gère le binaire. Cela sera également clairement indiqué dans le journal des modifications.

Qu'arrive-t-il à tendermint-rs
(
https://github.com/informalsystems/tendermint-rs/ ) ?

Nous allons bientôt renommer ce projet en cometbft-rs et poursuivre le développement.

Qu'arrive-t-il à tm-db ou tm-load-test ?

Nous avons bifurqué et renommé tm-db en cometbft-db et poursuivrons le développement. Aucune API n'a été autrement cassée et l'utilisation est la même, sauf qu'il s'agit d'un module Go différent : `github.com/cometbft/cometbft-db`.

Nous déplacerons et renommerons tm-load-test en cmt-load-test et poursuivrons le développement. Remarque : Certains des noms ci-dessus sont peut-être encore en évolution.

PS. Par un coup de délice cosmique, le lancement de la comète BFT coïncide avec la comète C/2022 E3 (ZTF) faisant son approche la plus proche de notre planète . La luminosité de la comète devrait culminer aujourd'hui et offrir une expérience visuelle inoubliable à ceux qui l'observent.