NervaOne wallet and miner v1.0.0 release

NervaOne Wallet and Miner v1.0.0 – Android Has Arrived

The biggest NervaOne release yet is finally here.

We’ve been working toward this for a long time, and today we’re proud to announce the official release of NervaOne Wallet and Miner v1.0.0 — our most significant update to date.

The headline? NervaOne is now on Android.

Android Support — Full Node in Your Pocket

Starting with v1.0.0, NervaOne runs natively on Android. Whether you want to run a full node or use it as a wallet only, the choice is yours — right from your phone. This has been one of the most requested features from our community, and we’re thrilled to finally deliver it.

A Redesign Built for Every Screen

To support Android properly, we went back and redesigned the majority of NervaOne’s views from the ground up. The result is an interface that feels at home on both desktop and mobile — clean, functional, and consistent across devices.

Easy Public Node Setup

Connecting to the network is now simpler than ever. The new Public Node setup flow gets you connected quickly with minimal configuration — ideal for users who want the NervaOne experience without running a full node.

Improved Address Book Integration

The Address Book has received meaningful improvements in this release, making it easier to manage your contacts and streamline transactions.

Better Memory Security for Wallet Operations

We’ve reduced the lifetime of sensitive data in memory during wallet operations, tightening up security where it matters most.

Faster Sync with Blockchain Database Download

For those who cannot wait to synchronize their blockchain database, there is now new download blockchain database option that lets you skip the long initial sync by downloading the chain directly – saving you significant time when setting up.

What Else Changed?

The application has been officially renamed to NervaOne, with the app folder updated to match. A clean name for a clean new chapter.

You can download latest version from GitHub or website:

🔗 https://github.com/nerva-project/nerva/releases/tag/v0.2.1.0

🔗 https://nerva.one/#downloads

Have questions or feedback? Join the conversation in our Discord and Telegram communities. We’d love to hear how v1.0.0 is running for you.

Nerva Core Release v0.2.1.0

Nerva Core Software v0.2.1.0 Released

Nerva Legacy Reborn, Point Release 1, v0.2.1.0 has been released.

This release brings several quality-of-life improvements and bug fixes to the daemon and wallet:

  • New CLI options for DNS and block tracking
  • Mining thread count indicator in daemon status
  • Wallet stability fixes
  • Multi-arch Docker images for expanded platform support
  • Android build — Nerva core software can now run on mobile devices!
  • CI/build infrastructure improvements since v0.2.0.0

Not a hard fork, so no deadline — but upgrading is recommended.

🔗 https://github.com/nerva-project/nerva/releases/tag/v0.2.1.0

🔗 https://nerva.one/#downloads

Thank you to everyone who made this release possible!

poppy_kucoin1 kucoin scam

KuCoin Scam Attempt

There are so many scammers in crypto. You have to be very careful out there. Here is Poppy Anderson supposedly from KuCoin, @Poppy_Kucoin1. The day of this conversation, this user ID validated on https://www.kucoin.com/cert. The next day, it was no longer validating.

He probably did not expect me to be able to submit the application and wanted me to come back to him for help, at which point he would probably offer “other solution”. Well, half a day after my last message, he deleted this conversation from Telegram which 100% confirms to me that this was scam attempt.

Wen Nerva on KuCoin? 😁

Poppy Anderson || KuCoin

28 April 2026

20:58

Poppy Anderson || KuCoin

Hello team,

Anderson from the KuCoin Listings Team (verified on the KuCoin website).

Our team has recently evaluated your project for possible KuCoin listing consideration For selected projects, listings can proceed without listing fees, with liquidity required for our market maker

Verification: https://www.kucoin.com/cert

Looking forward to discussing the details.

21:27

Rob Coder

Hi. Nerva’s founder left the project in 2021. Nerva is community project and I’m one of the code/website/social maintainers.

Here is brief history if interested:
https://nerva.one/a-brief-history-of-nerva-renewed/

What are the details?

21:31

Poppy Anderson || KuCoin

Nice to meet you

21:31

KuCoin continues to rank among the top exchanges on CoinMarketCap,

So I believe you’re already familiar with our platform.

21:32

Rob Coder

Yes, I’ve used KuCoin a while back.

21:32

Poppy Anderson || KuCoin

We are proposing a listing without any listing fees. We only ask for liquidity to support our market maker for 1 month.

KuCoin will use this liquidity during the period to provide smooth trading.

