Bootstrap Optimism LlamaLend Markets with 60k OP from DAO Vault

Summary:

Transfer 60k OP from the DAO vault on Optimism to an incentives distributor contract for bootstrapping LlamaLend on Optimism.

Abstract:

This vote is to bootstrap LlamaLend on Optimism. Currently, the Curve DAO vault holds 60,000 OP from the grant we received from Optimism, and we will get another 90,000 OP as soon as we start using these funds. The grant proposal is accessible here.

The bootstrapping campaign will distribute 30,000 OP tokens over 7 weeks to bootstrap the following LlamaLend markets by rewarding the supply side (crvUSD):

For the bootstrapping, we will use a pattern which pays OP for the supply side, with a peak in the third week, then gradually lowers the rewards to let the natural lending rate set in. After the initial 7 weeks, a small amount of OP token will be used to ensure liquidity in this Llama Lend markets.

image

At the same time, we will incentivise these 3 AMM pools: crvUSD/WBTC/WETH, crvUSD/CRV/OP, and crvUSD/scrvUSD to ensure the needed liquidity. After Llama Lend markets are bootstrapped, we will continue to incentivise these pools for another 15 weeks, making the total runtime 23 weeks.

To ensure compliance, the whole distribution is pre-programmed through smart contracts, and access to the OP tokens is never possible. As a rescue loop, the OP tokens can be sent back to the Curve vault and the distribution restarted with another vote.

The whole distribution is also visible in this dashboard (screenshot below).

As soon the OP tokens are deposited to the distributor contract the incentive distribution starts.

Specification:

def encode(sig: str, *args):
    x = web3.keccak(text=sig)[:4] + encode_single(sig[sig.find("(") :], args)
    return x.hex()


OP_TOKEN = "0x4200000000000000000000000000000000000042"
VAULT = "0xD166EEdf272B860E991d331B71041799379185D5"
AMOUNT_TO_STREAM = 60000000000000000000000

ACTIONS = [
    # Transfer OP from vault to distributor
    ("0x8e1e5001C7B8920196c7E3EdF2BCf47B2B6153ff", "broadcast", [ 
        (VAULT, encode("transfer(address,address,uint256)", OP_TOKEN, "0x5bed1A43A719F0A64F200fCd7bBB27019e457675", AMOUNT_TO_STREAM)), 
    ]),
]
2 Likes

This vote is live here: