Yield Swap Protocol

Yield Swap is a Decentralized Exchange that allows users to swap variable and fixed yields.

Description

With Yield Swap we're building a DEX for yield. It's like a Uniswap, but instead of swapping assets, users can swap floating and fixed yields. For example, users can trade on falling or rising yields. Yield Swap brings so called interest rate swaps from TradFi into the DeFi world and uses an automated market maker to facilitate trading. Yield Swap is more capital efficient than comparable solutions, because it uses a collateral-based design to settle payments, hereby enabling users to also gain exposure to synthetic yields (i.e. without having to have access to the actual interest bearing instrument). Yield Swap fills an important gap in DeFi by providing a market to transfer yield risks, something that didn't exist in DeFi before. This enables several use cases, such as "yield shorting" or general speculation as well as hedging and also easy integration with 3rd party lending protocols to offer fixed yield products. Users can also provide funds to Yield Swap's automated market maker and receive a share of the generated profits.

Yield Swap Protocol showcase

How it's made

Yield Swap is built in Solidity, deployed on Mumbai and Kovan Testnet. The Yield Swap Protocol currently consists of 3 components: ------- Automated Market Maker ------- We've implemented an automated market maker (AMM), that dynamically adjusts the fixed rate offered in payer and receiver swaps based on a preconfigured sigmoid curve. The AMM is currently restricted to only one type of underlying yield/rate (i.e. aUSDC) and tenor (10 days). However, the plan is to scale this up and support additional underlyings and tenors in the future. The individual swaps are currently not transferrable, but the plan is to structure these as ERC-721 in the future. ------- RateOracle ------- We've implemented a rate oracle contract for the Aave v2 lending pool, from where we retrieve the normalized income information for aUSDC etc. The oracle currently supports one rate per underlying per day. The effectively realized yield is then determined by comparing the normalized income between any given two timepoints. ------- Liquidity Pool ------- We've implemented a liquidity pool, that allows liquidity stakers to provide funds to the AMM and in return receive a share of the overall generated profits as an ERC20. The liquidity pool is currently structured as a kind of funding vehicle, with a minimum fundraising period and minimum target funding amount. Once the fundraising period is over and enough funds have been provided, the liquidity pool then forwards the funds to the AMM, where they can be used for a predefined liquidity provisioning period. ------- User interface ------- We've also implemented a basic React-based user interface, that uses Metamask to confirm and send transactions. Contract addresses are: ------- Kovan ------- *AutomatedMarketMaker**: 0xF9d5A9F23a3D7c095e46cD73BCa5E177CE2334b7 *AaveRateOracle**: 0x3c19e6a4f3663eca2b7d64d3968207b6e8bda7b0 *LiquidityPool**: 0xc6cb1f6340e8b166ada7a136f379c509b407b57f ------- Mumbai ------- *AutomatedMarketMaker**: 0xc5de696C3801BaFA362C7456930E53B0a0eB9Bb5 *AaveRateOracle**: 0x4b848789f6994d24cAEfaB187fD6c8bE3E0B97cf *LiquidityPool**: 0xF6C2037e97cd8d49Ec3e78306F257EeDA21901fc

Technologies used

AaveCirclePolygon