After the 1 month is completed, the full liquidity will be returned, and your token will remain listed on our spot market permanently.

21:33

So which pair u prefer for listing with Nerva?

21:33

Rob Coder

What are the liquidity requirements?

21:34

Poppy Anderson || KuCoin

We just intial liquidity to create trading pair and once token get listed u can add more liquidity

So initial required LP for USDT pair would be

5k to 10k Usdt + Equivalant in tokens

21:34

We will manage the liquidity first 30 days then we send back LP funds to original wallet and u can start ur own MM

21:34

We will do massive marketing before listing date

21:35

Rob Coder

Yeah, raising $10k – $20k might be a problem. The community is still small.

21:36

Poppy Anderson || KuCoin

How much can be done from ur side for the start

21:36

We just need to create trading pair first

21:37

Rob Coder

Why can’t trading pair be created with $500 + $500 in XNV? Why does it need to be this high?

21:38

Poppy Anderson || KuCoin

For smooth start so we can raise price organically but since its community driven and volume still small we can accept small amount just to create the trading pair

21:39

Plz confirm

21:39

Rob Coder

If it’s $500 USDT + $500 XNV, that would work.

21:40

Poppy Anderson || KuCoin

And once token get more volume after listing u can add more liquidity

We will do marketing for free

21:41

So announcement will be done within 2 hours after application done

Listing will be done within 5 days after announcement

21:41

Rob Coder

How can I confirm that this is legit offer through official KuCoin website?

21:42

Poppy Anderson || KuCoin

Sure u can verify me at kucoin verification page at our official website

21:42

https://www.kucoin.com/cert

21:42

21:42

Please check and confirm

21:44

Tell me once checked to proceed with steps of application

21:45

Rob Coder

I verified already but this sounds too good to be true so I’d like additional verification through official website or official X account .

21:45

Poppy Anderson || KuCoin

Just to clarify – we never use Twitter or emails for verification.

Those are only for announcements and updates.

That’s why kucoin has its official Verification Page, where you can check any real admin username directly. It’s the only secure and trusted method to confirm real kucoin representatives and avoid any impersonation.

21:45

We can send u an email from our official domain as second Verifcation

21:46

Rob Coder

Is the application submitted through the website?

21:47

Poppy Anderson || KuCoin

Yes for sure

21:47

Rob Coder

OK, so where do I go to submit the listing application?

21:48

Poppy Anderson || KuCoin

the listing process is very simple:

1] Fill out the official KuCoin application form.
www.kucoin.com/listing

2 We’ll send the signed agreement for your confirmation.

Transfer the required LP amount as stated in the agreement.

4 KuCoin will announce the listing and start the marketing campaign.

21:48

I will follow step by step until application done

21:48

Hope steps are clear please read and confirm

21:51

Rob Coder

Yes, steps are clear. As long as application goes through the website and I’ll get confirmation from kucoin.com email that I can reply to, I think that’s good enough.

21:52

Poppy Anderson || KuCoin

Sure

21:55

Rob Coder

OK, I will fill out the application tomorrow. Do I need to put anything specific in there or just fill out what it’s asking for?

21:55

Poppy Anderson || KuCoin

Just fill what its asking

If u have any question about the form let me know to help thanks

👍

29 April 2026

08:33

Rob Coder

Submitted.

NervaOne New Folder Structure

NervaOne Folder Structure Changes

Now that NervaOne also works on Android, it made sense to rename the application and make some folder structure changes.

If you are running NervaOne v0.8.5.0 or any of the builds prior to v1.0.0, you might want to copy some files over to the new directory structure.

First, make sure you have seed phrases and private keys saved securely for all you wallets!

If you run NervaOne v1.0.0, it will create new application folder called NervaOne and put all files under that directory. If you didn’t have any wallet files, you can just go to Daemon Setup and set up Mining Address or any other settings manually.

Migrate Application Settings

If you want to migrate your setting, go to Settings > Open Logs Folder

From there, go up 2 directories and you will see new NervaOne folder as well as old one called NervaOneDesktop. Go into NervaOneDesktop, copy app.config file and paste it into NervaOne directory.

Migrate Address Book

If you had address book, go to Wallet Setup > Open Wallets Folder

Find the same folder under NervaOneDesktop and you will find address.book file there. Under new NervaOne folder structure, this file has been moved and it needs to go under NervaOne > coins > xnv (or another coin such as xmr)

