Free DeFi Staking Pool Smart Contract Template (Solidity)
DevTools StoreFree DeFi Staking Pool Template (Solidity)
Production-ready staking pool. Stake tokens, earn rewards. OpenZeppelin based.
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract StakingPool is Ownable {
IERC20 public stakingToken;
IERC20 public rewardToken;
uint256 public rewardRate = 100;
uint256 public totalStaked;
mapping(address => uint256) public stakedBalance;
mapping(address => uint256) public rewards;
constructor(address _stake, address _reward) Ownable(msg.sender) {
stakingToken = IERC20(_stake);
rewardToken = IERC20(_reward);
}
function stake(uint256 amount) external {
stakingToken.transferFrom(msg.sender, address(this), amount);
stakedBalance[msg.sender] += amount;
totalStaked += amount;
}
function unstake(uint256 amount) external {
require(stakedBalance[msg.sender] >= amount);
stakedBalance[msg.sender] -= amount;
totalStaked -= amount;
stakingToken.transfer(msg.sender, amount);
}
function claimRewards() external {
uint256 reward = rewards[msg.sender];
require(reward > 0);
rewards[msg.sender] = 0;
rewardToken.transfer(msg.sender, reward);
}
}Want the full version with proper reward calculation, deploy scripts, and React frontend? Get all 15+ templates organized: https://rentry.co/w9gngnqt ($1+)