Why does 1 million TPS matter?
A blockchain with 1 million TPS will have several unique benefits:
- It enables a blockchain to process a large number of transactions quickly, which is necessary for the industry to reach 1 billion users.
- It improves user experience. A low TPS rate can hinder the user experience because it takes longer to complete a token swap, buy an NFT, or use a dApp.
- It improves security. A high TPS can also make a blockchain less susceptible to spam attacks. Currently, if spam bots request more transactions than the network can handle, it can cause the network to shut down for extended periods, as has been observed with Solana in recent years.
- It unlocks new use cases, like a 24/7 decentralized stock exchange.
How will Solana scale?
Solana is always working on improvements to the network, I outline many of them in my Solana scaling article linked below, but for this article, we’ll focus on Firedancer, a new Solana validator client under development by Jump Crypto.
What is Firedancer?
Firedancer is a new validator client for the Solana blockchain network. It is being developed by Jump Crypto and will be written in the C/C++ programming languages. The main purpose of Firedancer is to provide an alternative to Solana Labs' validator client, which is written in the Rust programming language, in order to improve the security, decentralization, and throughput of the Solana network.
Having two different validator clients that can perform the same state transitions and verify each other dramatically reduces the risk of a catastrophic bug on the network. In the event that a coding bug was to occur in either of the clients, the other client would remain functional, allowing the network to continue running, although at a reduced capacity. This is because the network can still operate with one functional validator client, but at a lower level of security and decentralization.
No single client will have a supermajority on the network when 1/3+ of the stake is running on Firedancer.
Using a different programming language and as few shared programming libraries as possible helps to reduce the likelihood of both validator clients failing at the same time. C/C++ was chosen for Firedancer because it allows for the creation of fast programs and makes it easy to identify bottlenecks in the code. This means that once Jump Crypto finishes coding Firedancer, Solana Labs can analyze the code and use it to formulate improvements for their own validator client.
In a recent Twitter Spaces, Anatoly Yakovenko, the founder of Solana, stated that a catastrophic bug in the validator client is what keeps him up at night, as it could potentially take down the entire network. He believes that every decentralized network should have at least two different validator clients that can verify each other in order to reduce this risk. Interestingly, he also said that he initially started coding Solana in C but switched to Rust because he didn’t have the resources to complete the project in C, even though he knew it would be faster if it was written in C.
“[Having multiple validator clients is] something that I think every decentralized network needs. They need two different clients that can do the exact same state transitions and verify each other.” — Anatoly Yakovenko
In addition to improving security and decentralization, Firedancer is also expected to have lower hardware requirements to run a node, according to the Firedancer FAQ page. This means that it may be more accessible for individuals and organizations to operate a validator node on the Solana network using the Firedancer client. In a test using synthetic load, the Firedancer client was able to process 1.2 million raw TPS (transactions per second) and 600,000 TPS after deduplication.
“Right now, Solana’s throughput isn’t limited by hardware, but by software inefficiencies.” – Jump Crypto
Sources and Further Reading
- Anatoly Yakovenko and Kevin Bowers on Firedance: https://youtu.be/PhVLHQF7PjU
- Breakpoint 2022 presentation 1: https://youtu.be/Dh6Yn2Odyr4
- Breakpoint 2022 presentation 2: https://youtu.be/YF-7duYCK54
- Twitter Spaces with Anatoly Yakovenko: https://twitter.com/i/spaces/1eaKbrBQaOQKX?s=20