Revoluzion
Search
K

Revoluzion Dual Rewards

Revoluzion Rewards Documentation

Dual Rewards System

At Revoluzion, we believe that it's important for investors to be rewarded for their commitment to our project. Rather than just waiting for the price of our token to potentially increase, we offer various ways for holders to earn rewards for their loyalty. These include dividends, diamond hand rewards, and other forms of compensation. By actively rewarding our token holders, we hope to create a strong sense of community and encourage long-term engagement with our platform.
Revoluzion is a pioneering project that has been the first ever to introduced a dual rewards system that utilizes smart contract technology to automatically distribute rewards to token holders. Our Diamond Hand program is the first of its kind, offering holders the opportunity to earn rewards for maintaining a minimum holding of 1 million RVZ tokens over a specified timeframe.
This innovative system ensures that all eligible holders receive an equal share of the rewards, regardless of the size of their holdings. By automating the distribution process, we aim to create a transparent and fair rewards system that encourages long-term engagement with our project. We are proud to be leading the way in this area and hope to set a standard for other projects to follow.
Did you know that Revoluzion uses a portion of the funding generated from various sources to fund our reward system? In addition to the buy and sell tax, a percentage of the funding from services provided by Revoluzion is also distributed to the Dividend and Diamond Hand pools for our RVZ token holders.
This means that by holding RVZ tokens, you can benefit not only from the buy and sell tax, but also from a portion of the funding generated from the services we provide. This helps to create a diverse and sustainable reward system that benefits our token holders and encourages long-term engagement with our project.

Dividend Rewards

Revoluzion offer a rewards program that allows token holders to earn automatic BUSD BEP-20 rewards directly deposited to their wallets by holding their RVZ tokens. Here's how it works:
  • 4% of every buy and sell transaction on our platform is redistributed to all token holders, directly into their wallets.
  • The delivery of auto-claim rewards will depend on the volume of buy and sell transactions occurring on the platform, including the number of holders eligible for rewards.
  • Investors can also manually claim their rewards at any time through our dApp rewards tab, although there may be gas fee charges associated with this option.
By offering this rewards program, we hope to encourage long-term engagement with our project and create a strong sense of community among our token holders.
1
function shouldDistribute(address shareholder) internal view returns (bool) {
2
return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution;
3
}
4
5
/**
6
* @dev Distribute dividend to the shareholders and update dividend information.
7
*/
8
function distributeDividend(address shareholder) internal {
9
if (shares[shareholder].amount == 0) {
10
return;
11
}
12
13
uint256 amount = getUnpaidEarnings(shareholder);
14
if (amount > 0) {
15
totalDistributed = totalDistributed.add(amount);
16
rewardToken.transfer(shareholder, amount);
17
shareholderClaims[shareholder] = block.timestamp;
18
shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
19
shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
20
}
21
}
22
23
/**
24
* @dev Get the cumulative dividend for the given share.
25
*/
26
function getCumulativeDividends(uint256 share) internal view returns (uint256) {
27
return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
28
}
29
30
/**
31
* @dev Get unpaid dividend that needed to be distributed for the given address.
32
*/
33
function getUnpaidEarnings(address shareholder) public view returns (uint256) {
34
if (shares[shareholder].amount == 0) {
35
return 0;
36
}
37
38
uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
39
uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
40
41
if (shareholderTotalDividends <= shareholderTotalExcluded) {
42
return 0;
43
}
44
45
return shareholderTotalDividends.sub(shareholderTotalExcluded);
46
}
47
48
/**
49
* @dev Add the address to the array of shareholders.
50
*/
51
function addShareholder(address shareholder) internal {
52
shareholderIndexes[shareholder] = shareholders.length;
53
shareholders.push(shareholder);
54
}
55
56
/**
57
* @dev Remove the address from the array of shareholders.
58
*/
59
function removeShareholder(address shareholder) internal {
60
shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length - 1];
61
shareholderIndexes[shareholders[shareholders.length - 1]] = shareholderIndexes[shareholder];
62
shareholders.pop();
63
}
64
65
function claimDividend() external {
66
distributeDividend(_msgSender());
67
}
68
69
}
Automated distribution of rewards occurs during every swap, the swap threshold are also dependant on volume and swap threshold reached.
Flow chart is sell happen >> tokens store in smart contract >> threshold met for swap >> distribution sent to dividend / dh contract ** >> calculations dividend per share factor per token ** >> distribution of few holders per sell txn depending on gas fee settings.
1
// Dividends are paid out automatically when threshold are met
2
// period of 1 hour
3
// minimum 1 usd
4
5
{
6
dividendsPerShareAccuracyFactor = 10**36;
7
minPeriod = 1 hours;
8
minDistribution = 1 * (10**rewardToken.decimals());
9
}
Every time there is a sell, the system will automatically distribute rewards to a group of one to five holders. The amount of the rewards is based on the volume and a threshold of 1 USD per 60 minutes. However, the process of distributing the rewards is more complex and involves a cycle that may take some time to reach your specific wallet address. The distribution of rewards is also subject to a gas limit rate.
As a token holder of Revoluzion, you have the opportunity to claim your rewards at any time that you wish. Simply visit the following link to claim your rewards: https://revoluzion.app/rewards

