solidity staking smart contract with following requirements:
- Users should be able to stake their tokens at any time. Including the presale tokens
- The staking should be available soon as the presale is over.
- Users can stake tokens in 1 month intervals with a maximum stake of 5 years.
- The APY will be calculated based on the number of months. With a cap of 50%
- 1Q 10%
- 2Q 25%
- 3Q 35%
- 4Q 50%
- If a user breaks the stake before the time is up, they lose all rewards earned up to that point
- The reward tokens can’t be claimed until the stake fully matures
$ forge build$ forge test$ forge fmt$ forge snapshot$ anvil$ forge script script/Counter.s.sol:CounterScript --rpc-url <your_rpc_url> --private-key <your_private_key>$ cast <subcommand>$ forge --help
$ anvil --help
$ cast --help