diff --git a/README.md b/README.md index 678574873..dcadaf9ce 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Tendermint Spec -This repository contains specifications for the Tendermint protocol. For the pdf, see the [latest release](https://github.com/tendermint/spec/releases). +This repository contains specifications for the Tendermint protocol. There are currently two implementations of the Tendermint protocol, maintained by two separate-but-collaborative entities: @@ -9,16 +9,40 @@ maintained by Interchain GmbH, and one in [Rust](https://github.com/informalsystems/tendermint-rs), maintained by Informal Systems. -There have been inadvertent divergences in the specs followed -by the Go implementation and the Rust implementation respectively. -However, we are working toward reconverging these specs into a single unified spec. -Consequently, this repository is in a bit of a state of flux. +### Data Structures -At the moment, the spec followed by the Go implementation -(tendermint/tendermint) is in the [spec](spec) directory, -while the spec followed by the Rust implementation -(informalsystems/tendermint-rs) is in the [rust-spec](rust-spec) -directory. TLA+ specifications are also in the rust-spec directory. +- [Encoding and Digests](./spec/core/encoding.md) +- [Blockchain](./spec/core/data_structures.md) +- [State](./spec/core/state.md) -Over time, these specs will converge in the spec directory. -Once they have fully converged, we will version the spec moving forward. +### Consensus Protocol + +- [Consensus Algorithm](./spec/consensus/consensus.md) +- [Creating a proposal](./spec/consensus/creating-proposal.md) +- [Time](./spec/consensus/bft-time.md) +- [Light-Client](./spec/consensus/light-client/README.md) + +### P2P and Network Protocols + +- [The Base P2P Layer](./p2p/node.md): multiplex the protocols ("reactors") on authenticated and encrypted TCP connections + +#### P2P Messages + +- [Peer Exchange (PEX)](./p2p/messages/pex.md): gossip known peer addresses so peers can find each other +- [Block Sync](./p2p/messages/block_sync.md): gossip blocks so peers can catch up quickly +- [Consensus](./p2p/messages/consensus.md): gossip votes and block parts so new blocks can be committed +- [Mempool](./p2p/messages/mempool.md): gossip transactions so they get included in blocks +- [Evidence](./p2p/messages/evidence.md): sending invalid evidence will stop the peer + +### ABCI + +- [ABCI](./spec/abci/README.md): Details about interactions between the + application and consensus engine over ABCI + +### RFC + +- [RFC](./rfc/README.md): RFCs describe proposals to change the spec. + +### ProtoBuf + +- [Proto](./proto/README.md): 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. diff --git a/rust-spec/fastsync/README.md b/rust-spec/fastsync/README.md new file mode 100644 index 000000000..0714d1d32 --- /dev/null +++ b/rust-spec/fastsync/README.md @@ -0,0 +1,3 @@ +# Fast Sync + +Deprecated see [tendermint/tendermint/docs/tendermint-core/fastsync.md]([../../spec/light-client](https://github.com/tendermint/tendermint/blob/master/docs/tendermint-core/fast-sync.md)) diff --git a/rust-spec/lightclient/README.md b/rust-spec/lightclient/README.md new file mode 100644 index 000000000..b9fcce4d8 --- /dev/null +++ b/rust-spec/lightclient/README.md @@ -0,0 +1,3 @@ +# Light Clients + +Deprecated see [spec/light-client](../../spec/light-client) diff --git a/rust-spec/lightclient/verification/README.md b/rust-spec/lightclient/verification/README.md new file mode 100644 index 000000000..5f65f07ad --- /dev/null +++ b/rust-spec/lightclient/verification/README.md @@ -0,0 +1,3 @@ +# Verification + +Deprecated see [spec/light-client/verification](../../spec/light-client/verification/README.md)