设计依据
ADR 的主要用途是作为提出新功能设计和新流程的首要机制,用于收集社区对某个问题的意见,并记录设计决策。 一份 ADR 应当提供:- 与相关目标及当前状态有关的背景
- 为实现目标而提出的变更
- 优缺点摘要
- 参考资料
- 变更日志
创建新的 ADR
阅读流程。使用 RFC 2119 关键词
在编写 ADR 时,请遵循编写 RFC 的相同最佳实践。编写 RFC 时,会使用关键词来表示规范中的要求。这些词通常会大写:“MUST”、“MUST NOT”、“REQUIRED”、“SHALL”、“SHALL NOT”、“SHOULD”、“SHOULD NOT”、“RECOMMENDED”、“MAY” 和 “OPTIONAL”。这些词的解释应以 RFC 2119 中的说明为准。ADR 目录
已接受
- ADR 002: SDK 文档结构
- ADR 004: 拆分面额键
- ADR 006: Secret Store 替代方案
- ADR 009: 证据模块
- ADR 010: 模块化 AnteHandler
- ADR 019: Protocol Buffer 状态编码
- ADR 020: Protocol Buffer 交易编码
- ADR 021: Protocol Buffer 查询编码
- ADR 023: Protocol Buffer 命名与版本管理
- ADR 029: 费用授权模块
- ADR 030: 消息授权模块
- ADR 031: Protobuf Msg 服务
- ADR 055: ORM
- ADR 058: 自动生成的 CLI
- ADR 060: ABCI 1.0(第一阶段)
- ADR 061: 流动性质押
提议中
- ADR 003: 动态 Capability Store
- ADR 011: 通用化创世账户
- ADR 012: 状态访问器
- ADR 013: 指标
- ADR 016: 验证者共识密钥轮换
- ADR 017: 历史区块头模块
- ADR 018: 可扩展投票期
- ADR 022: 自定义 baseapp panic 处理
- ADR 024: Coin 元数据
- ADR 027: 确定性的 Protobuf 序列化
- ADR 028: 公钥地址
- ADR 032: 类型化事件
- ADR 033: 模块间 RPC
- ADR 035: Rosetta API 支持
- ADR 037: 治理拆分投票
- ADR 038: 状态监听
- ADR 039: 分 Epoch 质押
- ADR 040: 存储与 SMT 状态承诺
- ADR 046: 模块参数
- ADR 054: 与 Semver 兼容的 SDK 模块
- ADR 057: 应用装配
- ADR 059: 测试范围
- ADR 062: Collections 状态层
- ADR 063: Core 模块 API
- ADR 065: Store V2
- ADR 076: 交易可塑性风险审查与建议
草案
This is a location to record all high-level architecture decisions in the Cosmos-SDK. An Architectural Decision (AD) is a software design choice that addresses a functional or non-functional requirement that is architecturally significant. An Architecturally Significant Requirement (ASR) is a requirement that has a measurable effect on a software system’s architecture and quality. An Architectural Decision Record (ADR) captures a single AD, such as often done when writing personal notes or meeting minutes; the collection of ADRs created and maintained in a project constitute its decision log. All these are within the topic of Architectural Knowledge Management (AKM). You can read more about the ADR concept in this blog post.
Rationale
ADRs are intended to be the primary mechanism for proposing new feature designs and new processes, for collecting community input on an issue, and for documenting the design decisions. 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
Creating new ADR
Read about the PROCESS.Use RFC 2119 Keywords
When writing ADRs, follow the same best practices for writing RFCs. When writing RFCs, key words are used to signify the requirements in the specification. These words are often capitalized: “MUST,” “MUST NOT,” “REQUIRED,” “SHALL,” “SHALL NOT,” “SHOULD,” “SHOULD NOT,” “RECOMMENDED,” “MAY,” and “OPTIONAL.” They are to be interpreted as described in RFC 2119.ADR Table of Contents
Accepted
- ADR 002: SDK Documentation Structure
- ADR 004: Split Denomination Keys
- ADR 006: Secret Store Replacement
- ADR 009: Evidence Module
- ADR 010: Modular AnteHandler
- ADR 019: Protocol Buffer State Encoding
- ADR 020: Protocol Buffer Transaction Encoding
- ADR 021: Protocol Buffer Query Encoding
- ADR 023: Protocol Buffer Naming and Versioning
- ADR 029: Fee Grant Module
- ADR 030: Message Authorization Module
- ADR 031: Protobuf Msg Services
- ADR 055: ORM
- ADR 058: Auto-Generated CLI
- ADR 060: ABCI 1.0 (Phase I)
- ADR 061: Liquid Staking
Proposed
- ADR 003: Dynamic Capability Store
- ADR 011: Generalize Genesis Accounts
- ADR 012: State Accessors
- ADR 013: Metrics
- ADR 016: Validator Consensus Key Rotation
- ADR 017: Historical Header Module
- ADR 018: Extendable Voting Periods
- ADR 022: Custom baseapp panic handling
- ADR 024: Coin Metadata
- ADR 027: Deterministic Protobuf Serialization
- ADR 028: Public Key Addresses
- ADR 032: Typed Events
- ADR 033: Inter-module RPC
- ADR 035: Rosetta API Support
- ADR 037: Governance Split Votes
- ADR 038: State Listening
- ADR 039: Epoched Staking
- ADR 040: Storage and SMT State Commitments
- ADR 046: Module Params
- ADR 054: Semver Compatible SDK Modules
- ADR 057: App Wiring
- ADR 059: Test Scopes
- ADR 062: Collections State Layer
- ADR 063: Core Module API
- ADR 065: Store V2
- ADR 076: Transaction Malleability Risk Review and Recommendations