Issuance

About minting and redeeming lvlUSD

lvlUSD is backed by a multi-collateral basket of dollar tokens like USDT and USDC. Users can mint and redeem lvlUSD by interacting with the minting contract. Contract addresses could be found here.

Though mints and redemptions will both eventually be permissionless, redemptions are available to permissioned users only.

How minting works

  1. User approves LevelMinting to spend the collateral asset they want to mint with.

  2. User calls mint or mintDefault against the LevelMinting contract with order details, including the address sending the collateral (benefactor), the address receiving the lvlUSD (beneficiary), the collateral amount, and the expected lvlUSD amount.

    1. The benefactor must be the address calling the mint function

  3. The contract fetches the price of the underlying collateral via Chainlink oracles. The conversion from collateral to lvlUSD is min(oracle_price, 1) to ensure that the protocol is always overcollateralized

    1. If the calculated lvlUSD amount is lower than what the user specified, the transaction will fail

  4. The contract will then transfer the collateral from the benefactor's wallet to the reserve addresses

    1. Reserve addresses are allowlisted contracts- the transaction will fail if an allowlisted contract is not passed in

  5. The beneficiary receives lvlUSD

How redemptions work

Restaking protocols typically have a cooldown period during which the underlying collateral backing lvlUSD cannot be redeemed. Redemptions for lvlUSD therefore have a cooldown period to ensure that there is sufficient collateral to meet redemptions.

  1. User approves LevelMinting to spend lvlUSD

  2. User initiates the redemption with order details, including the address sending lvlUSD (benefactor), the address receiving the collateral (beneficiary), the lvlUSD amount, and the expected collateral amount. This will transfer lvlUSD to the minting contract and start the cooldown period.

    1. The benefactor must be the address calling the redeem function

  3. After the cooldown period finishes, the user completes the redemption

  4. The contract fetches the price of the underlying collateral via Chainlink oracles. The conversion from lvlUSD to collateral is max(oracle_price, 1) to ensure that the protocol is always overcollateralized.

    1. If the calculated collateral amount is lower than what the user specified, the transaction will fail

  5. The contract then burns the lvlUSD that was transferred when initiating the mint, and transfers the collateral to the beneficiary

Because of the oracle price, users may receive less than 1 lvlUSD or 1 collateral token when minting or redeeming. The frontend enforces a maximum slippage allowance of 20 bps; given USDT/C's relative peg stability, we expect most mints and redemptions to be within this bound.

Security measures

To ensure smooth operations, there are several security measures embedded in the minting contracts:

  • The protocol can allow certain allowlisted roles (called "gatekeepers") to disable mints and redemptions. These allowlisted roles are only grantable by the admin contract, and are intended to act as safe guards in the event of protocol failure.

  • Mints and redemptions may be allowlisted

  • The protocol may define a maximum amount of lvlUSD to be minted per block

FunctionAccepted Collateral

Minting

USDT, USDC

Redemption

USDT, USDC

Last updated