It’s been two years. An entire pandemic has come and gone, the World Cup went back to South America for the first time in 20 years. Money printers went brr. Then they stopped going brr and suddenly twenty-something product managers were looking for a new line of work. Oh, and some kid with bad hair tried and failed to take the whole crypto industry down. You know, the usual.
All the while, the Tari protocol has been quietly been moving forward steadily.
tl;dr
Since our last update,
the Tari codebase has grown to over 500,000 lines of code.
Over 120,000 words of documentation and specifications are published on the Tari RFCs. That’s more reading than The Hobbit, Harry Potter and the Prisoner of Azkaban, or The Colour of Magic.
there are dozens of tutorials and explainers on crypto at Tari Labs University.
we have dozens of Rust coding tutorials over at our YouTube channel.
What have we been up to?
The distributed system trilemma tells us that distributed systems can be any two of scalable, performant, and decentralized. But not all three. Tari side-steps the trilemma by building out a dual-layer architecture:
The Minotari chain: A base layer that provides a public ledger of Tari coin transactions, secured by PoW to maximize security and decentralization.
The Tari network, running a highly scalable, performant BFT consensus smart contract system.
💡 Read more about Tari’s architecture and catch up on the Minotari announcement.
The Minotari chain
The Tari base layer is almost ready for prime time.
The base layer code was frozen for third party audits at the beginning of July 2023. The audits are expected to take 3 months and should wrap up around the end of September.
The Minotari chain is built on the foundations of Mimblewimble, but has several notable additions and innovations that are pivotal in bringing the two-layer architecture to life.
TariScript
TariScript adds basic scripting functionality to Mimblewimble.
Without TariScript it would be impossible / very difficult to implement some key functionality to Tari, including the one-way peg to the Tari network, handling registration of Tari validator nodes, and registering smart contract templates.
Remember how the Achilles’ heel of Mimblewimble was that every transaction had to be interactive? Ha! Minotari supports one-sided payments to arbitrary Tari public keys. Not good enough? Minotari supports the use of stealth addresses in one-sided payments.
The Tari P2P network
Tari developers built an entire overlay network over TCP/IP that allows Tari nodes (wallets, base nodes, etc.) to communicate with each other in a secure, private manner. Besides passing Tari transactions around, the core contributors are putting the final touches on a P2P chat protocol that would let you use the Tari network to send 100% end-to-end encrypted, completely serverless messages to any other Tari node.
Not even Signal has this level of privacy.
The P2P network has some other cool features too:
Seamless integration with Tor.
NAT punching for mobile devices.
Routing via a Kademlia-like DHT,
Store-and-forward “mailbox” support. Peers in your DHT neighborhood will hold messages for you while you’re offline and deliver them when you jump back on.
Tari Aurora
The Tari mobile wallet has been accumulating features faster than Gary Gensler loses court cases. Take a look:
The Tari network
Digital identity, private assets, DAOs, DeFi.. all of this will live on the Tari network.
The big news since the last post is that the Tari network has pivoted from a independent-but-connected side-chain approach (ala Polkadot or Avalanche) to a self-sharding highly scalable BFT consensus network.
There are some big moving parts to build and bring together to make the Tari network a reality and significant progress has been made on all of them:
A prototype version of Cerberus-Hotstuff has been drafted and implemented.
The Tari VM is in beta mode.
An alpha version of the Tari Templating language is complete. Template authors that know Rust will find the syntax very familiar:
use tari_template_macros::template; #[template] mod counter { pub struct Counter { value: u32, // Contract state } impl Counter { // Method to create a new contract instance pub fn new() -> Self { Self { value: 0 } } // A read-only method pub fn value(&self) -> u32 { self.value } // A method that updates the contract state pub fn increase(&mut self) { self.value += 1; } } }
The economic mechanisms of Minotari and Tari were been outlined and documented in Q4 2022.
Validator nodes can register on the Minotari network as of December 2022.
Tari is a self-sharding network, therefore we need to disavow ourselves of the notion that something like Etherscan will exist for Tari (the whole point is that the network is designed to grow much to large for one single entity to try and track the entire network’s state). To track the state of the subset of contracts that you’re interested in, you need an indexer. An alpha of the reference implementation indexer shipped in May 2023.
DevX is a huge priority for everyone helping build Tari. Obviously developer tools lag behind the fundamental infrastructure development. What we have is still very rough and not-so-ready. But, we can give a little soupcon of what is coming down the pipeline with this demo of the Tari contract development and testing process.
Keep in touch
We’ll be posting updates to this substack more regularly from now on. But if you simply cannot wait a week or two in-between updates, you can come and join the community conversation as it happens.