Unified liquidity, accessible anywhere.
Dove is our take on the decentralized AMM [dAMM] idea that was formulated by Brecht Devos and Louis Guthmann. You can find their original post here.
The liquidity and pricing logics are separated. Liquidity is on L1, trading happens on L2s.
It also means that for any given pair, multiple AMMs on different layers will share the same liquidity, it’s amplified. It exposes the LPs to potentially much more trades, thus more fees. It’s a more efficient use of liquidity and helps to solve the liquidity fragmentation problem.
There are two directions when it comes to syncing ; L1→L2 and L2→L1.
🚃 L1→L2
The L1 contract [called Dove] sends a message to a L2 AMM with its reserves for a given pair. It’s used to bootstrap the AMM but also syncs it back with an accurate state.
🚌 L2→L1
This should be executed regularly. The Pair needs to tell Dove that “OK, I had that much trading happened here, I need to checkpoint with you so my traders are safe and LPs make money!”.
It does so by, at once, bridging back to the L1 the tokens that were traded in, but also how many tokens the dAMM has to put aside for the L2 traders [explained below].
This syncing will impact the reserves of the dAMM such as follow ;
reserve = reserve + bridgedTokens - (newMarkedTokens - markedTokens[L2]);
Swapping tokens are a bit particular. Because the liquidity is on L1, when you swap tokens, you swap IN the bridged token and get vouchers as the out token.
For instance, if you should have gotten out 100 USDT, you will get instead 100 vUSDT.
“But how do I get the underlying token then??” you ask. It’s simple, if the AMM you traded on has synced to the L1 and the amount of “marked” tokens is sufficiently high [compared to your voucher balance], you can initiate a voucher burn which in exchange of burning your vouchers, transfer the exact same amount of the underlying token to your address, on the L1.