Free DeFi Staking Pool Smart Contract Template (Solidity)

Free DeFi Staking Pool Smart Contract Template (Solidity)

DevTools Store

Free 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+)

Report Page