Skip to content

me3wallet/Me3-contracts

Repository files navigation

Me3

Usage

Pre Requisites

Before running any command, you need to create a .env file Follow the example in .env.example.

Then, proceed with installing dependencies:

yarn install

Compile

Compile the smart contracts with Hardhat:

$ yarn compile

Lint Solidity

Lint the Solidity code:

$ yarn lint:sol

Test

Run the tests:

$ yarn test

Coverage

Generate the code coverage report:

$ yarn coverage

Report Gas

See the gas usage per unit test and average gas per method call:

$ REPORT_GAS=true yarn test

Clean

Delete the smart contract artifacts, the coverage reports and the Hardhat cache:

$ yarn clean

Deploy

Deploy the contracts to Hardhat Network:

$ yarn deploy

Syntax Highlighting

If you use VSCode, you can enjoy syntax highlighting for your Solidity code via the vscode-solidity extension. The recommended approach to set the compiler version is to add the following fields to your VSCode user settings:

{
  "solidity.compileUsingRemoteVersion": "v0.8.4+commit.c7e474f2",
  "solidity.defaultCompiler": "remote"
}

Where of course v0.8.4+commit.c7e474f2 can be replaced with any other version.

Understanding the me3 Contracts

Me3 Farm

This is the core protocol for the me3 farming contract.

stake();
Parameter Type Description
amount uint256 The amount a user wants to stake in the me3 farm
lockPeriod uint256 Total amount of time user wants his funds to be locked
withdraw();
Parameter Type Description
amount uint256 The amount of stake a user wants to withdraw from the me3 farm
calculateReward();
Parameter Type Description
recordId uint256 Calculates the reward a particular stake record will recieve in me3 Tokens
calculateHoursPassed();
Parameter Type Description
duration uint256 Calculates the number of hours that have been passed

Me3 Storage

The Me3 storage contract is the DB of the me3 protocol. It holds the getter and setter methods of the me3 protocol