You can find the frontend repo here: https://github.com/MVPWorkshop/Airbro-interfaces
You can find the backend repo here: https://github.com/MVPWorkshop/Airbro-engine
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 install
Compile the smart contracts with Hardhat:
$ yarn compile
Compile the smart contracts and generate TypeChain artifacts:
$ yarn typechain
Lint the Solidity code:
$ yarn lint:sol
Lint the TypeScript code:
$ yarn lint:ts
Run the Mocha tests:
$ yarn test
Generate the code coverage report:
$ yarn coverage
See the gas usage per unit test and average gas per method call:
$ REPORT_GAS=true yarn test
Delete the smart contract artifacts, the coverage reports and the Hardhat cache:
$ yarn clean
-
Before deploying the smart contracts, make sure to update the hardcoded
admin
variable in each smart contract in the./contracts/airdrops
folder. The variable should be set to a valid backend wallet address. -
For testing, make sure the variable
contractAdminAddress
(found in./tests/shared/constants.ts
) is the same as the previously mentioned smart contractadmin
variable.
Deploy the contracts to Hardhat Network:
$ yarn deploy --greeting "Bonjour, le monde!"
Upgradable contracts
- contracts/AirdropCampaignData.sol
To upgrade, change the code of the contract, and then runn the following code:
$ yarn upgrade:AidropCampaignData --address [address_of_deployed_contract_here]
https://mumbai.polygonscan.com/address/0x1Cf717072285dC1CE9DBcED31d51e4Ad5dE6fB7f#code
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.