Tari Mainnet is live
Let's take a closer look at another new feature added with the recent dibbler testnet release.
With the release of dibbler testnet comes a more efficient block propagation protocol that leverages the high likelihood that a base node receiving a new block already has all or the majority of the transaction data in its mempool.
It is instructive to briefly understand how the previous protocol worked and some inefficiencies that the new protocol addresses. The process begins when a miner finds a new block. The hash for the block is calculated and transmitted to every connected peer. Each peer receiving this unrecognised block hash must request the full block of up to ~2mb from the peer that sent it. Once the full block is received, it is validated and the same block hash re-propagated to other peers.
Although this protocol is nice and simple, it has a number of drawbacks:
To address these drawbacks, a new compact block message containing the minimum information required to assemble a full block is propagated to all peers. It is important that this message is kept as small as possible as this message is transmitted and received multiple times for each base node on the network.
This compact block contains:
For a block fully loaded with transactions, this message comes to roughly 65Kb.
The base node fills its block with transactions matching the excess signatures from its mempool. If there are any missing transactions, they are requested from the peer and added to the block. In most cases, this won't be necessary.
The block is validated and added to the blockchain - profit!.
Some points to note are: