@morpholabs/morpho-rewards
v0.2.2
Published
Morpho rewards distribution scripts
Downloads
16
Readme
Morpho Rewards emission
To understand the $MORPHO rewards mechanisms, you can take a look at the documentation.
Get Started
- Install node dependencies using
yarn
:
yarn
- Run the script for the first epoch:
yarn start:age1:epoch1
Age 1
You can read the code of the first epoch here.
The subgraph used for automatic real-time indexation is available on the hosted service of TheGraph.
Steps by step, the script will:
- distribute the epoch's rewards by following the per-market distribution rule (see below)
- make a snapshot of users' positions at the beginning of the epoch
- fetch all the transactions completed during the epoch
- distribute rewards by following the per-user, per-market distribution rule (see below)
- build the Merkle Tree of the rewards distribution
Per-market distribution rule
For each epoch, we distribute a given amount of rewards (e.g. 350,000 MORPHO for Age 1 - Epoch 1) overall open markets, ponderated by the underlying market-specific USD TVL, computed at the first block of the epoch. This means that market ETH with marketSupply
ETH supplied on the underlying pool, marketBorrow
ETH borrowed from the underlying pool and a ETH at a price of marketUSDPrice
at the first block of the epoch (according to Compound's protocol) will get the following amount of rewards distributed:totalEmission×(marketSupply+marketBorrow)×marketUSDPricetotalUSDTVL
Per-user, per-market distribution rule
For a given market & a given side (supply/borrow), we distribute the rewards proportionally at userBalance * period
, where userBalance is the balance of the user at a given time (at the beginning of the age or when a transaction occurs) and period
is the delay since another transaction occurs. The output is visible in the ages/age1
directory.
Epochs
Morpho rewards are distributed through epochs (~3 weeks), with each epoch's per-market distribution ultimately being voted by the Morpho protocol's governance at the beginning of the Epoch. For now and until governance is set up, each epoch's per-market distribution is computed based on a given total emission distributed over open markets, based on their underlying TVL.
Epoch #1
The first epoch started on 2022-06-08T17:00:06.000Z until 2022-07-13T17:00:00.000Z with a distribution of 350,000 $MORPHO to users who have a position on Morpho-Compound. You can check the final user's distribution and simulate the distribution again by running.
SAVE_FILE=true yarn run start:age1:epoch1
Claim Rewards
You can directly claim your rewards by using the Morpho dapp here: gov.morpho.xyz
or by calling the claim
function of the Rewards Distributor
Compute Merkle Tree
At the end of the first epoch, all tokens will be distributed.
To compute the Merkle tree, you can run
SAVE_FILE=true yarn run start:age1:epoch1
and browse the distribution over Morpho's users and the Merkle tree configuration in the folder ages/age1/epoch1