Tari Mainnet is live
Last week on Thursday the 24th of March, the planned hard fork on the Tari Testnet occurred at Block #23000 at 08:08:24 UTC.
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 v0.30.0
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.
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 bincode library for the final byte encoding, which is not appropriate for consensus for a few reasons.
Pull request #3820 updated the header hashing method to use ConsensusEncoding
, which serves as a formal specification and reusable component for other implementations to use.
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 #3955 by banning the node that failed to use the new header hashing method where required.
A new patch version of the Tari software is now available.