First Impressions of Radix Engine as a Platform for a Global UBI
I’ve been interested in helping develop a decentralized universal basic income for some time (sometimes called “CryptoUBI”). At first glance it might seem like a blockchain challenge, but the scalability demands of such a technology promptly rules out centralized ledgers.
This winter break I wanted to explore a blockchain alternative and I found Radix Engine, a pretty active project that just released a smart contract language (Scrypto) for developers to play around with.
This is a tad long so each section can be read separately and has a TLDR.
Scalability
The napkin math for scaling a global digital currency is pretty challenging. In 2030, the world population is estimated to be 8.5 billion people. If each person makes 10 transactions a day, that works out to be pretty close to 1 million transactions per second (tps). To put that in perspective, bitcoin can process 7 transactions per second. Visa has claimed 24k tps but that is disputed and could be as low as 1700.
Ethereum can currently handle 15 tps and after all the scalability upgrades in the works hopes to reach 100,000 tps. With L2 rollups adding a few orders of magnitude the network could handle the 1 million tps needed for a currency. There are some great UBI projects already started on Ethereum (check out Proof of Humanity and Good Dollar) and perhaps they can scale into global solutions with the network. There will be some big hurdles though to reach the scalability needed not only with the core developers evolving the L1 blockchain and L2 rollups, but also the usability of ordinary people managing assets on so many separate networks.
Enter Radix Engine. A predecessor to the current design auspiciously achieved 1 million tps in a test that replayed bitcoin transactions on a global network. This test was not the final form of the Radix Engine and was doing relatively simple transactions, but it provides some hope that it could live up to the claim of “practically infinite ‘linear’ scalability”. There are other p2p platforms and blockchains that claim throughputs up to 100k tps, but very few are designed for linear scalability where the network could conceivably grow to any size without slowing down are becoming cost prohibitive.
The difference in scale in these different approaches makes me think of this picture:
To the moon? We need Earth sized scalability.
TLDR: Radix Engine is designed to support enough transactions for a global UBI, but won’t be fully implemented until at least 2023.
The Case for Native Identity
Another big challenge for a global universal basic income is making sure each person can only create one account to receive their income. This identity problem is sometimes called a Sybil attack (Sybil was a book about a woman with dissociative identity disorder). Sybil resistance is tied to the original proof of work system used in bitcoin and also plays a part in proof of stake and perhaps will play a role in future “proofs” for L1 chains.
With proof of stake algorithms, there is a tendency towards plutocracy because you need wealth to grow wealth. DAOs that use tokens for governance have already begun experimenting with quadratic voting: instead of voting directly with tokens, voting is based on the square root of tokens each person holds. This gives some advantage to accumulating tokens but prevents whales from exerting too much influence. It also introduces a Sybil problem because without proving an account’s identity, a whale could spread their tokens across multiple accounts and maintain their voting power.
What if L1 chains took a similar approach instead of normal proof of stake? It would incentivize more different people to stake coins, maybe even providing a small amount for gas to people just for verifying their identity so people could help secure the chain without being asked to pay. That would be a great way to bring more people into a network! When bitcoin first launched, anyone could mine bitcoin and join the network without making an investment first, perhaps verifying your identity could allow PoS networks to include ordinary people in a similar way.
Of course decentralized identity is a tough problem and it is unlikely that a secure enough solution could be built in the near future. I’d combine the jury system and game theory of Proof of Humanity with the graph analysis and relative privacy of Bright ID. If an L1 chain provided the functionality it would be a big help for creating a universal basic income.
TLDR: native identity would be beneficial for a PoS chain and would solve a key challenge for UBI, but it is probably too hard to solve in the near future.
Update: I’m informed via twitter that Radix plans to make an identity service called “Instapass” available to dApps. This appears to be a centralized solution but could be a useful bridge for building a UBI until someone can figure out a decentralized solution.
Native Tokens
Scrypto is built around a notion of “native tokens”. I was initially skeptical that native tokens would mean that the platform is too focused on the DeFi use case and the token system would stifle innovation.
On Ethereum, tokens are a standard interface for smart contracts (ERC-20) that are mostly implemented the same way, but the interface allows for flexibility to create some interesting innovations. There are streaming tokens (the $UBI token is an example), standards to send tokens that let you grant tokens off-chain so the recipient pays the gas, even tokens that target malicious accounts and self-destruct if hacked. This flexibility is also a double edged sword since it has been used to implement sneaky rug pulls in certain tokens.
So I was worried that the native tokens would stifle innovation, but after playing with Scrypto and getting a better understanding of how the platform is built, it seems native tokens are necessary for the scalability the system is designed to handle. Tokens have also been generalized to “resources” so perhaps there is some shift from purely DeFi orientation. Over time standards for special tokens will be built around the native tokens the same way ERC-20 emerged as a standard on Ethereum.
Unlike most Ethereum competitors that directly support Solidity, Radix Engine has its own model that is necessitated for scalability. This choice to focus on a novel solution instead of just tweaking parameters and letting anyone just copy functionality over is pretty opinionated and shows the developers are serious about scaling their system. I also like that it is built with an established language (Rust) instead of starting from scratch.
TLDR: I was initially skeptical of native tokens, but after looking closer they make sense.
Things about Radix Engine that surprised me and might surprise you
Scrypto is a pretty light wrapper around the Rust programming language. Not sure why it is marketed as a new language. Maybe it is just me who’s pet peeve is folks who feel the need to make a new programming language for every problem. It is reassuring that there is a mature language underpinning the technology. Also, everything compiles to wasm so I wonder if it will be possible to support other languages.
Radix is marketed as a DeFi platform, but to me it is a peer to peer application platform with persistent distributed resources. Not sure if I would consider a currency “DeFi”, but a true global currency would be plausible based on the platform if Radix can live up to its promises. They also have just released a demo of a twitter clone (unreliable link to test site) based on their internal test engine.
Another thing I wasn’t expecting was the developer royalties system. Instead of gas fees only going to support the validators of the network, a slice also will go to all the smart contracts involved in each transaction. This seems like an interesting way to reward useful smart contracts and encourage innovation.
Lastly and perhaps least surprisingly, the production version is still far from the capabilities of the white paper(s). Radix Engine at the time of this writing is a delegated proof of stake unsharded DLT with 100 nodes (50tps) and native tokens but no smart contract functionality. A preliminary release of Scrypto was just made available to the public for running locally with plans to go to production this year (2022). Full scalability is planned for the following year (2023). I take these plans with a big grain of salt.
TLDR: Scrypto is basically a Rust api, the Radix Engine can do more than DeFi, it will include native royalties for developers but won’t be fully implemented until major releases in 2022 (smart contracts/royalties) and 2023 (scalability).
Summary
If Radix can live up to its promises, it will be a great platform for implementing a global universal basic income. It would solve the scalability problem, still leaving the challenges of adoption and decentralized identity to be built on the applicaton layer of the platform.