RPN-1 Development Update: Drop 2 Complete
Today the Radix team is very excited to announce the completion of a significant milestone in our open source development of the first Radix public network (code named RPN-1).
RPN-1 development is broken up into four milestones that we call “drops” (more on this in a previous post). At the completion of each drop, we have a new level of functional test network that is closer to what we need for a complete and secure RPN-1 release. We’ve just completed Drop 2 of 4 – and it’s a biggie.
(I can’t resist a good 90s hip-hop reference.)
In this post we’d like to tell you more about what we’ve accomplished, and we will be coming back with a demo video for you very soon in January!
Okay, deep breath, let’s dive in.
All the New Good Stuff in Drop 2
Drop 1 was all about getting our core 3-phase consensus running on a simple test network. Everything else after that should be easy, right? Well, in a way Drop 1 was like getting the first prototype of a new engine running. It’s incredibly important, but we still need to make that engine start and run smoothly, mate it up to a drivetrain and, well, build a car around it. Drop 2 gives us the basics of a prototype car that we can test drive around town (hard track testing comes later).
Enough of the bad metaphors – what can Drop 2 actually do? In short, many of the things needed to run a stable, secure public network.
Starting from core consensus, an important addition was getting real proof-of-stake (using the DPoS method we’re using for RPN-1) running for sybil protection. This means that we had to build the ability for users to lock (and unlock) XRD tokens to “delegate their stake” to a chosen validator node to help guarantee network security. And crucially we had to build the ability for the network to then correctly select the official consensus validator node-set according to the nodes with the greatest delegated stake (rather than the pre-canned list used in Drop 1).
Of course, to make validator selection mean anything, we needed to build the mechanisms for validator nodes to configure their node, register it, and enter the network, as well as leave it in an orderly fashion. We now have a CLI (command-line interface) allowing node-runners to do just that.
Robust synchronization between nodes is another huge add. Consensus nodes constantly send messages between each other to conduct consensus and get the latest state of the ledger and network. This is easy in a simple perfect test network of a few nodes, but building synchronization that can run on the open internet with 100 nodes with unpredictable timing and that can crash or lose their connection at any time is a huge challenge. Drop 2 brings much of that robustness, including the ability for nodes to recover nicely from crashes and resync with the network.
In Drop 2 we also did a bunch of what you might call “concrete pouring” – building subsystems that we’ll need as we move into Drops 3 and 4, including:
- An improved “pacemaker” – a part of the consensus mechanism that ensures consensus can always recover and proceed onward even with major network problems
- The mechanisms for applying the different XRD fees required for different kinds of transactions
- A “quorum timestamp” mechanism that we’ll need for the network to agree when it’s time for “epoch” changes – the points in time when the validator set and other network parameters can change smoothly
- Client library updates to expose the new functionality we’re building
We even got ahead on some wallet work with an improved desktop wallet and a nice implementation of Radix on the Ledger Nano hardware wallet (which we found out is surprisingly difficult) for secure holding of XRD tokens or any token issued on Radix.
Finally, when building in so many new mechanisms – particularly those around network stability – it was time for us to build a huge amount of new testing and monitoring infrastructure. Testing is never as exciting as new features, but this new infrastructure has been incredibly valuable. It has allowed us to quickly spin up test networks of 100 nodes, run them over time across multiple continents, and catch the causes of anything that doesn’t look right. As a result we’re feeling very good about our solid foundations as we build the rest of what we need for RPN-1.
Onward to Drops 3 and 4
While Drop 2 has taken us longer than we might have hoped, we’ve also gotten ahead of some things that we planned as Drop 3 and 4 activities, keeping us on schedule overall. Our plan now is for Drop 3 to bring us to feature completeness – and that means betanet! We’ll have more to talk about here as we get closer to the end of Drop 3, but it will be an exciting time for the community to get more directly plugged in. In Drop 4 then we should be able to focus on making sure everything is rigorously tested, documented, and confidently ready for mainnet launch.
As always, we encourage everyone to follow along with our progress on GitHub and join us in the journey to create the world’s first truly global-scale decentralized ledger for DeFi! Among other things you’ll find there, you can check out our release page for the “Radix core” part of Drop 2 and an overview of our progress on the four RPN-1 drops.