DigiByte Core v9.26.0-rc43 Release Notes
RC43 is a DigiDollar RC42 follow-up stabilization release candidate on the same public testnet25 chain.
Development branch: feature/digidollar-v1
Release: https://github.com/DigiByte-Core/digibyte/releases/tag/v9.26.0-rc43
Read This First
RC43 does not reset public DigiDollar testnet.
RC41 moved public testing to testnet25. RC42 kept that network and added the active digibyte-maxi oracle slot. RC43 keeps the same chain, same ports, same activation heights, same 35-slot oracle roster capacity, same 18 active testnet oracle keys, same 9-signature oracle quorum, and same v0x03 oracle bundle format.
Upgrade target:
- RC42
testnet25nodes should upgrade to RC43. - RC41
testnet25nodes can also upgrade directly to RC43. - Do not wipe
testnet25just because of RC43. - Do not return to
testnet24; RC43 is still the RC41/RC42 public testnet chain. - Existing oracle operators should keep their assigned RC42/testnet25 slot and key material unless separately coordinated.
What changed from RC42:
- Rapid DigiDollar mint, send, and redeem wallet-state handling was hardened.
- Rapid DD stress coverage now exercises 20 mints, 20 redemptions, and 20 sends end to end.
- DigiDollar wallet-state fuzzing now covers rapid mint/send/redeem reject, abandon, and confirm orderings.
- The DigiDollar tab now shows a first-entry experimental risk warning with a "don't show again" option after acceptance.
- DigiDollar transaction details no longer open duplicate dialogs on double-click.
- DD Overview recent transaction columns now align cleanly for pending rows and mixed amount widths.
- DigiDollar Qt amount labels now use the consistent
<amount> $DDformat throughout overview, send, mint, redeem, vault, transaction, and dialog surfaces. - Oracle operators can now run
createoraclekeybefore DigiDollar activation to generate fresh mainnet oracle pubkeys, while real DigiDollar/oracle actions remain disabled until activation. - Oracle startup validation logging is gated to avoid misleading startup noise before the node is ready.
- RC42 DGBstats, oracle onboarding, tooltip, modal, transaction-detail, and dark-mode fixes are carried forward.
What did not change:
- Testnet name remains
testnet25. - Testnet P2P port remains
12032. - Default testnet RPC port remains
14026. - DigiDollar testnet activation height remains
600. - Oracle testnet activation height remains
600. - Oracle epoch length remains
40blocks. - Oracle bundle format remains
v0x03. - Testnet active oracle roster remains 18 keys.
- Oracle quorum remains 9 signatures.
- Mainnet activation status does not change.
- Mainnet oracle operation remains disabled before activation; only local oracle key creation is allowed.
- DigiDollar economic rules, ERR policy, DCA policy, address formats, and wallet database format do not change.
Summary
RC43 is the RC42 stabilization follow-up.
It focuses on real wallet-state failure modes found during rapid DigiDollar use: repeated DD sends, rapid batch mints, rapid redemptions, local/conflicting wallet transactions, false redeemed vault display, and the old !wtx.InMempool() crash path.
RC43 also finishes the RC42 Qt usability cleanup with the DigiDollar experimental warning, duplicate detail-dialog prevention, and DD Overview recent transaction column alignment.
For mainnet launch planning, RC43 also resolves the oracle-key chicken-and-egg issue: operators can generate fresh mainnet oracle keys before DigiDollar is active, without enabling oracle operation or any DigiDollar protocol action.
RC43 is not an economic redesign and not a new testnet reset.
One-Line Fix Summary
- Rapid DD mints: serialized mint coin selection, signing, wallet commit, and DD position persistence so concurrent mints cannot reuse the same DGB inputs.
- Rapid DD sends: committed DD sends through the wallet relay path once and stopped unsafe fee-input chains from building on stale wallet state.
- Rapid DD redeem: rejected or stale redemption transactions are abandoned cleanly so wallet inputs release and vault state does not remain stuck.
!wtx.InMempool()crash: recursive wallet abandonment now skips live confirmed/mempool descendants instead of aborting during parent removal.- Sender DD history: outgoing DD change is no longer recorded as a sender-side receive before the send row exists.
- False redeemed vaults: rapid DD send stress now verifies unrelated vaults do not flip to
redeemed. - Rapid-state fuzzing: added a DigiDollar wallet-state model for mint/send/redeem confirm, reject, and abandon sequences.
- Multi-oracle stress:
test_multi_oracle_testnet.shnow runs 20 rapid mints, 20 rapid redemptions, and 20 rapid 5 DD sends. - DigiDollar experimental warning: first entry into the DigiDollar tab shows a clear risk warning with an accepted "don't show again" preference.
- Experimental warning copy: simplified the warning text to be direct, readable, and explicit about proceeding at the user's own risk.
- Duplicate DD details: DD transaction double-clicks now open one details dialog instead of two.
- DD Overview alignment: recent transaction amount/status/date columns now keep stable alignment for pending rows and different amount widths.
$DDlabels: Qt now formats DigiDollar amounts consistently as<amount> $DDacross tabs, balances, dialogs, transaction rows, and details.- Pre-activation oracle keys:
createoraclekeynow works before DigiDollar activation for local wallet key setup and mainnet pubkey collection. - Activation safety:
startoracle, price signing, mint, redeem, transfer, validation, and protocol state-changing RPCs remain blocked until DigiDollar is active. - Oracle startup logs: startup validation is gated so early chainstate/config readiness does not produce misleading operator noise.
- RC42 carry-forward: DGBstats difficulty/oracle copy, Qt tooltip readability, green DD modal styling, DD transaction details theming, and tier-0 copy fixes remain included.
Testnet25 Network Details
| Item | RC43 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, 18 active testnet slots |
| 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 RC43. Use the values above.
RC43 carries forward RC42 testnet slot 17 for digibyte-maxi:
- Name:
digibyte-maxi - Slot:
17 - Pubkey:
03649d750bcad5b42b3dd0f11c8d98d62ed5afd515cd986663f81c35f086e58d47 - Quorum impact: none; quorum remains 9 signatures.
Minimum RC43 operator checklist:
- Back up wallets and oracle key material.
- Install/run RC43.
- Keep using
-testnetand the existingtestnet25datadir. - Keep P2P port
12032open and advertised. - Confirm
getblockchaininforeports the testnet25 genesis chain. - Confirm
getoraclesshows the expected 35-slot roster, with active configured operators online and reserve slots inactive. - Confirm assigned oracle slot/key material still matches the RC43/testnet25 chainparams roster.
Validation Status
Focused RC43 validation completed on May 27, 2026 from feature/digidollar-v1.
| Gate | Status |
|---|---|
Build: make -C src -j4 digibyted test/test_digibyte test/fuzz/fuzz qt/test/test_digibyte-qt
| PASS |
Unit tests: ./src/test/test_digibyte --show_progress
| PASS, 3387 test cases |
Qt tests: QT_QPA_PLATFORM=offscreen ./src/qt/test/test_digibyte-qt
| PASS |
Functional tests: test/functional/test_runner.py --jobs=4
| PASS, 371 listed jobs passed in 665 seconds runtime / 2470 seconds accumulated runtime |
Fuzz smoke: all ./src/test/fuzz/fuzz targets with deterministic seed corpus
| PASS, 248 targets in 29 seconds |
Multi-oracle testnet25 script: ./test_multi_oracle_testnet.sh
| PASS end to end, 383 total checks, 382 OK, 0 failed, warning-only live-market observations |
DD Overview alignment QA: DIGIBYTE_QT_SAVE_DD_OVERVIEW_QA=1 QT_QPA_PLATFORM=offscreen ./src/qt/test/test_digibyte-qt overviewRecentTransactionAmountIsRightAligned
| PASS, screenshot captured |
Pre-activation oracle key gating: test/functional/digidollar_rpc_gating.py
| PASS, createoraclekey allowed at DEFINED state and 30 protocol/action RPCs still blocked
|
Oracle key regression set: test/functional/test_runner.py --jobs=3 digidollar_rpc_gating.py digidollar_oracle_keygen.py digidollar_encrypted_wallet.py digidollar_wave18_rpc_matrix.py
| PASS |
DGBstats tests carried from RC42: npm run test:run
| PASS, 23 files / 523 tests |
DGBstats build carried from RC42: npm run build
| PASS with pre-existing ESLint warnings |
DGBstats E2E carried from RC42: npm run test:e2e
| FAIL, broad pre-existing Playwright environment/data failures |
DGBstats Server tests carried from RC42: npm test
| PASS, 8 files / 152 tests |
Whitespace check: git diff --check
| PASS |
Important validation notes:
- The final multi-oracle run used live market data and passed all DigiDollar mint, redeem, transfer, persistence, reindex, restore, and oracle checks with 18 active local oracles and unchanged 9-of-35 consensus.
- The final multi-oracle script included 20 rapid tier-0 mints, 20 rapid redemptions, a 20-output DD self-fragmentation step, and 20 rapid 5 DD sends.
- The final multi-oracle script log was
/tmp/digidollar_debug_logs/test_run_20260527_080130.log. - The final full functional run used explicit
--jobs=4and passed in 665 seconds runtime / 2470 seconds accumulated runtime. - The post-RC43 oracle-key gating check proves
createoraclekeyis wallet-only pre-activation setup and does not loosen the activation gate around oracle operation or DigiDollar protocol actions. - The DD Overview alignment screenshot was saved to
/tmp/digibyte_dd_overview_recent_alignment_qa.png. - DGBstats Playwright E2E remained red independently of the RC43 fixes, with broad loading-state, mocked-data, touch-target, browser-matrix, and route-specific expectations failing in this environment.
Qt Visual QA
RC43 includes automated offscreen Qt tests and screenshot evidence for the new DigiDollar overview alignment fix.
New RC43 screenshot:
- DigiDollar Overview recent transaction alignment:
/tmp/digibyte_dd_overview_recent_alignment_qa.png
RC42 visual QA carried forward:
- Global/custom tooltip readability:
/tmp/digibyte_tooltip_qa.png - DigiDollar transaction details dark mode:
/tmp/digibyte_dd_transaction_details_dark_qa.png - DigiDollar transaction details light mode:
/tmp/digibyte_dd_transaction_details_light_qa.png - DigiDollar coin control dark mode:
/tmp/digibyte_dd_coin_control_dark_qa.png - DigiDollar coin control light mode:
/tmp/digibyte_dd_coin_control_light_qa.png - DigiDollar payment request dark mode:
/tmp/digibyte_dd_receive_request_dark_qa.png - DigiDollar payment request light mode:
/tmp/digibyte_dd_receive_request_light_qa.png - DigiDollar address book dark mode:
/tmp/digibyte_dd_address_book_dark_qa.png - DigiDollar address book light mode:
/tmp/digibyte_dd_address_book_light_qa.png
Visual QA covered dark-mode global tooltips, DigiDollar tooltips, long wrapped tooltip paths, pending transaction tooltip normalization, shutdown window contrast, DigiDollar Send Total DD contrast, locked-wallet redeem state, DD Send local Note copy, DD Overview double-click navigation, DD Transactions double-click details, green DD-specific modal styling, and DD Overview recent transaction text alignment.
Mainnet Oracle Key Collection
RC43 allows fresh mainnet oracle pubkeys to be collected before DigiDollar activates.
Only createoraclekey <oracle_id> is allowed before activation, and only as local wallet key management. It generates and stores the operator's private key in their wallet, then returns the compressed public key for chainparams inclusion. Nothing is broadcast, no oracle starts, no prices are signed, and no DigiDollar state changes.
Expected mainnet operator flow:
- Install the pre-activation RC43-or-later build.
- Create or load the intended oracle wallet and unlock it if encrypted.
- Run
createoraclekey <oracle_id>. - Send only the returned
pubkeyto the maintainer. - Keep the wallet backed up; it contains the private oracle key.
- Wait for the final activation release that hardcodes the collected pubkeys.
Still blocked before activation: startoracle, price signing, oracle operation, minting, redeeming, sending/transferring $DD, validation/state mutation, and all other DigiDollar protocol actions.
Commit Summary Since RC42
4fc8f7d83efix: allow pre-activation oracle key generationf53bbc7c78fix: standardize DigiDollar Qt currency labels06903d2b39fix: gate oracle startup validation logsb48a0aa6cefeat: warn before entering DigiDollar tabe459a96f80fix: avoid duplicate DigiDollar transaction detail dialogs4f4c7a415ecopy: clarify DigiDollar experimental warning1a6836f4e6release: bump version to v9.26.0-rc43b53f7ac5bafix: harden rapid DigiDollar wallet state transitions13b1de4788test: fuzz rapid DigiDollar wallet state transitions13953fdf6etest: stress rapid DigiDollar ops in oracle testnet7eff73e5ebdocs: update RC42 rapid wallet-state validation4acd8cee62fix: align DigiDollar overview recent transaction columns
Related DGBstats commits carried forward from RC42:
/home/jared/Code/dgbstats931984f3f48a473d1b15095d35858e150e56512efixed fractional testnet difficulty display and Core algo-name normalization./home/jared/Code/dgbstats8e68bcebc1437c0a21677dcb0c145dee194315b3updated oracle/testnet25 onboarding copy.
Notes For Testers
Please focus RC43 testing on:
- Upgrading RC42 nodes without wiping
testnet25. - Rapid batches of up to 20 mints, sends, and redeems without mining between RPC calls.
- Repeated small DD sends from an existing DigiDollar balance.
- Rapid batch 100 DD mints from wallets with many DGB UTXOs.
- Redeems after rapid mint/send activity and restart.
- Verifying DD vaults do not show
Redeemedunless a redeem actually confirmed. - DigiDollar first-entry experimental warning wording and "don't show again" behavior.
- DD Transactions double-click details opening exactly one dialog.
- DD Overview recent transaction row alignment for pending and confirmed rows.
- DD Overview recent transaction double-click navigation to the DD Transactions tab.
- Consistent
<amount> $DDlabels across DigiDollar overview, send, mint, redeem, vault, transaction, and dialog surfaces. - Pre-activation
createoraclekey <oracle_id>on a not-yet-active chain, verifying it returns a fresh public key whilestartoracleand all real DigiDollar actions stay blocked. - Tooltips in light and dark mode across normal DGB pages and DigiDollar pages.
- DigiDollar coin selection, payment request, and address book dialogs in light and dark mode.
- DGBstats testnet difficulty display and oracle/testnet25 operator copy.
Oracle operators should keep using testnet25, P2P port 12032, and their assigned RC42/RC43 testnet slots.
Known Risks
- RC43 does not include mainnet activation. Mainnet launch still requires the explicit release and activation decision.
- Mainnet reserve oracle slots remain placeholders until operators provide mainnet oracle pubkeys and a later release adds those keys to chainparams. RC43 now supports generating those keys before activation through
createoraclekey. - If fewer than 9 valid active oracle operators are online and fresh, new oracle bundles should fail closed.
- DGBstats Playwright E2E remains red independently of the RC43 fixes; the DGBstats changes carried into RC43 are covered by passing Vitest tests and production build.
Bottom Line
RC43 is the RC42 stabilization follow-up for the same public testnet25.
It keeps the testnet, oracle quorum, and DigiDollar economics unchanged, hardens rapid DigiDollar wallet-state behavior, improves stress/fuzz coverage, finishes the requested Qt warning/dialog/alignment/$DD cleanup, enables safe pre-activation mainnet oracle pubkey collection, and leaves the network ready for continued testnet25 validation.