npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@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