All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
Changelog## ## 6.2.0 (2026-10-19)
- common_sqlite: owner-only database files, WAL set in create_pool, per-database profiles (#8107)
- jellyfish: native minicbor encoding, inline NibblePath and bitmap InternalNode children (#8101)
- wallet: remove private-key UTXO export, which leaked the spend key (#8102)
- jellyfish: make the JMT hash scheme an explicit parameter (#8096)
- jellyfish: remove public-API panics, bound traversal, check store integrity (#8094)
- mempool: add bans for gossip transactions (#8127) (71de518)
- offline-signing: render payload summaries before signing and show recipient output features (#8130) (9e34e1a)
- base_node: use mimalloc as the global allocator (#8111) (e2adb3c)
- jellyfish: make the JMT hash scheme an explicit parameter (#8096) (29c9caa)
- jellyfish: native minicbor encoding, inline NibblePath and bitmap InternalNode children (#8101) (0f21a29)
- cli: merge duplicate test modules in common_cli_args (#8121) (ea909aa)
- cli: parse key-value overrides using split_once to preserve values with equals and whitespace (#8114) (9d9c44d), closes #8037
- cli: use resolved network when computing common.base_path (#8113) (8206dc2), closes #8038
- common: replace serde_yaml with serde-saphyr to drop unsafe-libyaml (#8116) (5cc7a6e), closes /github.com/tari-project/tari/pull/8116#discussion_r4267570814
- comms: admit liveness by token, bound inbound handshakes and cap inbound connections (#8119) (0e2c368), closes #8118
- comms: bound messaging queues, fair inbound delivery, yamux window cap (#8125) (e61fdcc), closes #8124 /github.com/tari-project/tari/pull/8125#discussion_r4286726269 /github.com/tari-project/tari/pull/8125#discussion_r4286726280 /github.com/tari-project/tari/pull/8125#discussion_r4286726294
- comms: lossless peer DB addresses, row cap and GC, direction-aware reaper, persisted bans (#8124) (5c0b764), closes /github.com/tari-project/tari/pull/8124#discussion_r4280261505 /github.com/tari-project/tari/pull/8124#discussion_r4280261508
- comms: stop culled and idle RPC sessions promptly and bound internal channel sends (#8118) (30d1302)
- harden validation (#8132) (9943038)
- identity: prevent secret key leakage from malformed identity errors (#8115) (758a331), closes #8032
- sidechain: weigh quorum certificates by signer voting power (#8128) (0947574)
- validation: require the canonical script on side-chain claimable burns (#8126) (53eb690)
- wallet: derive imported transaction details from recovered output data (#8133) (a243e1e)
- wallet: reject coin_split_even when fee exceeds total input value (#8112) (6a8313b), closes #8073 /github.com/tari-project/tari/pull/8112#discussion_r4266959504
- common_sqlite: owner-only database files, WAL set in create_pool, per-database profiles (#8107) (b3fe279), closes /github.com/tari-project/tari/pull/8107#discussion_r4256061979 /github.com/tari-project/tari/pull/8107#discussion_r4256061988
- comms/dht: bound per-peer flood-ban metrics and drop stale entries (#8110) (859cde7)
- comms: bound memory held for stalled yamux peers, RPC/sync streams and gRPC GetBlocks (#8108) (48babe2)
- key_manager: low-impact hardening from the key manager security analysis (#8106) (42977a2), closes #8077 #8104
- ledger: sign device sender-offset keys only through the reviewed metadata instruction (#8104) (897835c), closes #8098
- node: enable HTTP/2 and TCP keepalives on the base node gRPC server (#8109) (3506c52), closes #8108
- bound protobuf decode on every peer-reachable path (#8095) (89f9ebd)
- jellyfish: reject non-monotonic versions in batch_put_value_set (#8092) (109da2b)
- jellyfish: remove public-API panics, bound traversal, check store integrity (#8094) (faa66c8)
- key_manager: refuse degenerate nonces (#8103) (6495266), closes #8099
- ledger: keep alpha out of reach of the legacy host-indexed nonce instruction (#8098) (74d1bcb)
- refuse root-bearing key ids as commitment masks and in offline signing payloads (#8099) (7cc4d55)
- refuse to sign offline transactions that leave no change output (#8093) (b2e27cb)
- wallet: remove private-key UTXO export, which leaked the spend key (#8102) (d74e2b4), closes /github.com/tari-project/tari/pull/8102#discussion_r4229267983 /github.com/tari-project/tari/pull/8102#discussion_r4229267993
6.1.0 (2026-10-07)
- sidechain: transaction commands carry their atom bytes (#8072)
- consensus limit on block body bytes (#8079)
- sidechain: commit to a transaction merkle root from protocol version 1 (#8076)
- tari_common hardening (#8075)
- update tari_crypto to 0.24 and return errors instead of Ok(false) from verification functions (#8074)
- tari_hashing audit remediation (#8071)
- rebootstrap peers when the DHT connection pool is starved (#8082) (3f1eaef)
- sidechain: transaction commands carry their atom bytes (#8072) (7fae2c7)
- display the TIP-004 backoff adjusted target difficulty (#8070) (e943cd2)
- sidechain: commit to a transaction merkle root from protocol version 1 (#8076) (827b85d)
- blame the block that failed in a reorg and keep the strongest valid chain (#8091) (542ce32)
- consensus limit on block body bytes (#8079) (0f6b4ca)
- grpc: bound the cost of GetTokensInCirculation (#8081) (3640622)
- keep yamux connections moving when substreams back up (#8089) (c66f7f8)
- minotari-utils: fix three dbstats bugs affecting Windows and legacy chains (#7866) (95d1fc2)
- name the block, algorithm and peer when proof of work is rejected (#8085) (55f0deb)
- narrow RandomX factory lock scope (#8080) (4f2744a)
- enforce decoder parity across serde, borsh and both protobuf families (#8077) (bfda797), closes #8058 #6686 /github.com/tari-project/tari/pull/8077#discussion_r4182090837
- tari script hardening (#8065) (bc8ab3c)
- tari_common hardening (#8075) (22dbca2), closes /github.com/tari-project/tari/pull/8075#discussion_r4166886971 /github.com/tari-project/tari/pull/8075#discussion_r4166886981
- tari_hashing audit remediation (#8071) (ddc22a2)
- update tari_crypto to 0.24 and return errors instead of Ok(false) from verification functions (#8074) (2907aa9)
- wallet: consistent address and memo sizing (#8068) (44a6373), closes /github.com/tari-project/tari/pull/8068#discussion_r4153796636
6.0.1 (2026-10-05)
- side-chain data consensus rules (#8067)
- remove code template registration support from the base node and wallet (#8064)
- remove validator eviction from the base layer (#8062)
- jellyfish: domain-separate leaf and internal node hashes (#8060)
- shutdown: make drop, trigger and flag state agree; add reason and a bounded drain (#8061)
- core: prove burn claims with a burn output proof instead of a kernel proof (#8054)
- wallet: encode burn claim merkle proof as JSON instead of bincode (#8051)
- harden mempool (#8055) (2a6170a)
- side-chain data consensus rules (#8067) (19164b1)
- core: prove burn claims with a burn output proof instead of a kernel proof (#8054) (615b211)
- wallet: encode burn claim merkle proof as JSON instead of bincode (#8051) (49e8b3f)
-
enforce decoder parity for bounded transaction types and validate every submission path (#8058) (2a220ef), closes #8055 #8055
-
jellyfish: domain-separate leaf and internal node hashes (#8060) (bcf9ea9)
-
jellyfish: harden deserialization and remove reachable panics (#8059) (83586fd)
-
mempool: match sync inventory in linear time (#8057) (9c79982), closes /github.com/tari-project/tari/pull/8057#discussion_r4131700817
-
shutdown: make drop, trigger and flag state agree; add reason and a bounded drain (#8061) (beffd2e)
-
wallet: wallet output state consistency (#8066) (e485aaa), closes /github.com/tari-project/tari/pull/8066#discussion_r4142979339 /github.com/tari-project/tari/pull/8066#discussion_r4142979354 /github.com/tari-project/tari/pull/8066#discussion_r4142979361
-
console-wallet: --burn-proof-out sets the correct config key (#8048) (9ac11ed)
-
wallet: use the wallet output's own commitment mask key id when signing a multisig withdrawal (#8010) (584394d), closes #8009 #8009 #39
-
remove code template registration support from the base node and wallet (#8064) (5cd2364)
-
remove validator eviction from the base layer (#8062) (ada0dd1)
6.0.0 (2026-09-22)
- esme increase max monero rx seed height
- esme new backoff (02e290a)
- sidechain: add a protocol version to the sidechain block header (#7983) (db5ef65)
- sidechain: bind epoch and height into the proposal vote signature (#7982) (ddbf585), closes #7983
- test peers app (#7977) (2fb6c82)
- wallet: support excluding commitments from gRPC transfers (#7974) (7ce6bec), closes tari-project/special_contributions#20
- rfc tip 004 (#7960) (89ea795)
- improve wallet tx resubmit (#7954) (701b3a6)
- fixes C29 mining verification
- fixes critical bug in RxM mining by exploiting keccak sponge data
- Fixes Rxt header mutability
- Fixes merkle root decoding*
- base_node/grpc: honour get_blocks cancellation a (#7997) (59009d4), closes /github.com/tari-project/tari/pull/7997#discussion_r3967875363
- decouple liveness ping timeout from ping interval (#7992) (6bfdb52)
- ledger nonce handling (#8002) (dcc5672)
- ledger wallet cannot sign a change output (#8003) (e49cc8d), closes #8000
- sender offset and script key should not leave key manager (#8000) (27eb720)
- mcp apps (#7985) (aba0f2e)
- stop running peer-database SQLite on tokio worker threads (#7981) (600b400)
- header sync (#7976) (c1b0dce)
- enforce safe limits on RPC request handling (#7972) (26f5d97), closes #3 #3
- mmr: return an error instead of panicking on malformed merkle pr… (#7968) (c7a3631)
- upgrade random x (#7969) (bbcc7d1)
- wallet_ffi: make TariVector borrow instead of consume (#7964) (#7967) (e6fe270)
- comms: filter private DHT peer addresses (#7946) (1f8706e)
- deserialze (#7951) (871471b)
- improve connection dials (#7950) (5e58f1f)
- offline details (#7955) (afa1e44)
- overflow base node rpc (#7961) (43310ec)
- premine spend in wallet (#7962) (1d5f6a7)
- prune vs archival inconsistancies (#7949) (76036ac)
5.6.0 (2026-08-05)
- peer improvements (#7927) (1a41b53)
- extra warning for printing seed words (#7948) (3882c24)
- optimize clones during validation (#7923) (4cf88a7)
- actually perform DNSSEC validation on DNS seed records (#7941) (eb0998a)
- bound the number of signatures in a sidechain quorum certificate (#7944) (876e0cb)
- enforce MAX_SIZE invariant when deserializing bounded types (#7942) (49992d4)
- ensure requests are clamped to max number (#7938) (7362479)
- env leaking in logs (#7929) (292f675)
- file permissions (#7931) (be124c3)
- gate grpc get_network_state behind the method allow-list (#7939) (ffdb193)
- grpc auth max length (#7934) (57baf9b)
- idle rpc timeout (#7937) (31fb18b)
- leger logs (#7932) (10226da)
- libtor ports and passwords (#7933) (9c98e5f)
- protect the paper wallet import temporary database (#7945) (24f9255)
- tari transaction component security hardening (#7940) (725748d)
- validate pre-mine session ID before using it as a path (#7943) (26d253e)
- risv builds (#7928) (6a1ee9c)
5.5.0 (2026-07-16)
- enforce unique burn commtiments (#7910)
- better logs (#7924) (2c394a9)
- better resize management (#7906) (45425cb)
- add mined_in_epoch to burn claim proof file (#7919) (dd1cf1d)
- enforce unique burn commtiments (#7910) (8c10d94)
- improve node pool management (#7921) (9542ed2)
- improve peer sync (#7903) (1dbd6e0)
- improve template calls (#7900) (a1845cc)
- installer: add unified Minotari Ledger installer (#7864) (bad5a5f), closes #7795
- make taripulse optional (#7897) (4223d34)
- use uv and not python directly (#7922) (1c714ec)
- coinbase status (#7911) (1739585)
- deps: update crossbeam-epoch advisory (#7918) (1c7c5ac)
- harden utxo scanner (#7898) (4062b24)
- prune deleted_txo_hash_to_header_index (#7894) (8871066)
- reduce listening state log spam (#7905) (7c1104f)
5.4.0 (2026-06-30)
- harden prune mode (#7902) (152e281)
- change wallet output selection (#7889) (401093a)
- harden block add (#7888) (9125a95)
- bundle install scripts (#7879) (fe12274)
- update reorg logic (#7881) (9d41c68)
- add ledger scripts to assets (#7878) (5822b36)
- make lmdb compaction disk space non fatal (#7874) (1b13660)
- add synced gRPC healthcheck (#7867) (561f415)
- change connection handling (#7865) (8b3e358)
- improve migration flow of jmt upgrade (#7862) (0c12351)
- add peer transport preference modes (#7851) (0c3c87d), closes #7830
- wallet: migrate legacy output key-ids to current format on startup (closes #7829) (#7859) (9e9c832)
- wallet: stealth-address claim key for L1->L2 burns (#7861) (d17fac8), closes tari-project/tari-ootle#1890
- sidechain: carry next-epoch hash in EndEpoch command (#7856) (941dd85)
- better wallet feedback (#7845) (88b893b)
- xmrig-proxy: add getinfo and getheight methods to the node's integrated xmrig_proxy (#7827) (7ae1410)
- update wallet utxo selection (#7895) (6c2937c)
- diff check (#7890) (0741da5)
- ledger (#7877) (0fd9331)
- base_node: reject duplicate validator node registrations within a block (#7870) (d584707)
- potential cache issues (#7623) (7cab6cb)
- remove unnecessary clone from #7868 (#7869) (e2cf3b5)
- wallet: bind target sidechain into burn claim ownership proof (#7868) (00ab044), closes tari-project/tari-ootle#445
- common: make StaticApplicationInfo work for crates.io consumers (#7860) (3241ca9)
- improve pool management (#7857) (53f34f2)
- builds (#7841) (ca68990)
- increase buffer (#7844) (cbce477)
- jmt data usage (#7824) (2ffe7da)
5.2.1 (2026-04-28)
- sidechain: include
epoch_hashin sidechain block header (#7767) - set epoch length to 10 for all networks (#7725)
- add branch and bound as UTXO selection option (#7651) (4e4cec3)
- wire branch and bound into the console wallet (#7671) (5af622e)
- offline signer support (#7663) (d8c76a0)
- payref tracking (#7734) (f247880)
- sparse block header storage for wallet scanner (#7744) (317a59a)
- improved wallet debugging tools (#7755) (af60157)
- improved transaction feedback (#7754) (24011fd)
export-auditCLI command for wallet transaction CSV export (#7700) (98aebeb)- remove libtor from console wallet (#7653) (d7da75c)
- install scripts for Ledger (#7694) (9235d76)
- feat: add api to change birthday (#7782)
- background database pruning for large prune operations (#7739) (0e5f9ca)
- new node pool management logic (#7728) (f70500d)
- network silence mode (#7696) (8354e8a)
- wait-for-shutdown support (#7666) (e8e9eaf)
- make readiness gRPC a config option (#7678) (6f8f361)
- show
-poverrides inprint-envand improve unknown-field config errors (#7701) (c99231a) - add metric to track mempool double spends (#7699) (ba3b103)
- add new reorg metrics (#7697) (bfb007b)
exclude_inputsquery parameter on thesync_utxos_by_blockendpoint (#7723) (363b9fe)- updated API for deleted block info (#7735) (5eeca3a)
- allow XMRig to request a block template from a Tari node (#7714) (3b6f685)
- convert merge mining cucumber tests to RxT (#7747) (f75de46)
- better sync (#7774) (11dc8d2)
- seed peer connections kept open (#7687) (01b107f)
- fix sync peer swapping by in (#7781)
- branch-and-bound edge case (#7768) (566193d)
- miscellaneous edge cases (#7769) (b32d517)
- legacy transaction status (#7756) (35768f1)
- burn claim flow (#7658) (f42e14d)
- save complete burn proof to file (#7726) (5a278cb)
- correct displayed transaction fee (#7659) (6453d3e)
- user-pays-fee and replace-by-fee behaviour (#7662) (b95e35f)
- fee-per-gram stat call for HTTP calls (#7667) (68ae120)
- kernel Merkle proof fetching (#7665) (20c4672)
- remove blocking base node call in
TransactionServiceRequest::FetchUnspentOutputs(#7724) (b44dee8) import-paper-walletwhenbase-diris absolute (#7720) (394e22d)- wallet scanning edge case (#7657) (c70542d)
- wallet handling of duplicate blocks (#7656) ([3f0bea1](https://githu
4.10.0 (2025-07-18)
- only scan in 100 block sections (#7344)
- remove wallet ffi transport (#7347)
- add birthday offset to wallet create (#7345)
- add initial validation flag to wallet state (#7341)
- add birthday offset to wallet create (#7345) (68c996e)
- add initial validation flag to wallet state (#7341) (323e308)
- add output hash of inputs to scanning stream (#7334) (3ceac84)
- only scan in 10 block sections (#7344) (d2e6df9)
- remove wallet ffi transport (#7347) (422af03)
4.9.1 (2025-07-16)
- add transport dial timeout (#7312) (0ab5252)
- enable caching of http requests (#7325) (db97351)
- replace by fee and user pay for fee commands (#7284) (a877048)
- update search-utxo with payref info (#7319) (24ae263)
- blocking main tokio thread when reading last latency (#7320) (4b8745e)
- http wallet json_rpc route size limit (#7324) (5dcaccd)
4.9.0 (2025-07-14)
- full http wallet refactor (#7215)
- add concurrency when contacting seed peers while performing seed strap (#7294) (453ebb6)
- add minotari_utils (#7157) (1ffeef7)
- message signing exposed via gRPC (#7299) (2493ee3)
- modify soft disconnect criteria (#7307) (35b5db7)
- full http wallet refactor (#7215) (482a70e)
- dont start second utxo scanner for recovery (#7298) (32dbe08)
- freebsd build process failure (#7302) (e3891f1)
- increase http server limit (#7314) (433942a)
- scanned height tracking (#7301) (e0cc004)
- seed peers being disconnected while seedstrap is in progress (#7303) (ea52f7f)
- view wallet scan height (#7313) (adbfcef)
- wallet sync command (#7305) (081969a)
4.8.0 (2025-07-07)
- expand gRPC readiness status to contain current processed block info (#7262)
- payref migration and indexes, add grpc query via output hash (#7266)
- improve grpc token supply (#7261)
- add payref background task (#7280) (a2b8a93)
- auto zero value coinbase reward calculation (#7259) (607729a)
- expand gRPC readiness status to contain current processed block info (#7262) (ee9f76d)
- improve connection stats (#7285) (bf3cc16)
- improve grpc token supply (#7261) (b072a6f)
- new ffi method to get payment_id from tari address (#7282) (37fd3e4)
- correctly validate coinbase transactions for recovered wallets (#7278) (3d5a043)
- payref migration and indexes, add grpc query via output hash (#7266) (3ceea6e)
4.7.0 (2025-06-26)
4.6.2 (2025-06-24)
4.6.1 (2025-06-23)
- database cannot resize on jmt write (#7244) (1df5cfe)
- minotari_merge_mining_proxy returns Tari block hash even if submit_to_origin is disabled (#7242) (d21f99c)
4.6.0 (2025-06-20)
- grpc interactive transaction transfer (#7234) (15471bc)
- imported transaction directions (#7233) (5de7d7d)
- peer dialling (#7218) (5a2b934)
4.5.0 (2025-06-18)
- ensure payref persists during recovery (#7225)
- add payref to grpc outputs (#7216) (0e322e1)
- ensure payref persists during recovery (#7225) (2737a14)
- integrated address support for Ledger (#7198) (7ab0cd5)
4.1.1 (2025-06-12)
- update grpc supply query (#7137)
- improve wallet balance checks from external clients (#7207) (58c3e41)
- update grpc supply query (#7137) (4ce3977)
- add filtering flag back (#7208) (5c1923f)
- migration can now correctly resume after stopping (#7210) (d268f2b)
- only revalidated rejected transactions on startup (#7209) (65af015)
4.4.0 (2025-06-11)
- full PayRef implementation (#7154) (ea038a4)
- improve peer partial match resiliency (#7166) (375f28d)
- update base node proto to search bytes (#7201) (af1203a)
- network-discovery: add back idle event handling (#7194) (1412179)
- payment_id deserialize (#7187) (a049549)
- reduce threshold for flood ban (#7171) (0d958de)
- remove code for deleting stale peers (#7184) (3b28a61)
- transaction manager service unmined lookup (#7192) (73af2d9)
- wallet ffi database name mismatch for mobile wallet (#7191) (ed31974)
4.3.1 (2025-06-03)
4.3.0 (2025-06-03)
- disable default dht discovery forwarding (#7128) (b6894ff)
- get_all_completed_transactions bitflag status filtering (#7161) (7248e18)
4.2.0 (2025-06-03)
- update target time (#7141)
4.1.0 (2025-05-30)
- remove the ability to send completely raw bytes via grpc (#7117)
- add base node HTTP wallet service (#7061) (1382008)
- add sqlite peer_db (#6963) (0f1b0dc)
- get all completed txs with pagination (#7113) (d292cec)
- new bootstrap process (#7121) (e5a0854)
- remove the ability to send completely raw bytes via grpc (#7117) (1e7ac28)
- add hardcoded esme seeds for dns fallback (#7120) (0fd2442)
- exclude coinbases from fee calc (#7112) (d35a8c8)
- ffi tari address from emoji (#7114) (8c97103)
- mismatched tms db state (#7131) (9e9b8b6)
- peer retention and connections (#7123) (7867d12)
4.0.0 (2025-05-26)
- change consensus to be 33%,33%,33% pow (9e121b0)
3.0.2 (2025-05-23)
3.0.1 (2025-05-23)
- sync (#7088)
[
3.0.0 (2025-05-20)
- allow nextnet to mine randomxT (#7070)
- make tari randomx pow compatible with xmrig (#7069)
- add second tari only randomx mining (#7057)
- vm calc height (#7082)
- add GetBlockHeightTransactions grpc method (#7081) (d8fa8f3)
- add second tari only randomx mining (#7057) (f593638)
- add spendable supply grpc query (#7055) (8901bcb)
- allow nextnet to mine randomxT (#7070) (3152af2)
- improve listening error propagation (#7050) (894d70a)
- make tari randomx pow compatible with xmrig (#7069) (e82e5ff)
- print out errors better (#7053) (5127a3d)
- expose user payment id (#7077) (e7bb008)
- import transactions via grpc (#7078) (12db85d)
- vm calc height (#7082) (c7bec97)
- duplicate tx when importing completed tx (#7064) (0c9d7f6)
- only wait for 5 seconds in waiting state (51ada84)
- transaction error display (#7065) (9279f2a)
- wallet sender details from sent transaction (#7066) (8f38071)
- base node panic (#7074) (c64b79a)
[2.1.1(https://github.com/tari-project/tari/compare/v2.1.0...v2.1.1) (2025-05-09)
- Revert connection pool cycling
2.1.0 (2025-05-09)
- add block hash to grpc method (#7025) (161bdf7)
- add block height to query (#7033) (50c2839)
- add connection pool cycling (#7011) (0f758cf)
- add view key to ffi (#7041) (d2cdb90)
- overrride coinbase payment_id if included in wallet payment address (#7038) (3c6683a)
2.0.1 (2025-05-06)
- first github repo release
- first release