Dibbler Testnet Hard Forked at block #23000
Last week on Thursday the 24th of March, the planned hard fork on the Tari Testnet occurred at
Previously, network forking changes coincided with full resets of the Testnet.
In preparation for Mainnet, the Tari development community released the changes as a required software upgrade.
This means that base nodes running a version prior to
are unable to validate blocks created by upgraded miners, forking the network.
Outputs and transactions from previous versions are still valid, so existing wallets should be unaffected by the change.
Let’s take a closer look at the breaking change.
Header hash method updated to use consensus encoding
Consensus Encoding is a well-defined specification appropriate for use in consensus critical serialization and encoding.
The new
ConsensusEncoding
implementations in Tari are fairly simple and auditable, with byte-for-byte control of the encoding, and, importantly, have only one way to represent a given object as bytes.
This means that the serialized bytes are appropriate for use in cryptographic primitives like hashes and signature challenges.
The previous method relied on the
library for the final byte encoding, which is not appropriate for consensus
Pull request
updated the header hashing method to use
ConsensusEncoding
, which serves as a formal specification and reusable component for other implementations to use.
Results
The hard fork rolled out relatively smoothly, since a majority of the network was running the upgraded software.
One issue was uncovered, where a base node might get stuck trying to sync from an un-upgraded node.
Upon reaching the fork, the newer node would correctly not validate the old fork where the hash method changed, but incorrectly did not ban the older node.
This was fixed in
by banning the node that failed to use the new header hashing method where required.
Tari v0.30.1 Released
A new patch version of the Tari software is
Bug Fixes
Launch the watch command on start (
Correct main path for wallet rpc client (
Tor identity private key needs to be serialized (
Ensure that identity sig is stored on startup (
Bug in block timing grpc method (
Fix Tor ID deserialization issue (
Ban peer if sending invalid prev_header (
Adds extra checks for sync stream termination (
Disable SAF auto requests (
Fix handling of creating faux transaction for recovered outputs (
Fix ffi import external utxo from faucet (
Features
Add mmr check to reconstructed block and mempool validation for unique excess signature (
Add UTXO set size to base node metrics (
Listen to terminal events in the watch mode (
Script to produce coverage report for wallet (
Monitor and display warning for min ratio for TCPv4 nodes (
Gracefully handle recovering a duplicate output in LibWallet (
Add docstring to merge mining proxy (
Hide private values in debug and serialize (
Bump nanoid from 3.1.30 to 3.3.1 in /applications/tari_web_extension (
Make HashWriter API more ergonomic and similar to Digest (
Take out “TODO: remove” for message tag (
Bump ansi-regex in /applications/tari_explorer (
Improve ergonomics of error to RPC status (
Reinstate inputs_not_mallaeble test (
Add auto labeler for clippy (
Add create release to libwallet build (
Add docker image builds for launchpad (
Testnet Hard Fork Report
Testnet Hard Fork Report