πΈYield Distributor Smart Contract
This contract facilitates the distribution of yields to fractional owners of tokenized assets in a transparent and straightforward manner, akin to the functionality of staking contracts.
Contract Structure
The contract consists of the following key components:
State Variables:
stakingToken
: The ERC20 token that users will deposit to signal their fractional share.Yield_Distributor_Role
: Role assigned to the yield distributor, such as the property manager._stakedBalances
: Mapping to track the staked balances of users._rewardBalances
: Nested mapping to track reward balances by token.stakers
: Array containing addresses of all stakers._totalStaked
: Total amount of tokens staked by all users.
Events:
Staked
: Event emitted when a user stakes tokens.YieldDistributed
: Event emitted when yields are distributed.ClaimedYield
: Event emitted when a user claims their earned yields.Withdrawn
: Event emitted when a user withdraws their staked tokens.
Constructor:
Initializes the contract with the ERC20 token address and grants roles to the contract deployer.
Public Functions:
stake
: Allows users to stake project tokens.distributeYield
: Allows yield distributors to distribute yields to stakers.claimYield
: Allows users to claim their earned yields.withdrawStake
: Allows users to withdraw their staked project tokens.stakedBalanceOf
: Retrieves the staked balance of a specific user.rewardBalanceOf
: Retrieves the reward balance of a specific user for a specific token.totalStaked
: Retrieves the total amount of tokens staked.
Usage
Staking Project Tokens
Users can stake tokens by calling the stake
function and providing the desired amount of tokens to stake.
Distributing Yields
Yield distributors can distribute yields to stakers by calling the distributeYield
function and providing the amount of yields to distribute.
Claiming Yields
Users can claim their earned yields by calling the claimYield
function.
Withdrawing Staked Tokens
Users can withdraw their staked tokens by calling the withdrawStake
function.
Last updated