TLDR; We've written a deep-dive on 🦄 UniSwap – a protocol for automated ERC20 token exchanges on Ethereum – using data from Covalent's API. Our analysis is on 1) the markets that make up UniSwap 2) the liquidity providers who stake their assets in exchange for a cut and 3) the actual users who want to exchange their digital assets. We've also open-sourced the real-time data feeds behind the analysis if you want to follow along. 😍
Introduced in the fall of 2018, UniSwap is censorship resistant, has no single point of failure and completely eliminates rent-seeking intermediaries. Unlike other for-profit centralized exchanges, UniSwap has no native token, has no listing fees and the entire source code for all smart contracts is open-source and public.
UniSwap creates a new exchange contract for each ETH-ERC20 trading pair. These contracts internally keep a reserve of both ETH as well as the specific ERC20 token. UniSwap is uniquely differentiated from other decentralized exchanges because it maintains no order book. UniSwap’s exchange contracts set prices automatically using a bonding curve mechanism known as constant product.
The data behind UniSwap
Note: We make an implicit assumption that there's a 1:1 relationship between addresses and users.
When a new exchange is created, a liquidity provider will have to deploy an initial reserve of ETH and the corresponding ERC20 token. They’ll have to make sure the ratio of the reserves reflects market prices. If the ratio is not accurate, it attracts arbitrageurs to extract easy profits.
To incentivize the liquidity providers, the protocol gives 0.3% (trading fee) of each trade that goes through the exchange in proportion to their contribution to the liquidity pool. The trading fee is added to the liquidity pool, so the pool continues to grow with each trade. The growth rate of the reserves grow in proportion to the number of trades and the size of each trade.
The proportion of a liquidity provider’s contribution is accounted for using an internal token that’s minted when liquidity is added, or burnt when liquidity is removed. This internal token is again a regular ERC20 and in theory can be used to create a new UniSwap exchange.
So, how’s UniSwap doing in practice? We’ll study UniSwap using a series of questions and a corresponding analysis. As a bonus, the analysis was completely done in Excel pivot tables without writing a single line of code.
Analysis 1: How many exchanges have been created?
Each trading pair on UniSwap is a new exchange. Exchanges are free to create and require no listing fee. Once an exchange is created, it's uncensorable and can never be taken offline. In the last six months, there were 317 exchanges created so far since the UniSwap registry was first deployed at the end of Oct 2018. Though not all of them have trades, or liquidity and the count definitely include duplicate ETH-ERC20 pairs.
|New exchanges added
|Apr '19 (incomplete)
Analysis 2: Out of the 317 exchanges, what are the top exchanges?
There are two ways to rank these exchanges – based on the trading volume and amount of liquidity staked in reserve. Each exchange has its own network effect going on – more volume attracts more liquidity in a virtuous cycle.
Two exchanges – the one for the DAI Stable coin and for the MakerDAO governance token are standouts. Something we didn't expect is to see the number of stable coins on the top list.
Analysis 3: Who are the liquidity providers?
Liquidity providers are critical for a functioning exchange. Since the liquidity from all providers is pooled together, it's interesting to see if an exchange has a handful of providers contributing the most liquidity or a lot of providers contributing smaller amounts.
|Number of providers
|Avg. reserve / provider
Liquidity providers have a little network going on. A Pareto chart perfectly describes this 80-20 behavior.
The two extremes are clearly visible – the Maker governance token (MKR) and the Basic Attention Token (BAT) have limited utility today. The Maker token is only useful during governance votes and to our knowledge, the BAT project isn't live yet. Might as well make some passive income with your holdings!
We didn't expect to see Wrapper Ether (WETH) on this list. To our knowledge, there's only one use of WETH – and that is to wrap the native ETH token so that it behaves like a regular ERC20 token. Unclear to us why users are holding onto WETH.
Analysis 4: What is the distribution of reserves for the DAI and MKR markets?
Digging further into the previous analysis, it's interesting to drill down into just the DAI and MKR markets. The previous analysis showed us that there are more DAI providers than MKR providers. Furthermore, the average contribution per MKR provider was almost 2x that of DAI providers.
A histogram of the liquidity contributions will help us look for anomalies. Sadly, this analysis wasn't very insightful. We were expecting different shapes for the two histograms – but this analysis is showing us the obvious. There's an inverse relationship between the size of the contribution and the number of providers.
Analysis 5: How many users are interacting with UniSwap?
It's equally important to look at the actual primary use-case of UniSwap – exchange of assets. First, let's look at the number of new users interacting with UniSwap each month and the total number of transactions (trades). If these numbers are growing month-over-month, it means the liquidity providers are making more each month. If not, the liquidity providers will find another avenue where they can make more profits. It's just the opportunity cost of locking up your assets.
|Unique Users (MAU)
|Apr '19 (incomplete)
Despite the growth in the number of exchanges, it appears that the number of monthly active users and transactions are dropping. It's too early to say if this worrisome trend is long-term.
Analysis 6: Are transaction sizes trending up or down?
One of the downsides of the automatic market making mechanism is that the price discovery feature isn't very efficient for larger swaps. There's price slippage (diversion between observed market prices and actual execution price) that's inversely proportional to the size of the liquidity pool.
It's interesting to see that the size of the transactions are growing month-over-month, despite the price discovery being inefficient. This behavior warrants further exploration and will be the focus of a future post.
Analysis 7: Are UniSwap's users sticking around?
Aggregate numbers like total volume or total number of users are just vanity metrics. To really understand if UniSwap is picking or losing steam, we'll need to perform a cohort analysis.
Cohort analysis answers this – if 100 users sign up in a particular month, what percentage of them come back one month after signup, two months after signup, and so on. We group users who share a characteristic (i.e., signup in the same month) and study their performance over time.
It's clear from the data that UniSwap doesn't have product-market fit yet. The average monthly retention rate of users is less than 2% (which means 98% of the users never come back.) Another possible explanation is that most of the trades are done using burner addresses, but 98% churn seems too high to account for that scenario.
We’ve only scratched the surface of the kinds of questions we can answer. Here’s more food for thought:
Besides the traders and the liquidity providers, there are also arbitrageurs. These users detect a discrepancy between prices on UniSwap and external exchanges – and make a profit while helping to close the prce gap. Can we detect these users and what can we say about how profitable they are?
The retention rates need to be further broken down by the number of transactions. Is most of the churn coming from users who have only done one transaction in their lifetime?
Liquidity providers ROI analysis – Our data feeds include the supply at the time of adding or removing liquidity. This can be used to calculate the portion of 0.3% fee that they'll receive. We need to calculate this by exchange, by timeframe and suggest optimum parameters to maximize profits.
What's is the growth of the liquidity pool over time? Are existing liquidity providers contributing more, or are the exchanges attracting new liquidity providers?
How are other liquidity protocols like Kyber affecting UniSwap?
Appendix: Covalent's raw data feeds
We're sharing the live data feeds that was used to perform the analysis. It supports the following features:
- Pick fiat currency (USD $, CAD $, EUR €, INR ₹, etc.)
- List of every uniswap exchange including ETH reserve, token reserve, sold/bought volumes and their fiat conversions
- Global Volume and Liquidity across all exchanges broken down by date
- Volume and Liquidity for a particular exchange broken down by date
- Liquidity actions (AddLiquidity, RemoveLiquidity) for a specific provider by date
- Liquidity actions (AddLiquidity, RemoveLiquidity) for a specific exchange by date