Citrea
WebsiteBlogJoin The Community
  • 👋Welcome
    • Getting started
  • ⛓️Technical Specs
    • TL;DR
    • Technical Introduction
    • Characteristics
      • Execution Environment
      • Block Production
        • Mempool
        • Sequencer
        • Sequencer Commitments
        • Soft Confirmations
      • Proof Generation
      • Nodes
      • Bitcoin Settlement: Trust-minimized BTC Bridge
        • BitVM
        • Optimistic Verification
    • Security Properties
      • Validity
      • Data Availability
      • Re-org Resistance
      • Censorship Resistance and Force Transactions
        • Escape Hatch
  • 👤User Guide
    • Run Citrea Full Node
      • Bitcoin Testnet4
        • Testnet4 Docker Setup
        • Build Testnet4 from Source
      • Citrea Full Node
        • Citrea Binary Executable
        • Build Citrea from Source
    • Use Citrea Testnet Faucet
    • Installing an EVM Wallet
    • Taproot Recovery Address
  • 📖Developer Documentation
    • Kickstart
    • Deployment Guide
      • Deploy a Smart Contract Using Remix
      • Deploy a Token
      • Configure Hardhat
    • System Contracts
      • Bitcoin Light Client
      • Bridge
      • Fee Vaults
    • Chain Information
    • RPC Documentation
    • Deploy a Bitcoin Appchain (L3)
  • 🔎Future Research
    • Decentralized Sequencer Network
    • Lightning Integration
    • Multi Prover
    • Multi VM Approach
    • Trustless Atomic Swaps
    • Trustless Settlement
    • Volition Model
  • 🌐Community
    • Citrea Meetups
      • Meetup Guide
      • Resources
      • Code of Conduct
Powered by GitBook
On this page

Was this helpful?

  1. Technical Specs
  2. Characteristics
  3. Block Production

Mempool

PreviousBlock ProductionNextSequencer

Last updated 12 hours ago

Was this helpful?

Citrea has a private mempool (memory pool) as a temporary staging area for pending transactions before they are included in a block.

Once a transaction is submitted, some basic checks are as follows:

  • Is there enough space in the mempool? (see configs section below)

  • Does it fit into account limits? (see configs section below)

  • Does the transaction have a valid nonce that is bigger or equal than the current nonce?

  • Does the address have enough balance?

If the transaction passes these checks, it is added to the mempool.

Configuration

Citrea uses a private mempool, inaccessible via RPC, which prioritizes transactions based on their fee.

Citrea mempool has custom that uses reth-transaction-pool architecture. Namely:

  • Queued: Includes transactions not ready to be included in the next block due to lack of funds, nonce, etc.

  • BaseFee: Includes transactions not ready to be included in the next block due to insufficient base fee.

  • Pending: Includes transactions ready to be included in the next block.

For Queued, BaseFee, and Pending pools, Citrea has the 10x configuration limits compared to default values of Ethereum: 100,000 transactions per subpool with 200 MB limit.

Citrea does not have a Blob pool as it does not support blob transactions at the moment.

One more custom mempool configuration is the number of transaction slots per account, max_account_slots. Citrea has a maximum of 64 slots per account in the mempool to prevent spamming.

⛓️
SubPools