You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
5.2 KiB

  1. ---
  2. order: 1
  3. parent:
  4. order: false
  5. ---
  6. # Architecture Decision Records (ADR)
  7. This is a location to record all high-level architecture decisions in the tendermint project.
  8. You can read more about the ADR concept in this [blog post](https://product.reverb.com/documenting-architecture-decisions-the-reverb-way-a3563bb24bd0#.78xhdix6t).
  9. An ADR should provide:
  10. - Context on the relevant goals and the current state
  11. - Proposed changes to achieve the goals
  12. - Summary of pros and cons
  13. - References
  14. - Changelog
  15. Note the distinction between an ADR and a spec. The ADR provides the context, intuition, reasoning, and
  16. justification for a change in architecture, or for the architecture of something
  17. new. The spec is much more compressed and streamlined summary of everything as
  18. it stands today.
  19. If recorded decisions turned out to be lacking, convene a discussion, record the new decisions here, and then modify the code to match.
  20. Note the context/background should be written in the present tense.
  21. ## Table of Contents
  22. ### Implemented
  23. - [ADR-001: Logging](./adr-001-logging.md)
  24. - [ADR-002: Event-Subscription](./adr-002-event-subscription.md)
  25. - [ADR-003: ABCI-APP-RPC](./adr-003-abci-app-rpc.md)
  26. - [ADR-004: Historical-Validators](./adr-004-historical-validators.md)
  27. - [ADR-005: Consensus-Params](./adr-005-consensus-params.md)
  28. - [ADR-008: Priv-Validator](./adr-008-priv-validator.md)
  29. - [ADR-009: ABCI-Design](./adr-009-ABCI-design.md)
  30. - [ADR-010: Crypto-Changes](./adr-010-crypto-changes.md)
  31. - [ADR-011: Monitoring](./adr-011-monitoring.md)
  32. - [ADR-014: Secp-Malleability](./adr-014-secp-malleability.md)
  33. - [ADR-015: Crypto-Encoding](./adr-015-crypto-encoding.md)
  34. - [ADR-016: Protocol-Versions](./adr-016-protocol-versions.md)
  35. - [ADR-017: Chain-Versions](./adr-017-chain-versions.md)
  36. - [ADR-018: ABCI-Validators](./adr-018-ABCI-Validators.md)
  37. - [ADR-019: Multisigs](./adr-019-multisigs.md)
  38. - [ADR-020: Block-Size](./adr-020-block-size.md)
  39. - [ADR-021: ABCI-Events](./adr-021-abci-events.md)
  40. - [ADR-025: Commit](./adr-025-commit.md)
  41. - [ADR-026: General-Merkle-Proof](./adr-026-general-merkle-proof.md)
  42. - [ADR-033: Pubsub](./adr-033-pubsub.md)
  43. - [ADR-034: Priv-Validator-File-Structure](./adr-034-priv-validator-file-structure.md)
  44. - [ADR-043: Blockchain-RiRi-Org](./adr-043-blockchain-riri-org.md)
  45. - [ADR-044: Lite-Client-With-Weak-Subjectivity](./adr-044-lite-client-with-weak-subjectivity.md)
  46. - [ADR-046: Light-Client-Implementation](./adr-046-light-client-implementation.md)
  47. - [ADR-047: Handling-Evidence-From-Light-Client](./adr-047-handling-evidence-from-light-client.md)
  48. - [ADR-051: Double-Signing-Risk-Reduction](./adr-051-double-signing-risk-reduction.md)
  49. - [ADR-052: Tendermint-Mode](./adr-052-tendermint-mode.md)
  50. - [ADR-053: State-Sync-Prototype](./adr-053-state-sync-prototype.md)
  51. - [ADR-054: Crypto-Encoding-2](./adr-054-crypto-encoding-2.md)
  52. - [ADR-055: Protobuf-Design](./adr-055-protobuf-design.md)
  53. - [ADR-056: Light-Client-Amnesia-Attacks](./adr-056-light-client-amnesia-attacks.md)
  54. - [ADR-059: Evidence-Composition-and-Lifecycle](./adr-059-evidence-composition-and-lifecycle.md)
  55. - [ADR-062: P2P-Architecture](./adr-062-p2p-architecture.md)
  56. - [ADR-063: Privval-gRPC](./adr-063-privval-grpc.md)
  57. - [ADR-066: E2E-Testing](./adr-066-e2e-testing.md)
  58. - [ADR-072: Restore Requests for Comments](./adr-072-request-for-comments.md)
  59. - [ADR-077: Block Retention](./adr-077-block-retention.md)
  60. - [ADR-078: Non-zero Genesis](./adr-078-nonzero-genesis.md)
  61. - [ADR-079: ED25519 Verification](./adr-079-ed25519-verification.md)
  62. - [ADR-080: Reverse Sync](./adr-080-reverse-sync.md)
  63. ### Accepted
  64. - [ADR-006: Trust-Metric](./adr-006-trust-metric.md)
  65. - [ADR-024: Sign-Bytes](./adr-024-sign-bytes.md)
  66. - [ADR-035: Documentation](./adr-035-documentation.md)
  67. - [ADR-039: Peer-Behaviour](./adr-039-peer-behaviour.md)
  68. - [ADR-060: Go-API-Stability](./adr-060-go-api-stability.md)
  69. - [ADR-061: P2P-Refactor-Scope](./adr-061-p2p-refactor-scope.md)
  70. - [ADR-065: Custom Event Indexing](./adr-065-custom-event-indexing.md)
  71. - [ADR-068: Reverse-Sync](./adr-068-reverse-sync.md)
  72. - [ADR-067: Mempool Refactor](./adr-067-mempool-refactor.md)
  73. - [ADR-075: RPC Event Subscription Interface](./adr-075-rpc-subscription.md)
  74. - [ADR-076: Combine Spec and Tendermint Repositories](./adr-076-combine-spec-repo.md)
  75. ### Rejected
  76. - [ADR-023: ABCI-Propose-tx](./adr-023-ABCI-propose-tx.md)
  77. - [ADR-029: Check-Tx-Consensus](./adr-029-check-tx-consensus.md)
  78. - [ADR-058: Event-Hashing](./adr-058-event-hashing.md)
  79. ### Proposed
  80. - [ADR-007: Trust-Metric-Usage](./adr-007-trust-metric-usage.md)
  81. - [ADR-012: Peer-Transport](./adr-012-peer-transport.md)
  82. - [ADR-013: Symmetric-Crypto](./adr-013-symmetric-crypto.md)
  83. - [ADR-022: ABCI-Errors](./adr-022-abci-errors.md)
  84. - [ADR-030: Consensus-Refactor](./adr-030-consensus-refactor.md)
  85. - [ADR-037: Deliver-Block](./adr-037-deliver-block.md)
  86. - [ADR-038: Non-Zero-Start-Height](./adr-038-non-zero-start-height.md)
  87. - [ADR-041: Proposer-Selection-via-ABCI](./adr-041-proposer-selection-via-abci.md)
  88. - [ADR-045: ABCI-Evidence](./adr-045-abci-evidence.md)
  89. - [ADR-057: RPC](./adr-057-RPC.md)
  90. - [ADR-069: Node Initialization](./adr-069-flexible-node-initialization.md)
  91. - [ADR-071: Proposer-Based Timestamps](adr-071-proposer-based-timestamps.md)
  92. - [ADR-074: Migrate Timeout Parameters to Consensus Parameters](./adr-074-timeout-params.md)