DEV Community

Daniel Ioni
Daniel Ioni

Posted on

Monero's Seraphis Migration & FCMP++: A Technical Deep Dive

The most significant privacy and scalability upgrade in Monero's history is finally taking shape.

After years of research and development, Monero is on the verge of deploying Full-Chain Membership Proofs (FCMP++) — a cryptographic breakthrough that redefines what privacy means in a blockchain. This isn't just another incremental improvement; it's a fundamental re-architecture of how Monero handles transaction privacy, scalability, and wallet synchronization.

  1. The Problem: Why Rings Aren't Enough

Since its launch, Monero has relied on ring signatures to obscure transaction origins. Each input is mixed with decoys — typically 15 other outputs — creating an anonymity set of 16.

While effective for years, ring signatures have inherent limitations:
Vulnerability Description
EAE Attacks Adversaries can manipulate decoy selection to reduce privacy
Chain Reorganizations Rings can become invalid after chain reorgs
Statistical Analysis Decoy selection algorithms can be exploited
Limited Anonymity Set Only 16 outputs per input, not the full chain

FCMP++ solves all of these by proving that an output being spent is one of any output on the entire blockchain — an anonymity set of over 100 million outputs.

  1. What is FCMP++?

Full-Chain Membership Proofs (FCMP++) is a cryptographic protocol that replaces ring signatures with a merkle-tree based proof system.
2.1 How It Works

FCMP++ proves two things simultaneously:

Membership: The output being spent exists in the blockchain's output set

Spend Authorization: The spender holds the private key for that output
Enter fullscreen mode Exit fullscreen mode

The proof is constructed using a Bulletproofs-based circuit with optimizations for Merkle tree membership proofs.
2.2 The Architecture

The integration consists of several core components:
text

┌─────────────────────────────────────────────────────────────┐
│ FCMP++ Architecture │
├─────────────────────────────────────────────────────────────┤
│ Rust FFI │ C++ Core │
│ ───────── │ ──────── │
│ • Helios/Selene │ • Tree state management │
│ curve math │ • LMDB database updates │
│ • FCMP++ │ • Transaction construction │
│ construction │ • Transaction verification │
│ • FCMP++ │ • RPC routes │
│ verification │ • Wallet sync │
└─────────────────────────────────────────────────────────────┘

Key technical details:

The Rust code is compiled into a static library (libfcmp_pp_rust.a)

C++ consumes it via a generated FFI header (fcmp++.h)

The C++ layer manages the curve trees merkle tree — a new store for spendable outputs

All existing valid outputs are inserted into the tree once unlocked
Enter fullscreen mode Exit fullscreen mode

2.3 Why "++"?

FCMP++ is actually the second proposal. The first FCMP required the full Seraphis migration (new address format, invalidating all prior addresses).

FCMP++ independently adds Spend Authorization + Linkability, removing the dependency on Seraphis. This means:

✅ Faster to deploy — no full-chain migration required

✅ No new address format — existing addresses continue to work

✅ Same privacy benefits — anonymity set of millions
Enter fullscreen mode Exit fullscreen mode
  1. New Features Unlocked by FCMP++

Beyond massive privacy improvements, FCMP++ introduces several entirely new capabilities to Monero:
3.1 Transaction Chaining

Sign a transaction that spends another transaction before the spent transaction is published and mined. This enables layer-two designs such as payment channels.
3.2 Outgoing View Keys

Currently, Monero only has incoming view keys (detect received funds). Outgoing view keys allow detection of when received outputs are spent. This enables:

Much more efficient cold wallet setups

More efficient multisignature wallets

A single unified "view key" (no incoming/outgoing distinction)
Enter fullscreen mode Exit fullscreen mode

3.3 Forward Secrecy

Even with a quantum computer (discrete log oracle), an adversary cannot break privacy. This is a critical feature for long-term confidentiality.

  1. Implementation Status & Roadmap 4.1 Current Status (Mid-2026)

