Privileges

Modulus Protocol is controlled by different roles in order to avoid undesirable consequences by security breaches. Below are the main roles controlling the smart contracts

No
Role
Description

1

Owner

Allowed to change other roles' address in charge, and would be assigned to our Multisig wallet #1

2

Controller

Allowed to config pools and the router's details such as pool's decimal, main token, duration of epoches, etc., and would be assigned to Multisig wallet #2

3

Reward Distributor

Allowed to finalize epoches and send randomness request to Chainlink and inform the pools on who won the last epoch. This role would be assigned to a separate contract so-called Reward Distributor

4

Router

This is a separate contract that would act as an intermediary contract, connecting users to different pools. Please note that users are NOT allowed to directly interact with pools' addresses. To do so, they MUST interact via Router

5

Operator

This role would be assigned to our off-chain bot in order to invoke functions in the contract Reward Distributor to finalize epoches and create new ones

6

Reserve

This would be assigned to a separate contract in order to keep epoches' yield. Only valid pools allowed in the contract Router would be allowed to call this contract to transfer tokens out

7

VRF

This is an intermediary contract to interact between Modulus Protocol and Chainlink's Verifiable Randomness Function in order to randomly select the winners of each epoch. This is a separate contract and Reward Distributor is the only role allowed to invoke functions in the contract VRF

8

Role Registry

This is a separate contract, acting as the mutual point of all other contracts to get valid roles

Last updated