This is the set of Protobuf definitions of types used by various parts of CometBFT:
- The Application Blockchain Interface (ABCI), especially in the context of remote applications.
- The P2P layer, in how CometBFT nodes interact with each other over the network.
- In interaction with remote signers ("privval").
- The RPC, in that the native JSON serialization of certain Protobuf types is used when accepting and responding to RPC requests.
- The storage layer, in how data is serialized to and deserialized from on-disk storage.
The canonical Protobuf definitions live in the proto
folder of the relevant
release branch of CometBFT. These definitions are published to the Buf
registry for integrators' convenience. For detailed instructions on how to publish
the files to the Buf registry, please refer to the RELEASES.md document.
The Protobuf files are organized under two domains: cometbft
and tendermint
.
The cometbft.*
packages use version suffixes to let application developers
target versions of the protocols as they have evolved between CometBFT releases.
By the 1.0.0 release, the entire set of Protobuf definitions used by CometBFT
is published in packages suffixed with .v1
. Earlier revisions of the
definitions, where they differed, are provided alongside in .v1beta
N
packages. The correspondence between package suffixes and releases is as follows:
Domain | 0.34 | 0.37 | 0.38 | 1.0 |
---|---|---|---|---|
abci |
v1beta1 |
v1beta2 |
v1beta3 |
v1 |
blocksync |
v1beta1 |
v1 |
v1 |
|
consensus |
v1beta1 |
v1beta1 |
v1beta1 |
v1 |
crypto |
v1 |
v1 |
v1 |
v1 |
libs/bits |
v1 |
v1 |
v1 |
v1 |
mempool |
v1 |
v1 |
v1 |
v1 |
p2p |
v1 |
v1 |
v1 |
v1 |
privval |
v1beta1 |
v1beta1 |
v1beta2 |
v1 |
rpc/grpc 1 |
v1beta1 |
v1beta2 |
v1beta3 |
|
state |
v1beta1 |
v1beta2 |
v1beta3 |
v1 |
statesync |
v1 |
v1 |
v1 |
v1 |
types |
v1beta1 |
v1beta2 |
v1 |
v1 |
version |
v1 |
v1 |
v1 |
v1 |
This is as a result of CometBFT being a fork of Tendermint Core and wanting to provide integrators with as painless a way as possible of transitioning from Tendermint Core to CometBFT.
As of CometBFT v1, however, the project will transition to using and providing a
cometbft
package of Protobuf definitions (see #1330).
Protobuf definitions for each respective release are also, for convenience,
published to a corresponding branch in the tendermint/tendermint
Buf repository.
CometBFT version | Canonical Protobufs | Buf registry |
---|---|---|
v0.38.x | v0.38.x Protobuf definitions | Buf repository v0.38.x branch |
v0.37.x | v0.37.x Protobuf definitions | Buf repository v0.37.x branch |
v0.34.x | v0.34.x Protobuf definitions | Buf repository v0.34.x branch |
Footnotes
-
Retired in 1.0 ↩