These contracts are based off Synthetix's original staking contracts. You can find them on their GitHub.
There are currently three contracts in the repo.
- Standard staking. Allows one staking token and one reward token.
- Multi-reward staking. Allows one staking token and multiple reward tokens.
- NFTMultiStake. A multi-reward staking contract for NFTs (ERC721).
The multi-reward staking needs the following additions and optimizations:
- Testing for single asset staking pool (Stake.sol)
- Testing for NFT staking pool (NFTMultiStake.sol)
- Single asset staking doesn't support tax tokens. Please be careful and test thoroughly.