Daemon Changelog¶
Changes to Wrkzd — consensus, P2P, storage, the RPC surface and the console — that an operator or an RPC integrator has to know about. Wallet-side changes are in the Wallet API changelog.
The version string a binary reports is <major>.<minor>.<revision>.<build>; Wrkzd --version prints it, and it is set in src/config/version.h.in. Full commit history is on GitHub.
0.4.8 (build 280) — 2026-09-05¶
The largest release since 0.4.4. Lite nodes, snapshots, a stratum server, an optional transaction PoW service, and P2P version 19.
Breaking and operator-visible¶
- Nodes advertise P2P version 19. The minimum accepted version stays 16, so older peers still connect. IPv6 peer exchange is now gated on version 19 rather than being advertised unconditionally.
- A database written by an older storage scheme is refused at startup instead of being silently deleted. Resync, or import a lite snapshot. See Lite Node Snapshots.
- Lite mode cannot be combined with explorer mode.
--lite --daemon-mode exploreris refused at startup, because every explorer route below the lite height reads records lite mode does not store. - Windows builds could not create a database before this release. RocksDB was compiled without ZSTD under MSVC, so every MSVC-built
Wrkzdfrom this tree failed at database creation. Fixed in the build system; a rebuild is the fix, not--db-enable-compression=false.
Lite nodes and snapshots¶
--litewith--lite-height <H>keeps full block data only fromHupward and stores just the indexes later blocks need below it. Permanent for the database. See Lite Nodes./infogainsliteandlite_start_height, and keeps answering while the node's own tip is still belowH. Thestatusconsole command showsLite Node,Full Block Data Fromand the index-only sync stage./getwalletsyncdataand/getrawblocksclamp a start height below the lite height up to it;/get_global_indexes_for_rangerefuses below it rather than narrowing the range.- Peers asking for a block below the lite height get it in
missed_idsrather than losing the connection, and can no longer shut a lite node down. - Snapshots:
snapshot_exportwrites the index-only region as a portable file;--import-lite-snapshot <file>loads one into an empty database.--snapshot-info <file>prints what a file carries.--snapshot-statsmeasures per-table storage. See Lite Node Snapshots.
Mining¶
- Stratum server in the daemon, off unless
--stratum-bind-portis given and bound to loopback when it is. A stock miner can now mine solo with no pool and no bridge. See Solo Mining. - The merge-mining tag is sealed before a stratum job goes out, and blocks found over stratum are announced to peers immediately — they previously reached the network only through the next timed sync, which produced visible alt blocks.
- Stratum shares are hashed off the dispatcher thread.
- The daemon RPC speaks xmrig's solo-mining dialect:
/getinfoand/getheightare served as aliases of/infoand/height, and/getheightdeliberately answers without ahashmember, which is how those miners identify a CryptoNote daemon. /json_rpcechoes the requestidback, as JSON-RPC 2.0 requires.getblocktemplateacceptsextra_nonceas well asreserve_size.- CryptoNight keeps its scratchpad for the life of the thread, roughly doubling hash rate. The bundled
miner's--limit, Ctrl+C handling and hash-rate report are fixed.
Consensus¶
- Default ring size rises to 8 at height 4,300,000. The minimum accepted ring is judged on the smallest ring in a transaction, and a decoy shortage is reportable so wallets can fall back to a smaller ring instead of refusing to send.
- Short payment IDs are encrypted to the receiver, under extra sub-tag
0x03. See Encrypted Payment IDs.
Networking¶
- Local IPC sockets:
--rpc-ipc-path,--rpc-ipc-mode,--rpc-ipc-groupand--rpc-ipc-require-tokenserve daemon RPC over an AF_UNIX socket whose file mode decides who may connect. POSIX only. See Local IPC and Console. Wrkzd attach <socket>opens an interactive console against a running daemon over its IPC socket, for a node under a process manager. The/consoleroute is registered on the IPC listener only, never on TCP. Inside an attached session,exitleaves andstopshuts the node down.- The daemon's own console routes its RPC calls over the IPC socket when one is bound, instead of making loopback TCP connections to itself.
- A daemon whose stdin is at end of file runs headless with one notice instead of spinning on empty reads.
- Seeds are retried when the node is stuck, DNS seed hostnames are re-resolved in the background, recently failed peers are skipped for 10 minutes, and one gray-list peer a minute is verified.
/inforeportsseed_nodes_countandlast_seed_bootstrap.
Notification hooks¶
--block-notify,--reorg-notifyand--tx-notifytake either a command template or anhttp(s)://webhook URL, suppressed until the node is synced unless--notify-during-syncis given. See Notification Hooks.
Storage and performance¶
- New database tuning flags:
--db-compression-level,--db-row-cache-percent,--db-bottom-filters,--db-compression-dict-bytes,--db-block-size. --rpc-sync-cache-size(default 64 MB) keeps finished/getwalletsyncdatabodies, so wallets syncing past the same height are served from one build.- Optional sync fields on
/getwalletsyncdata, advertised in/infoassync_features:skipEmptyBlocks,encoding: "base64"andendHeight. - The packed output index table is folded into key output info.
- The daemon no longer compacts the whole database every minute while syncing, and the maintenance loop no longer makes the console look stuck.
- Boost is no longer a dependency of the tree.
- Bundled miniupnpc updated 2.1 → 2.3.3.
0.4.7 (build 270) — 2026-08-21¶
A stability and sync-performance release.
- Reorg safety. A shared mutex guards chain reads during a reorg; RPC endpoints and the sparse chain builder retry safely instead of racing it; alt block reorg gained null guards, retry logic and exception safety.
- Alt chain management. Stale alt chains deeper than 180 blocks behind the main chain are pruned, the alt chain count is capped and the weakest evicted by cumulative difficulty, total alt blocks are capped at 100, and pruning runs on every block add rather than only on main-chain blocks. A use-after-free in alt chain pruning was fixed by excluding the active cache.
- Sync recovery. Network-consensus block trust and a dynamic checkpoint recover a node stalled on local ring-signature validation.
- Transaction proof of work is skipped inside the checkpoint zone during sync.
- Block batches are requested before the current one finishes validating; block and wallet-sync serving reads are batched; bloom filters were added with index and filter memory bounded to the block cache; an fsync per block is avoided while catching up.
- RPC gains HTTP keep-alive,
TCP_NODELAYand a wider thread pool. validateTransactionargument order was corrected for pool admission, and the pool's priority comparator made a strict weak ordering.- rapidjson was replaced with nlohmann-json across the tree.
0.4.6 (build 265) — 2026-03-08 and earlier¶
See the release list on GitHub and the commit history.