DeFi Llama
Search
K

Emission Sections

Continuing with the Liquity example...

Manual Entry Functions

90% of the time you'll only need the manual... functions (imported on line 1). There are 4 of them:
  • manualStep(
    start: unixTimestamp OR date string <- time of the first vest
    stepDuration: unixTimestamp OR date string <- time period between vests
    number: number <- number of discreet unlocks in the vesting schedule
    amount: number <- number of coins emitted in each discreet unlock
    dateFormat: string, optional <- if date strings are used, the format can be specified here. Default is "YYYY/MM/DD"
    )
  • manualCliff(
    start: unixTimestamp OR date string <- timestamp of the cliff
    amount: number <- number of coins emitted in the cliff
    dateFormat: string, optional <- if date strings are used, the format can be specified here. Default is "YYYY/MM/DD"
    )
  • manualLinear(
    start: unixTimestamp OR date string<- start of the linear vesting period
    end: unixTimestamp OR date string <- end of the linear vesting period
    amount: number <- number of coins emitted over the period
    dateFormat: string, optional <- if date strings are used, the format can be specified here. Default is "YYYY/MM/DD"
    )
  • manualLog(
    start: unixTimestamp OR date string<- start of the linear vesting period
    end: unixTimestamp OR date string <- end of the linear vesting period
    amount: number <- number of coins emitted over the period
    periodLength: number <- the length in time between each change in rate
    percentDecreasePerPeriod: number <- the regular decrease in emission rate
    dateFormat: string, optional <- if date strings are used, the format can be specified here. Default is "YYYY/MM/DD"
    )

More Complex Emission Shapes

Sometimes you might need to make more advanced shapes, for example, if the rate of emissions decrease over time. In this example, We created a rewards() function which makes a complex shape out of smaller linear sections (line 9, used on line 33). NB this particular shape could've been done with the manualLog() function.
Emissions sections should return real quantities of tokens. Not percentages, and accounting for any token decimals.

On Chain Data

Some protocol files use on-chain data (Aave, Tornado etc). Where possible we like to use on chain data. The time sensitive nature of emissions schedules can make on-chain data more difficult to research and write. If you think using on-chain data is a better option for you, contact us through Discord and we can help out.
Last modified 10mo ago