π° Going deeper into the Alluo protocol rabbit hole
Last updated
Last updated
Weβve built Alluo to manage this process and ultimately want it to work completely automatically without the need for humans clicking on buttons.
Today weβre a good way down this road, thanks to Three core elements:
vlAlluo.sol - Enables people to lock their $ALLUO and participate in governance, (initially the voting of the strategies) and earn extra rewards for locking.
For a user to be able to vote, they must have locked their $ALLUO before the snapshot vote is live, otherwise, they wonβt be able to vote. The locking period is currently set for 7 days, with a 5 days withdrawal period. i.e. it takes 7 days for tokens to be locked and 5 days for tokens to be unlocked.
The 5 days withdrawal cooling period will in the future be used to automatically slash bad/harmful voters in the protocol and protect from governance attacks.
voteExecutor.sol - allows the multisig signers to execute the Strategies that have been voted on by the $ALLUO lockers as part of the weekly vote vote.alluo.com The voteExecutor.sol is tightly integrated with our exchange.sol described below to allow us to take full advantage of Curve/Convexβs great variety of investment opportunities.
exchange.sol - a liquidity-optimised routing engine allowing us to exchange any pair of assets via any liquidity protocol in the shortest route available in a fully decentralised manner.
The exchange is made up of a few elements:
Adaptors: smart contracts that hold the logic on how to interact with different liquidity pools. For example, how do you exchange WETH to DAI on Uniswap, or how do you enter the 3CRV pool using USDC.
Routes: contain the order in which to use Adaptors to achieve any given exchange between any given token. This can be optimised for gas usage or liquidity, the currently implemented routes are optimised for liquidity. For example, to exchange DAI for WETH:
Major/Minor coins: Major coins are coins that are used by most liquidity pools to exchange tokens (ie. ETH, USDC, DAI, FRAX, 3CRVβ¦). Minor coins are smaller tokens that are not often used as liquidity sources (ie. MIM, CRV, CVX, ALLUO so far π, etc.) but that the voteExecutor.sol might need.
This is needed because our voteExecutor.sol might want to enter a Curve pool that requires 3CRV yet we only hold DAI. Manually this is quite trivial, go to Curve and deposit your DAI into the 3CRV pool then enter the next pool, but why not try to exchange your USDC to 3CRV on Uniswap?
Well, because the liquidity is close to 0 and your Price Impact would be too significant (e.g. 78% in the example below).
Our exchange.sol ensures that the process for finding the best route for any pair is done systematically at the smart contract level and goes through the most liquid pools available.
π§ If youβre interested in even more detail see our blogpost here