Diamond Hand Rewards

Revoluzion have also implemented a system called "Diamond Hand" that rewards token holders for their loyalty who maintains an amount above of 1 million RVZ tokens. Here's how it works:
  • 2% of every buy and sell transaction on our platform is deposited into the Diamond Hand wallet.
  • Every week, all holders with more than 1 million total tokens will receive a share of the Diamond Hand rewards.
  • The rewards are distributed equally among all eligible holders, regardless of the size of their holdings.
  • Holders are still eligible for the rewards even if they sell some of their tokens as long as they maintain a holding of at least 1 million RVZ tokens throughout the entire period.
  • Team, marketing, and ecosystem wallets will not be eligible for Diamond Hand rewards. All rewards are reserved for token holders only.
1
function process(uint256 gas) external override onlyTokenAndOwner {
2
uint256 holderCount = holders.length;
3
4
if (holderCount == 0) {
5
return;
6
}
7
8
uint256 gasUsed = 0;
9
uint256 gasLeft = gasleft();
10
uint256 iterations = 0;
11
12
while (gasUsed < gas && iterations < holderCount) {
13
if (currentIndex >= holderCount) {
14
currentIndex = 0;
15
}
16
17
if (IERC20Extended(_token).balanceOf(holders[currentIndex]) >= minTokenRequired && shouldDistribute(holders[currentIndex])) {
18
distributeDiamond(holders[currentIndex]);
19
} else if (IERC20Extended(_token).balanceOf(holders[currentIndex]) < minTokenRequired) {
20
diamonds[holders[currentIndex]].eligible = false;
21
removeHolder(holders[currentIndex]);
22
23
uint256 current = rewardToken.balanceOf(address(this));
24
diamondsPerHolder = diamondsPerHolderAccuracyFactor.mul(current).div(holders.length);
25
}
26
27
if (block.timestamp > diamondCycleEnd) {
28
29
diamondCycleStart = diamondCycleEnd;
30
diamondCycleEnd = diamondCycleEnd + diamondCycle;
31
previousCycleEnd = diamondCycleStart - 1;
32
33
uint256 current = rewardToken.balanceOf(address(this));
34
prevDiamondsPerHolder = diamondsPerHolder;
35
diamondsPerHolder = diamondsPerHolderAccuracyFactor.mul(current).div(holders.length);
36
37
}
38
39
gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
40
gasLeft = gasleft();
41
currentIndex++;
42
iterations++;
43
}
44
}
45
46
function shouldDistribute(address holder) internal view returns (bool) {
47
return
48
holderClaims[holder] < (previousCycleEnd + 1) &&
49
diamonds[holder].eligible == true &&
50
diamonds[holder].eligibleTime + diamondCycle <= previousCycleEnd;
51
}
Diamond hand rewards are paid out on a periodic basis, with a frequency of one payout every 168 hours, or approximately every 7 days. The following code illustrates this behavior:
1
// Rewards are paid out of every 7 days period
2
// Rewards are paid out at equal rate to all holders of any amount
3
// Holders are free to buy / sell RVZ as long they maintain 1 million RVZ constant
4
5
{
6
diamondsPerHolderAccuracyFactor = 10**36;
7
diamondCycle = 168 hours;
8
diamondCycleStart = block.timestamp;
9
diamondCycleEnd = diamondCycleStart + diamondCycle;
10
previousCycleEnd = block.timestamp - 1;
11
minTokenRequired = 1000000000000000000;
12
}
By offering this rewards program, we hope to incentivize long-term engagement with our project and create a strong sense of community among our token holders.