It has been long three weeks since the announcement of Radex - a decentralized exchange for ERC223 tokens. Today, I'd like to share some more information about our progress, our motivations, and what possibilities Radex opens for developers, day traders and cryptocurrency investors.
Radex can be broken down into two components built to work together. The first component, and arguably the most important one, is the Radex Smart Contract. This smart contract will be deployed to the Ethereum blockchain, and will act as a decentralized order book with a simple set of APIs to interact with it. The smart contract will keep track of the current state of the order book, as well as act as a robust distributed log.
What is a distributed log? It's one of the most powerful design patterns for building realtime software systems. I will not be able to describe it better than the good people at LinkedIn and Confluent. These articles are very succinct and I encourage everyone, regardless of whether you know how to code or not, to at least skim through them.
This abstraction is so powerful because it creates a simple and reliable source of truth. In our case, the ethereum blockchain ensures that not only does this log function correctly, but that it's also publicly accessible and auditable. Anybody who can access Ethereum blockchain can consume this log into their database of choice or even into an Excel spreadsheet and get a public record of all transactions, their time and amount, and what the full order book looked like at that time. This is in contrast to centralized exchanges, such as Poloniex, Kraken, GDAX, etc., who only provide the current state of the order book, significantly limiting the power of analysis that can be performed on the <market data. Having access to the full order book available at all times at no cost will be a huge asset for building algorithmic trading bots and studying market behavior.
What are the advantages of this architecture?
Full transparency - The order book and trade history are publicly available on the Ethereum blockchain.
Multiple applications on the same order book - The publicly owned order book allows you to build various kinds of applications on the same realtime data feed. Analytical dashboards, decentralized ShapeShift widgets, trading signal bots - all of them in perfect sync with the exchange itself.
We are building Radex following the Simple, Lovable, Complete methodology.
Here are the stages that we've identified for the Radex Smart Contract:
- STN / ETH exchange
- Exchange any ERC223 token pairs (plus ETH)
- Optimize gas usage
- Make market orders in one transaction
The first two bullet points are pretty self explanatory. The third bullet point means that we will look into low-level EVM assembly implementations of the hot code paths and will continuously drive down the gas prices even further. It doesn't mean that the first contract will have exorbitant gas prices, it just means that we will optimize the hell out of Radex, and we will welcome contributions from other developers to help us with our mission.
The last bullet point is the one that intrigues me the most. If you look into ERC223 contract specification, you'll notice that there are two transfer methods: one that's ERC20 compatible, and one that allows you to add an extra parameter. It will take a little bit of time to implement, but eventually Radex will allow you to trade right from your wallet, without having to deposit funds into the smart contract. This feature will greatly simplify the trading workflow and will enable us to create a decentralized ShapeShift on top of Radex.
In order to ensure that your funds are safe at all times we are committed to do the following:
- Open source Radex Smart Contract. We will publish it on our github, both for smart contract developers to learn from, and for the community to be able to inspect and verify its correctness.
- Have 100% statement and branch coverage. Not only will we have an extensive test suite, we will set up a continuous integration system that runs tests on every code modification, and we will hold our code to the highest quality standards.
As far as Radex.js goes, we'll be continuously working on it, perfecting it, and integrating it into Rados based on our vision and your feedback. If you have questions, feature requests, or suggestions - leave us a comment under this post and one of our team members will get back to you with an answer.
One more thing...
Let's talk about the elephant in the room. Building and maintaining an exchange takes up time and effort, not to mention the server costs, so exchanges charge fees for executing trades. Let's take a look at the fees of popular exchanges:
So what fees will Radex charge?
- Deposit funds: ~0.0003 ETH flat fee for the transaction, paid to ethereum miners.
- Withdraw funds: ~0.0003 ETH flat fee for the transaction, paid to ethereum miners.
- Maker fee: 0%. Market makers bring liquidity to the market, so naturally we want to be competitive to other exchanges and reward market makers for participation.
- Taker fee: 0.1%, paid to the market maker.
That's right! We do not feel comfortable charging people for trading on Radex. The real heroes are Ethereum miners, who keep the blockchain running and make building Radex possible, and market makers, who bring liquidity to the market and eliminate price inefficiencies. So instead of taking a cut from every trade like all other exchanges do, we will charge market takers the smallest fee for removing liquidity from the market, and 100% of that fee will go towards the market maker whose order got executed as a reward.
We think this is the most fair approach, and this is how decentralized exchanges should operate. Instead of scalping the traders, let's build an exchange that traders will love using, that they are rewarded for using.
The best news? Radex is already live!