Explanation
Users:
Users purchase shares of real estate properties using RWAIMMO tokens.
Users can stake their tokens to earn additional rewards.
Smart Contract:
Manages the purchase of shares, staking, and distribution of rental income and staking rewards.
Records every transaction on the blockchain to ensure transparency and security.
Operations:
Buying Shares: Users send tokens to the smart contract to buy shares of real estate properties.
Earning Rent: Users earn rental income proportional to their ownership percentage.
Staking: Users can stake their tokens to earn additional rewards.
Claiming: Users can claim their rental income and staking rewards.
Transferring: Tokens can be transferred between users for various operations.
Functions:
_balances(address)
: Returns the balance of a given address.agencyActivate(uint256, bool)
: Activates a home in the agency.agencyAddHome(string, uint256, uint256, uint256, uint256)
: Adds a new home to the agency.agencyBuy(uint256, uint256, uint256)
: Allows users to buy shares in a home.agencyClaim(uint256)
: Allows users to claim their earnings.agencyCountInvestors()
: Returns the number of investors.agencyGetCountHomes()
: Returns the number of homes.agencyGetHomes()
: Returns details of homes.agencyGetOwnerParts(address)
: Returns the parts owned by an address.agencyInvestOf(address)
: Returns the total investment of an address.agencyInvestOfByHome(address, uint256)
: Returns the investment of an address in a specific home.agencyInvested()
: Returns details of investments.agencyInvestorsByPeriods()
: Returns the number of investors by periods.agencyIsActive(uint256)
: Checks if a home is active.agencyRewards()
: Returns the total rewards.agencySell(uint256)
: Allows users to sell their shares.agencyTotalInvesting()
: Returns the total amount invested.allowance(address, address)
: Returns the allowance of a spender.approve(address, uint256)
: Approves a spender.availableForStakingRewards()
: Returns the available staking rewards.balanceOf(address)
: Returns the balance of an address.burn(uint256)
: Burns a specific amount of tokens.burned()
: Returns the total amount burned.changeOwner(address)
: Changes the owner of the contract.circulatingSupply()
: Returns the circulating supply of tokens.decimals()
: Returns the number of decimals used.getAgencyContract()
: Returns the address of the agency contract.getOwner()
: Returns the address of the owner.getStakingAddress()
: Returns the address of the staking contract.name()
: Returns the name of the token.payClaim(address, uint256)
: Pays a claim to an address.payPenality(address, uint256)
: Pays a penalty.setAgencyContract(address)
: Sets the agency contract.setStakingContract(address)
: Sets the staking contract.stakingClaim(uint256)
: Claims staking rewards.stakingCountStakers()
: Returns the count of stakers.stakingMaxStakeTotal()
: Returns the maximum total staking.stakingMaxStakingPerAddress()
: Returns the maximum staking per address.stakingMinStakingPerAddress()
: Returns the minimum staking per address.stakingRewards()
: Returns the staking rewards.stakingStake(uint256, uint256)
: Stakes tokens for a specific period.stakingStakeOf(address)
: Returns the staking of an address.stakingStaked()
: Returns details of all stakes.stakingStakesByPeriods()
: Returns staking details by periods.stakingTotalStaking()
: Returns the total amount staked.stakingUnstake(uint256)
: Unstakes tokens.symbol()
: Returns the symbol of the token.totalAgencyLocked()
: Returns the total agency locked.totalStaked()
: Returns the total staked amount.totalSupply()
: Returns the total supply of tokens.transfer(address, uint256)
: Transfers tokens to an address.transferBuy(address, uint256)
: Transfers tokens for buying.transferFrom(address, address, uint256)
: Transfers tokens from one address to another.transferSell(address, uint256)
: Transfers tokens for selling.transferStake(address, uint256)
: Transfers tokens for staking.transferUnstake(address, uint256)
: Transfers tokens for unstaking.