- ---
- order: 1
- parent:
- order: false
- ---
-
- # Architecture Decision Records (ADR)
-
- This is a location to record all high-level architecture decisions in the tendermint project.
-
- You can read more about the ADR concept in this [blog post](https://product.reverb.com/documenting-architecture-decisions-the-reverb-way-a3563bb24bd0#.78xhdix6t).
-
- An ADR should provide:
-
- - Context on the relevant goals and the current state
- - Proposed changes to achieve the goals
- - Summary of pros and cons
- - References
- - Changelog
-
- Note the distinction between an ADR and a spec. The ADR provides the context, intuition, reasoning, and
- justification for a change in architecture, or for the architecture of something
- new. The spec is much more compressed and streamlined summary of everything as
- it stands today.
-
- If recorded decisions turned out to be lacking, convene a discussion, record the new decisions here, and then modify the code to match.
-
- Note the context/background should be written in the present tense.
-
- ### Table of Contents:
-
- - [ADR-001-Logging](./adr-001-logging.md)
- - [ADR-002-Event-Subscription](./adr-002-event-subscription.md)
- - [ADR-003-ABCI-APP-RPC](./adr-003-abci-app-rpc.md)
- - [ADR-004-Historical-Validators](./adr-004-historical-validators.md)
- - [ADR-005-Consensus-Params](./adr-005-consensus-params.md)
- - [ADR-006-Trust-Metric](./adr-006-trust-metric.md)
- - [ADR-007-Trust-Metric-Usage](./adr-007-trust-metric-usage.md)
- - [ADR-008-Priv-Validator](./adr-008-priv-validator.md)
- - [ADR-009-ABCI-Design](./adr-009-ABCI-design.md)
- - [ADR-010-Crypto-Changes](./adr-010-crypto-changes.md)
- - [ADR-011-Monitoring](./adr-011-monitoring.md)
- - [ADR-012-Peer-Transport](./adr-012-peer-transport.md)
- - [ADR-013-Symmetric-Crypto](./adr-013-symmetric-crypto.md)
- - [ADR-014-Secp-Malleability](./adr-014-secp-malleability.md)
- - [ADR-015-Crypto-Encoding](./adr-015-crypto-encoding.md)
- - [ADR-016-Protocol-Versions](./adr-016-protocol-versions.md)
- - [ADR-017-Chain-Versions](./adr-017-chain-versions.md)
- - [ADR-018-ABCI-Validators](./adr-018-ABCI-Validators.md)
- - [ADR-019-Multisigs](./adr-019-multisigs.md)
- - [ADR-020-Block-Size](./adr-020-block-size.md)
- - [ADR-021-ABCI-Events](./adr-021-abci-events.md)
- - [ADR-022-ABCI-Errors](./adr-022-abci-errors.md)
- - [ADR-023-ABCI-Propose-tx](./adr-023-ABCI-propose-tx.md)
- - [ADR-024-Sign-Bytes](./adr-024-sign-bytes.md)
- - [ADR-025-Commit](./adr-025-commit.md)
- - [ADR-026-General-Merkle-Proof](./adr-026-general-merkle-proof.md)
- - [ADR-029-Check-Tx-Consensus](./adr-029-check-tx-consensus.md)
- - [ADR-030-Consensus-Refactor](./adr-030-consensus-refactor.md)
- - [ADR-033-Pubsub](./adr-033-pubsub.md)
- - [ADR-034-Priv-Validator-File-Structure](./adr-034-priv-validator-file-structure.md)
- - [ADR-035-Documentation](./adr-035-documentation.md)
- - [ADR-037-Deliver-Block](./adr-037-deliver-block.md)
- - [ADR-039-Peer-Behaviour](./adr-039-peer-behaviour.md)
- - [ADR-041-Proposer-Selection-via-ABCI](./adr-041-proposer-selection-via-abci.md)
- - [ADR-043-Blockchain-RiRi-Org](./adr-043-blockchain-riri-org.md)
- - [ADR-044-Lite-Client-With-Weak-Subjectivity](./adr-044-lite-client-with-weak-subjectivity.md)
- - [ADR-045-ABCI-Evidence](./adr-045-abci-evidence.md)
- - [ADR-046-Light-Client-Implementation](./adr-046-light-client-implementation.md)
- - [ADR-047-Handling-Evidence-From-Light-Client](./adr-047-handling-evidence-from-light-client.md)
- - [ADR-051-Double-Signing-Risk-Reduction](./adr-051-double-signing-risk-reduction.md)
- - [ADR-052-Tendermint-Mode](./adr-052-tendermint-mode.md)
- - [ADR-053-State-Sync-Prototype](./adr-053-state-sync-prototype.md)
- - [ADR-054-crypto-encoding-2](./adr-054-crypto-encoding-2.md)
- - [ADR-055-protobuf-design](./adr-055-protobuf-design.md)
|