Decentralized Exchange

This example walks through a set of Ethereum smart contracts that would allow users to trade foreign tokens (like BTC, ZEC) on the Uniswap exchange.

In this example, we will explore using RenVM interoperability to implement a set of smart contracts that allow traders and liquidity providers to trade BTC and ZEC on the Uniswap exchange. The full source code for this example is available on GitHub.

New adapters interacting with the existing Uniswap interfaces


UniswapFactory and UniswapExchange are the contracts written by the Uniswap team, and are exact copies of the contracts deployed on Ethereum Mainnet.


Uniswap contracts are written in Vyper, so to use them in Solidity we need to write compatibility interfaces. IUniswapFactory is the interface of the UniswapFactory, and IUniswapReserve/IUniswapExchange are the interfaces for the UniswapExchange.


Uniswap Adapter contracts use the Uniswap interfaces to talk to the Uniswap contracts. These contracts adapter RenVM to the exsiting Uniswap contracts, allowing users to trade foreign blockchain tokens (e.g. BTC/ZEC) without needing to wrap/unwrap the Ethereum representation of these tokens.