Skip to main content
Automated liquidity management protocol for Uniswap V3. Provides vaults that actively manage concentrated liquidity positions with rebalancing.

What it offers

  • addLiquidity: Add liquidity to an Arrakis vault via router (tuple params)
  • removeLiquidity: Remove liquidity from vault via router (tuple params)

Notes

  • Manages UniV3 concentrated liquidity positions automatically
  • Both addLiquidity and removeLiquidity take struct/tuple params via the router
  • Approve both token0 and token1 to the router before adding liquidity
  • Vault shares represent proportional ownership of the managed position
  • gauge param can be zero address if not staking in a gauge
  • The vault itself does not report its underlying amounts; ArrakisV2Helper’s totalUnderlying(vault) does

Its names in a program

On Ethereum, Arrakis is a namespace: its contracts need no import.

Deployments

ABI

ArrakisRouterABI

import ArrakisRouterABI from "./protocols/arrakis/ArrakisRouterABI.json"; Speaks for: router.
  • addLiquidity((uint256 amount0Max, uint256 amount1Max, uint256 amount0Min, uint256 amount1Min, uint256 amountSharesMin, address vault, address receiver, address gauge) params) payable returns (uint256 amount0, uint256 amount1, uint256 sharesReceived)
  • removeLiquidity((uint256 burnAmount, uint256 amount0Min, uint256 amount1Min, address vault, address receiver, address gauge, bool receiveETH) params) returns (uint256 amount0, uint256 amount1)

ArrakisVaultABI

import ArrakisVaultABI from "./protocols/arrakis/ArrakisVaultABI.json";
  • totalSupply() view returns (uint256)
  • balanceOf(address account) view returns (uint256)
  • token0() view returns (address)
  • token1() view returns (address)

Next steps