Tari Release Notes – v5.1.0-pre.0
Breaking Changes
Comms infrastructure removed from wallet
- The wallet no longer includes its own peer-to-peer communication layer (comms, DHT, SAF) and now requires a persistent connection to a base node for all network operations. As a result, peer discovery, store-and-forward messaging, and Tor-based networking have been removed. Wallets must now connect via HTTP/gRPC to a base node to send transactions, sync UTXOs, or register validator nodes. Configuration files and FFI/gRPC interfaces related to comms have been deprecated or updated accordingly.
Wallet FFI
- SAF and DHT callbacks have been removed.
- A new type,
TariWalletDbConfig
, now replacesTariCommsConfig
- naming for comms_config_create and comms_config_destroy have been retained. - These functions have been removed:
wallet_get_seed_peers
- These functions have changes to their interfaces:
wallet_create
wallet_get_last_version
wallet_get_last_network
comms_config_destroy
comms_config_create
Updated gRPC .proto Bindings
-
ListConnectedPeers
now returns a new response,ListConnectedHttpPeersResponse
, replacingListConnectedPeersResponse
. The connected base node'spublic_key
andnode_id
are also returned for convenience, along with the connection URL, latency and online status. -
the gRPC
GetNetworkState
method’sliveness_results
now returns latency values in milliseconds instead of seconds, improving precision for network health reporting; this change is documented in the proto file to clarify expected behavior.
Features
Application Enhancements
Console Wallet:
- The Tari Wallet now exposes richer connectivity states (Connecting/Online/Degraded/Offline) and reports latency; new RPC methods return connected HTTP peers (URL, last latency, online).
- Multi-signature functionality and offline signing has been introduced to the
minotari_console_wallet
. A full list of commands can be found [here]#7481). - Improved wallet performance by optimizing output handling to avoid redundant recalculations, resulting in faster transaction and gRPC flows. Refactored wallet/output interfaces to use standardized, synchronous accessors for enhanced reliability, stability, and simpler integration across wallet, node, and tests.
Base Node:
- Added a configurable option to optionally clear bad blocks when starting the node. Users can now pass the
-p base_node.storage.clear_bad_blocks_at_startup=<bool>
command to perform this action when runningminotari_node
. A list of common commands across all the applications can be found at here. - Base node now exports
log₂
and high-significance representations of accumulated and target difficulty for improved Grafana visibility. Useful for monitoring forks or abnormal chain conditions.
Network Behaviour
- Improved base node connectivity issues with peers when user does not use
Tor
running the base node while filtering out non-compatible connections, reducing the number of failed dialed attempts - Discovery requests adjusted to exclude client-only peers, reducing irrelevant results and improving relevance of discovered nodes.
- Network health checks now perform discovery and ping tests at the same time and ensure a stable connection before pinging, preventing system stalls.
gRPC Improvements
- New methods for depositing and withdrawing multi-signature tranactions have been added to the wallet gRPC methods:
PrepareDepositMultisigTransaction
PrepareWithdrawMultisigTransaction
Wallet and Node Configuration
- Added configurable per-route HTTP caching for wallet endpoints with centralized Cache-Control management, enable/disable toggle and sensible defaults; cache settings now flow through the node, RPC surface and HTTP server. Configuration presets updated with commented
http_cache
options and documented default settings
Database Improvements
- Improves SQLite connection handling by aligning
r2d2 checkout
timeouts with SQLite lock timeouts to reduce connection errors under load. It optimizes PRAGMA usage to avoid unnecessary write contention during migrations, adds better logging for the connection pool state, and introduces a high-contention stress test to validate stability under heavy load. As a result, users may see fewer errors, with occasional slight delays instead of immediate failures.
Migration Improvements
- Throttled background database rebuild tasks with brief delays to yield resources to other operations, improving responsiveness and reducing contention during heavy rebuilds.
Note: This may increase the time spent on full database rebuilds.
Fixes
-
The C29 scaling issue has been corrected, and hash rate metrics for the network should now be reported accurately for the explorer and other purposes.
-
Improved the header sync process: non-canonical headers are trimmed, headers are only committed when switching to a stronger chain, and enhanced logging of header sync errors.
-
Added optional
minimum_value_promise
to pay-to-self and UTXO aggregation transactions, using it for VN registration to satisfy base node deposit validation. -
Seed peers now load on-demand instead of at startup, reducing startup overhead and improving initial responsiveness.
-
Improved the error message
"SeedStrap: Failed to contact any seed nodes or retrieve new peers."
to clarify the specific impact by further breaking it into two messaages:"SeedStrap: Failed to communicate with any seed nodes."
"SeedStrap: Communicated with {} seed nodes but did not retrieve any peers."
-
Onion addresses are filtered when loading identity config.
-
Fixed
peer_db update
where avalue = None
was ignored in the update set instead of changing the value tonull
in the database. This caused higher-level logic that depended on null to represent something to fail. -
Improved startup resilience; if the stored node identity conflicts with the local identity, the system now auto-corrects the database, recalculates peer distances atomically, and proceeds with a warning instead of failing.
-
Improved reliability of canceling pending transactions; missing or already-processed pending records and unlock failures are now logged as warnings and do not abort cancellation.
Deployment
-
Back up your data — including the Console Wallet and Base Node data directories and configurations.
-
Stop all running services — Console Wallet, Base Node, and any FFI-integrated wallets.
-
Update gRPC clients and
.proto
files:-
Regenerate client bindings using the updated
.proto
files. -
Notable changes include:
-
ListConnectedPeers
now returnsListConnectedHttpPeersResponse
, which includes the connected base node’spublic_key
,node_id
, connection URL, latency, and online status. -
The
GetNetworkState
method now reportsliveness_results
in milliseconds instead of seconds for improved accuracy. -
New methods added to the wallet service for multi-signature support:
PrepareDepositMultisigTransaction
PrepareWithdrawMultisigTransaction
-
-
-
FFI integrations:
-
The wallet FFI no longer includes support for comms, DHT, or SAF. All related callbacks and transport configurations (e.g., Tor, TCP) have been removed.
-
TariWalletDbConfig
replaces the deprecatedTariCommsConfig
. While function names likecomms_config_create
andcomms_config_destroy
remain, their internals have changed to reflect the new architecture. -
Removed FFI functions:
wallet_get_seed_peers
-
Updated function interfaces:
wallet_create
(now includes new parameters such aswallet_birthday_offset
)wallet_get_last_version
wallet_get_last_network
-
Ensure any FFI consumers are rebuilt using updated headers and regenerated bindings to reflect these changes.
-
-
Install the latest binaries for both the Base Node and Console Wallet.
-
Restart all services — Base Node, Console Wallet, and FFI-integrated wallets.
-
Verify operation — Check logs for errors, confirm wallet synchronization via HTTP/gRPC, and validate that updated gRPC and FFI interfaces are functioning correctly, including:
- Connectivity states (e.g., Online, Offline, Degraded) in the Console Wallet.
- Multi-signature transaction preparation flows.
- Accurate network health reporting via
GetNetworkState
.