GoodDollar / GoodProtocol

Version 2 of GoodDollar smart contracts
MIT License
14 stars 17 forks source link

Adding data collection to thegraph #263

Open Shloyem opened 2 years ago

Shloyem commented 2 years ago

Think and plan about adding data collection to thegraph for: GoodStaking, DistributionHelper, GoodDollarMintBurnWrapper, invite contracts

  1. What are the entities we are going to collect data for
  2. What global statistics/per address aggregated data we want to collect
Shloyem commented 2 years ago

GoodDollarMintBurnWrapper

Maybe need more data that will be time dependent

MinterObj

Removed writing single actions

globalStats

~#### MintAction~ ~- day~ ~- MinterObj - increase obj totalMinted, maybe total sent~ ~- StakerObj - increase obj outstandingDebt, maybe create a rewardsReceived (sent+minted)~ ~- amount~ ~- minted,~ ~- sent~

GoodDollarStaking

ContractStakeHistory(key: contract_daytime) (aggregation per day)

totalTokenStaked = contractStats.totalTokenStaked ~totalUSDStaked = contractStats.totalUSDStaked~ contract day supporters.push(supporter.id) opValues.push(tokenValue) goodEarned = contractStats.goodEarned gdEarned = contractStats.gdEarned avgDonationRatio = contractStats.avgDonationRatio transferred (add event) = contractStats.transferred?

stakeStats (global statistics)

totalTokenStaked += tokenValue ~totalUSDStaked += usdValue~ totalGoodEarned += goodEarned totalGdEarned += gdEarned avgDonationRatio (calculate) transferred (add event)?

contractStats (key: contract)

totalTokenStaked += tokenValue ~totalUSDStaked += usdValue~ totalGoodEarned += goodEarned totalGdEarned += gdEarned avgDonationRatio (query contract) apy or gdInterestRatePerBlock? monthlyGood or goodRewardPerBlock transferred (add event)? += transffered goodTotalRewardsPerShare gdTotalRewardsPerShare gdRewardsDebt(global pending rewards) *goodTotalPendingRewards - can be calculated by totalRewardsPerShare total shares gdTotalRewardsPaid gdTotalRewardsDonated check if there's goodTotalRewardsPaid I dont think that principle?**

stakingHistory (key: daytime) day statistics of the global

stakingContracts.push(contractHistory.id) ~totalUSDStaked = stakeStats.totalUSDStaked~ totalTokenStaked = stakeStats.totalTokenStaked avgDonationRatio = stakeStats.avgDonationRatio transferred (add event)? = stakeStats.transferred

supporter (key: stakerAddress)

totalUSDStaked += usdValue totalGoodEarned += goodEarned totalGdEarned += gdEarned avgDonationRatio (query contract) pendingGoodRewards pendingGDRewards gdRewardsPaid gdRewardsDonated check if there's goodRewardsPaid

Not adding transferred from or to. No using Good staker info: UserInfo: amount, rewardDebt, rewardEarn, rewardMinted About undoReward - we should add an event for it

Shloyem commented 2 years ago

DistributionHelper.sol

DistributionHelper

DistributionAction

Recipient