Solana milestone: A multinode testnet
As of June 1st, Solana released its first multinode test net. Check out the full release notes for more details.
What is the multinode testnet?
A blockchain network with multiple independent nodes is a fundamental feature of any decentralized, trustless blockchain solution. It indicates that a digital ledger is what the nodes in the network agree it to be and not what Solana or any one organization dictates it to be. One node broadcasts what it believes the ledger contents should be and the others vote to validate it. Each block in the ledger is “finalized” after a ⅔ + 1 supermajority vote in a process called Byzantine Fault Tolerance (BFT). With BFT, the ledger can progress so long as less than ⅓ of the network is acting maliciously.
Why is this important?
While a multinode testnet is an important milestone in any blockchain project, it’s especially significant to a high-performance blockchain like Solana. The number of nodes may affect TPS (transactions per second) performance and will always affect finality times. The Solana architectural theory enables adding nodes without causing the TPS to degrade and ensures finality times that would only increase with the logarithm of the number of nodes. A large multinode testnet will prove the math holds up in practice.
Why focus on getting this working vs. achieving your high throughput goal of >700,000 tx/second?
Risk mitigation. 710,000 transactions per second isn’t valuable unless you can transfer the ledger to all the nodes on the network as fast as you can produce it. In hindsight, we’re very happy we prioritized that work when we did, because it turns out that continuously transferring 710k transactions per second across a gigabit network is no small feat! We had to architect a solution for just that — something we call Avalanche. Without Avalanche, our maximum throughput would be the quotient of 710,000 and the number of nodes. So with just 4 nodes (the minimum number of nodes required to run BFT) we’d already be reduced to a maximum throughput of 177,500 TPS. With Avalanche, on the other hand, Solana can theoretically process 710,000 TPS with up to 500,000 nodes.
What were some of the challenges of this release?
- Dropped packets. We’re trying to push every piece of hardware we have to its limits. With everything running full throttle, we see network queues overflowing and OS device drivers dropping packets to remain responsive.
- Thread prioritization. Some stages in our software pipeline share the same underlying CPU cores and memory. We’ve been running into spatial and temporal locality problems. We call them gremlins — a class of problems that can’t be debugged in isolation and that only show themselves when we put the whole system together.
Why is your approach better than what other blockchain protocols are doing?
Most other blockchains are using a technique called sharding to scale up, but keeping each shard secure requires the same number of validators. Every time they add a shard, they reduce the security of their network. And while they are able to claim very high TPS rates, those claims are analogous to a company like Cisco summing up every gigabit network router in the world and saying, “look, we can move a million bajillion bits per second!” If you asked those blockchains what their cross-shard performance is, you wouldn’t be impressed.
What will this enable in terms of Solana’s use cases/applicability down the road?
A common question is, “if NASDAQ processes ~500k TPS, why build a blockchain that will support 710k?”
It’s because we have no desire to see Solana used by just one application. What are the number of TPS we will need when dozens, hundreds, or thousands of applications all use Solana as their backend? By belief is that 710k TPS is just the beginning and a growing demand for 28.4m TPS on a 40 gigabit network is just around the corner.
What’s next on the tech roadmap?
- Making the testnet public so that anyone can interact with it.
- More nodes. We’re only making use of 2 tiers in our Avalanche architecture. We expect that to be at least 3 tiers by mainnet and with far more nodes at each tier.
- More smart contracts! So much to say here that we’ll save it for another post.