EntroBeam
Search…
EIX Token
EIX Token Distribution
• EIX tokens transferred to the EntroBeam contract cannot be withdrawn by anyone, including the owner. EIX in the EntroBeam contract is only distributed by the algorithm figure above. Even the owner of the EIX contract has no impact on the balance of the EIX user and cannot eliminate or control the privileges. EntroBeam devs follow the principle of least privilege.
• The entropy chain length in the figure above is closely related to the 'FormationNumber'(Entropy chain length) of the code. To put it simply, if you sent the 21st entropy seed (EntropyByUsers) and 'FormationNumber' is '10', you can receive secure entropy and reward EIX when the 32nd (21+10+1) entropy seed is sent. 'EntropyByUsers' transactions can be created by anyone, including you or other users.
• EIX currently works on the Binance platform, but the token distribution will be divided, or supply may increase as EIX expands to other platforms. Since the value of the fee is different for each platform, it is divided proportionally. But, Since it is calculated based on the epoch, the reward will continue to decrease even if there are no users using it.
Minimal block count number = upcomingRevealBlockNo = 0
That is, there is currently no need to wait for a block.
To make it easier to understand, let's assume that 'FormationNumber'(entropy chain length) is 10. After you send the entropy seed to the contract, after that, if another entropy seed inputs the contract more than 10 times, you will be assigned a secure entropy and EIX reward.
If more than 10 entropy seeds are entered in one block with you, you are immediately assigned secure entropy and EIX to the next block.
• All processes are 100% on-chain, so you will always be assigned 100% secure entropy and EIX without failure.
• Allow all operations except duplicate seeds. You can generate 10 transactions yourself.
contracts/EntroBeam_main_v1.0.0.sol at main · entroBeam/contracts
GitHub
As shown in the figure, users do not receive a token immediately when they generate a transaction. Tokens are only received when secure entropy(Reveal entropy) is generated. secure entropy is assigned 100% when it's one's turn.
EIX is calculation and distribution based on Unix timestamp (Epoch). The annual initial supply
$S$
decreases by 0.1% every year.
$S$
starts at 30,000,000.
• When EIX is expanded cross-chain, the annual supply may change considering the network status of each platform.
• Annual supply may be increased or decreased depending on a number of specific circumstances.
The Gregorian calendar is 31556952 sec, the Julian year is 31557600 sec, and the leap year is 31622400 sec. EntroBeam sets the reward based on 31536000 seconds per year.
$\mathrm{InitToken}=$
30,000,000
$x=$
Block timestamp(Epoch) at which entropy registry transaction
$-$
EntroBeam Creation Epoch
$y= x/31536000$
Variable for calculating annual token supply reduction. (decimal point truncation)
$\mathrm{AllocationInterval}=$
Block Target Time (currently 13sec)
$\mathrm{Rewards\ Per\ Year}= \mathrm{InitToken} -x(y/100)$
$\mathrm{Rewards\ Per\ Block}=\mathrm{AllocationInterval}\times(\mathrm{Rewards\ Per\ Year}/31536000)$
$\mathrm{Rewards}= \mathrm{Number\ of\ }\mathbf{EntropyByUsers}\mathrm{\ in\ the\ block}\ /\ \mathrm{Rewards Per Block}$
The above is the formula for the token distribution method. Therefore, if there is only one TX user in one block, one person receives all the rewards in the block. If there is more than one uesr, the rewards are divided and distributed. The rewards per block can be checked by calling rewardsPerBlock in the EntroBeam Contract.
Below is the detailed code.
/// @notice The annual supply is reduced by 0.1% each year in 'InitToken'.
///
/// @dev year = 0 , decline rate = 0 (30,000,000. - (year += 1 * decline rate += 0.1%))
/// 30,000,000 -> 29,968,464 -> 29,873,856 -> 29,715,917 -> 29,495,078
/// note that calculations are based on Unix TimeStamp(Epoch) and are approximate.
///
/// @param _x refer to 'rewardsPerBlock()'
/// @param _y refer to 'rewardsPerBlock()'
function rewardsPerYear(uint256 _x, uint256 _y)
private
view
returns (uint256)
{
return
InitToken -
PRBMathUD60x18.mul(
PRBMathUD60x18.fromUint(_x),
PRBMathUD60x18.div(
PRBMathUD60x18.fromUint(_y),
PRBMathUD60x18.fromUint(100)
)
);
}
/// @notice Calculate token rewards per block.
/// Divide rewardPerYear() by 3153600 seconds (one year). And multiply that value by Block Target Time.
/// The Gregorian calendar is 31556952 sec, the Julian year is 31557600 sec, and the leap year is 31622400 sec
/// This contract sets the reward based on 31536000 seconds per year.
///
/// @dev EntroBeam includes a design to prevent overflow, but please be careful if anyone else devs do anything
/// with this contract code.If you need to change a formula, you must design it carefully for overflow. Even sometimes,
/// the process overflows, but the result does not overflow.
function rewardsPerBlock() public view returns (uint256) {
uint256 _x = block.timestamp - creationEpoch;
uint256 _y = PRBMathUD60x18.toUint(
PRBMathUD60x18.div(
PRBMathUD60x18.fromUint(_x),
PRBMathUD60x18.fromUint(31536000)
)
);
return
PRBMathUD60x18.mul(
PRBMathUD60x18.div(
PRBMathUD60x18.fromUint(rewardsPerYear(_x, _y)),
PRBMathUD60x18.fromUint(31536000)
),
AllocationInterval
);
}
function _transferToken_(
....
.....
//if there is only one TX user in one block, one person receives all the rewards in the block. If there is more
//than one uesr, the rewards are divided and distributed.
PRBMathUD60x18.div(
rewardsPerBlock(),
PRBMathUD60x18.fromUint(scheme_blockCount.blockCount)
)
Again, Since it is calculated based on the epoch, the reward will continue to decrease even if there are no users using it. RewardsPerBlock is a public variable; Users can view it at any time.