Radix Engine and Ledger: The Road to Adoption
This is part 1 in my series on Radix technology (see parts 2 and 3). I’ve been working closely with Radix and am excited by the approach they are taking to solve many of the real-world DLT development problems I’ve written about in the past.
As we approach our open source release of the Radix Engine, it seemed a good time to put all of this in to context. How do all these technology pieces relate? How do they help developers build applications? How does this get us to the Radix vision of offering anyone anywhere friction-free access to the digital economy on a decentralized public network?
Barriers to DLT Adoption
The elephant in the blockchain/DLT room is adoption. Despite all the ICO-funded blockchain platforms and the media coverage of Fortune 500 companies talking about blockchain, other than cryptocurrencies, we see only limited adoption of the technology in deployed, business-as-usual applications. Dig just below the surface of the press releases and you almost always find that blockchain platforms process very few transactions that aren’t driven by token speculation, and that announced DLT applications are little more than experiments and trials.
The full DLT revolution that we all expect seems to be on hold. Why?
No matter how great the potential of a technology to create great strides forward, developers will resist if it comes with even small steps backward from what they’re used to. For a developer today, building real applications with DLT carries many compromises. In our years talking to developers and businesses — large and small — about their needs, we’ve discovered three barriers to DLT adoption outside of the crypto space:
- Buildability — Building and deploying anything more than the simplest applications using DLT today is prohibitively confusing and complex. Smart contract development is highly specialized, and bugs are both difficult to catch and catastrophic for trust-critical DLT applications.
- Scalability — Committing to a DLT platform is a significant decision and there must be confidence that it can handle an application’s foreseeable demand. The throughput of public DLT platforms is notoriously low, and even private DLTs can’t confidently provide the kind of headroom many applications may need in the future.
- Maturity — We hear over and over that today’s decentralized blockchain platforms fail to recognize the realities of data privacy and incremental deployment, and that today’s private DLTs fail to provide much value beyond niche databasing. DLT needs to address business problems head-on with a mature combined private/public network solution.
Radix is removing these barriers, finally giving developers the tools they need to build better applications and systems that have real-world impact. We are bringing those developers to Radix by giving them a mature solution that lets them begin solving business problems today.
Radix Engine and Radix Ledger
Similar to blockchain or other DLT technologies, Radix is ultimately a piece of software run on nodes (typically different computers) that together make up a network; it is an inherently distributed system, whether those nodes are run within a company or on the open Internet. Making use of a Radix Network means communicating with a node. Radix makes this easy by providing API Libraries in Java and Javascript that can be integrated into a developer’s application.
The Radix Engine and Radix Ledger are the two layers that make up the software running on every node. In concept, this is similar to other DLT platforms like Ethereum or Hyperledger that have some kind of application layer (typically a virtual machine that runs smart contracts) and a ledger layer (typically a blockchain).
To get the optimum performance from both, the Radix Engine and Radix Ledger were built from scratch; combined, they provide a truly buildable and scalable DLT application platform.
The Radix Engine: An “asset-oriented” application layer. Instead of running smart contract code to implement application functionality, it contains secure pre-made building block components that are customized, issued, and managed via the Radix API.
The Radix Ledger A unique, sharded DLT design that validates transactions and operations on a per transaction basis, and allows full state-sharding. Rather than committing a sequence of monolithic blocks, a Radix Engine transaction allows the Radix Ledger to safely process transactions in parallel meaning that it can achieve extremely high throughput and concurrency.
Radix’s breakthrough was in designing these layers with a focus on real-world application needs. They support each other’s strengths and allowed the Radix team to solve problems of buildability and scalability that blockchain and other DLT technologies have struggled with for over 10 years.
Our open sourcing of the Radix Engine is our first step toward providing full transparency of the Radix platform codebase to our community.
Radix Buildability
The Radix Engine’s asset-oriented approach is designed specifically for transactional systems. In the end, developers want to define the critical assets of their business (users, money, packages, certifications, products, property…), how those assets are related to each other, and how they are allowed to transact. The Radix Engine’s pre-made components are designed to make it easy to model exactly these kinds of assets and rules.
Once the assets are configured and created, the Radix Engine automatically makes sure only valid transactions are possible and the Radix Ledger in turn automatically resolves conflicts between valid transactions and safely records the results. This means that the security guarantees for individual transactions are inherent to the platform, not a function of complex smart contract code that the developer must generate.
Creating assets and conducting transactions on Radix is handled through simple API calls via libraries — no specialized smart contract code, no error-checking to go wrong. With minimum time and risk, using a language they use every day, developers can rapidly get from a concept to a Radix-based transactional system that serves as a valuable source of truth for a business.
We will cover more detail on building applications using the Radix Engine in a later post.
Radix Scalability
So far, DLTs have generally struggled to deliver significant throughput and concurrency. Private DLTs tend to top-out at thousands of transactions per second, and truly decentralized public DLTs at more like tens of transactions per second. A significant reason is the use of a single global ledger (often blockchain) where everything must be ordered and recorded. “Sharding” approaches have been proposed to increase throughput, but they fight against the need for shards to ultimately coordinate to create a collective “global ordering” of everything that has happened.
One of the primary reasons for the need of “global ordering” is that it is required for virtual machine-operated smart contracts. Each smart contract represents a sort of black box operated by the network and so the results of what happens inside that box must be ordered against everything else on the network that might be related. The Radix Engine’s asset-driven approach, however, means the network can see exactly what each single transaction is related to.
The Radix Ledger is designed to take advantage of this fact. It uses a unique “static sharding” approach where transactions are spread across a virtually unlimited number of shards, with shards only needing to connect where needed for each transaction. This unlocks Radix’s ability to achieve millions of transactions per second — while still ensuring that every transaction is processed securely and correctly within seconds.
Radix Maturity
For Radix to be adopted en masse by developers, we must provide them with a platform that provides a mature solution to their problems today — and a compelling roadmap into the future. Most DLT platforms seem to fall into one of two ideologically driven camps: either DLT applications must be fully decentralized-or-nothing, or DLT is just a new kind of database with a lot of surrounding hype. Both viewpoints miss the point for developers.
Just as today’s global communications infrastructure includes both the public Internet and private TCP/IP networks, the future of DLT adoption includes not just public networks but private ones as well — ideally using the same underlying protocol. The Radix vision therefore includes not just creating a global-scale public DLT network, but also providing a superior solution for private DLT networks today.
Why are private DLT networks needed today? There are many reasons a business might see public networks as unsuitable and prefer a private DLT network; such as necessary data and transactional privacy, infrastructure control, and minimized deployment risk. Even a business that sees the transformational advantages in public network usage — such as trustless interoperability of assets and greater ownership and transparency for users — typically will prefer to only selectively use a public network where needed, or to only migrate to a public network after proving out an application privately.
Radix provides a mature solution that delivers significant value in private DLT applications today, while creating a seamless path to a global-scale public permissionless network. The Radix Engine’s development approach allows businesses to easily use Radix for much more than time-stamped data logging. Developers can have the confidence that Radix will keep up with their scalability needs for those private deployments, and looking to the future, they can be confident that their assets and applications can begin to migrate to the best public DLT network — using exactly the same tech stack.
Originally published at https://www.radixdlt.com on November 14, 2019.