🤖Dynamic Staking Pool
The DynamicStakingPool
smart contract is a versatile and secure solution for creating dynamic staking pools. This contract utilizes several OpenZeppelin libraries for added security and functionality, including AccessControl
, ERC20
, Math
, and ReentrancyGuard
.
Features
Dynamic Profit Distribution: Automatically distributes profits among stakers based on their stake in the pool.
Reentrancy Guard: Protects against reentrancy attacks, ensuring the security of transactions.
Access Control: Implements role-based access control, allowing only authorized addresses to perform certain actions.
Event Logging: Logs significant actions and changes through events for transparency and tracking.
Variables
duration
: Duration of the staking pool.startCycle
: The start timestamp of the staking cycle.totalStaked
: Total amount of tokens staked in the pool.totalProfit
: Total profit earned by stakers.
Functions
getStakersCount()
: Returns the number of stakers in the pool.getStake(address staker)
: Returns the stake information for a specific staker.isStaker(address staker)
: Checks if an address is a staker in the pool.isFull()
: Checks if the pool has reached its maximum capacity.getClaimed(address staker)
: Returns the amount of profit claimed by a staker.stake(address staker, uint256 amount)
: Allows an authorized role to add a stake for a staker.withdraw()
: Withdraws staked tokens and distributes profits at the end of the staking cycle.profit(uint256 _profit)
: Records profit to be distributed among stakers.loss(uint256 amount)
: Records a loss, reducing the real stake amount.distributeProfit()
: Distributes profits among stakers based on their stake.
Last updated