The FCMP++ integration is actively being developed, audited, and tested:
Component Status
Code Integration Multiple PRs open in the seraphis-migration/monero repository
Audit Phase 1 audit in progress, planned completion before July 2026
Testing FCMP++/Carrot beta stressnet active
Wallet Implementation CLI wallet supports sending/receiving with Carrot+FCMP
4.2 Key Milestones
text

Q1-Q2 2026: FCMP++ Alpha Stressnet
├── v1.5 released with improved validation and sync[reference:28]
├── Memory consumption reduced
└── Node sync performance improved

Q2 2026: Audit Phase 1
├── Code review by Veridise (formal methods)[reference:29]
├── Issues triaged and fixed[reference:30]
└── Phase 1 completion before July[reference:31]

H2 2026: Production Deployment
├── Piecemeal PRs submitted to main Monero repo[reference:32]
├── Documentation finalized[reference:33]
└── Hard fork activation

4.3 Performance Characteristics

Early testing has revealed the following metrics:
Metric Current (CLSAG) FCMP++
Verification time (1-input) Fast ~10x slower than 16-member CLSAG
Transaction size (2-in/2-out) ~2,200 bytes ~5,000 bytes
Transaction size (max) ~1,500-2,200 bytes ~10,000 bytes
Anonymity set 16 100,000,000+

Note: The increased verification time is a trade-off for the dramatically larger anonymity set. Hardware improvements and future optimizations will mitigate this.
Enter fullscreen mode Exit fullscreen mode
  1. Wallet Changes & User Impact 5.1 Seed Compatibility

Your existing 25-word seed will still work. The spend secret key stays the same; the seed can restore a Seraphis/FCMP++ wallet.
5.2 New Wallet Features

Faster syncing: Up to 50-60% speedup with clearnet nodes, 25-35% with local nodes

New wallet tiers: Full view-only functionality without spend key

Async scanner: Improved privacy for light wallets
Enter fullscreen mode Exit fullscreen mode

5.3 What Users Need to Do

Update your wallet software when the upgrade is deployed

Your seed will restore your funds — no migration needed

New addresses will be longer
Enter fullscreen mode Exit fullscreen mode
  1. What About Seraphis?

FCMP++ does NOT require the full Seraphis migration.

The original Seraphis proposal introduced a new address format (invalidating all prior addresses) and a migration to a new anonymity set.

FCMP++ achieves the same privacy benefits without:

Invalidating existing addresses

Requiring a full-chain migration

Changing the address format
Enter fullscreen mode Exit fullscreen mode

This is why FCMP++ is the path forward. Seraphis may still be implemented later, but FCMP++ delivers the critical privacy improvements much faster.

  1. Why This Matters for Developers
    7.1 If You Build on Monero

    Your integration will work — no breaking changes to address formats

    Better UX — faster sync, lower fees, better privacy

    New capabilities — transaction chaining enables new product designs

7.2 Preparing Your Application

Stay updated on the FCMP++ deployment timeline

Test your wallet integration on the stressnet

Watch for RPC changes — new methods for scan_tx, tree caching
Enter fullscreen mode Exit fullscreen mode

7.3 Relevant Resources

FCMP++ Integration Documentation

Implementation Tracker

Audit Overview
Enter fullscreen mode Exit fullscreen mode
  1. Conclusion

The FCMP++ upgrade represents a paradigm shift in blockchain privacy:
Before After
Anonymity set of 16 Anonymity set of 100,000,000+
Vulnerable to statistical analysis Mathematically unlinkable
No forward secrecy Quantum-resistant privacy
No transaction chaining Layer-two capable
Slow wallet sync 50% faster sync

Monero is becoming what it was always meant to be: truly private, truly scalable, and truly unstoppable.

The code is being audited. The stressnet is running. The deployment is coming.

If you care about privacy, this is the moment to pay attention.
🔗 Resources

FCMP++ Integration Docs

Implementation Tracker

Audit Overview

Monero Blog: FCMP Development

Monero Research Lab
Enter fullscreen mode Exit fullscreen mode

This article reflects the state of Monero's FCMP++ integration as of July 2026. The protocol is under active development; details may change as the upgrade progresses toward mainnet deployment.

Top comments (0)