KittenSwap (6) : Towards Lending+Option Pools for all ERC20 Tokens

This is part 6 of the KittenSwap series, in which we gradually present our design for the next-generation swap+lending+option solution.

Consider lending. Currently we can only use a number of high MC tokens as collateral on major lending platforms, and low MC tokens are at a disadvantage.

KittenSwap ( ) can change this. In this article, we discuss a method to build a lending+option pool for any ERC20 token, including those with low liquidity.

1. The Basic Design

Assume a low-liquidity TOKEN is trading at 1 TOKEN = 0.1 ETH on uniswap.

Assume the price-1-month (a parameter) of the TOKEN is 0.03 ETH, and the apy-1-month (a parameter) of the TOKEN is 60%.

  • Lock 100 TOKEN to borrow 100 * 0.03 ETH = 3 ETH for 1 month, and the borrower will be paying 60% apy interest (so, 5% for 1 month).
  • There won’t be any liquidation during the 1 month period. This is because the prices of low-liquidity tokens can be easily manipulated. For example, a whale can dump TOKEN to force the liquidation of all borrowers and then buy back TOKEN at a cheaper price.
  • After 1 month, the borrower can either payback 3 * (1 + 60% / 12) = 3.15 ETH to unlock 100 TOKEN, or default.
  • If the borrower defaults, or forgets to payback the loan, then the lending pool gets the 100 TOKEN.

After a default:

  • The lending pool has 100 TOKEN. It’s unwise to directly sell them for ETH in one trade.
  • Instead, the pool will create a limit order to sell 100 TOKEN, so that traders can directly buy them from the pool.
  • If you are a lender, you can also withdraw these TOKEN (according to your share of the pool), because they are a part of the pool at this moment.

Let’s think about what really happens here. The pool is offering a put option for TOKEN @ 0.03 ETH valid for 1 month. The idea is explained in “KittenSwap Preview (2)” of our Medium series.

The “apy%” here is the option premium in disguise. And in this example, the implied volatility is around 300% (which is close to the IV of ETH-USD pair these days).

2. The Risks and Rewards of Borrowers and Lenders

The best part is, we have a win-win scenario here.

For borrowers:

  • You are only paying a 5% premium to get some free capital for 1 month. And there is zero risk of liquidation.
  • If TOKEN drops below 0.03 ETH, you can default, and walk away with more ETH.

For lenders:

  • You get a nice 60% apy paid directly in ETH if the borrower paybacks the loan, which will happen with high probability, because 0.03 ETH is much lower than 0.1 ETH.
  • There is the risk of borrower default. However, if you always want to have some TOKEN in your portfolio, but only if it’s cheap enough (such as 0.03 ETH), then this is a great way to do so.

3. Determining the Parameters

Consider the price-1-month and apy-1-month parameter in the example.

For low-liquidity pairs, the price-1-month shall be mostly independent of the uniswap price (although it shall always be lower than the uniswap price).

The price-1-month can’t simply rise along with the uniswap price, because then an attacker can do the following stunt:

  • Pump the uniswap price of TOKEN to 100x using flash loan.
  • Borrow all ETH from the pool using a small amt of TOKEN, as now it appears the TOKEN is highly valuable.
  • Payback the flash loan. The uniswap price of TOKEN falls back, and all lenders are rekt.

Therefore, in the beginning, it’s reasonable to only change the price-1-month using a governance vote. And we can allow multiple values when there are more users.

Now the apy-1-month parameter is interesting, because now it is directly related to the implied volatility of the underlying pair.

In the beginning, this parameter can be determined using the usual “utilization ratio” trick in lending pools.

An even better method is to turn it into a tradable token, which is the same as creating a tradable “option token”. We will discuss it in future Medium essays.


Join our Telegram and Discord ( on ) for updates of KittenSwap.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store