Skip to content

Latest commit

 

History

History
56 lines (37 loc) · 2.41 KB

readme.md

File metadata and controls

56 lines (37 loc) · 2.41 KB

License: AGPL v3 Build pass codecov

Pegasys incentives

Introduction

This repo contains the code and implementation of the contracts used to activate the liquidity mining program on the main market of the Pegasys protocol.

Implementation

The rewards are distributed in the form of stkPegasys, which is obtained by staking Pegasys in the Safety Module Staking contract located at https://etherscan.io/address/0x4da27a545c0c5b758a6ba100e3a049001de870f5.

The incentives controller contract, StakedTokenIncentivesController, stakes the rewards while transferring the obtained stkPegasys to the claiming user.

The implementation logic is defined as follow:

  • Each asset has a defined emissionPerSecond
  • For each asset, an assetIndex keeps track of the total accumulated rewards
  • For each user, a userIndex keeps track of the user accumulated rewards
  • On handleAction(), that is triggered whenever an aToken/debt Token is minted/burned by a user, the userIndex and the assetIndex are accumulated depending on the time passed since the last action
  • At any point in time the user pending rewards can be queried through the getRewardsBalance() function

Setup

Follow the next steps to setup the repository:

  • Create an enviroment file named .env and fill the next enviroment variables
# Mnemonic, only first address will be used
MNEMONIC=""


Compile

npm run compile

Support other network

In the hardhat.config.ts file, set the main network to Rollux main/test.

Deploy

# Current main is tanenbaum.rollux
npx hardhat --network main deploy-pull-rewards-incentives --reward-token 0xxxxxx --rewards-vault 0xxxxxx --emission-manager 0xxxxxx --proxy-admin 0xxxxxx

  • reward-token: Incentive token (AgaveToken), an ERC20 standard token, once deployed it cannot be modified.
  • rewards-vault: Treasury account, transfers rewardToken from this address to the user during claim.
  • emission-manager: Emission manager, can set related parameters.
  • proxy-admin: Proxy contract administrator.