Migrate Wallets

If you want to move wallets, go to Wallet Setup > Open Wallets Folder

Find the same folder under NervaOneDesktop and copy all your wallet files to the new folder.

Migrate Client Tools

If you’re running custom build of CLI tools, go to Daemon Setup > Open Client Tools Folder

Find the same folder under NervaOneDesktop and copy the files from there to the new folder.

That’s it.

Nerva docs refresh

Let’s Update Nerva’s Documentation

We need to update our docs at https://docs.nerva.one/

Here are some things that we should change, if anybody wants to work on them.

  • Refresh CLI Guide. Make it a little clearer with maybe new screenshots https://docs.nerva.one/guides/cli/
  • Add Getting started on Android instructions to that CLI Guide using Termux, or something else if there is another way.
  • Add Public Node instructions to NervaOne page: ⁠ https://docs.nerva.one/guides/nervaone/
  • Refresh NervaOne page, the pages have changed and there are some new features.
  • Anything else that you think we should update.

    Best way to do that is to clone this repo https://github.com/nerva-project/nerva-docs

    make changes and open pull request. If somebody wants to work on any of those, this will give you an opportunity to become Nerva contributor.

    Avalonia 12 crash issue

    Avalonia 12 Crashes on Older Windows Versions

    Avalonia 12 crashes on Windows Server 2012 R2 and other older systems so NervaOne Is staying on Avalonia 11.

    The error looks like this in the Windows Problem Reports dialog:

    Problem Event Name:    APPCRASH
    Application Name:      NervaOneDesktop.exe
    Fault Module Name:     KERNELBASE.dll
    Exception Code:        e0434352

      This is a .NET runtime exception (0xe0434352 = CLR exception code) that surfaces as an unhandled crash at process startup, before the application window even opens. The root cause is not a bug in NervaOne itself — it is a dependency change introduced in Avalonia 12.

      Root Cause: Avalonia 12 Bundles SkiaSharp 3.119+, Which Requires DirectX 12

      Avalonia 12 upgraded its rendering backend from SkiaSharp 2.x to SkiaSharp 3.119+. This new version of SkiaSharp dropped support for DirectX 11 and now requires DirectX 12 as its Windows rendering backend.

      DirectX 12 requires Windows 10 (version 1507 or later) at minimum. Any system running an older version of Windows does not have DirectX 12 and cannot load the SkiaSharp native library. The result is a hard crash at startup — no fallback, no error message, just APPCRASH.

      The Avalonia team is aware of this. The issue was reported on GitHub (avaloniaui/Avalonia #20710) and was officially closed as “by-design.” There is no planned fix. Avalonia 12’s minimum supported platform on Windows is Windows 10 build 19045 (22H2).

      GitHub issue: https://github.com/AvaloniaUI/Avalonia/issues/20710

      Affected Operating Systems

      Any Windows version that shipped before DirectX 12 is affected. This includes:

      Operating SystemDirectX VersionAffected?
      Windows Server 2012 R2DirectX 11.1YES – crashes
      Windows Server 2012DirectX 11.0YES – crashes
      Windows 8.1DirectX 11.1YES – crashes
      Windows 8DirectX 11.0YES – crashes
      Windows 7DirectX 11.0YES – crashes
      Windows Server 2008 R2DirectX 11.0YES – crashes
      Windows Server 2008DirectX 10.1YES – crashes
      Windows 10 early builds (pre-1507)DirectX 11.3YES – crashes
      Windows 10 (1507 / build 10240+)DirectX 12Works
      Windows Server 2016 and laterDirectX 12Works

      Android

      Avalonia 12 also drops older Android support. The officially supported Android tier now requires Android 12 (API level 31) or higher. Devices running Android 8, 9, 10, or 11 may encounter rendering issues or crashes.

      Linux

      Linux systems without Vulkan support or with very old Mesa drivers may also experience startup failures under Avalonia 12’s new rendering stack.

      What We Observed

      We confirmed this after trying to run NervaOne on VPS servers with Windows Server 2012 R2. The crash is 100% reproducible:

      • NervaOne built with Avalonia 11.3.14 -> starts and runs correctly
      • NervaOne built with Avalonia 12.0.x -> crashes immediately on startup

      What NervaOne is Doing

      NervaOne will NOT be upgrading to Avalonia 12.

      We are staying on Avalonia 11.3.14 (the latest 11.x patch release) to maintain compatibility with:

      • Windows Server 2012 R2 and older Windows Server editions
      • Windows 8.1 and earlier
      • Older Android devices (Android 8+)
      • Low-end VPS environments

      We take compatibility seriously. Many Nerva users run NervaOne on modest hardware and server environments, and we do not want an upstream rendering dependency to silently break the app for those users.

      We will revisit the Avalonia 12 upgrade path if the team introduces a software fallback renderer for DirectX 11 systems. Until then, Avalonia 11.3.14 is stable and fully functional for our needs.

      Technical Reference

      NervaOne is an open-source wallet and miner for the Nerva (XNV) cryptocurrency.
      Source code: https://github.com/nerva-project/NervaOneWalletMiner

      Potential future hardforks

      Potential Future Nerva Hard Forks

      Who’s willing to help make this happen?

      This builds on the blog post from 2 days ago. That could be HF13:

      https://nerva.one/nerva-changes-with-ai-agent/

      No actual code for potential HF14 and HF15 yet. Just a plan for now.

      Conversation with AI agent:

      Can you look at the privacy setting that Nerva currently offers and compare it to Monero?

      Let me explore the codebase to understand Nerva’s privacy implementation.

      Agent: Nerva vs Monero privacy feature analysis

      Analyze the Nerva cryptocurrency codebase at d:\Code\Crypto\Nerva\nerva for privacy features. I need a thorough comparison vs Monero. Specifically look for:

      • 1. RingCT implementation — what ring size is used? Where is it configured? (look in cryptonote_config.h, src/ringct/, any MIN_MIXIN or ring size constants)
      • 2. Stealth addresses — is one-time address generation present? (src/crypto/crypto.cpp, crypto.h)
      • 3. Bulletproofs — are range proofs present and what version? (src/ringct/rctTypes.h, rctSigs.cpp)
      • 4. Dandelion++ — is tx propagation privacy present? (search for “dandelion” in src/)
      • 5. View keys / spend keys — standard dual-key model? (src/crypto/)
      • 6. Any Nerva-specific privacy changes vs vanilla Monero (search for “NERVA” or “XNV” comments near privacy code)
      • 7. Transaction output structure — MLSAG vs CLSAG? (src/ringct/)
      • 8. Any removed or disabled privacy features compared to Monero baseline

      Search thoroughly — check config files, ringct/, crypto/, cryptonote_core/, p2p/ directories. Report what’s present, what’s absent, and any relevant constants/line numbers.

      Nerva vs Monero Privacy Comparison

      What Nerva Has (Same as Monero)

      FeatureNervaMonero (current)Notes
      Stealth addressesYesYesIdentical implementation
      RingCTYesYesAll non-coinbase txs mandatory
      Range proofsBulletproofs v1 & v2Bulletproofs+Nerva lacks the optimized v3
      Dandelion++YesYesSame network-layer tx privacy
      View keys / spend keysYesYesDual-key model, watch-only wallets
      SubaddressesYesYes
      Payment ID encryptionYesYes

      Key Gaps vs Current Monero

      1. Ring size: 5 vs 16
      Nerva’s DEFAULT_MIXIN = 4 gives ring size 5. Monero upgraded to ring size 16 in 2022. A larger ring makes statistical decoy analysis harder — with ring size 5, tracing heuristics are significantly more effective.

      2. MLSAG instead of CLSAG
      Nerva still uses the older MLSAG signature scheme. Monero migrated to CLSAG (Concise Linkable Spontaneous Anonymous Group) in October 2020. CLSAG reduces tx size by ~25% and is considered more efficient, but both provide the same theoretical privacy guarantee.

      3. Bulletproofs v2 instead of Bulletproofs+
      Monero upgraded to Bulletproofs+ in August 2022, which are ~5–7% faster to verify and ~6% smaller. Nerva is on the older v2.

      4. No Triptych / Seraphis roadmap features
      Monero is working toward Seraphis/Jamtis which would further increase ring sizes and improve privacy. Nerva has no equivalent research effort.


      Bottom Line

      Nerva’s privacy model is solid but dated — roughly equivalent to Monero circa 2020. The stealth address + RingCT + Dandelion++ foundation is sound. The practical weaknesses are the small ring size (5) and MLSAG vs CLSAG. These are the highest-leverage improvements if you wanted to close the gap with Monero’s current privacy posture.

      What changes would you make to update/improve Nerva’s privacy?

      Three changes, ranked by impact:

      1. Ring size 5 → 16 (highest priority)
      This is the single biggest practical privacy improvement. Small rings are vulnerable to EAE (Eve-Alice-Eve) tracing and chain-reaction deanonymization. Monero’s analysis showed ring size 11+ breaks most known heuristics; they settled on 16. The cost is ~3x larger ring signature data per tx, which increases blockchain growth rate and sync time — already a concern for Nerva given the post-930k slowdown.

      2. MLSAG → CLSAG
      Well-proven migration — Monero did it in October 2020, the code is battle-tested. You’d get ~25% smaller ring signatures and faster verification. This partially offsets the size increase from a larger ring. The implementation effort is moderate: the Monero CLSAG code could be backported directly since Nerva is a fork.

      3. Bulletproofs+ (replacing v2)
      Smallest gain of the three — roughly 6% smaller range proofs, 5–7% faster verification. Worth doing if you’re already touching the ringct layer for CLSAG, since it’s a contained change with no protocol-level downside.


      The natural order would be: CLSAG + Bulletproofs+ together (they touch the same layer), then ring size increase as a separate hardfork since it has the largest chain-size impact and needs its own performance analysis against Nerva’s already-slow sync.

      Want me to sketch out what the implementation would look like, or discuss the sync impact first?

      Sketch out the implementation.

      Good — CLSAG doesn’t exist in this codebase at all, which means it’s a full backport, not a modification. Here’s the complete implementation sketch:


      Implementation Plan: 3 Privacy Upgrades

      Overview

      These are delivered as two sequential hardforks to keep each change isolated and auditable:

      • HF14 — CLSAG + Bulletproofs+
      • HF15 — Ring size 16 (separate fork because it has chain-size implications that deserve independent community discussion)

      Change 1: CLSAG (replaces MLSAG for new transactions)

      CLSAG doesn’t exist here. The full implementation lives in Monero’s src/ringct/clsag.h and clsag.cpp as of their October 2020 hardfork. This is a direct file copy + wiring job.

      New files to add:

      src/ringct/clsag.h
      src/ringct/clsag.cpp

      The Monero implementation exports four functions — these are exactly what you’d copy:

      // clsag.h
      namespace rct {
          clsag proveRctCLSAGSimple(const key &message, const ctkeyV &pubs,
                                     const ctkey &inSk, const key &a,
                                     const key &Cout, const keyV *mscout,
                                     const keyV *mspk, const multisig_kLRki *kLRki,
                                     key *mscout_key, unsigned int index,
                                     hw::device &hwdev);
      
          bool verRctCLSAGSimple(const key &message, const clsag &sig,
                                  const ctkeyV &pubs, const key &C_offset);
      }

      src/ringct/rctTypes.h changes:

      Add the new RCT type (after line 236) and the clsag struct:

      // After RCTTypeBulletproof2 = 5
      RCTTypeCLSAG = 6,              // HF14: CLSAG + Bulletproofs+

      Add the clsag struct alongside mgSig:

      struct clsag {
          keyV s;     // scalars
          key c1;     // initial challenge
          key I;      // key image
          key D;      // auxiliary key image
      };

      Update serialize_rctsig_base to accept RCTTypeCLSAG in the type validation check (line 259-261).

      src/ringct/rctSigs.h changes:

      Add the clsag struct serialization and wire proveRctCLSAGSimple / verRctCLSAGSimple into the existing genRctSimple / verRctNonSemanticsSimple dispatch:

      // In genRctSimple — add CLSAG branch
      if (rct_config.clsag) {
          rv.p.CLSAGs.push_back(proveRctCLSAGSimple(...));
      } else {
          rv.p.MGs.push_back(MLSAG_Gen(...));
      }
      
      // In verRctNonSemanticsSimple — add CLSAG branch  
      if (rv.type == RCTTypeCLSAG) {
          return verRctCLSAGSimple(message, rv.p.CLSAGs[i], rv.mixRing[i], ...);
      }

      src/ringct/CMakeLists.txt: Add clsag.cpp to sources.


      Change 2: Bulletproofs+ (replaces Bulletproofs v2 range proofs)

      Same story — backport from Monero’s bulletproofs_plus.h / bulletproofs_plus.cc (added August 2022).

      New files:

      src/ringct/bulletproofs_plus.h
      src/ringct/bulletproofs_plus.cc

      The interface mirrors existing bulletproofs:

      // bulletproofs_plus.h
      namespace rct {
          BulletproofPlus bulletproof_plus_PROVE(const std::vector<uint64_t> &v,
                                                  const rct::keyV &gamma);
          bool bulletproof_plus_VERIFY(const std::vector<const BulletproofPlus*> &proofs);
      }

      src/ringct/rctTypes.h: Add the BulletproofPlus struct (structurally similar to Bulletproof but with different field counts — copy exactly from Monero).

      src/ringct/rctSigs.cpp: In genRctSimple, wire the range proof type selection:

      if (rct_config.range_proof_type == RangeProofPaddedBulletproofPlus) {
          rv.p.bulletproofs_plus = bulletproof_plus_PROVE(outamounts, outSk_masks);
      } else {
          // existing bulletproof v2 path
      }

      In verRctSemanticsSimple, add the corresponding verify dispatch.

      src/cryptonote_config.h: Add the activation height:

      #define CLSAG_BULLETPROOFPLUS_FORK_HEIGHT   <HF14_height>

      Change 3: Ring size 16

      This is the simplest code change but has the largest chain impact.

      src/cryptonote_config.h:

      // Keep old values for historical validation
      #define DEFAULT_MIXIN                   4       // pre-HF15
      #define DEFAULT_RINGSIZE                DEFAULT_MIXIN + 1
      
      // HF15 values
      #define DEFAULT_MIXIN_HF15              15
      #define DEFAULT_RINGSIZE_HF15           DEFAULT_MIXIN_HF15 + 1
      #define RING_SIZE_FORK_HEIGHT           <HF15_height>

      src/wallet/wallet2.cpp — the two DEFAULT_MIXIN + 1 histogram calls at lines 9992/9998 need to become height-aware:

      const uint64_t min_ring = height >= RING_SIZE_FORK_HEIGHT
          ? DEFAULT_MIXIN_HF15 + 1 : DEFAULT_MIXIN + 1;
      return select_available_outputs_from_histogram(min_ring, ...);

      src/wallet/wallet_rpc_server.cpp — the 5 DEFAULT_MIXIN calls at lines 956, 1008, 1426, 1480 need the same height-aware mixin value passed in.

      src/cryptonote_core/blockchain.cppcheck_tx_inputs needs a minimum ring size enforcement gate at HF15:

      if (hf_version >= HF15_VERSION) {
          if (key_offsets.size() < DEFAULT_RINGSIZE_HF15) {
              MERROR_VER("Ring size too small for HF15: " << key_offsets.size());
              return false;
          }
      }

      Hardfork table additions in src/cryptonote_config.h

      // existing:  {13, 1100000}  -- CryptoNight-NX
      {14, <height>},   // CLSAG + Bulletproofs+
      {15, <height>},   // Ring size 16

      Effort estimate

      ChangeComplexityNotes
      CLSAGHigh~700 lines of crypto code to backport; must match Monero’s exact hash domain separation or verification breaks
      Bulletproofs+Medium-High~1200 lines; the inner product argument changes significantly from v2
      Ring size 16LowConfig + 6 call sites; chain-size modeling needed before picking activation height

      The natural order is to do CLSAG and Bulletproofs+ together as one PR (they activate at the same hardfork and both touch rctSigs), then ring size as a follow-on.

      Want me to implement this?

      Yesterday, you did CryptoNight-NX algo change to make Nerva’s algo more ASIC/GPU resistant. Where would you put that in the hard forks?

      It’s already slotted as HF13 from the previous session — the hardfork table in src/cryptonote_config.h has {13, 1100000} as a placeholder.

      The full sequence would be:

      HFChangeHeight
      HF12Last existing Nerva fork~930,000
      HF13CryptoNight-NX (ASIC/GPU resistance)1,100,000 (placeholder)
      HF14CLSAG + Bulletproofs+ (privacy upgrade)TBD
      HF15Ring size 16 (anonymity set)TBD

      The ordering makes sense for two reasons: mining algorithm changes should stabilize before touching the transaction signing layer, and CLSAG needs to be live before increasing ring size so the larger rings don’t make tx size even worse with MLSAG.

      The 1,100,000 height for HF13 is still a placeholder — you’d want to confirm what the current chain height is and give the community enough lead time (typically 2-4 weeks) before setting it in stone.