Changelog¶
Aggregated release notes across Navio repositories. Regenerated nightly.
nav-io/navio-core¶
v0.2.2 — 2026-09-27¶
What's Changed¶
- fix(blsct): avoid tx_out leak on oversized memo by @mxaddict in https://github.com/nav-io/navio-core/pull/414
- fix(wallet): reject negative consolidate max_inputs by @mxaddict in https://github.com/nav-io/navio-core/pull/415
- fix(wallet): avoid int overflow in listtransactions pagination by @mxaddict in https://github.com/nav-io/navio-core/pull/417
- perf(validation): batch-prefetch BIP30 output outpoints by @mxaddict in https://github.com/nav-io/navio-core/pull/420
- perf(mempool): hash each output once in AddUnchecked by @mxaddict in https://github.com/nav-io/navio-core/pull/421
- chore(blsct): remove dead code by @mxaddict in https://github.com/nav-io/navio-core/pull/422
- test: raise p2pmsg_candidate waits to 240s for [commits] serial load by @aguycalled in https://github.com/nav-io/navio-core/pull/433
- aggregation: type-aware cover selection by @aguycalled in https://github.com/nav-io/navio-core/pull/429
- test: fix p2pmsg_candidate restart/dedupe flake by @aguycalled in https://github.com/nav-io/navio-core/pull/437
- rpc: cover the swap fee from spare coins instead of a fixed guess by @aguycalled in https://github.com/nav-io/navio-core/pull/424
- guix: vendor guix-install.sh; both raw-file mirrors are dead by @aguycalled in https://github.com/nav-io/navio-core/pull/438
- rpc: add verbose mode to listorders exposing the public standing-order cache by @aguycalled in https://github.com/nav-io/navio-core/pull/413
- wallet: aggregate consolidate with cover halves like plain sends by @aguycalled in https://github.com/nav-io/navio-core/pull/412
- blsct: rename C API result helpers err()/succ() (glibc err() symbol clash) by @aguycalled in https://github.com/nav-io/navio-core/pull/436
- wallet: read-only token/NFT ownership RPCs (listwallettokens, getwallettoken) by @aguycalled in https://github.com/nav-io/navio-core/pull/440
- chore(blsct): drop unused PrivateKey(CPrivKey) ctor by @mxaddict in https://github.com/nav-io/navio-core/pull/443
- chore(blsct): dedup BucketTime and small cleanups by @mxaddict in https://github.com/nav-io/navio-core/pull/425
- perf(blsct): stop three avoidable copies on the verify path by @mxaddict in https://github.com/nav-io/navio-core/pull/398
- script: fix unsigned integer overflows in the interpreter by @mxaddict in https://github.com/nav-io/navio-core/pull/400
- chore(blsct): drop two pieces of dead code by @mxaddict in https://github.com/nav-io/navio-core/pull/396
- validation: fix traversal condition for BLOCK_FAILED_CHILD by @mxaddict in https://github.com/nav-io/navio-core/pull/401
- util: fix startup failure with RLIM_INFINITY fd limits by @mxaddict in https://github.com/nav-io/navio-core/pull/402
- build: give each unit-test suite a ctest timeout by @mxaddict in https://github.com/nav-io/navio-core/pull/409
- p2pmsg: user messaging RPCs — the substrate for chat applications by @aguycalled in https://github.com/nav-io/navio-core/pull/423
- aggregation: input-derived cover target with on-demand pull by @aguycalled in https://github.com/nav-io/navio-core/pull/430
- perf(blsct): bound range-proof verification thread pool by @mxaddict in https://github.com/nav-io/navio-core/pull/419
- fix(wallet): reject non-ASCII mnemonic passphrase by @mxaddict in https://github.com/nav-io/navio-core/pull/418
- fix(blsct): use integer log2 for consensus counts by @mxaddict in https://github.com/nav-io/navio-core/pull/442
- refactor(blsct): small behaviour-preserving tidies by @mxaddict in https://github.com/nav-io/navio-core/pull/445
- chore(blsct): drop never-persisted HDChain::blinding_id by @mxaddict in https://github.com/nav-io/navio-core/pull/446
- p2pmsg: NODE_P2PMSG_LEAF service bit for non-relaying bus clients by @aguycalled in https://github.com/nav-io/navio-core/pull/461
- fix(blsct): cap swap-half spare inputs at MAX_TX_INPUT_COUNT by @mxaddict in https://github.com/nav-io/navio-core/pull/468
- fix(p2pmsg): stop ignoring Transport::Send failures by @mxaddict in https://github.com/nav-io/navio-core/pull/465
- fix(wallet): document getwallettoken's unlock need by @mxaddict in https://github.com/nav-io/navio-core/pull/464
- fix(wallet): reject non-ASCII passphrase in navio-wallet by @mxaddict in https://github.com/nav-io/navio-core/pull/463
- docs: release note for the build_tx_out memo_len change by @mxaddict in https://github.com/nav-io/navio-core/pull/460
- fix(blsct)!: take the memo length in build_tx_out by @mxaddict in https://github.com/nav-io/navio-core/pull/444
- docs(blsct): scope the base-point destination guard's comment by @mxaddict in https://github.com/nav-io/navio-core/pull/459
- fix(blsct): reject base-point destination in GenerateKeys by @mxaddict in https://github.com/nav-io/navio-core/pull/428
- test(aggregation): cover type-aware cover selection by @mxaddict in https://github.com/nav-io/navio-core/pull/467
- fix(rpc): omit scantxoutset per-output amount on BLSCT by @mxaddict in https://github.com/nav-io/navio-core/pull/447
- refactor(validation): declare txsdata before check queue control by @mxaddict in https://github.com/nav-io/navio-core/pull/448
- fix(net): backport p2p and addrman fixes from Bitcoin Core by @mxaddict in https://github.com/nav-io/navio-core/pull/449
- fix(wallet): backport wallet fixes from Bitcoin Core by @mxaddict in https://github.com/nav-io/navio-core/pull/450
- fix(index): backport index and coinstats fixes from Bitcoin Core by @mxaddict in https://github.com/nav-io/navio-core/pull/451
- feat(logging): backport log rate limiting from Bitcoin Core by @mxaddict in https://github.com/nav-io/navio-core/pull/454
- fix(p2p): backport mutated block rejection from Bitcoin Core by @mxaddict in https://github.com/nav-io/navio-core/pull/455
- fix(wallet): backport IsFromMe fix from Bitcoin Core by @mxaddict in https://github.com/nav-io/navio-core/pull/456
- perf(validation): backport script validation DoS fixes from Core by @mxaddict in https://github.com/nav-io/navio-core/pull/457
- ci(guix): try the next mirror on a bootstrap hash mismatch by @mxaddict in https://github.com/nav-io/navio-core/pull/458
- fix(wallet): pick aggregatesend covers only when used by @mxaddict in https://github.com/nav-io/navio-core/pull/466
- test(rfq): pin the order snapshot sort key by @mxaddict in https://github.com/nav-io/navio-core/pull/469
- fix: backport util, init and build fixes from Bitcoin Core by @mxaddict in https://github.com/nav-io/navio-core/pull/453
- wallet: stop counting a staked commitment a newer stake consumed by @aguycalled in https://github.com/nav-io/navio-core/pull/473
- p2pmsg: emit concurrent sends in submission order by @aguycalled in https://github.com/nav-io/navio-core/pull/471
- net: optional WebSocket P2P listener (-p2pwsbind) for browser clients by @aguycalled in https://github.com/nav-io/navio-core/pull/462
- blsct: recoverable output blinding keys + signblsctoutput RPC by @aguycalled in https://github.com/nav-io/navio-core/pull/472
- fix(validation): reject non-BLSCT txs on BLSCT chains by @mxaddict in https://github.com/nav-io/navio-core/pull/480
- fix(blsct): require power-of-two value-commitment count by @mxaddict in https://github.com/nav-io/navio-core/pull/426
- fix(blsct): use rejection sampling in BlstScalar::Rand by @mxaddict in https://github.com/nav-io/navio-core/pull/427
- p2pmsg: envelope v2 with fuzzy-message-detection flags by @aguycalled in https://github.com/nav-io/navio-core/pull/474
Full Changelog: https://github.com/nav-io/navio-core/compare/v0.2.1...v0.2.2
v0.2.1 — 2026-09-10¶
What's Changed¶
- fix(blsct): don't advance HKDF_Expand's output iterator past the end by @mxaddict in https://github.com/nav-io/navio-core/pull/397
- fix(blsct): don't abort the node on an exhausted keypool by @mxaddict in https://github.com/nav-io/navio-core/pull/395
- validation: hash a block's BLSCT outputs in parallel before the connect scans by @aguycalled in https://github.com/nav-io/navio-core/pull/392
- wallet: fix token balances in output-storage (default) BLSCT wallets by @aguycalled in https://github.com/nav-io/navio-core/pull/410
- rpc: gather enough swap inputs instead of one arbitrary candidate by @aguycalled in https://github.com/nav-io/navio-core/pull/411
- blsct: transcript-aware C API builder for fungible mint outputs by @aguycalled in https://github.com/nav-io/navio-core/pull/431
- blsct: build_range_proof emits the v2 transcript again by @aguycalled in https://github.com/nav-io/navio-core/pull/432
- fix(blsct): reject malformed script and scriptSig hex by @mxaddict in https://github.com/nav-io/navio-core/pull/416
- wallet: don't report served aggregation cover halves as sends by @aguycalled in https://github.com/nav-io/navio-core/pull/435
Full Changelog: https://github.com/nav-io/navio-core/compare/v0.2.0...v0.2.1
v0.2.0 — 2026-09-07¶
Navio Core v0.2.0 migrates the BLSCT cryptography stack to the supranational/blst backend, activates the v2 proof-transcript consensus, and introduces the encrypted p2p messaging subsystem with aggregated sends and RFQ atomic swaps.
Every node must update before the activation heights below.
Consensus¶
- BLSCT proof transcript v2: canonical commitment binding with domain separation for the range-proof, set-membership and PoPS transcripts. Blocks and transactions signal the version explicitly, and verification enforces flag/height consistency both ways. Activates at height 70,600 on testnet and 42,500 on mainnet.
- PoPS v2 kernel: the kernel hash binds the set-membership proof image (phi), removing header grindability of the anonymity ring.
- Hardened proof verifiers: bounded proof deserialization, verifier hardening across BLSCT proof systems, and an overflow guard on the PoPS min-value path.
BLS backend¶
- herumi/mcl replaced by vendored supranational/blst across the node, wallet and libblsct; byte-compatible on-chain (a full mainnet sync from genesis validates under the new backend).
- Differential accept/reject evidence harness against mcl is tagged
blst-differential-evidence-v1.
P2P messaging (p2pmsg)¶
- Encrypted message bus with identity/prekey separation and forward-secure sessions.
- Aggregated sends:
aggregatesendmerges fee-0 cover candidates pulled from peers so broadcast transactions hide which outputs are the sender's. - RFQ atomic swaps: standing orders (
broadcastorder), quote matching (setswapintent,requestquote,replyquote) and wallet-side acceptance (acceptquotewallet) settle token/NAV swaps in a single aggregate transaction.
Miner¶
- Transactions spending a staked commitment created earlier in the same block template are deferred to a later template, and colliding staked-commitment outputs are dropped from the template instead of stalling block production (fixes the 2026-09-05 mainnet stall).
Other¶
- Wallet amount checks on connect, staked-commitment set reuse, PoS body-hash memoisation and parallel BLSCT output hashing on the connect path.
- CI baseline repaired: the pos_chain_tests grind hang and the latent test breaks it masked are fixed, and the v2 transcript is carried through the aggregation and swap wallet paths.
SHA256SUMS covers all archives below. Guix-built, deterministic; attestation signature to follow as SHA256SUMS.asc.
v0.1.9 — 2026-08-29¶
This release fixes a consensus-critical bug related to the set-membership padding index encoding, which can lead to network forks due to non deterministic cross architectural validation, plus performance and portability improvements. It carries a consensus change gated at mainnet height 42,500.
Every node must update to v0.1.9 before the given height.
Performance
- Fixed-base-window precompute for BLSCT verification MSMs.
- Generator tables no longer copied on the verification hot path; PublicKeys holds a span rather than a copy; generator copy-elision.
- Removed the unused per-output spending-key cache.
Build & portability
- libc++ 14 PublicKeys construction fix.
- Reorg-undo and portability hardening; zero-initialized transaction-data amount fields.
- GMP tarball mirror fallbacks.
Cleanup
- Deduplicated HD-enabled and identity-key destination helpers; hardened negative-account sub-address guards.
- Removed the Transifex config and Qt translation docs.
What's Changed¶
- blsct: define the HD-enabled predicate once by @mxaddict in https://github.com/nav-io/navio-core/pull/377
- blsct: check the sub-address registration unconditionally by @mxaddict in https://github.com/nav-io/navio-core/pull/374
- opt: make PublicKeys hold a span, not a copy of the pubkey vector by @aguycalled in https://github.com/nav-io/navio-core/pull/365
- blsct: restore PublicKeys construction from an lvalue vector on libc++ 14 by @aguycalled in https://github.com/nav-io/navio-core/pull/379
- blsct: delete the unused per-output spending-key cache by @mxaddict in https://github.com/nav-io/navio-core/pull/370
- chore: drop the Transifex config and Qt translation docs by @mxaddict in https://github.com/nav-io/navio-core/pull/371
- blsct: env-gated fixed-base precompute for range-proof verification (off by default) by @aguycalled in https://github.com/nav-io/navio-core/pull/353
- blsct: stop pooling sub-addresses the negative accounts cannot use by @mxaddict in https://github.com/nav-io/navio-core/pull/382
- blsct: share one identity-key destination check by @mxaddict in https://github.com/nav-io/navio-core/pull/381
- blsct: portability and reorg-undo hardening by @aguycalled in https://github.com/nav-io/navio-core/pull/383
- build: add mirror fallbacks for the gmp tarball by @mxaddict in https://github.com/nav-io/navio-core/pull/384
- blsct: stop copying the 1024-point generator tables on the verify hot path by @aguycalled in https://github.com/nav-io/navio-core/pull/349
Full Changelog: https://github.com/nav-io/navio-core/compare/v0.1.8...v0.1.9
Signed by Nav.io Releases releases@nav.io.
v0.1.8 — 2026-08-21¶
Navio Core v0.1.8¶
Priority upgrade for all staking nodes. This release fixes the mainnet block-production halt of 2026-08-20 (height 33792) and prevents the class of failure permanently.
What happened¶
A transaction re-adding a staked commitment that was already staked on-chain entered node mempools. Mempool acceptance only checks for duplicate staked commitments at accept time, so the transaction stayed put after the competing commitment landed on-chain. Block aggregation then folded it into every staker's candidate block, which failed validation with bad-txns-duplicate-staked-commitment — halting block production network-wide for ~4 hours.
Fixes (#378)¶
- Mempool eviction: connecting a block now evicts any mempool transaction whose staked commitment the block just added, the same way input-spend conflicts are evicted. Stuck transactions from the incident disappear automatically on upgrade (they are rejected when the mempool reloads).
- Miner resilience: the block builder drops a transaction with a duplicate staked commitment from the template instead of producing an invalid block — one bad transaction can never halt production again.
- Wallet guard:
stakelock/delegatestakenow fail with a clear error when the resulting commitment already exists on-chain, instead of creating a forever-pending transaction.
Upgrading¶
Stop your node, replace the binaries, restart. No reindex or rescan needed; the stuck transactions are dropped from your mempool automatically. The prioritisetransaction workaround shared on Discord is no longer needed after upgrading.
Also includes all improvements merged since v0.1.7: BLSCT wallet-scan and verification optimizations (#352, #362, #363), FFI boundary hardening (#332), the birthday-mnemonic wallet creation time (#340), subaddress and keyman locking fixes (#344, #350, #351, #366–#370, #373–#377), and CI/depends reliability fixes (#364, #372).
v0.1.7 — 2026-08-08¶
What's Changed¶
- external API: expose unsigned-output gamma and DATA predicate setter by @aguycalled in https://github.com/nav-io/navio-core/pull/318
- blsct: add deriveblsctonetimekey RPC for external destinations by @aguycalled in https://github.com/nav-io/navio-core/pull/320
- Delegated cold staking (no consensus changes) by @aguycalled in https://github.com/nav-io/navio-core/pull/304