mirror of
https://github.com/tendermint/tendermint.git
synced 2026-01-11 07:20:19 +00:00
a00de7199f5558cdd6245bbbcd1d8405ccfb8129
This pull request aims to make it possible to generate, format, and lint the protos within this repo. To accomplish that end, the Dockerfile containing common tools for building the tendermint protos has been moved into this repository and several accompanying changes were made to streamline the proto generation process.
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
RFC
- RFC: RFCs describe proposals to change the spec.
ProtoBuf
- Proto: The data structures of the Tendermint protocol are located in the
protodirectory. These specify P2P messages that each implementation should follow to be compatible.
Description
Languages
Go
85.9%
TeX
7.2%
TLA
4.9%
Shell
0.6%
Python
0.5%
Other
0.8%