Mina Protocol RFCs
This section contains all Request for Comments (RFC) documents from the Mina Protocol OCaml implementation. These RFCs document design decisions, protocol changes, and architectural proposals for the Mina blockchain.
RFCs serve as the primary mechanism for proposing new features, collecting community input, and documenting design decisions. They provide valuable context for understanding why certain architectural choices were made in the protocol.
The original RFCs are maintained in the MinaProtocol/mina repository.
RFC categories
Protocol and consensus
Core protocol design, consensus mechanisms, and blockchain state management.
| RFC | Title | Description |
|---|---|---|
| 0006 | Receipt chain proving | Proof mechanism for transaction receipts |
| 0007 | Delegation of stake | Stake delegation mechanics and implementation |
| 0019 | Epoch ledger sync | Synchronization of epoch ledgers |
| 0030 | Fork signalling | Mechanism for signaling protocol forks |
| 0051 | Protocol versioning | Versioning scheme for protocol compatibility |
| 0059 | New transaction model | Redesigned transaction model |
State management
Transition frontier, ledger, and state persistence.
| RFC | Title | Description |
|---|---|---|
| 0008 | Persistent ledger builder controller | Controller for persistent ledger building |
| 0009 | Transition frontier controller | Managing the transition frontier |
| 0010 | Decompose ledger builder | Modular ledger builder design |
| 0015 | Transition frontier extensions | Extensions to transition frontier |
| 0016 | Transition frontier persistence | Persisting frontier state |
| 0020 | Transition frontier extensions 2 | Additional frontier extensions |
| 0026 | Transition caching | Caching strategies for transitions |
| 0028 | Frontier synchronization | Synchronizing frontiers across nodes |
| 0034 | Reduce scan state memory usage | Memory optimization for scan state |
Networking
P2P communication, libp2p integration, and network architecture.
| RFC | Title | Description |
|---|---|---|
| 0029 | libp2p | libp2p integration for networking |
| 0031 | Sentry architecture | Sentry node architecture design |
| 0060 | Networking refactor | Overhauling the networking layer |
| 0062 | Bitswap | Bitswap protocol integration |
APIs and interfaces
GraphQL, RPC, Rosetta, and external interfaces.
| RFC | Title | Description |
|---|---|---|
| 0013 | RPC versioning | Versioning scheme for RPC interfaces |
| 0021 | GraphQL API | GraphQL API for wallet communication |
| 0038 | Rosetta Construction API | Rosetta API construction endpoints |
| 0040 | Rosetta timelocking | Timelocking support in Rosetta |
| 0048 | Rosetta zkApps | zkApps support in Rosetta API |
Hard forks
Hard fork procedures, disaster recovery, and data migration.
| RFC | Title | Description |
|---|---|---|
| 0033 | Blockchain in hard fork | Blockchain state during hard forks |
| 0035 | Scan state hard fork | Scan state handling in hard forks |
| 0036 | Hard fork disaster recovery | Recovery procedures for hard forks |
| 0047 | Versioning changes for hard fork | Version management during forks |
| 0053 | Hard fork package generation | Generating hard fork packages |
| 0056 | Hard fork data migration | Data migration during hard forks |
zkApps
Zero-knowledge application features and constraints.
| RFC | Title | Description |
|---|---|---|
| 0045 | zkApp balance data in archive | Archive storage for zkApp balances |
| 0052 | Verification key permissions | Permission system for verification keys |
| 0054 | Limit zkApp commands per block | Block-level zkApp command limits |
| 0057 | Hardcap zkApp commands | Hard limits on zkApp commands |
| 0058 | Disable zkApp commands | Mechanism to disable zkApp commands |
| 0061 | Solidity SNAPPs | Solidity integration for SNAPPs |
| 0064 | Deriving with generics SNAPPs | Generic derivation for SNAPPs |
Security and validation
Transaction pool security, ban scoring, and validation mechanisms.
| RFC | Title | Description |
|---|---|---|
| 0001 | Banlisting | Peer banlisting mechanism |
| 0011 | Transaction pool DoS mitigation | Preventing DoS attacks on mempool |
| 0012 | Ban scoring | Scoring system for peer bans |
| 0032 | Automated validation | Automated transaction validation |
| 0049 | Protocol testing | Testing framework for protocol |
| 0055 | Stop transaction processing | Emergency transaction halt mechanism |
Serialization and encoding
Data encoding, versioning, and serialization formats.
| RFC | Title | Description |
|---|---|---|
| 0014 | Address encoding | Address encoding format |
| 0017 | Module versioning | Versioning for serialization modules |
| 0024 | Memos with arbitrary bytes | Arbitrary byte support in memos |
| 0046 | Version other serializations | Versioning additional serializations |
Account features
Time-locked accounts, delegations, and account management.
| RFC | Title | Description |
|---|---|---|
| 0025 | Time-locked accounts | Time-based account locking |
| 0050 | Genesis ledger export | Exporting genesis ledger data |
Infrastructure and operations
Node status, logging, and operational tooling.
| RFC | Title | Description |
|---|---|---|
| 0018 | Better logging | Improved logging infrastructure |
| 0039 | SNARK keys management | Managing SNARK proving keys |
| 0041 | Infrastructure testnet persistence | Persistent testnet infrastructure |
| 0042 | Node status collection | Collecting node status data |
| 0043 | Node error collection | Collecting node error data |
| 0044 | Node status and error backend | Backend for status/error collection |
| 0063 | Reducing daemon memory usage | Memory optimization for daemon |
Development processes
Style guides, naming conventions, and development workflows.
| RFC | Title | Description |
|---|---|---|
| 0000 | Template | RFC template for new proposals |
| 0002 | Branch prefixes | Git branch naming conventions |
| 0003 | Renaming refactor | Code renaming guidelines |
| 0004 | Style guidelines | Code style guidelines |
| 0005 | Issue labels | GitHub issue labeling scheme |
| 0022 | PoStake naming conventions | Naming conventions for PoS code |
| 0023 | Glossary terms | Protocol terminology glossary |
| 0027 | Wallet internationalization | i18n support for wallet |
| 0037 | GitHub merging strategy | Git merge workflow |
Additional resources
- RFC Repository - Original RFC source files on GitHub
- Mina Protocol Documentation - Official protocol documentation