Tendermint Spec
This repository contains specifications for the Tendermint protocol.
There are currently two implementations of the Tendermint protocol,
maintained by two separate-but-collaborative entities:
One in Go,
maintained by Interchain GmbH,
and one in Rust,
maintained by Informal Systems.
Data Structures
Consensus Protocol
P2P and Network Protocols
- The Base P2P Layer: multiplex the protocols ("reactors") on authenticated and encrypted TCP connections
P2P Messages
- Peer Exchange (PEX): gossip known peer addresses so peers can find each other
- Block Sync: gossip blocks so peers can catch up quickly
- Consensus: gossip votes and block parts so new blocks can be committed
- Mempool: gossip transactions so they get included in blocks
- Evidence: sending invalid evidence will stop the peer
ABCI
- ABCI: Details about interactions between the
application and consensus engine over ABCI
ABCI++
- ABCI++: Specification of interactions between the
application and consensus engine over ABCI++
RFC
- RFC: RFCs describe proposals to change the spec.
ProtoBuf
- Proto: The data structures of the Tendermint protocol are located in the
proto
directory. These specify P2P messages that each implementation should follow to be compatible.