contributors will receive 10% of the total supply of the UCM token over a period of 4 years.
the groups of contributors are broken into 4 level
- black
- platnium
- gold
- silver
in each level there will be members
, and percent
properties, the members
will be a object containing records where the key is the wallet address and the value is an object with the amount
of units that member has in that level and the lastMint
height when the member last minted their rewards.
Members can exist in multiple levels
Any member at any time can choose to mint their contribution rewards, when a mint function is run, the difference from the last minted height and the current height is determined for the contributor, then the reward is calculated by the reward unit for that level using the reward supply and percent of level. This will create a unit reward that can be multiplied with block range to calculate the reward for that level, then it calls the distributeAllocation function that takes a set of members and the reward to allocate the rewards between the members in the level. Finally we grab the reward for the caller and credit their balance in the Universal Content Marketplace, then update their lastMint prop for that member
Here is an example of the data structure:
{
... contractData,
contributors: {
black: {
members: {
core1: {
amount: 10,
lastMint: 0
},
core2: {
amount: 10,
lastMint: 5
},
},
percent: 50
},
platinum: {
members: {},
percent: 30
}
}
percent: 10,
period: 1051200,
}