Updated 292 days ago

Eno Dex

Completely Async and Scalable DEX: Swap, Earn, and be a Market Maker

  • Crypto / Web3
  • Ethereum
  • Uniswap
  • Defi
  • ICP

Having both worked in Fintech, we had an idea of what we wanted in a Decentralized Exchange.

When we heard about the scalability and asynchronous nature of the Internet Computer, something that sets it apart from other blockchain systems, we decided to imagine what an exchange with multiple asynchronous actors would look like. We arrived on a model with one central exchange with multiple "brokers" around it, and Eno Dex was born. Well, this is a long, technical post, and we hate to ramble. TL;DR: scroll to the bottom links and try out our dApp.

In short, Eno Dex is a Decentralized Exchange that allows users to swap tokens, provide liquidity, trade using limit orders, and act as a market maker.

A user signs up to the exchange and is assigned a broker. The user can submit limit orders to the broker, which are then executed by the exchange after a synchronization round.

Users can also lock liquidity into a Liquidity Pool. Brokers have access to this liquidity, which is available for swapping at prices determined by the bid-ask curve of the limit orders in the exchange.

This way, users are also able to instantly swap tokens with any broker, without having to wait for any exchange synchronization.

As an additional incentive for market makers, users who submit limit orders that are posted to the order book (they create a market) receive 0.03% in rebates when their order is matched.

How we built it We had Rust experience but had never built an Internet Computer canister. However, we were quickly up to speed after attending the excellent Supernova developer workshops.

We used Rust to code the canisters, and React to code the frontend.

After several iterations we now have:

a central exchange canister in charge of synchronizing state and executing limit orders. many broker canisters in charge of taking limit orders, distributing order payouts, and immediately executing swaps. a liquidity pool canister in charge of keeping track of liquidity. a liquidity pool worker canister where users actually deposit their liquidity. It has an anti-spam mechanism to ensure the exchange canister can constantly and reliably communicate with the liquidity pool canister.