Nerva – Monero Upstream Gaps – Jun 2026

Nerva ↔ Monero gap analysis. Independent scan of Nerva master (v0.2.3.0) against Monero release-v0.18. Scan status: complete (12 passes).

Lens. This lists Monero changes that would benefit Nerva to adopt — not a push to make Nerva match Monero. Nerva forked in 2018 with its own PoW (CryptoNight-Adaptive, which reads prior blocks for ASIC/pool resistance), so it intentionally diverges. Items already merged or in an open PR are excluded.
A algo-agnostic — adopt anytime B consensus/privacy — needs a hard fork C PoW/block-read path — evaluate vs CNA
open verified missing probable likely missing audit needs review in-PR not a gap

Monero PR links are given where confident; entries marked verify cite the hard-fork/release and should be confirmed against the exact PR at implementation time.

B · Consensus & Privacy (needs a fork)

GapCStatusDescription & benefitMonero
Minimum 2 outputsBopencheck_tx_outputs has no output-count check, so Nerva accepts 1-output transactions, which leak the exact amount sent (no change output). Monero forbids since HF12. Top finding.HF12 verify
Deterministic unlock timeBopenNerva still allows arbitrary tx.unlock_time. Monero enforces unlock_time == 0 to remove a privacy fingerprint and a known footgun.HF15 / #8654
Enforce min output ageBopenConfirmed: only an unlock check is done; an output with unlock_time=0 passes regardless of age, so decoys need not be ≥10 blocks old. Monero’s ENFORCE_MIN_AGE closes a decoy timing leak.HF12 verify
View TagsBopen1-byte per-output tag lets wallets skip ~255/256 outputs during scan → ~40–50× faster scans. Tx-format change; bundle with a fork (HF14 with CLSAG/BP+).#7007

A · Performance (adopt anytime)

GapCStatusDescription & benefitMonero
Keccak / cn_fast_hashAin progressUnrolled Keccak permutation, ~5× faster. Speeds every hash op including CNA PoW pre-processing. (branch in progress)#8262
RingCT verification cacheAopenCaches verRctNonSemanticsSimple so a tx verified at propagation isn’t re-verified at block acceptance. Large block-propagation speedup.#8676
Binary deserializationAprobableRemoves a full payload copy + redundant virtual calls; ~2× faster block/tx parsing → direct sync speedup.#7661
Tx construction speedAprobableBatched wallet optimizations (pubkey-validity cache, ringdb batching, preallocation). Large txs ~2× faster to build.#8046
Second I/O thread poolAprobableNerva uses one global threadpool. A dedicated I/O pool keeps DNS lookups from blocking tx processing on low-core systems.#8577
Txpool insert single writeAauditadd_txpool_tx does two cursor writes (meta + blob). Monero reduced txpool-insert I/O. Confirm mechanism before porting (different sub-DBs).#9740 verify

A · DoS / Network (adopt anytime)

GapCStatusDescription & benefitMonero
Per-IP RPC connection capsAopenMissing DEFAULT_RPC_MAX_CONNECTIONS / per-public-IP / per-private-IP / soft-limit-size. Protects public RPC nodes from connection exhaustion.v0.18 verify
Dandelion++ tuningAprobableDandelion++ is present but the CRYPTONOTE_DANDELIONPP_* tuning constants (fluff prob, embargo) are absent — likely older values. Confirm vs current Monero.#8628 / #9355 verify
Txpool complement syncAopenMissing the NOTIFY_GET_TXPOOL_COMPLEMENT P2P command — lets a node fetch txs it lacks from a peer’s mempool. Improves mempool consistency & propagation.v0.17 verify
Granular peer scoringAprobableNerva has fail-count banning but not Monero’s per-offense misbehavior scoring with soft-vs-hard separation. Reduces false disconnects while still dropping bad actors.#8813 verify
–ban-list (CIDR)AopenNo --ban-list file (with CIDR subnets) loaded at startup — operators can’t pre-load a banned-IP list.v0.17 verify

A · RPC / Wallet features (adopt anytime)

GapCStatusDescription & benefitMonero
get_info: busy_syncing / synchronizedAopenBoth fields absent. Lets monitors distinguish “downloading” vs “fully synced” without polling height.v0.17 verify
get_transactions: confirmationsAopenNo per-tx confirmation count returned.v0.18 verify
calcpow RPCAopenCompute PoW for a block template (would compute CNA). Useful for miners/validators.#8075
getminerdata / add_aux_powAopenMining-pool template data & merge-mining aux PoW.v0.18 verify
generateblocks RPCAopenRegtest block generation — helps automated testing of fork transitions.v0.17 verify
Output freeze/thaw/frozen (RPC)ApartialWorks at CLI/wallet2 already; only the wallet RPC endpoints are missing. Small gap — expose existing functionality.v0.17 verify
scan_txAopenRescan a single tx by id without a full wallet resync.#7312
Background sync (view-key only)AopenSync with only the view key, spend key off-machine. Large change; own release cycle.#8617
ZMQ pub/sub eventsAopenNo txpool_add / chain_main publisher (Nerva has ZMQ-RPC only). Enables explorer/monitor integrations without polling.#8451 verify
estimate_tx_size_and_weightAopenWallet RPC to estimate tx size/weight pre-build.v0.18 verify
Trezor hardware walletAprobableNerva ships Ledger support but no Trezor backend. Niche; adds a second HW-wallet option.v0.13+ verify
Per-byte fee estimateAauditNerva uses the older per-KB fee model. Monero moved to per-byte + 2021 scaling. May be an intentional Nerva economic choice — evaluate first.v0.17–0.18 verify

C · PoW / block-read path (evaluate vs CNA)

This category is small by design: Nerva keeps its block-fetch path current — pruned-block sync and span-based parallel download are both present — and handles CNA’s prior-block reads itself. The performance items above (Keccak, RingCT cache, deserialization) are algo-agnostic, not in this category.
GapCStatusDescription & benefitMonero
Sync race: atomic height/block-idsCprobableA race reading height + block-ids drops connections during sync. Algo-agnostic lock fix (not PoW-specific), so likely safe — verify against Nerva’s handler.#10257
assume-valid heightCin-PR #93Skip PoW for historical blocks below a trusted height to speed sync. Already in flight as Nerva PR #93; interacts with CNA verification.Nerva #93

Already present (checked — not gaps)

Verified already implemented in Nerva: exact-coinbase enforcement, uniform ring size (fixed, stronger than Monero’s same-mixin), pruning, multisig, RPC SSL, Tor/I2P, pruned-block sync, span download queue, and the current CORE_SYNC_DATA. The bulk of the older security backlog is already merged on master (p2p hardening, RPC DoS, LMDB deadlock, wallet privacy & correctness). Not a real gap: a max_block_count field in NOTIFY_REQUEST_GET_OBJECTS — verified to not exist in Monero.

Independent structural scan of interface files + targeted validation-code audit, 12 passes. Verify each item against current code and confirm the exact Monero PR before implementing.