Releases: tari-project/tari
v0.10.0
Features
- add base installer stubs (#3281) (074034b), closes #3102
- add get-db-stats command (#3274) (d785f4f)
- add logging of Monero PoW data to debug merge mining (#3276) (b0bf982)
- ping-peer command (#3295) (a04a2a6)
- rpc response message chunking (#3336) (496ff14)
- show status avx2 feature and randomx count and flags (#3261) (e2d8d1f)
- update+notifications for console wallet (#3284) (faa27fc)
Bug Fixes
- always grow database when asked to resize (#3313) (603bcb3)
- ban header sync peer if no headers provided (#3297) (570e222)
- block sync validation (#3236) (fd081c8)
- ci: add quotes to pr title ci (29247c2), closes #3254
- dead_code lint error when base_node_feature is not set (#3354) (7fa0572)
- dedup sql error when deleting many entries (#3300) (7e58845)
- disable P2P transaction negotiation while recovery is in progress (#3248) (844e6cf)
- disconnected node was never ready (#3312) (dfc6fd2)
- fix median timestamp index (#3349) (0757e9b)
- fix regression in cucumber tests for wallet ffi step (#3356) (481f3c9)
- handle stream read error case by explicitly closing the substream (#3321) (336f4d6)
- invalid forced sync peer now returns configerror (#3350) (8163ef8)
- prevent immediate run of wallet recovery on cron script (#3260) (969b306)
- randomx memory usage (#3301) (52e409d), closes #3104 #3103
- reduce overly-eager connection reaping for slow connections (#3308) (9a0c999)
- remove explicit panic from rpc handshake on io error (#3341) (c2ebfc8)
- remove sqlite from windows installer and scripts (#3362) (b2b6912)
- resolved design flaw in wallet_ffi library (#3285) (2e6638c)
- stop MTP attack (#3357) (a82638a)
- update balance after pending transaction is created (#3320) (47bafbf)
- update block explorer to use local grpc (#3348) (fc1e120)
- update cucumber tests for walletffi.feature (#3275) (38191d3)
- wait couple rounds for no pings to send an event (#3315) (2dcc0ea)
Network upgrade release
Major features since v0.3.0
- Propagate block hashes instead of full blocks (network breaking) (#1986)
- Wallet backup support
- Automatically build Android FFI libraries in Github actions
- Added methods to expose current emoji set via FFI (#1978)
- Resolve peer DNS addresses with Tor if it is available
- Remove Liveness and add a Low Power mode to the Wallet (#1964)
- Add FFI functions to get and read a wallets Seed Words (#1962)
- New Emoji set!
- gRPC support for Block Explorer
- Add Github action for building and deploying Android FFI libraries (#1948)
- Initial Mempool sync (#2007) Nodes can request to sync up mempools with peers on startup
Windows-specific
Minor improvements and bug fixes
- Add format specifier to get-block command (#2012)
- Refactor UXTO Validation in Output Manager into async protocol (#2006)
- Made messaging pipeline optional in CommsBuilder (#2001)
- Have the Wallet backend persist the Comms Secret Key (Wallet backup)
- Remove deprecated ConfigExtractor
- Fix unexpected error with wallet power updates (#1994)
- Updated dockerfile for new nightly image
- Input and output previous STXO block validation check (#1974)
- Checking is_stxo using MMR (#1970)
- Simplified outbound message interface (#1961)
- Use async RwLock for WaitingRequests (#1966)
- Add revalidation check to Output Manager service (#1953)
- Use async RwLock for WaitingRequests
- Fix forward sync index out of bounds (#1956) Merge pull request #1956
- Switched to tokio broadcast for inbound pubsub
- Update Output Manager UTXO query to split into multiple queries
- Migrate Comms/DHT to thiserror (#1951)
- Reinitialize pools if node transitions to offline (#1941)
- Refactor the Receive Transaction Protocol into the Protocol pattern (#1930)
- Framed substream default maximum frame size (#1940)
- flaky test fixes
- Don't delete existing files in S3 when uploading libraries (#2003)
- Cargo.lock is now checked in to maintain dependency consistency
- Horizon state syncing for pruned nodes (#2004)
- Correctly hook up protocols from tari_base_node to comms (#2015)
v0.4.2 - Network upgrade release
Major features since v0.3.0
- Propagate block hashes instead of full blocks (network breaking) (#1986)
- Wallet backup support
- Automatically build Android FFI libraries in Github actions
- Added methods to expose current emoji set via FFI (#1978)
- Resolve peer DNS addresses with Tor if it is available
- Remove Liveness and add a Low Power mode to the Wallet (#1964)
- Add FFI functions to get and read a wallets Seed Words (#1962)
- New Emoji set!
- gRPC support for Block Explorer
- Add Github action for building and deploying Android FFI libraries (#1948)
- Initial Mempool sync (#2007) Nodes can request to sync up mempools with peers on startup
Minor improvements and bug fixes
- Add format specifier to get-block command (#2012)
- Refactor UXTO Validation in Output Manager into async protocol (#2006)
- Made messaging pipeline optional in CommsBuilder (#2001)
- Have the Wallet backend persist the Comms Secret Key (Wallet backup)
- Remove deprecated ConfigExtractor
- Fix unexpected error with wallet power updates (#1994)
- Updated dockerfile for new nightly image
- Input and output previous STXO block validation check (#1974)
- Checking is_stxo using MMR (#1970)
- Simplified outbound message interface (#1961)
- Use async RwLock for WaitingRequests (#1966)
- Add revalidation check to Output Manager service (#1953)
- Use async RwLock for WaitingRequests
- Fix forward sync index out of bounds (#1956) Merge pull request #1956
- Switched to tokio broadcast for inbound pubsub
- Update Output Manager UTXO query to split into multiple queries
- Migrate Comms/DHT to thiserror (#1951)
- Reinitialize pools if node transitions to offline (#1941)
- Refactor the Receive Transaction Protocol into the Protocol pattern (#1930)
- Framed substream default maximum frame size (#1940)
- flaky test fixes
- Don't delete existing files in S3 when uploading libraries (#2003)
- Cargo.lock is now checked in to maintain dependency consistency
- Horizon state syncing for pruned nodes (#2004)
- Correctly hook up protocols from tari_base_node to comms (#2015)
v0.3.0 - Network upgrade release
Note: This release includes a breaking change to the blockchain DB. A node
upgrading to this version will need to delete its existing db and resync
the blockchain.
Important: You do not need to delete your wallet. Fake funds are SAFU.
To reset your database, follow these steps:
- Stop your node.
- Locate your Tari data folder. The default locations are
~/.tari
on Mac or Linux and%USERPROFILE%\.tari-testnet
under Windows. - Delete the
rincewind/db
andrincewind/peer_db
folders in their entirety. You can leavedht.db
, and thewallet
directory intact. - Restart your node. Resyncing takes an hour or more right now.
New Features in this release
- Several of back-end changes (hence the need to reset the db) to accommodate pruned mode nodes.
- Several new gRPC endpoints for use by the block explorer (and future wallets) (#1922)
- Increase redundancy for Store and Forward messages (#1929). This PR increases the number of nodes
that will see and store a SAF message when it reaches the neighbourhood of the destination. - Have Messaging protocol substreams close after a period of inactivity (#1913)
Bug fixes
v0.2.5
v0.2.5 focuses on node stability and network performance
Features
- Added
get-state-info
command to display current base node state (#1880) - Message tracking for testnet troubleshooting (#1881)
- Added OSX section to README.md (#1888)
- Add the version command to base node CLI
- Add
get_cancelled_transaction_by_id
to FFI & update cancel callback - Adding GetCalcTiming function to grpc service (#1872)
Performance improvements and bug fixes
- Refactor the validators to ensure that each validation step only completes once (#1873).
- Add local pub key to the source and dest fields for cancelled txs in FFI (#1893)
- Switched the BlockEvent stream to Tokio broadcast (#1889). Reduce the memory footprint for block event broadcast
channel by using a tokio broadcast channel. - Chain metadata service not updating metadata on reorgs (#1890)
- Update sending of Tx Reply & Finalise msgs to send SAF if Direct fails (#1876)
- Limit unnecessary storage of messages with duplicate content. (#1862)
- Fixed block_forward sync to add blocks via local interface to ensure that events trigger correctly.
- Fixed a typo in mobile build script (#1875)
- Replace deprecated bigint with uint (#1874)
v0.2.4
Improvements
Most improvements in this release are centred around removing redundant network traffic and improving peer-to-peer connectivity.
Some of the changes that have come in since the last release include:
- Introduce temporary short term ban for peers that are providing chain metadata but do not respond to header and block requests.
- The chain synchronisation mechanism is simpler and more robust. Previously it was possible that a node would unfairly ban a peer after an initial chain sync.
- The
check_db
CLI command does more through checks, including block validation. Previously it was only checking the header chain. - Old store and forward messages are now removed from the DB after they have been queued to be sent to the destination node.
- Connections are now closed earlier if a peer is banned.
- Deprecated tables and code have been removed from wallet codebase.
- The Store and Forward cache size now has a hard limit.
- Add node version info to PingPong messages. This will help identify if network issues are related to peers running older software.
- Introduce Hamming distance as distance metric. The XOR metric seems to cause clustering of nodes that are not able to communicate. Hamming distance seems to improve the clustering issue. The XOR metric is still the default, though will likely be replaced by the Hamming distance in an upcoming release following further testing.
The Transaction send logic in the wallet has been substantially streamlined:
- First a Direct send is attempted (previously the direct and SAF were both sent at the same time).
- A SAF message is only sent if a Discovery needs to be done or the Direct messages fails.
- A record is made in the DB if a direct send occurs because then we know the recipient DEFINITELY got the message and no repeat or SAF should be sent.
- If only a SAF message was sent then the Recipient is registered for monitoring by the Liveness service.
- If a PONG is received then only a Direct send is attempted as a repeat sending of the transaction (so SAF is sent on repeats).
- As soon as a Direct send is successful no further repeats will be sent.
- Multiplex substream counts have been added - allows the connectivity manager to kill
dormant connections.
Bug fixes
- Temporarily removed randomx-rs (which was causing illegal instruction crashes on some chipsets).
- Log rollovers were writing to the wrong directory in some cases.
- Don't panic if the logger is initialized twice in the Wallet FFI (#1863)
- A few flaky tests were fixed.
Stability release
This release focuses on network reliability and stability
- Hamming distance calculation added to DHT (XOR metric is still used as
of now) - Added helpful message if tor is not started
- Don't require a network for
--create-id
and--init
flags - Temporary banning of non-responsive nodes
- Dedup cache optimisations
- Cleaner shutdown (stops deluge of error messages we see sometimes)
- Logging improvements
v0.2.0 - Rincewind testnet release
This is a network-breaking change
Older nodes will not be able to communicate with nodes running this
version.
Changes from v0.1.0
- Removed nonces from DHT messages to prevent a certain class of spam
attack.
Testnet (Rincewind)
Deprecated
Do not use this release. Use 0.2.0 instead
Major Changes from 0.0.9
Store and forward
Peers will hold onto message for recipients that are not online and deliver the messages to them when they appear again.
OsX package installer
Many documentation improvements
Ephemeral keys for private messages
This is a big change that preserves privacy on the network but dramatically reduces the amount of traffic peers have to deal with.
Emoji Ids
Other changes
- The target difficulty for a specified PoW algorithm is included in the block header. This allows the target difficulty
of any block height to be calculated by only processing the last set of target difficulty samples up to that height. - Don't mark peers as offline if there are no existing connections (#1763)
- Add UTXO selection strategy for large txs
- Base node: Dynamically determine build version (#1760)
- Include random peers for liveness ping (#1753)
- RandomX - Version Update (#1754)
- Add generic debug log function to FFI (#1752)
- Lots of logging improvements
- Added list-transactions and cancel-transaction commands (#1746)
- ASCII table output for list-peers and list-connections (#1709)
- Improve Difficulty adjustment manager
- Modular configuration via ConfigLoader and ConfigPath traits
- Fix chain monitoring bug in Transaction Service (#1739)
- Empty Emoji String Bug Fix (#1736)
- Coin-split base node cli command
- Complete the basic OSX pkg build
- Perform reorgs only on stronger tip accumulated difficulties
- Use filesystem storage for dht.db on libwallet (#1735)
- Fix duplicate message propagation (#1730)
- Introduced accumulated difficulty validators to allow different rules for testing and running running a base node. -
- Changes to peer offline handling (#1716)
- Update Transaction cancellation to work for Inbound and Outbound Txs
- Added oneshot reply to outbound messaging (#1703)
- Add transaction stress test command to CLI
- Implemented basic
make-it-rain
command - Fix MmrCache rewind issue
- Use ephemeral key for private messages (e.g Discovery) (#1686)
- Limit orphan pool size
- Added a function to list UTXOs in the console (#1678)
- Prevent adding yourself as a peer (#1665)
- Update transaction weights (#1661)
- Fix block period calculation
- Validators will now check the weight of a block when doing validation (#1648)
- Cleaned up duplicate code from the Blockchain db
- The ban peer log will now supply n reason why the peer was banned (#1638)
v0.0.9 pre-testnet release
alpha release 0.9
This is a testnet release candidate.
The major contributions of this release:
- Testnet node release candidate
- Wallet library
- libWallet FFi bindings
- Peer-to-peer communications using noise protocol, tokio, and ToR.
- LMDB and memory-based blockchain database
- Simple testnet miner
The tari_crypto, tari_utilities, oubsub crates have been moved into
their own repos
Build, Installation, Configuration and executing instructions will be made available with the testnet release 0.1.0