This repo contains all the contracts related to the core Flashstake protocol.
- The Flashstake Protocol
- AAVEv2Strategy (USDC/DAI/etc)
- Flashback
- FlashbackLM (liquidity mining)
- Flash Token
- Flash NFT
This repo was initialised using the Solidity template created by paulrberg: https://github.com/paulrberg/hardhat-template
- Hardhat: compile and run the smart contracts on a local development network
- TypeChain: generate TypeScript types for smart contracts
- Ethers: renowned Ethereum library and wallet implementation
- Waffle: tooling for writing comprehensive smart contract tests
- Solhint: linter
- Solcover: code coverage
- Prettier Plugin Solidity: code formatter
Before running any command, you need to create a .env file and set a BIP-39 compatible mnemonic as an environment
variable. Follow the example in .env.example. If you don't already have a mnemonic, use this website to generate one.
Then, proceed with installing dependencies:
yarn installCompile the smart contracts with Hardhat:
$ yarn compileCompile the smart contracts and generate TypeChain artifacts:
$ yarn typechainLint the Solidity code:
$ yarn lint:solLint the TypeScript code:
$ yarn lint:tsRun the Mocha 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:
Please see deploy.ts located within the tasks folder.
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.