-
Notifications
You must be signed in to change notification settings - Fork 19
Pools
Liquidity Pools, referred to as "Pools" in the Maple protocol are utilized to aggregate funding from Liquidity Providers and loan it out to earn interest. There are three main actors that interact with Pools:
- Liquidity Providers
- Stakers
- Pool Delegates
Liquidity Providers provide capital to the Pool. The capital is then applied to fund loans to Borrowers which are approved by the Pool Delegate.
Liquidity Providers are able to perform the following actions:
-
deposit
: Deposits funds (e.g. USDC) into the Pool (funds are actually held in the LiquidityLocker). -
approve
: Approve contracts to use a certain amount of PoolFDTs. -
increaseCustodyAllowance
: Increase another account's custodianship of the account's PoolFDTs. -
intendToWithdraw
: Starts withdraw cooldown for user. -
cancelWithdraw
: Cancels withdraw cooldown for user, allowing them to accept inbound transfers of PoolFDTs. -
withdraw
: Withdraws funds (e.g. USDC) from the Pool, plus any interest, minus any losses (only possible after cooldown). -
transfer
: Transfer PoolFDTs (allowing for potential integrations/secondary markets). -
withdrawFunds
: Claims interest earned to-date. - Other ERC20 functionality
Stakers stake MPL/USDC Balancer Pool Tokens (BPTs) into the StakeLocker. This acts as a first loss reserve against loan defaults. In the case of a loan default, BPTs from the StakeLocker will be burnt in exchange for USDC to cover the losses. In exchange for the higher risk that the stakers are taking, they earn a high percentage of the yield that is generated from the Pool.
Stakers are able to perform the following actions:
-
stake
: Deposits BPTs into the StakeLocker. -
approve
: Approve contracts to use a certain amount of StakeLockerFDTs. -
increaseCustodyAllowance
: Increase another account's custodianship of the account's StakeLockerFDTs. -
intendToUnstake
: Starts unstake cooldown for user. -
cancelUnstake
: Cancels unstake cooldown for user, allowing them to accept inbound transfers of StakeLockerFDTs. -
unstake
: Withdraws BPTs from the StakeLocker. -
transfer
: Transfer StakeLockerFDTs (allowing for potential integrations/secondary markets). -
withdrawFunds
: Claims interest earned to date. - Other ERC20 functionality
Pool Delegates are in charge of managing the Pool's liquidity in a way that will earn an attractive yield. In order to open a Pool, a Pool Delegate must first be whitelisted by the MapleDAO address. After that, they must stake at least the minimum amount of BPTs required to meet the level of Pool coverage specified by MapleDAO. Once the Pool has been finalized, the Pool Delegate can start earning a portion of the interest earned using the capital from the LiquidityLocker.
Pool Delegates are able to perform the following actions (with the exception of claim
, which can also be called by a Pool Admin):
-
finalize
: Finalize Pool so LPs can deposit funds. -
fundLoan
: Moves liquidity out of LiquidityLocker and into an active loan. -
triggerDefault
: Liquidate a loan (more detail on this here). -
claim
: Claim any funds received from a Loan (interest, principal, fees, excess, liquidatedAmount) (more detail on this here). -
deactivate
: Deactivates the Pool, permanently shutting it down. - Admin actions (more detail on this here).
Below is a high level overview diagram of where funds move and which actors are responsible.