Skip to main content

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.

RFCTitleDescription
0006Receipt chain provingProof mechanism for transaction receipts
0007Delegation of stakeStake delegation mechanics and implementation
0019Epoch ledger syncSynchronization of epoch ledgers
0030Fork signallingMechanism for signaling protocol forks
0051Protocol versioningVersioning scheme for protocol compatibility
0059New transaction modelRedesigned transaction model

State management

Transition frontier, ledger, and state persistence.

RFCTitleDescription
0008Persistent ledger builder controllerController for persistent ledger building
0009Transition frontier controllerManaging the transition frontier
0010Decompose ledger builderModular ledger builder design
0015Transition frontier extensionsExtensions to transition frontier
0016Transition frontier persistencePersisting frontier state
0020Transition frontier extensions 2Additional frontier extensions
0026Transition cachingCaching strategies for transitions
0028Frontier synchronizationSynchronizing frontiers across nodes
0034Reduce scan state memory usageMemory optimization for scan state

Networking

P2P communication, libp2p integration, and network architecture.

RFCTitleDescription
0029libp2plibp2p integration for networking
0031Sentry architectureSentry node architecture design
0060Networking refactorOverhauling the networking layer
0062BitswapBitswap protocol integration

APIs and interfaces

GraphQL, RPC, Rosetta, and external interfaces.

RFCTitleDescription
0013RPC versioningVersioning scheme for RPC interfaces
0021GraphQL APIGraphQL API for wallet communication
0038Rosetta Construction APIRosetta API construction endpoints
0040Rosetta timelockingTimelocking support in Rosetta
0048Rosetta zkAppszkApps support in Rosetta API

Hard forks

Hard fork procedures, disaster recovery, and data migration.

RFCTitleDescription
0033Blockchain in hard forkBlockchain state during hard forks
0035Scan state hard forkScan state handling in hard forks
0036Hard fork disaster recoveryRecovery procedures for hard forks
0047Versioning changes for hard forkVersion management during forks
0053Hard fork package generationGenerating hard fork packages
0056Hard fork data migrationData migration during hard forks

zkApps

Zero-knowledge application features and constraints.

RFCTitleDescription
0045zkApp balance data in archiveArchive storage for zkApp balances
0052Verification key permissionsPermission system for verification keys
0054Limit zkApp commands per blockBlock-level zkApp command limits
0057Hardcap zkApp commandsHard limits on zkApp commands
0058Disable zkApp commandsMechanism to disable zkApp commands
0061Solidity SNAPPsSolidity integration for SNAPPs
0064Deriving with generics SNAPPsGeneric derivation for SNAPPs

Security and validation

Transaction pool security, ban scoring, and validation mechanisms.

RFCTitleDescription
0001BanlistingPeer banlisting mechanism
0011Transaction pool DoS mitigationPreventing DoS attacks on mempool
0012Ban scoringScoring system for peer bans
0032Automated validationAutomated transaction validation
0049Protocol testingTesting framework for protocol
0055Stop transaction processingEmergency transaction halt mechanism

Serialization and encoding

Data encoding, versioning, and serialization formats.

RFCTitleDescription
0014Address encodingAddress encoding format
0017Module versioningVersioning for serialization modules
0024Memos with arbitrary bytesArbitrary byte support in memos
0046Version other serializationsVersioning additional serializations

Account features

Time-locked accounts, delegations, and account management.

RFCTitleDescription
0025Time-locked accountsTime-based account locking
0050Genesis ledger exportExporting genesis ledger data

Infrastructure and operations

Node status, logging, and operational tooling.

RFCTitleDescription
0018Better loggingImproved logging infrastructure
0039SNARK keys managementManaging SNARK proving keys
0041Infrastructure testnet persistencePersistent testnet infrastructure
0042Node status collectionCollecting node status data
0043Node error collectionCollecting node error data
0044Node status and error backendBackend for status/error collection
0063Reducing daemon memory usageMemory optimization for daemon

Development processes

Style guides, naming conventions, and development workflows.

RFCTitleDescription
0000TemplateRFC template for new proposals
0002Branch prefixesGit branch naming conventions
0003Renaming refactorCode renaming guidelines
0004Style guidelinesCode style guidelines
0005Issue labelsGitHub issue labeling scheme
0022PoStake naming conventionsNaming conventions for PoS code
0023Glossary termsProtocol terminology glossary
0027Wallet internationalizationi18n support for wallet
0037GitHub merging strategyGit merge workflow

Additional resources