DigiByte Core v9.26.0-rc41 Release Notes
RC41 is a DigiDollar launch-parameter, testnet-reset, hardening, and usability release candidate on top of RC40.
This release resets public DigiDollar testnet to testnet25, moves the testnet P2P port to 12032, reserves 35 oracle slots for mainnet/testnet, sets the mainnet DigiDollar activation floor to block 23,627,520, and keeps the RC40 hardening fixes for mint validation, wallet state, no-wallet builds, Dandelion cleanup, and Qt usability/theme cleanup.
Development branch: feature/digidollar-v1
Release: https://github.com/DigiByte-Core/digibyte/releases/tag/v9.26.0-rc41
Read This First
RC41 starts a fresh DigiDollar testnet: testnet25.
RC40 used testnet24. RC41 does not. Old testnet24 blocks, chainstate, peer addresses, oracle messages, and DigiDollar positions are not RC41 proof. Back up wallet and oracle key material before wiping old data, then start clean on testnet25.
Why the reset matters:
- A new genesis makes it obvious which nodes are actually testing RC41.
- New network magic bytes prevent accidental peer mixing with
testnet24. - The P2P port moves from
12031to12032, so firewalls, seeders, addnodes, and operator configs need to be updated. - Oracle signatures and MuSig2 context are chain-bound, so old testnet24 oracle messages cannot satisfy testnet25.
- The 35-slot oracle reserve needs a fresh public proving network before mainnet launch decisions.
What changed from RC40 for testnet operators:
- Data directory:
testnet24->testnet25 - P2P port:
12031->12032 - Network magic:
fe c4 b7 e5->fe c5 b8 e6 - Genesis block: new RC41 genesis
- Oracle roster shape: 17 active slots inside a 35-slot reserved roster
- Oracle quorum: 9 signatures from the active configured MuSig2 keyset
What did not change:
- The default testnet RPC port remains
14026. - DigiDollar activation height remains
600on testnet. - Oracle activation height remains
600on testnet. - The on-chain oracle bundle format remains
v0x03. - RC41 does not activate DigiDollar on mainnet by itself.
Oracle operator note:
Private key format did not change, but the network did. Operators must run RC41, use the testnet25 datadir, open P2P port 12032, and make sure their oracle slot/key matches the RC41 chainparams roster. Any old signed oracle messages, cached nonces, peer state, or bundle attempts from testnet24 are intentionally invalid on testnet25 because the signing context is bound to the new chain.
Mainnet oracle note:
The mainnet roster keeps placeholder/reserve slots for launch planning. Mainnet oracle operators still need to provide their own mainnet oracle keys before those slots can be made active in a later release.
Summary
RC41 resets the public DigiDollar testnet.
It sets:
- Testnet:
testnet25 - DigiDollar activation height:
600 - Oracle activation height:
600 - Oracle roster: 35 reserved slots, slots 0-16 active at launch
- Oracle quorum: 9 signatures from the configured active MuSig2 keyset
- Oracle bundle format:
v0x03MuSig2 aggregate bundles - Mainnet DigiDollar activation floor: block
23,627,520 - Existing DigiDollar economic rules
RC41 is not an economic redesign. It is a focused launch-configuration, correctness, wallet-state, documentation, and Qt display/theme cleanup release.
What Changed
Mainnet BIP9 activation window
RC41 sets the mainnet DigiDollar BIP9 signaling window to June 1, 2026 through June 1, 2027.
The threshold remains 70% over a 40,320-block mainnet signaling window. Mainnet activation status does not change in this release; activation still requires miner signaling and the BIP9 state machine.
Mainnet activation floor
RC41 sets the mainnet DigiDollar min_activation_height, nDDActivationHeight, and nOracleActivationHeight to block 23,627,520.
This aligns the direct height gate with the planned June 2026 release window while preserving BIP9 miner signaling. There is no fixed activation timestamp after release; mainnet activation still depends on miners reaching the 70% signaling threshold and then the chain reaching the minimum activation height.
Testnet25 reset
RC41 resets public DigiDollar testnet to testnet25.
The new public testnet uses P2P port 12032, data directory ~/.digibyte/testnet25/, network magic fe c5 b8 e6, and a fresh genesis block. RPC remains on 14026.
This is a deliberate network reset like the RC34 move to testnet24. Nodes on RC40/testnet24 will not follow RC41/testnet25, and RC41 nodes should not be pointed at old testnet24 chainstate.
Operators must update:
- Data directory references from
testnet24totestnet25. - Firewall and hosting rules from P2P port
12031to12032. - Static
addnodeentries to use RC41 peers on port12032. - DNS seeders to the new genesis, magic bytes, and port.
- Oracle service configs so
startoracleruns against the RC41 chainparams roster and not stale testnet24 peer/key state.
35-slot oracle reserve
RC41 reserves 35 oracle slots on mainnet and testnet.
Slots 0-16 remain the configured active MuSig2 keyset at launch, and slots 17-34 are inactive reserve slots. A reserve slot does not sign or count toward consensus until a later release adds the operator's key to consensus.vOraclePublicKeys and marks that slot active in chainparams. The threshold remains 9 signatures.
Mainnet minimum mint enforcement
RC41 fixes the mainnet DigiDollar mint-floor parameter.
Wallet and RPC paths already enforced the documented $100 minimum mint amount. Mainnet consensus parameters now enforce the same floor for raw DigiDollar mint transactions as soon as DigiDollar activates on mainnet.
Stricter mint lock-height validation
RC41 rejects malformed mint OP_RETURN metadata with a missing, non-minimal, zero, or negative lock height.
Before this fix, validation could normalize a bad lock height into a default testing value. The mint path now fails closed instead of inventing consensus-critical metadata.
Stale redemption metadata repair
RC41 includes the post-RC40 wallet repair for stale DigiDollar mint metadata before redemption.
The wallet now uses the original mint transaction as the authority for amount, collateral, lock tier, and unlock height before reconciliation, redeem construction, and signing. If mint metadata cannot be verified, redemption fails closed and tells the user to rescan or restore the wallet.
No-wallet build boundary
RC41 fixes --disable-wallet builds.
Node-level DigiDollar RPC code remains available, while wallet-only DigiDollar RPC helpers compile only when wallet support is enabled. Wallet aggregate health has a no-wallet stub instead of linking against missing wallet symbols.
DigiDollar receive-request amount validation
RC41 fixes malformed amount handling in the Qt DigiDollar Receive panel.
Malformed amounts such as 12.bad are rejected before address generation. Valid request amounts are parsed as fixed-point DigiDollar cents, stored consistently, and emitted in payment URIs in canonical form.
Qt overview blockchain totals
RC41 updates the DigiDollar overview panel to use Blockchain wording for chain-wide status and totals. The System Health row now reads values such as 592% Collateralized, and the health bar now reads values such as 592.0% Collateralization.
The blockchain DD supply and DGB locked cards were widened and regression-tested for launch-scale values, including at least $999,000,000.00 DD, a stress value of $11,000,000,000.00 DD, and 21,000,000,000.00 DGB.
Dandelion final-reject wallet cleanup
RC41 fixes a wallet-state bug when a Dandelion stem transaction is accepted locally but later rejected during final mempool promotion.
Rejected stem transactions are now removed from the stempool and wallet-owned DigiDollar transactions are marked abandoned when they are no longer confirmed or in mempool. This prevents failed mints or sends from staying visible as live pending transactions.
DigiDollar transaction sorting
RC41 preserves the user's selected sort order in the DigiDollar Transactions table.
The first load still defaults to Date descending, but later refreshes no longer force the table back to Date descending every few seconds.
Mint collateral ratio bar
RC41 changes the Qt mint collateral-ratio progress bar to show the practical 200%-500% safety band.
The exact collateral ratio text is unchanged. Ratios above 500% still display their real value in the label, while the visual bar clamps to full so it does not imply that 500% is only a partial safety level.
Pending DigiDollar balance styling
RC41 adds explicit light and dark theme rules for the Pending DD row on the Overview page.
The pending balance calculation did not change. The row now uses the same spacing, alignment, font sizing, and theme colors as the adjacent balance rows.
DigiDollar green section theme
RC41 gives the DigiDollar area of the Qt wallet a distinct green theme so users can visually tell when they are inside the DigiDollar section instead of the regular DigiByte wallet pages.
The top DigiDollar navigation button, DigiDollar subtabs, DigiDollar page backgrounds, card borders, table surfaces, progress bars, and DigiDollar action buttons now use scoped green theme rules. The regular DigiByte pages keep the existing blue wallet theme.
The theme work is scoped to DigiDollar Qt widgets and stylesheets. It does not change wallet accounting, consensus, oracle rules, RPC schemas, or P2P behavior.
Documentation audit
RC41 includes a full documentation audit against current code.
Core navigation, DigiDollar architecture, oracle, activation, wallet integration, exchange integration, setup, and repo-map documents were updated so future developers see the current implementation instead of older plans or stale assumptions.
What Did Not Change
RC41 does not change:
- Mainnet activation status.
- Mainnet signaling threshold.
- Oracle epoch length.
- On-chain oracle bundle format.
- DigiDollar address formats.
- DigiDollar wallet database format.
- ERR policy.
- DCA policy.
- Default testnet RPC port.
- P2P message formats in a breaking way.
RC41 keeps the DigiDollar economic model intact.
Testnet25 Network Details
| Item | RC41 value |
|---|---|
| Testnet name | testnet25
|
| Data directory | testnet25
|
| Genesis hash | 0x901d46e44cd40764de5ce383717b0d6afd96190e2c6b931a4737ebc8cda96df4
|
| Merkle root | 0xd3ba96686218ada443cc6ad23563b0e6a5aa4990dc8d8e6c0c3ba5dd0ef7538b
|
| Genesis time | 2026-05-21 20:00:00 UTC
|
| Genesis nonce | 384415
|
| Network magic | fe c5 b8 e6
|
| Default P2P port | 12032
|
| Default RPC port | 14026
|
| DigiDollar activation height | 600
|
| Oracle activation height | 600
|
| Oracle epoch length | 40 blocks
|
| Oracle roster | 35 reserved slots, 17 active slots at launch |
| Oracle quorum | 9 signatures from the configured active MuSig2 keyset |
| Oracle bundle format | v0x03 MuSig2 aggregate bundle
|
Older operator notes that mention testnet24 or P2P port 12031 are stale for RC41. Use the values above.
Minimum migration checklist:
- Back up wallets and any oracle key material.
- Install/run RC41.
- Start with
-testnetand the newtestnet25datadir. - Open and advertise P2P port
12032. - Replace old
testnet24addnodes and seed data. - Confirm
getblockchaininforeports the RC41 genesis chain. - Confirm
getoraclesshows the expected 35-slot roster, with active configured operators online and reserve slots inactive. - Start the assigned oracle slot only after confirming the slot/key matches RC41 chainparams.
Validation Status
Focused RC41 validation completed on May 21, 2026 from feature/digidollar-v1.
| Gate | Status |
|---|---|
Build: make -j"$(nproc)"
| PASS |
Unit tests: ./src/test/test_digibyte --show_progress
| PASS |
Qt tests: ./src/qt/test/test_digibyte-qt -platform offscreen
| PASS |
Functional tests: test/functional/test_runner.py --jobs=4
| PASS |
Fuzz target inventory: PRINT_ALL_FUZZ_TARGETS_AND_ABORT=1 ./src/test/fuzz/fuzz
| PASS, 247 targets |
Fuzz smoke: test/fuzz/test_runner.py -l INFO --par=4 --empty_min_time=30 ...
| PASS |
Multi-oracle testnet25 script: KEEP_QT_OPEN=1 ./test_multi_oracle_testnet.sh
| PASS, 223/223 |
| DigiDollar green-theme Qt QA | PASS, Bob wallet inspected across all DigiDollar tabs; Qt tests cover the required light/dark theme selectors |
Whitespace check: git diff --check
| PASS |
Validation logs:
- Build:
/tmp/rc41_final_make_after_gui_text.log - Unit tests:
/tmp/rc41_final_unit_after_gui_text.log - Qt tests:
/tmp/rc41_final_qt_after_gui_text.log - Functional tests:
/tmp/rc41_final_functional_after_gui_text.log - Fuzz target list:
/tmp/rc41_fuzz_libfuzzer_targets.txt - Fuzz smoke:
/tmp/rc41_libfuzzer.log - Multi-oracle testnet25 keep-open run:
/tmp/rc41_multi_oracle_testnet_keepopen_final.log - Multi-oracle internal test log:
/tmp/digidollar_debug_logs/test_run_20260521_172144.log - Final green-theme multi-oracle internal test log:
/tmp/digidollar_debug_logs/test_run_20260521_183859.log - Final green-theme Qt screenshots:
/tmp/digidollar_green_qa/bob_tabs_final2/contact.png,/tmp/digidollar_green_qa/bob_tabs_final2/root_tooltip_receive_generate2.png
Commit Summary Since RC40
703a8d9b46qt: add green DigiDollar section theme378017b37bchore: ignore local RC40 audit notes742cd0af69docs: clarify RC41 testnet25 migration notesb36b1e411btest: keep multi-oracle Qt wallets open after rund25cb18c5ddocs: update RC41 launch and oracle reserve notes99bc282f1adigidollar qt: update blockchain collateralization display9555ecd4a7digidollar launch: configure testnet25 oracle reserve9fc0d22947doc: update RC41 notes for mainnet activation windowd9cd85461edocs: align DigiDollar activation window with RC412261b40c54digidollar mainnet: set BIP9 window for June 20267ae38b0c93doc: add RC41 release notesd473616a55digidollar qt: style pending balance rowc8a62bc036digidollar qt: clamp mint ratio bar scale0a3a6b8434digidollar qt: preserve transaction sort order645125c040dandelion: drop rejected stem transactionseaa79030e6release: bump version to v9.26.0-rc41af69648808digidollar qt: fix DD-RHF-013 receive amount validation98563f1940digidollar wallet: fix DD-RHF-012 no-wallet build boundary3b6f61d4bbdigidollar tests: accept DD-RHF-011 metadata rejection3c28172caedigidollar mint: fix DD-RHF-011 lock height validation68fe7a2836digidollar qt: fix DD-RHF-010 amount label width0607f081dadigidollar mainnet: fix DD-RHF-009 minimum mint enforcementf466b7413bdocs: audit DigiByte and DigiDollar docs against current code16f6b77c8eUpdate .gitignore
Notes For Testers
Please focus RC41 testing on:
- Fresh
testnet25startup, peer discovery, and block production on P2P port12032. - Clean migration from old
testnet24local data to freshtestnet25data. - Firewall, addnode, and DNS seed behavior after the P2P port change from
12031to12032. - Oracle operator startup with RC41 slot/key configuration and no stale testnet24 oracle messages.
- Oracle slots 0-16 active and slots 17-34 inactive/reserve on mainnet and testnet.
- Mainnet activation parameters: BIP9 June 1, 2026 to June 1, 2027 with min height
23,627,520. - Mainnet/testnet mint amount limits after activation.
- Raw or manually constructed mint transactions with bad OP_RETURN lock-height metadata.
- Redemption of older positions whose wallet metadata may have been stale.
--disable-walletbuild behavior.- DigiDollar Receive requests with valid, blank, and malformed amount fields.
- Dandelion-enabled DigiDollar mints and sends that later leave stem relay.
- DD Transactions table sorting across refreshes.
- Mint collateral-ratio display for 200%, 500%, and 1000% tiers.
- Pending DD row appearance in light and dark themes.
- DigiDollar Overview blockchain totals display at large DD/DGB values.
- DigiDollar green section theme across all DigiDollar tabs, with regular DigiByte pages still using the existing blue theme.
Oracle operators should migrate to testnet25, open P2P port 12032, and keep assigned active oracle slots online.
Known Risks
- RC41 does not include mainnet activation. Mainnet launch still requires the explicit release and activation decision.
- Mainnet reserve oracle slots are placeholders until operators provide mainnet oracle keys and a later release adds those keys to chainparams.
- Public testnet25 DNS seeders must be reset to the new genesis, magic bytes, and P2P port before seed-based peer discovery is considered ready.
- If fewer than 9 valid oracle operators are online and fresh, new oracle bundles should fail closed.
- Mixed older RC oracle nodes may not reliably complete the current MuSig2 signing flow.
Bottom Line
RC41 is the testnet25 and mainnet-launch-parameter release candidate after RC40.
It resets public testnet, reserves the 35-slot oracle roster, sets the mainnet activation floor to block 23,627,520, keeps the DigiDollar economic model unchanged, carries forward the validated RC40 hardening fixes, and adds the scoped green DigiDollar Qt section theme.