This contract allows users to stake and unstake Ethereum(ETH) and earn rewards in the form of an ERC20 token, AstroCoin (🧑🏼🚀). This contracts facilitates staking, unstaking and reward claiming while holding their ETH by staking. It contains comprehensive tests which pass the contract ability to provide those above said features.
- Staking ETH
- Reward Emission (ERC20 token)
- Unstaking ETH
- Claiming Rewards
- Security- Built-in Checks
Click "Use this template" on GitHub to create a new repository with this repo as the initial state.
Or, if your repo already exists, run:
forge init
forge build
forge test
All you need is to import forge-std/Test.sol
and then inherit it from your test contract. Forge-std's Test contract comes with a pre-instatiated cheatcodes environment, the vm
. It also has support for ds-test-style logs and assertions. Finally, it supports Hardhat's console.log. The logging functionalities require -vvvv
.
pragma solidity 0.8.10;
import "forge-std/Test.sol";
contract ContractTest is Test {
function testExample() public {
vm.roll(100);
console.log(1);
emit log("hi");
assertTrue(true);
}
}
This project uses Foundry. See the book for instructions on how to install and use Foundry.