1.0.0 • Published 2 years ago

morpho-rewards v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

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