This repo is not production ready, and only serves as an example for custom curves on v4
With recent changes to v4, Hooks can swap on custom curves!
v4-constant-sum
implements constant-sum swaps (x + y = k), allowing for an exact 1:1 swap everytime
-
To faciliate a custom curve, we need to skip the concentrated liquidity swap. We'll use the NoOp pattern, allowing us to implement the constant-sum swap.
-
The hook will hold its own token balances (as liquidity for the constant-sum curve)
-
The
beforeSwap
hook will handle the constant-sum curve:- inbound tokens are taken from the PoolManager
- this creates a debt, that is paid for by the swapper via the swap router
- the inbound token is added to the hook's reserves
- an equivalent number of outbound tokens is sent from the hook to the PoolManager
- the outbound token is removed from the hook's reserves
- this creates a credit -- the swap router claims it and sends it to the swapper
- inbound tokens are taken from the PoolManager
NOTE: The tests are dependent on v4-core#430
Additional resources:
v4-template provides a minimal template and environment for developing v4 hooks
v4-periphery contains advanced hook implementations that serve as a great reference