Radvocate technical challenges propositions
First things first! Before going forward please make sure you’ve read our Radvocate program blog post and signed up for it!
Okay, ready? Then let’s move forward…
To get a better understanding of what is needed to complete these technical tasks, you’ll need to understand what the Radix Engine is — https://www.radixdlt.com/post/radix-engine-a-simple-secure-smart-contract-alternative/. This article about composability might also interest you.
Once you’re ready, take a look at our challenge propositions!
Non-fungible tokens allow representing unique objects on the ledger, things like concert tickets or CryptoKitties, as opposed to fungible tokens like a currency, where all tokens are identical. They consist of a token definition, which defines a class of tokens with a set of properties, and individual uniquely identifiable instances of the tokens.
Implement non-fungible tokens in the Radix Engine, following similar patterns as the fungible tokens. We want to be compatible with the ERC721 standard for non-fungibles to the extent that is possible i.e. anyone should be able to take their token defined on Ethereum and translate it over to the Radix ledger with minimal changes.
A liquidity pool based decentralized exchange(DEX) is a system which allows swapping between a pair of tokens without the need for an order-book. It is based on a single simple formula x*y=k, where x and y are the amounts of tokens in the pool, and k is a constant. All operations on the pool keep k fixed, the price for the exchange is determined by the amount of tokens in the pool. Uniswap is one such example https://hackmd.io/@Uniswap/HJ9jLsfTz?type=view
Implement a liquidity pool functionality in the Radix Engine, which allows anyone to create an exchange pool for any pair of tokens, provide and remove liquidity, and of course perform exchanges.
Pooled collateralized lending
Another cornerstone of the DeFi ecosystem is collateralized lending, which allows users to lend and borrow assets in a decentralized fashion, while using some other asset as collateral, which can be seized in the case that the outstanding debt exceeds the collateral requirements. An example of this is the Compound protocol https://compound.finance/documents/Compound.Whitepaper.pdf
Implement a decentralized pool-based lending protocol in the Radix Engine. This project requires an oracle — an external feed of the different asset prices. From a tech point of view, an oracle is just some account publishing regular updates on the ledger, therefore for this project just implement a simple placeholder oracle in whatever way you’d like.
Synthetic assets ( decentralized stablecoins )
A synthetic asset is a type of an asset that mimics the value of a different asset. For example, stablecoins are a type of a synthetic asset which track the value of a currency e.g. US Dollar. They can also represent other cryptocurrencies, stocks, indexes or really anything with a price feed. These assets can then be used in the rest of the ecosystem.
One implementation of this on the Ethereum platform is the Synthetics project.
Implement a version of this in the Radix Engine, a minimal version would support USD as the tracked asset.
This project requires an oracle — an external feed of the different asset prices. From a tech point of view, an oracle is just some account publishing regular updates on the ledger, therefore for this project just implement a simple placeholder oracle in whatever way you’d like.
Scripting system that allows building DeFi projects
Radix Engine takes the approach of providing read-made building blocks for the most common use-cases of a decentralized ledger — tokens and messages, and many more in the future. While this enables rapid and secure development of many use-cases, it is not well suited for building DeFi applications, where it is essential that at least some of the logic happens on-ledger in a decentralized fashion and the essential building blocks are still being invented. Some sort of a scripting layer would enable far more flexibility and experimentation, and combined with the building blocks allow for fast and easy development of most DeFi applications.
Build a scripting system in the Radix Engine which would enable anyone to build DeFi projects, like liquidity pool based exchanges, decentralized lending pools and collateralized stable-coins on the Radix platform. Ideally it would allow chaining multiple operations together atomically — e.g. take out a loan and swap it for something else using a liquidity pool, all in a single Atom. This would operate by taking in Particles on the ledger, performing some operations on them, and outputting some other Particles.