Before running any command, you need to create a .env file
Follow the example in .env.example.
Then, proceed with installing dependencies:
yarn installCompile the smart contracts with Hardhat:
$ yarn compileLint the Solidity code:
$ yarn lint:solRun the tests:
$ yarn testGenerate the code coverage report:
$ yarn coverageSee the gas usage per unit test and average gas per method call:
$ REPORT_GAS=true yarn testDelete the smart contract artifacts, the coverage reports and the Hardhat cache:
$ yarn cleanDeploy the contracts to Hardhat Network:
$ yarn deployIf 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.
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 |
The Me3 storage contract is the DB of the me3 protocol. It holds the getter and setter methods of the me3 protocol