{
  "title": "Monero FCMP++ and Carrot upgrade",
  "checkedAt": "2026-09-19",
  "license": "CC BY 4.0",
  "summary": [
    "FCMP++ (Full-Chain Membership Proofs + Spend Authorization + Linkability) is a planned Monero upgrade that replaces ring signatures.",
    "Today each input hides among 16 ring members. With FCMP++, a spend proves it uses one of all spendable outputs on the chain, which the developers put at more than 150 million.",
    "Carrot is the addressing protocol that ships with FCMP++. Existing addresses keep working, and addresses from new-style Carrot wallets look the same as old ones.",
    "Carrot adds protection against Janus and burning-bug attacks, forward secrecy against a future quantum attacker who does not know the receiver's address, and new view-key tiers for newly created wallets.",
    "For users this means the same addresses, a much larger anonymity set, larger transactions, updated wallets that re-scan once, and no more custom unlock times."
  ],
  "summarySources": [
    {
      "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-beta.2.0",
      "date": "2026-05-27",
      "what": "Release notes describe FCMP++ as replacing ring signatures, proving ownership of 1 of 150 million+ outputs, and Carrot as backwards compatible with existing addresses."
    },
    {
      "url": "https://www.getmonero.org/2024/04/27/fcmps.html",
      "date": "2024-04-27",
      "what": "getmonero.org post introducing FCMP++ as a replacement for rings."
    },
    {
      "url": "https://github.com/jeffro256/carrot/blob/master/carrot.md",
      "date": "2026-04-08",
      "what": "Carrot specification: backwards compatible addresses, Janus and burning-bug protection, forward secrecy, new wallet tiers."
    },
    {
      "url": "https://www.getmonero.org/2026/05/10/deprecating-unlock-time.html",
      "date": "2026-05-10",
      "what": "getmonero.org: custom unlock time to be deprecated with FCMP++."
    }
  ],
  "status": {
    "liveOnMainnet": false,
    "text": "As of 2026-09-19, FCMP++ is not live on Monero mainnet. It runs only on a public test network (the beta stressnet), which forked off Monero's testnet. No official mainnet fork height or date has been announced.",
    "sources": [
      {
        "url": "https://github.com/monero-project/monero/blob/master/src/hardforks/hardforks.cpp",
        "date": "2026-09-19",
        "what": "Mainnet hard fork table in the main repository ends at version 16 (2022). There is no FCMP++ (version 17) mainnet entry."
      },
      {
        "url": "https://www.getmonero.org/2026/05/10/deprecating-unlock-time.html",
        "date": "2026-05-10",
        "what": "Official blog: 'a FCMP++ fork date is not set at the time this is written.'"
      },
      {
        "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-beta.2.0",
        "date": "2026-05-27",
        "what": "Latest stressnet release. The stressnet is a fork of testnet, not mainnet."
      },
      {
        "url": "https://www.getmonero.org/resources/roadmap/",
        "date": "2026-09-19",
        "what": "getmonero.org roadmap lists Full-Chain Membership Proofs under 'Future' with no date."
      }
    ],
    "latestTestRelease": {
      "name": "FCMP++ & Carrot beta stressnet v2.0",
      "tag": "v0.19.0.0-beta.2.0",
      "releaseType": "pre-release (test network only)",
      "published": "2026-05-27",
      "network": "beta stressnet (hard fork of Monero testnet)",
      "forkHeight": 3012000,
      "forkDate": "2026-05-27",
      "notYetWorking": [
        "watch-only wallets and cold wallets",
        "hardware wallets",
        "multisig",
        "transaction proofs"
      ],
      "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-beta.2.0"
    },
    "testNetworkHistory": [
      {
        "name": "Alpha stressnet v1",
        "tag": "v0.19.0.0-alpha.1",
        "published": "2025-09-27",
        "fork": "testnet block 2,847,330 on 2025-10-03",
        "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-alpha.1"
      },
      {
        "name": "Alpha stressnet v1.6 (last alpha)",
        "tag": "v0.19.0.0-alpha.1.6",
        "published": "2026-02-04",
        "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-alpha.1.6"
      },
      {
        "name": "Beta stressnet v1.0",
        "tag": "v0.19.0.0-beta.1.0",
        "published": "2026-04-28",
        "fork": "testnet block 2,997,100 on 2026-05-06",
        "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-beta.1.0"
      },
      {
        "name": "Beta stressnet v2.0",
        "tag": "v0.19.0.0-beta.2.0",
        "published": "2026-05-27",
        "fork": "block 3,012,000 on 2026-05-27",
        "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-beta.2.0"
      }
    ],
    "nextTestRelease": {
      "text": "Beta stressnet v3 is being prepared. It has no announced date. On 2026-09-09 developers said the next steps were the hot/cold wallet pull request and a rebase on master. The hot/cold pull request was merged into the FCMP++ staging branch on 2026-09-14. The v3 checklist still had open items on 2026-09-19.",
      "sources": [
        {
          "url": "https://github.com/seraphis-migration/monero/pull/415",
          "date": "2026-09-19",
          "what": "Open work-in-progress pull request 'Prepare v0.19.0.0-beta.3.0' with a checklist of remaining items."
        },
        {
          "url": "https://github.com/monero-project/meta/issues/1454#issuecomment-5687647024",
          "date": "2026-09-09",
          "what": "MRL meeting log: all side pull requests are ready for beta v3; next is the hot/cold wallet pull request, then a rebase."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/pull/52",
          "date": "2026-09-14",
          "what": "Hot/cold wallet pull request merged into the fcmp++-stage branch."
        }
      ]
    },
    "versionNaming": {
      "text": "Stressnet builds are tagged v0.19.0.0-alpha/beta. In the main repository, the release-v0.19 branch opened on 2026-08-03 for other changes (fixes, Polyseed, tx relay v2), and FCMP++/Carrot work goes to master. The version number of the release that carries the fork is not confirmed. The staging code uses hard fork version 17 for FCMP++ and Carrot.",
      "sources": [
        {
          "url": "https://github.com/monero-project/meta/issues/1434#issuecomment-5170372799",
          "date": "2026-08-03",
          "what": "Monero Tech Meeting #180 log: release-v0.19 branch is live; FCMP++/Carrot changes go into master; fixes, Polyseed and tx relay v2 are backported to release-v0.19."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/blob/fcmp%2B%2B-stage/src/cryptonote_config.h",
          "date": "2026-09-19",
          "what": "Staging config: HF_VERSION_FCMP_PLUS_PLUS 17 and HF_VERSION_CARROT 17."
        }
      ]
    },
    "hardForkMilestone": {
      "name": "fcmp++ hf",
      "url": "https://github.com/monero-project/monero/milestone/1",
      "closedItems": 27,
      "openItems": 12,
      "checkedAt": "2026-09-19",
      "text": "The main Monero repository tracks fork work in the 'fcmp++ hf' milestone. When checked, 27 items were closed and 12 were open. Open items include carrot_core, carrot_impl, the curve tree builder and RandomX v2 support."
    },
    "upstreamProgress": {
      "text": "FCMP++ code is being moved from the seraphis-migration staging branch into the main Monero repository in reviewed pieces. The phase 1 pieces, such as the Rust FFI and curve trees, were merged in August 2026. Developers said all phase 2 pull requests were ready for review on 2026-09-09. Several merges that the draft plan scheduled for late August and early September 2026 were still open on 2026-09-19.",
      "sources": [
        {
          "url": "https://github.com/monero-project/monero/pull/10359",
          "date": "2026-08-12",
          "what": "FCMP++ Rust FFI merged into main Monero repository."
        },
        {
          "url": "https://github.com/monero-project/monero/pull/10360",
          "date": "2026-08-19",
          "what": "Curve trees pull request merged into main Monero repository (last piece from the phase 1 integration audit)."
        },
        {
          "url": "https://github.com/monero-project/meta/issues/1454#issuecomment-5687647024",
          "date": "2026-09-09",
          "what": "MRL meeting log: 'all phase 2 FCMP++ integration upstream PR's are ready for review'."
        },
        {
          "url": "https://github.com/monero-project/monero/pull/10361",
          "date": "2026-09-19",
          "what": "Tower cycle pull request still open; the draft plan had it for 2026-08-21 to 2026-08-25."
        },
        {
          "url": "https://github.com/monero-project/monero/pull/9559",
          "date": "2026-09-19",
          "what": "carrot_core pull request still open; the draft plan had its merge for 2026-08-25 to 2026-09-01."
        },
        {
          "url": "https://github.com/monero-project/monero/pull/10724",
          "date": "2026-09-19",
          "what": "Curve tree builder pull request still open."
        }
      ]
    },
    "audits": {
      "text": "Trail of Bits published a review of the FCMP++ cryptography in July 2026, and the first phase of the integration audit is done. Quotes for a further audit of the circuit, gadgets and the FCMP++ library were received, with a choice expected in September 2026.",
      "sources": [
        {
          "url": "https://github.com/trailofbits/publications/blob/master/reviews/2026-07-magicgrants-monerofcmp++crypto-securityreview.pdf",
          "date": "2026-07-29",
          "what": "Trail of Bits security review report, shared in the 29 July 2026 MRL meeting."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/issues/294",
          "date": "2026-02-18",
          "what": "FCMP++ integration audit overview (multi-phase audit)."
        },
        {
          "url": "https://github.com/monero-project/meta/issues/1454#issuecomment-5687647024",
          "date": "2026-09-09",
          "what": "MRL meeting log: all audit quotes received; decision expected at the next meeting."
        }
      ]
    }
  },
  "schedule": {
    "officialStatus": "No official mainnet date or height. The only public timeline is a developer's draft plan, which its author calls a non-binding working draft.",
    "officialSources": [
      {
        "url": "https://www.getmonero.org/2026/05/10/deprecating-unlock-time.html",
        "date": "2026-05-10",
        "what": "'a FCMP++ fork date is not set at the time this is written.'"
      },
      {
        "url": "https://github.com/monero-project/monero/blob/master/src/hardforks/hardforks.cpp",
        "date": "2026-09-19",
        "what": "No FCMP++ mainnet entry in the hard fork table."
      }
    ],
    "planSource": {
      "url": "https://github.com/jeffro256/fcmp-carrot-plan",
      "viewer": "https://html-preview.github.io/?url=https://github.com/jeffro256/fcmp-carrot-plan/blob/master/fcmp%2B%2B-carrot.html",
      "author": "jeffro256 (Monero developer)",
      "lastUpdated": "2026-08-21",
      "quote": "This plan is a non-binding working draft.",
      "text": "The README says that, according to the planner, FCMP++/Carrot will activate in week 9 of 2027."
    },
    "items": [
      {
        "id": "hf-activation-merge",
        "title": "Fork activation code merged to master",
        "window": "2026-09-15 to 2026-09-16",
        "binding": "non-binding draft",
        "stateOnCheckDate": "Not merged yet. The mainnet hard fork table has no FCMP++ entry.",
        "sources": [
          {
            "url": "https://github.com/jeffro256/fcmp-carrot-plan/blob/master/fcmp%2B%2B-carrot.planner",
            "date": "2026-08-21",
            "what": "Plan task 'HF activation merge', 22% complete."
          },
          {
            "url": "https://github.com/monero-project/monero/blob/master/src/hardforks/hardforks.cpp",
            "date": "2026-09-19",
            "what": "No version 17 mainnet entry."
          }
        ]
      },
      {
        "id": "pre-release-code-freeze",
        "title": "Pre-release code freeze",
        "window": "2026-09-16 to 2026-10-14",
        "binding": "non-binding draft",
        "sources": [
          {
            "url": "https://github.com/jeffro256/fcmp-carrot-plan/blob/master/fcmp%2B%2B-carrot.planner",
            "date": "2026-08-21",
            "what": "Plan task 'Pre-release code freeze'."
          }
        ]
      },
      {
        "id": "first-fork-binary",
        "title": "First fork-enabled binary release",
        "window": "2026-10-14 to 2026-10-21",
        "binding": "non-binding draft",
        "sources": [
          {
            "url": "https://github.com/jeffro256/fcmp-carrot-plan/blob/master/fcmp%2B%2B-carrot.planner",
            "date": "2026-08-21",
            "what": "Plan task 'First HF-enabled binary release'."
          },
          {
            "url": "https://html-preview.github.io/?url=https://github.com/jeffro256/fcmp-carrot-plan/blob/master/fcmp%2B%2B-carrot.html",
            "date": "2026-08-21",
            "what": "Gantt chart view of the same plan."
          }
        ]
      },
      {
        "id": "follow-up-fix-binary",
        "title": "Follow-up fix release",
        "window": "2026-11-03 to 2026-11-10",
        "binding": "non-binding draft",
        "sources": [
          {
            "url": "https://github.com/jeffro256/fcmp-carrot-plan/blob/master/fcmp%2B%2B-carrot.planner",
            "date": "2026-08-21",
            "what": "Plan task 'Follow-up fix binary release'."
          }
        ]
      },
      {
        "id": "full-release",
        "title": "Fully-featured release (hardware wallets, multisig and other wallet features)",
        "window": "2026-12-02 to 2026-12-09",
        "binding": "non-binding draft",
        "sources": [
          {
            "url": "https://github.com/jeffro256/fcmp-carrot-plan/blob/master/fcmp%2B%2B-carrot.planner",
            "date": "2026-08-21",
            "what": "Plan task 'Fully-featured binary release', after Ledger and Trezor merges planned for 2026-11-24 to 2026-12-01."
          }
        ]
      },
      {
        "id": "waiting-period",
        "title": "Waiting period before activation",
        "window": "2026-09-16 to 2027-03-03",
        "binding": "non-binding draft",
        "text": "The plan counts about six months from the fork-enabled merge to activation. Developers discussed this in late July 2026.",
        "sources": [
          {
            "url": "https://github.com/jeffro256/fcmp-carrot-plan/blob/master/fcmp%2B%2B-carrot.planner",
            "date": "2026-08-21",
            "what": "Plan task 'HF mandatory waiting period'."
          },
          {
            "url": "https://github.com/monero-project/meta/issues/1430#issuecomment-5095664567",
            "date": "2026-07-27",
            "what": "Tech meeting #179 log: discussion of a 6-month wait after the fork-enabled merge."
          }
        ]
      },
      {
        "id": "mainnet-activation",
        "title": "Mainnet activation",
        "window": "2027-03-03 to 2027-03-04 (week 9 of 2027)",
        "binding": "non-binding draft",
        "sources": [
          {
            "url": "https://github.com/jeffro256/fcmp-carrot-plan",
            "date": "2026-08-21",
            "what": "README: 'According to this planner, FCMP++/Carrot will activate in week 9 of 2027.'"
          },
          {
            "url": "https://github.com/jeffro256/fcmp-carrot-plan/blob/master/fcmp%2B%2B-carrot.planner",
            "date": "2026-08-21",
            "what": "Plan task 'FCMP++ activation'."
          }
        ]
      }
    ],
    "history": [
      {
        "date": "2026-07-22",
        "plannedActivation": "week 9 of 2027",
        "source": "https://github.com/jeffro256/fcmp-carrot-plan/commit/d2adede779"
      },
      {
        "date": "2026-07-27",
        "plannedActivation": "week 5 of 2027",
        "source": "https://github.com/jeffro256/fcmp-carrot-plan/commit/bf830e05ec"
      },
      {
        "date": "2026-08-12",
        "plannedActivation": "week 8 of 2027",
        "source": "https://github.com/jeffro256/fcmp-carrot-plan/commit/7321c407044d43c1c02142a0aecd88ce6a077904"
      },
      {
        "date": "2026-08-21",
        "plannedActivation": "week 9 of 2027",
        "source": "https://github.com/jeffro256/fcmp-carrot-plan/commit/85c4998f96233b47031d231a27f7e76cc2d9cdf0"
      }
    ],
    "historyNote": "The draft target has moved three times in one month. Treat every date above as an estimate."
  },
  "integratorChanges": [
    {
      "id": "addresses",
      "title": "Addresses",
      "text": "Existing addresses, subaddresses and integrated addresses keep working. No wallet key migration is needed. Wallets that use the new Carrot key setup make addresses in the same format, and they cannot be told apart from old ones. Integrated addresses still work, but one transaction can pay only one integrated address. The payment ID is now confirmed by a hash, which gives payment processors firmer checks.",
      "links": [
        {
          "url": "https://github.com/jeffro256/carrot/blob/master/carrot.md",
          "date": "2026-04-08",
          "what": "Section 1.3: backwards compatible; same address format; new addresses indistinguishable from old. Sections 2.1.4 and 7.1.1: payment ID confirmation; one integrated address per transaction."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-beta.2.0",
          "date": "2026-05-27",
          "what": "Release notes: Carrot keeps backwards compatibility with existing addresses."
        }
      ]
    },
    {
      "id": "unlock-time",
      "title": "unlock_time deprecation",
      "text": "Custom unlock times will be rejected at consensus with FCMP++. Nodes already refuse to relay such transactions under a relay rule added in 2024. Outputs locked in the past keep their original unlock times. New transactions created after 2026-06-01 with an unlock time past the fork unlock when the fork block arrives. Developers agreed to reserve unlock_time = 1 for a possible later relative lock. Whether the lock itself ships with this fork is not decided.",
      "links": [
        {
          "url": "https://www.getmonero.org/2026/05/10/deprecating-unlock-time.html",
          "date": "2026-05-10",
          "what": "Official deprecation notice and rules for old and new locked transactions."
        },
        {
          "url": "https://github.com/monero-project/monero/pull/9151",
          "date": "2024-05-21",
          "what": "Relay rule that requires unlock_time to be zero."
        },
        {
          "url": "https://github.com/monero-project/meta/issues/1435#issuecomment-5256404003",
          "date": "2026-08-05",
          "what": "MRL log: last meeting agreed to reserve unlock_time = 1 without implementing the lock; views differ on adding the lock to this fork."
        },
        {
          "url": "https://github.com/monero-project/research-lab/issues/161",
          "date": "2026-07-15",
          "what": "Research issue: relative locks with FCMP++."
        }
      ]
    },
    {
      "id": "tx-proofs",
      "title": "Transaction proofs and payment proofs",
      "text": "Transaction proofs did not work yet in beta 2.0. New Carrot and FCMP++ proof code (transaction, spend and reserve proofs) is in an open pull request. Reserve proofs will not reveal amounts per input or the total held, only that the amount is at least the stated threshold. Spend proofs keep full-chain sender privacy. In hot/cold setups, sender-receiver secrets are fetched from the cold wallet by the signable transaction hash, not the TXID. That is a breaking change for this wallet RPC flow.",
      "links": [
        {
          "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-beta.2.0",
          "date": "2026-05-27",
          "what": "Transaction proofs listed as not yet functional."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/pull/270",
          "date": "2025-12-18",
          "what": "Pull request adding knowledge proof functions, still open on 2026-09-19; privacy notes on reserve and spend proofs."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/pull/52",
          "date": "2026-09-14",
          "what": "Merged to staging: sender-receiver secrets are fetched by signable transaction hash; submit_transfer returns it."
        }
      ]
    },
    {
      "id": "wallet-files-keys",
      "title": "Wallet files and keys",
      "text": "Old wallets keep their seeds and keys. When an old wallet file is opened with FCMP++ software, it re-scans once from its restore height to build its FCMP++ tree data. An updated wallet must connect to an updated node; old wallets can still use updated nodes. Carrot also defines a new key setup for new wallets, such as a view-balance secret and a generate-address secret. How the reference wallet will create and store these keys, and how seeds mark the wallet type, is still under discussion.",
      "links": [
        {
          "url": "https://github.com/seraphis-migration/monero/issues/53",
          "date": "2026-09-19",
          "what": "Launch to-do list: updated wallets must point to updated daemons, old wallets can point to updated daemons; updated wallets re-sync from restore height."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/pull/106",
          "date": "2025-09-18",
          "what": "Open pull request: old wallets re-sync on first open; aims to keep saved destination addresses."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-beta.2.0",
          "date": "2026-05-27",
          "what": "'Your FCMP++ wallet MUST point to an FCMP++ compatible daemon.'"
        },
        {
          "url": "https://github.com/seraphis-migration/monero/issues/199",
          "date": "2025-10-29",
          "what": "Carrot account keys are not yet integrated into wallet2."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/issues/306",
          "date": "2026-03-19",
          "what": "Open discussion on legacy versus Carrot wallets and seeds."
        },
        {
          "url": "https://github.com/jeffro256/carrot/blob/master/carrot.md",
          "date": "2026-04-08",
          "what": "Section 5.2: new key hierarchy."
        }
      ]
    },
    {
      "id": "view-only",
      "title": "View-only wallets and view keys",
      "text": "Existing private view keys still find incoming payments. As today, a legacy view-only wallet cannot see spends on its own. Wallets that use the new Carrot key setup get more tiers: view-received (incoming only), view-all (a full view-only wallet that also sees spends and the right balance), and generate-address (makes addresses only, for point-of-sale use). Watch-only and cold wallets did not work yet in beta 2.0. The hot/cold wallet code was merged into the FCMP++ staging branch on 2026-09-14.",
      "links": [
        {
          "url": "https://github.com/jeffro256/carrot/blob/master/carrot.md",
          "date": "2026-04-08",
          "what": "Sections 2.2 and 5.4: wallet tiers; full view-only wallets can identify spent outputs, unlike legacy view-only wallets."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-beta.2.0",
          "date": "2026-05-27",
          "what": "Watch-only and cold wallets listed as not yet functional."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/pull/52",
          "date": "2026-09-14",
          "what": "Hot/cold wallet implementation merged into fcmp++-stage."
        },
        {
          "url": "https://github.com/vtnerd/monero-lws/pull/185",
          "date": "2026-04-02",
          "what": "Light-wallet server tests show legacy, view-incoming and view-balance key scanning of Carrot outputs."
        }
      ]
    },
    {
      "id": "hardware-wallets",
      "title": "Hardware wallets",
      "text": "No hardware wallet supports FCMP++ yet. A device only needs to make the spend-authorization part of each proof, not the full membership proof. Monero developers published a guide for device makers. The draft plan puts Ledger and Trezor merges in late November 2026, ahead of a fully-featured release in early December 2026. These dates are non-binding.",
      "links": [
        {
          "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-beta.2.0",
          "date": "2026-05-27",
          "what": "Hardware wallet support listed as not yet functional."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/issues/63",
          "date": "2025-11-18",
          "what": "Guide for hardware wallet makers (last updated 2025-11-18): 'No HW devices have been developed for Carrot/FCMP++ yet'; devices implement SA/L proving."
        },
        {
          "url": "https://github.com/monero-project/monero/pull/10421",
          "date": "2026-04-18",
          "what": "Open pull request for Ledger emulator tests, described as useful for testing Ledger support for FCMP++."
        },
        {
          "url": "https://github.com/jeffro256/fcmp-carrot-plan/blob/master/fcmp%2B%2B-carrot.planner",
          "date": "2026-08-21",
          "what": "Draft plan: Trezor and Ledger merges 2026-11-24 to 2026-12-01."
        }
      ]
    },
    {
      "id": "multisig",
      "title": "Multisig",
      "text": "Multisig did not work yet in beta 2.0. Work is under way in the FCMP++ repository, and the multisig branch builds on the hot/cold wallet code. The draft plan had multisig merges for late September 2026. That date is non-binding.",
      "links": [
        {
          "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-beta.2.0",
          "date": "2026-05-27",
          "what": "Multisig listed as not yet functional."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/pull/291",
          "date": "2026-02-06",
          "what": "Pull request to get multisig working before the fork, still open on 2026-09-19."
        },
        {
          "url": "https://github.com/monero-project/meta/issues/1443#issuecomment-5426113601",
          "date": "2026-08-19",
          "what": "MRL log: 'Multisig branch is on top of' the hot/cold branch."
        },
        {
          "url": "https://github.com/jeffro256/fcmp-carrot-plan/blob/master/fcmp%2B%2B-carrot.planner",
          "date": "2026-08-21",
          "what": "Draft plan: multisig merges 2026-09-22 to 2026-09-23."
        }
      ]
    },
    {
      "id": "rpc",
      "title": "RPC, transaction format and node changes",
      "text": "Apps that use the wallet API should see few changes; a lead developer said downstream apps like the GUI need almost none. Wallet RPC stays backwards compatible until the fork. After it, only the way transaction secret keys are fetched changes. The node sends new data so wallets can build FCMP++ tree data, and an RPC to fetch tree paths by output ID is still in review. Light-wallet servers get a new get_tree_paths call. FCMP++ transactions use RingCT type 7 with new fields (reference_block, n_tree_layers and the FCMP++ proof). Outputs use a new Carrot output type with a 3-byte view tag. Block explorers and transaction parsers need updates.",
      "links": [
        {
          "url": "https://github.com/monero-project/meta/issues/1434#issuecomment-5170372799",
          "date": "2026-08-03",
          "what": "Tech meeting log: 'almost 0 changes that downstream projects like the GUI wallet need to adopt'."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/pull/52",
          "date": "2026-09-14",
          "what": "Wallet RPC backwards compatible until the fork; only fetching of transaction secret keys differs after it."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/issues/53",
          "date": "2026-09-19",
          "what": "Init sync data for restore is done; 'Endpoint to get path by output id' still open."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/pull/89",
          "date": "2025-08-21",
          "what": "Open pull request: RPC to get tree paths by unified output ID."
        },
        {
          "url": "https://github.com/vtnerd/monero-lws/pull/185",
          "date": "2026-06-15",
          "what": "Light-wallet server draft adds a get_tree_paths REST endpoint."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/pull/110",
          "date": "2025-09-24",
          "what": "Integration documentation: new RCTTypeFcmpPlusPlus = 7 and new rctSigPrunable fields."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/pull/417",
          "date": "2026-07-01",
          "what": "Carrot output type takes the out_to_scripthash slot."
        },
        {
          "url": "https://github.com/jeffro256/carrot/blob/master/carrot.md",
          "date": "2026-04-08",
          "what": "Section 7.3.4: 3-byte view tags."
        },
        {
          "url": "https://github.com/moneroexamples/onion-monero-blockchain-explorer/issues/335",
          "date": "2025-05-22",
          "what": "Tracking issue listing explorer display changes for FCMP++."
        }
      ]
    },
    {
      "id": "fees-size",
      "title": "Fees and transaction size",
      "text": "FCMP++ transactions are larger. Development measurements from August 2025 put a 1-input, 2-output transaction at about 6.5 kB and a 2-input, 2-output one at about 7.9 kB. Transaction weight now closely follows byte size. A transaction can have up to 128 inputs and 16 outputs. Fee and block-size rules change with the fork; the staging code uses a reference transaction weight of 12,500 (3,000 today). Final values may still change. Building transactions with many inputs takes longer.",
      "links": [
        {
          "url": "https://github.com/seraphis-migration/monero/issues/44#issuecomment-3150754862",
          "date": "2025-08-04",
          "what": "Table of FCMP++ transaction sizes: 1-in/2-out 6,486 bytes; 2-in/2-out 7,865 bytes."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/pull/232",
          "date": "2025-11-20",
          "what": "Merged: FCMP++ weight approximately equal to byte size."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/blob/fcmp%2B%2B-stage/src/cryptonote_config.h",
          "date": "2026-09-19",
          "what": "Staging config: FCMP_PLUS_PLUS_MAX_INPUTS 128, MAX_OUTPUTS 16, reference weight V17 12500 vs V8 3000."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/issues/53",
          "date": "2026-09-19",
          "what": "Dynamic block weight changes done per a scaling proposal."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-beta.2.0",
          "date": "2026-05-27",
          "what": "'Constructing many input transactions takes some time.'"
        }
      ]
    },
    {
      "id": "old-outputs",
      "title": "Old outputs and migration",
      "text": "Users do not need to move funds. All valid existing outputs, including pre-RingCT ones, enter the FCMP++ tree once they unlock, so the anonymity set covers about the whole chain. Legacy wallets get this without converting to Carrot. Nodes run a one-time database migration that can take several hours. Wallets re-scan once from their restore height.",
      "links": [
        {
          "url": "https://github.com/seraphis-migration/monero/pull/110",
          "date": "2025-09-24",
          "what": "Integration documentation: all existing valid outputs are inserted into the tree as soon as they unlock."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/pull/67",
          "date": "2025-07-24",
          "what": "Merged test: creating FCMP++/Carrot transactions that spend pre-RingCT and BP+ outputs."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/issues/306#issuecomment-4091572565",
          "date": "2026-03-19",
          "what": "'Legacy wallets don't need to upgrade to Carrot to take advantage of the full chain anonymity set.'"
        },
        {
          "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-beta.2.0",
          "date": "2026-05-27",
          "what": "Initial database migration can take several hours."
        }
      ]
    },
    {
      "id": "mining",
      "title": "Miners and pools",
      "text": "The proof-of-work hash also commits to the FCMP++ tree root and layer count. The block template layout changed during stressnet testing, and the miner reward outputs in each block use the Carrot format. P2Pool and solo-mining tools need updates (see the P2Pool and XMRig entries). RandomX v2 support for this fork is an open pull request and is not confirmed.",
      "links": [
        {
          "url": "https://github.com/seraphis-migration/monero/issues/53",
          "date": "2026-09-19",
          "what": "'Include FCMP++ tree root and n tree layers in PoW hash' marked done."
        },
        {
          "url": "https://github.com/xmrig/xmrig/pull/3807",
          "date": "2026-04-30",
          "what": "XMRig: 'New Monero FCMP++ stressnet changed block template layout.'"
        },
        {
          "url": "https://github.com/monero-project/meta/issues/1443#issuecomment-5426113601",
          "date": "2026-08-19",
          "what": "MRL log: P2Pool author adding Carrot-compatible block reward (miner) transactions."
        },
        {
          "url": "https://github.com/monero-project/monero/pull/10038",
          "date": "2026-09-19",
          "what": "Open pull request: support RandomX V2 and commitments in v17."
        }
      ]
    }
  ],
  "myths": [
    {
      "claim": "FCMP++ is already live on Monero mainnet.",
      "fact": "False as of 2026-09-19. The mainnet hard fork table ends at version 16 from 2022. FCMP++ runs only on a public test network, and no official fork date is set.",
      "links": [
        {
          "url": "https://github.com/monero-project/monero/blob/master/src/hardforks/hardforks.cpp",
          "date": "2026-09-19",
          "what": "No FCMP++ mainnet entry."
        },
        {
          "url": "https://www.getmonero.org/2026/05/10/deprecating-unlock-time.html",
          "date": "2026-05-10",
          "what": "Fork date not set."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-beta.2.0",
          "date": "2026-05-27",
          "what": "Beta stressnet is a fork of testnet."
        }
      ]
    },
    {
      "claim": "FCMP++ activated at block 2,847,330, 2,997,100 or 3,012,000.",
      "fact": "Those are test network (stressnet) fork heights, not mainnet heights.",
      "links": [
        {
          "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-alpha.1",
          "date": "2025-09-27",
          "what": "Alpha stressnet forks from testnet at 2,847,330."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-beta.1.0",
          "date": "2026-04-28",
          "what": "Beta stressnet forks from testnet at 2,997,100."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-beta.2.0",
          "date": "2026-05-27",
          "what": "Beta 2.0 forks at 3,012,000."
        }
      ]
    },
    {
      "claim": "The code shows FCMP++ activating near block 2,689,609.",
      "fact": "Those mainnet version 17 and 18 heights in the staging code are labeled 'Mock values for tests'.",
      "links": [
        {
          "url": "https://github.com/seraphis-migration/monero/blob/fcmp%2B%2B-stage/src/hardforks/hardforks.cpp",
          "date": "2026-09-19",
          "what": "Staging hard fork table with test mock values."
        }
      ]
    },
    {
      "claim": "Monero had a hard fork in 2026, for example in March 2026 with new ring-signature rules.",
      "fact": "False. The last mainnet hard forks were versions 15 and 16 at blocks 2,688,888 and 2,689,608 in 2022.",
      "links": [
        {
          "url": "https://github.com/monero-project/monero/blob/master/src/hardforks/hardforks.cpp",
          "date": "2026-09-19",
          "what": "Mainnet hard fork table."
        },
        {
          "url": "https://github.com/monero-project/monero/releases/tag/v0.18.0.0",
          "date": "2022-07-20",
          "what": "v0.18.0.0 release that carried that fork."
        }
      ]
    },
    {
      "claim": "Ledger and Trezor already support FCMP++.",
      "fact": "False. The FCMP++ beta does not support hardware wallets yet, and developers say no device has been built for it yet.",
      "links": [
        {
          "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-beta.2.0",
          "date": "2026-05-27",
          "what": "Hardware wallet support not yet functional."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/issues/63",
          "date": "2025-11-18",
          "what": "No HW devices developed for Carrot/FCMP++ yet."
        }
      ]
    },
    {
      "claim": "You need a new address, or must move funds to a new wallet, to benefit.",
      "fact": "False. Carrot keeps existing addresses. Legacy wallets get the full-chain anonymity set without converting.",
      "links": [
        {
          "url": "https://github.com/jeffro256/carrot/blob/master/carrot.md",
          "date": "2026-04-08",
          "what": "Backwards compatible; no key migration."
        },
        {
          "url": "https://github.com/seraphis-migration/monero/issues/306#issuecomment-4091572565",
          "date": "2026-03-19",
          "what": "Legacy wallets need no Carrot upgrade for the full-chain anonymity set."
        }
      ]
    },
    {
      "claim": "FCMP++ makes transactions smaller.",
      "fact": "False. FCMP++ transactions are larger; a 1-input, 2-output transaction measured about 6.5 kB in development.",
      "links": [
        {
          "url": "https://github.com/seraphis-migration/monero/issues/44#issuecomment-3150754862",
          "date": "2025-08-04",
          "what": "Transaction size table."
        }
      ]
    },
    {
      "claim": "RandomX v2 is already active on Monero.",
      "fact": "False. RandomX v2 support for the next fork is an open pull request, and there has been no mainnet fork since 2022. Miner software adding RandomX v2 support does not mean it is active.",
      "links": [
        {
          "url": "https://github.com/monero-project/monero/pull/10038",
          "date": "2026-09-19",
          "what": "Open pull request."
        },
        {
          "url": "https://github.com/monero-project/monero/blob/master/src/hardforks/hardforks.cpp",
          "date": "2026-09-19",
          "what": "No new mainnet fork."
        },
        {
          "url": "https://github.com/xmrig/xmrig/releases/tag/v6.26.0",
          "date": "2026-03-28",
          "what": "XMRig 6.26.0 added RandomX v2 support."
        }
      ]
    },
    {
      "claim": "The FCMP++ fork date is fixed.",
      "fact": "No official date exists. The only public timeline is a non-binding draft that currently says week 9 of 2027, and it moved three times in one month.",
      "links": [
        {
          "url": "https://github.com/jeffro256/fcmp-carrot-plan",
          "date": "2026-08-21",
          "what": "Non-binding working draft; week 9 of 2027."
        },
        {
          "url": "https://www.getmonero.org/2026/05/10/deprecating-unlock-time.html",
          "date": "2026-05-10",
          "what": "Fork date not set."
        }
      ]
    }
  ],
  "sources": [
    {
      "url": "https://www.getmonero.org/2024/04/27/fcmps.html",
      "date": "2024-04-27",
      "what": "getmonero.org: Full-Chain Membership Proofs Development."
    },
    {
      "url": "https://www.getmonero.org/2026/05/10/deprecating-unlock-time.html",
      "date": "2026-05-10",
      "what": "getmonero.org: Deprecating Monero's Custom Transaction Unlock Time."
    },
    {
      "url": "https://www.getmonero.org/resources/roadmap/",
      "date": "2026-09-19",
      "what": "getmonero.org roadmap."
    },
    {
      "url": "https://github.com/seraphis-migration/monero/releases",
      "date": "2026-09-19",
      "what": "seraphis-migration/monero stressnet releases (alpha 1 to beta 2.0)."
    },
    {
      "url": "https://github.com/seraphis-migration/monero/releases/tag/v0.19.0.0-beta.2.0",
      "date": "2026-05-27",
      "what": "Beta stressnet v2.0 release notes."
    },
    {
      "url": "https://github.com/jeffro256/carrot/blob/master/carrot.md",
      "date": "2026-04-08",
      "what": "Carrot specification (last commit date)."
    },
    {
      "url": "https://github.com/jeffro256/fcmp-carrot-plan",
      "date": "2026-08-21",
      "what": "jeffro256/fcmp-carrot-plan: non-binding draft plan."
    },
    {
      "url": "https://github.com/seraphis-migration/monero/issues/53",
      "date": "2026-09-19",
      "what": "FCMP++ launch to-do list (issue #53)."
    },
    {
      "url": "https://github.com/seraphis-migration/monero/pull/110",
      "date": "2025-09-24",
      "what": "FCMP++ integration documentation (open pull request #110)."
    },
    {
      "url": "https://github.com/seraphis-migration/monero/issues/103",
      "date": "2026-09-19",
      "what": "Upstreaming plan."
    },
    {
      "url": "https://github.com/monero-project/monero/milestone/1",
      "date": "2026-09-19",
      "what": "Main repository milestone 'fcmp++ hf'."
    },
    {
      "url": "https://github.com/monero-project/monero/blob/master/src/hardforks/hardforks.cpp",
      "date": "2026-09-19",
      "what": "Mainnet hard fork table (master)."
    },
    {
      "url": "https://github.com/seraphis-migration/monero/blob/fcmp%2B%2B-stage/src/cryptonote_config.h",
      "date": "2026-09-19",
      "what": "FCMP++ staging branch configuration."
    },
    {
      "url": "https://github.com/monero-project/meta/issues/1430#issuecomment-5095664567",
      "date": "2026-07-27",
      "what": "Monero Tech Meeting #179 log."
    },
    {
      "url": "https://github.com/monero-project/meta/issues/1434#issuecomment-5170372799",
      "date": "2026-08-03",
      "what": "Monero Tech Meeting #180 log."
    },
    {
      "url": "https://github.com/monero-project/meta/issues/1431#issuecomment-5168018416",
      "date": "2026-07-29",
      "what": "MRL meeting log, 29 July 2026."
    },
    {
      "url": "https://github.com/monero-project/meta/issues/1435#issuecomment-5256404003",
      "date": "2026-08-05",
      "what": "MRL meeting log, 5 August 2026."
    },
    {
      "url": "https://github.com/monero-project/meta/issues/1443#issuecomment-5426113601",
      "date": "2026-08-19",
      "what": "MRL meeting log, 19 August 2026."
    },
    {
      "url": "https://github.com/monero-project/meta/issues/1454#issuecomment-5687647024",
      "date": "2026-09-09",
      "what": "MRL meeting log, 9 September 2026."
    },
    {
      "url": "https://github.com/trailofbits/publications/blob/master/reviews/2026-07-magicgrants-monerofcmp++crypto-securityreview.pdf",
      "date": "2026-07-29",
      "what": "Trail of Bits review of FCMP++ cryptography."
    },
    {
      "url": "https://github.com/seraphis-migration/monero/issues/63",
      "date": "2025-11-18",
      "what": "Guide: implementing hardware wallet devices for Carrot/FCMP++."
    },
    {
      "url": "https://github.com/seraphis-migration/monero/issues/44#issuecomment-3150754862",
      "date": "2025-08-04",
      "what": "FCMP++ transaction size measurements."
    }
  ]
}
