August 17, 2022

By SW van Heerden

Getting ready for Esma

Introduction

Tari has been running multiple testnets named after Discworld characters for over two years. We have had Weatherwax, Stibbons, Ridcully, Dibbler, and Igor, and with the new reset, Esmeralda. Esmeralda is the planned stagenet release. Let’s discuss what we have been doing to prepare for the release.

Code cleanup

Most of the network resets, and new testnets have focussed on adding new functionality or radically changing consensus rules. With Esmeralda, we have removed all the experimental layer 2 code from the codebase. Development on layer 2 is still ongoing, but not on the main development branch of the Tari anymore.

As with all the previous networks and experiments, the Tari repo had grown to include many applications. We have moved these all to their own repositories and only kept the base_node, console_wallet, miner, and the merge_mining_proxy.

In keeping with the tidying up of the repository, we have consolidated all database migrations.

Breaking changes

Rangeproofs

We have replaced the rangeproofs required by MimbleWimble with Bulletproof+ for the Esmeralda reset, as they are slightly smaller. Our implementation also allows for batch verification of outputs to speed up the verification time of nodes. Incidentally, the recent hard fork of Monero also introduced Bulletproof+ to their transactions.

Domain-separated hashes

All signatures require a challenge to verify successfully and to make them non-interactive, this is typically a hash of some message. To improve the security of these challenges, we changed all challenges to domain-separated hashes. And Tari includes quite a few signatures on transactions for security.

Burning of outputs

Burning of coins has been a long-used technique to accomplish a multitude of things in crypto, typically done with a “broken unclaimable script/key”. We have added an explicit burn output in which a specific UTXO can be burned and become unspendable forever. The primary use case for burns is as a mechanism for pegging funds into layer 2 chains.

Going forward

Esmeralda is now our primary testnet and the next update to Aurora will switch to support it. Unfortunately, because there are so many breaking changes in Esme’s code, you won’t be able to use Aurora on Dibbler at all after the update.

If you have funds on Dibbler that you want to keep, hold off on updating your mobile wallet, or save your seed phrase and run a Dibbler version of the console wallet to recover your funds. The testnet store will still be accepting Dibbler tXTR for the time being.