π€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