Cosmos, meet CometBFT
Today we announce the launch of CometBFT, a state machine replication engine for the interchain and beyond! CometBFT is a fork of, and a successor to, Tendermint Core, and will serve as the official replication engine powering the Interchain Stack. The long-term vision for CometBFT is to be the primary choice of replication engine for reliable, secure, large-scale, application-specific blockchains. Commit your blocks with CometBFT today!
The Interchain Foundation, Informal Systems, the Cosmos SDK team, and numerous other teams in the Cosmos ecosystem have been working together to prepare this launch. This post tackles some of the most important questions surrounding this launch. Rest assured, we have been working hard to make upgrading to or adopting CometBFT as smooth as possible. We will cover background details, the CometBFT vision and objectives, the teams behind this effort, and next steps in terms of technical implications.
Why Now?
We decided to develop the flagship Cosmos consensus engine under this new name to mark multiple important changes sweeping across the ecosystem.
On the technical side, the interchain has evolved significantly in the last couple of years. We are living in an IBC-native, multi-chain world. ABCI 2.0 is a critical piece missing from the Interchain Stack, as are design or quality assurance aspects such as modularity, integration, or rigorous testing. Furthermore, the abandoning of the v0.35 and v0.36 releases of Tendermint Core exposed technical limitations on how development was done; see here for more details.
In 2022, the organizations maintaining the Interchain Stack initiated a strategic approach to mitigate the above technical limitations. This approach involved building and dedicating a complete team to Tendermint Core at Informal Systems. Additionally, in preparing releases we started prioritizing quality and integration with the rest of Interchain Stack (i.e., Cosmos SDK, IBC, and the wider interchain building blocks).
On the administrative side, we do not own the tendermint GitHub organization nor the trademark rights over “Tendermint’’. All in Bits (AiB) is the owner. The development of the Tendermint Core software has taken place outside All in Bits for the last three years. However, AiB’s ownership of the trademark posed a continuous risk of trademark action. Without complicated agreements with AiB, it would not be possible to fully mitigate this risk hanging over the heads of the developers of a most critical piece of the Interchain Stack.
As we mentioned earlier on Twitter and per this discussion, AiB unilaterally decided to archive the Tendermint Core repository. Thus the way forward to continue the development trajectory, and as encouraged by AiB, was to fork the Tendermint Core repository. CometBFT will build on the foundations laid by Tendermint Core, with renewed development focusing on users, quality, and integration.
In line with these technical and administrative concerns, the most important changes are in the project’s long-term vision, objectives, and administration. This brings us to the next part of this discussion.
What’s Next?
As a committed steward of the Cosmos and interchain ecosystem, the Interchain Foundation serves as a reliable host for public goods funding and assets. The ICF has been the owner of the “Cosmos” trademark since inception, and protects its use in the best interests of the wider community. Similarly, the ICF has trademarked the “CometBFT” name and set up the CometBFT GitHub organization, and intends to steward both for the long term in the best interests of the growing interchain. CometBFT will remain open-source and licensed Apache2.0. We invite all interested parties to contribute to the growth and development of this software and to promote its open-source values.
As mentioned earlier, the long-term mandate for CometBFT is to be the primary choice of replication engine for the interchain. The CosmosSDK team, the IBC teams, CometBFT maintainers, and the numerous engineering teams that comprise the interchain, both at the application level as well as public goods, share the common vision of making CometBFT a place where teams can experiment with novel features, build and iterate with optimizations, and ensure a high degree of flexibility for users, while maintaining the integrity and robustness of the stack. If you are a contributor to the Interchain Stack, operating validators or nodes, integrating with other ecosystems, or finding your way around Cosmos as a new user, your help would be greatly appreciated towards making this a reality. See the “References” below on how to get in touch with us.
What are the objectives for CometBFT?
As described above and previously, this marks a new phase in the interchain. Its consensus engine is evolving to be a building block specialized for a IBC-native world. We seek to continue working closely with the Cosmos SDK team and current users, while facilitating adoption for the growing ecosystem of application developers building above ABCI and with IBC. The underlying, long-term goal for CometBFT is to play a key part in supporting the growth of the interchain.
More specifically, CometBFT objectives are:
- Strong user focus, with a clearly articulated product strategy that takes its users’ needs first and foremost. This is a strategic choice towards ensuring CometBFT is relevant and provides utility.
- Improving quality assurance and correctness guarantees, aiming to rigorously specify and test our implementation using advanced techniques like model-based testing. We are bringing our expertise in specifications & formal methods to reinforce existing QA, which was already complemented with large-scale testing efforts.
- Modularity, focusing on the right boundaries of abstraction, allowing the system to be pulled apart if and where necessary, allowing a piece-meal integration in projects that depend on it. We want to allow CometBFT to be used as a library increasingly, and to minimize forks and fragmentation by providing new interfaces to support the ever-growing array of use cases.
- Faster functionality rollout without sacrificing quality by way of progressively updating the architecture of the system to act as a sound platform for change, as well as by smoother project coordination across the entire Interchain Stack.
An essential tactic towards fulfilling these four objectives is the tight integration across the Interchain Stack; this will serve as a major distinguishing point between CometBFT and other forks of Tendermint Core. By building on the strong foundation that Tendermint Core provides, ABCI 2.0 will be the first iteration of this approach outlined above. We will follow-up with a detailed 2023 roadmap plan in early Q2.
Who is behind CometBFT?
Launching CometBFT was a multi-organizational decision. CometBFT is stewarded by Informal Systems in collaboration with a large number of Cosmos stakeholders. The launch involved work across several teams across the interchain, including Cosmos SDK, IBC, Osmosis, Cosmos Hub, and coordination with Agoric, Axelar, Oasis, Penumbra, Celestia, Anoma, Skip, Umee, Confio, Nomic, Numia, Sei, Evmos, Sommelier, Andromeda, Cronos among many others.
The CometBFT team at Informal comprises some of the most talented and passionate Cosmos contributors. We will follow-up on Twitter with an introduction of the core team members as well as contributing members from across other interchain teams. For the moment, suffice to say that the core team comprises research engineers, veteran DevOps and software engineers with decades of combined experience, as well as project, product and tech leads with 10+ combined years of experience in Cosmos.
What are the immediate next steps?
Launching CometBFT is a substantial effort that is still ongoing. Here are a few important things to know.
If your work depends on CometBFT, then consider joining the community calls, which are organized every two weeks on Thursdays: https://groups.google.com/g/cometbft-community/. In addition to the GitHub repository, the community call is an important forum for discussing the development of CometBFT. It is the place for developers to gather feedback from you, to answer questions, and for you, as a user, to exchange valuable knowledge with other users.
If your application is building on the Cosmos SDK: New SDK versions for the 0.45, 0.46 and 0.47 lines will be released by the Cosmos SDK team. These releases will use CometBFT v0.34 instead of Tendermint Core 0.34, per agreement among the Interchain Stack contributors and projects. Upgrading to this SDK version does not require a coordinated upgrade, as it is a minor version change. The Cosmos SDK changelog will document the relevant changes for your application.
If you are building directly on top of Tendermint Core: As maintainers, we recommend that you switch from Tendermint Core v0.34 to CometBFT v0.34. We will provide upgrading instructions once we cut our first releases. Keep an eye on the Github repo here.
If you are maintaining a fork of Tendermint Core: We recommend transitioning to CometBFT as soon as possible, e.g., by rebasing or cherry picking your relevant changes to a fork of CometBFT. We would be glad to assist in this process. Additionally, we will welcome your feedback and information on your specific requirements towards eliminating the need for you to maintain a fork (see the “community” reference below).
References
Here you will find official links and instructions relevant to Comet:
- Where to find the CometBFT consensus engine? https://github.com/cometbft/cometbft/. Don’t forget to star the repo!
- How to find support? If you are a developer, the best place for support is the Cosmos Network Discord server, in the `#cometbft` channel.
- We have introduced a Telegram channel to allow for fast feedback and communication, and to handle this period of transition. Please join here: https://t.me/CometBFT
- Link to documentation: https://docs.cometbft.com/
- The new handles for the project, as follows. GitHub organization: https://github.com/cometbft/. Discord: In the Cosmos Network server join the `#cometbft` channel. The existing `#tendermint-core` channel will be deprecated.
- Twitter: Announcements and updates will be made from @cometbft and @informalinc.
- For general information: cometbft@interchain.io.
- For security or vulnerabilities: security@interchain.io.
Common Questions:
What is the consensus algorithm underlying CometBFT?
The consensus algorithm underlying CometBFT is currently based on (i.e., is an implementation of) Tendermint Consensus.
Will CometBFT move away from the Tendermint consensus algorithm?
Not in the initial releases. We aim to build CometBFT as a composable consensus library where the default consensus algorithm can easily be swapped out for others, but not limited to the ones implemented by the core maintainers.
We also plan to work with teams that made changes or optimizations to the consensus algorithm or elsewhere (see forks by LINE, PeggyJV, SeiNetwork, or Celestia Org) towards upstreaming the modifications that other users need into the main development line.
Will there be multiple competing forks of Tendermint Core powering the interchain?
It’s all open-source, so there could be. However the canonical building blocks will build on top of CometBFT. Cosmos chains are built with the Cosmos SDK (@cosmossdk), which will build on top of CometBFT. Cosmos SDK development will continue as usual.
At the IBC level, libraries will continue to support Tendermint light clients; CometBFT contains an implementation of the Tendermint consensus algorithm, therefore Tendermint light clients will continue work with CometBFT as usual.
Any team may fork CometBFT and replace the replication engine in their applications. But we recommend you to get in touch with us if you require significant changes (see “How to find support?” above). We will take your needs into consideration and adapt our technical roadmap accordingly to avoid, if possible, unnecessary or insecure forks.
Will this cause any chain to fork?
A firm “no”. Tendermint Core v0.34-based systems can be upgraded to CometBFT v0.34. And CometBFT v0.34 line will stay compatible with Tendermint Core v0.34.
If I am validating on a Tendermint Core-based network, are there any concerns for my operations?
We will carefully signal breaking changes in the release changelog, and breaking changes will be minimal. The binary name for Tendermint Core will be changed, but most applications have an app-specific binary (such as `osmosisd`, `gaiad`) with Tendermint Core compiled in (replaced by CometBFT). Unless you run a separate Tendermint Core binary, this will not affect your operations. A relevant change is that the `TMHOME` env var will be renamed into `CMTHOME`. Sub-commands such as `gaiad tendermint` might be renamed in due time, depending on the team maintaining the binary. This will also be clearly marked in the changelog.
What happens to tendermint-rs
(https://github.com/informalsystems/tendermint-rs/)?
We will rename this project shortly to cometbft-rs and continue development.
What happens to tm-db or tm-load-test?
We forked and renamed tm-db into cometbft-db and will continue development. No APIs were otherwise broken, and usage is the same, except it’s a different Go module: `github.com/cometbft/cometbft-db`.
We will move and rename tm-load-test to cmt-load-test and will continue development. Note: Some of the above names might still be in flux.
PS. By a stroke of cosmic delight, the launching of CometBFT coincides with Comet C/2022 E3 (ZTF) making its closest approach to our planet. The comet’s brightness is set to peak today and to provide an unforgettable visual experience for those observing it.
About the Author:
Adi Seredinschi is a Research Engineer focused on Distributed Systems at Informal. He likes understanding and building distributed systems, making them faster and more resilient. Despite knowing that time is an illusion, the goal of his life is to build things — distributed systems, and not only — that last.