mirror of
git://holbrook.no/erc20-demurrage-token
synced 2025-01-03 15:47:33 +01:00
Prune comments
This commit is contained in:
parent
9de5e52c2f
commit
3ae75075e4
@ -18,9 +18,7 @@ contract RedistributedDemurrageToken {
|
|||||||
uint256 public immutable taxLevel; // PPM per MINUTE
|
uint256 public immutable taxLevel; // PPM per MINUTE
|
||||||
uint256 public demurrageModifier; // PPM uint128(block) | uint128(ppm)
|
uint256 public demurrageModifier; // PPM uint128(block) | uint128(ppm)
|
||||||
|
|
||||||
//bytes32[] public redistributions; // uint1(isFractional) | uint1(unused) | uint38(participants) | uint160(value) | uint56(period)
|
|
||||||
bytes32[] public redistributions; // uint1(isFractional) | uint95(unused) | uint20(demurrageModifier) | uint36(participants) | uint72(value) | uint32(period)
|
bytes32[] public redistributions; // uint1(isFractional) | uint95(unused) | uint20(demurrageModifier) | uint36(participants) | uint72(value) | uint32(period)
|
||||||
//mapping (address => bytes32) account; // uint20(unused) | uint56(period) | uint160(value)
|
|
||||||
mapping (address => bytes32) account; // uint152(unused) | uint32(period) | uint72(value)
|
mapping (address => bytes32) account; // uint152(unused) | uint32(period) | uint72(value)
|
||||||
mapping (address => bool) minter;
|
mapping (address => bool) minter;
|
||||||
mapping (address => mapping (address => uint256 ) ) allowance; // holder -> spender -> amount (amount is subject to demurrage)
|
mapping (address => mapping (address => uint256 ) ) allowance; // holder -> spender -> amount (amount is subject to demurrage)
|
||||||
@ -42,9 +40,9 @@ contract RedistributedDemurrageToken {
|
|||||||
name = _name;
|
name = _name;
|
||||||
symbol = _symbol;
|
symbol = _symbol;
|
||||||
decimals = _decimals;
|
decimals = _decimals;
|
||||||
demurrageModifier = ppmDivider * 1000000; // Emulates 38 decimal places
|
demurrageModifier = ppmDivider * 1000000; // Represents 38 decimal places
|
||||||
demurrageModifier |= (1 << 128);
|
demurrageModifier |= (1 << 128);
|
||||||
taxLevel = _taxLevelMinute; // 38 decimal places
|
taxLevel = _taxLevelMinute; // Represents 38 decimal places
|
||||||
sinkAddress = _defaultSinkAddress;
|
sinkAddress = _defaultSinkAddress;
|
||||||
bytes32 initialRedistribution = toRedistribution(0, 1000000, 0, 1);
|
bytes32 initialRedistribution = toRedistribution(0, 1000000, 0, 1);
|
||||||
redistributions.push(initialRedistribution);
|
redistributions.push(initialRedistribution);
|
||||||
@ -79,7 +77,6 @@ contract RedistributedDemurrageToken {
|
|||||||
|
|
||||||
/// Balance unmodified by demurrage
|
/// Balance unmodified by demurrage
|
||||||
function getBaseBalance(address _account) private view returns (uint256) {
|
function getBaseBalance(address _account) private view returns (uint256) {
|
||||||
//return uint256(account[_account]) & 0x00ffffffffffffffffffffffffffffffffffffffff;
|
|
||||||
return uint256(account[_account]) & 0xffffffffffffffffff;
|
return uint256(account[_account]) & 0xffffffffffffffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,7 +86,7 @@ contract RedistributedDemurrageToken {
|
|||||||
uint256 newBalance;
|
uint256 newBalance;
|
||||||
uint256 workAccount;
|
uint256 workAccount;
|
||||||
|
|
||||||
workAccount = uint256(account[_account]); // | (newBalance & 0xffffffffffffffffff);
|
workAccount = uint256(account[_account]);
|
||||||
|
|
||||||
if (_delta == 0) {
|
if (_delta == 0) {
|
||||||
return false;
|
return false;
|
||||||
@ -98,10 +95,7 @@ contract RedistributedDemurrageToken {
|
|||||||
oldBalance = getBaseBalance(_account);
|
oldBalance = getBaseBalance(_account);
|
||||||
newBalance = oldBalance + _delta;
|
newBalance = oldBalance + _delta;
|
||||||
require(uint160(newBalance) > uint160(oldBalance), 'ERR_WOULDWRAP'); // revert if increase would result in a wrapped value
|
require(uint160(newBalance) > uint160(oldBalance), 'ERR_WOULDWRAP'); // revert if increase would result in a wrapped value
|
||||||
//account[_account] &= bytes32(0xfffffffffffffffffffffff0000000000000000000000000000000000000000);
|
|
||||||
//account[_account] = bytes32(uint256(account[_account]) & 0xfffffffffffffffffffffffffffffffffffffffffffff000000000000000000);
|
|
||||||
workAccount &= 0xfffffffffffffffffffffffffffffffffffffffffffff000000000000000000;
|
workAccount &= 0xfffffffffffffffffffffffffffffffffffffffffffff000000000000000000;
|
||||||
//account[_account] |= bytes32(newBalance & 0x00ffffffffffffffffffffffffffffffffffffffff);
|
|
||||||
workAccount |= newBalance & 0xffffffffffffffffff;
|
workAccount |= newBalance & 0xffffffffffffffffff;
|
||||||
account[_account] = bytes32(workAccount);
|
account[_account] = bytes32(workAccount);
|
||||||
return true;
|
return true;
|
||||||
@ -113,7 +107,7 @@ contract RedistributedDemurrageToken {
|
|||||||
uint256 newBalance;
|
uint256 newBalance;
|
||||||
uint256 workAccount;
|
uint256 workAccount;
|
||||||
|
|
||||||
workAccount = uint256(account[_account]); // | (newBalance & 0xffffffffffffffffff);
|
workAccount = uint256(account[_account]);
|
||||||
|
|
||||||
if (_delta == 0) {
|
if (_delta == 0) {
|
||||||
return false;
|
return false;
|
||||||
@ -122,9 +116,7 @@ contract RedistributedDemurrageToken {
|
|||||||
oldBalance = getBaseBalance(_account);
|
oldBalance = getBaseBalance(_account);
|
||||||
require(oldBalance >= _delta, 'ERR_OVERSPEND'); // overspend guard
|
require(oldBalance >= _delta, 'ERR_OVERSPEND'); // overspend guard
|
||||||
newBalance = oldBalance - _delta;
|
newBalance = oldBalance - _delta;
|
||||||
//account[_account] &= bytes32(0xffffffffffffffffffffffff0000000000000000000000000000000000000000);
|
|
||||||
workAccount &= 0xfffffffffffffffffffffffffffffffffffffffffffff000000000000000000;
|
workAccount &= 0xfffffffffffffffffffffffffffffffffffffffffffff000000000000000000;
|
||||||
//account[_account] |= bytes32(newBalance & 0x00ffffffffffffffffffffffffffffffffffffffff);
|
|
||||||
workAccount |= newBalance & 0xffffffffffffffffff;
|
workAccount |= newBalance & 0xffffffffffffffffff;
|
||||||
account[_account] = bytes32(workAccount);
|
account[_account] = bytes32(workAccount);
|
||||||
return true;
|
return true;
|
||||||
@ -232,13 +224,11 @@ contract RedistributedDemurrageToken {
|
|||||||
|
|
||||||
// Deserialize the pemurrage period for the given account is participating in
|
// Deserialize the pemurrage period for the given account is participating in
|
||||||
function accountPeriod(address _account) public view returns (uint256) {
|
function accountPeriod(address _account) public view returns (uint256) {
|
||||||
//return (uint256(account[_account]) & 0xffffffffffffffffffffffff0000000000000000000000000000000000000000) >> 160;
|
|
||||||
return (uint256(account[_account]) & 0x00000000000000000000000000000000000000ffffffff000000000000000000) >> 72;
|
return (uint256(account[_account]) & 0x00000000000000000000000000000000000000ffffffff000000000000000000) >> 72;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save the given demurrage period as the currently participation period for the given address
|
// Save the given demurrage period as the currently participation period for the given address
|
||||||
function registerAccountPeriod(address _account, uint256 _period) private returns (bool) {
|
function registerAccountPeriod(address _account, uint256 _period) private returns (bool) {
|
||||||
//account[_account] &= 0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff;
|
|
||||||
account[_account] &= 0xffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffff;
|
account[_account] &= 0xffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffff;
|
||||||
account[_account] |= bytes32(_period << 72);
|
account[_account] |= bytes32(_period << 72);
|
||||||
incrementRedistributionParticipants();
|
incrementRedistributionParticipants();
|
||||||
@ -318,7 +308,6 @@ contract RedistributedDemurrageToken {
|
|||||||
uint256 newDemurrageAmount;
|
uint256 newDemurrageAmount;
|
||||||
|
|
||||||
epochPeriodCount = actualPeriod();
|
epochPeriodCount = actualPeriod();
|
||||||
//epochPeriodCount = (block.timestamp - periodStart) / periodDuration; // toDemurrageTime(demurrageModifier);
|
|
||||||
periodCount = epochPeriodCount - toDemurragePeriod(demurrageModifier);
|
periodCount = epochPeriodCount - toDemurragePeriod(demurrageModifier);
|
||||||
if (periodCount == 0) {
|
if (periodCount == 0) {
|
||||||
return false;
|
return false;
|
||||||
@ -442,7 +431,6 @@ contract RedistributedDemurrageToken {
|
|||||||
baseValue = ((supply / participants) * (taxLevel / 1000000)) / ppmDivider;
|
baseValue = ((supply / participants) * (taxLevel / 1000000)) / ppmDivider;
|
||||||
value = decayBy(baseValue, period - 1);
|
value = decayBy(baseValue, period - 1);
|
||||||
|
|
||||||
//account[_account] &= bytes32(0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff);
|
|
||||||
account[_account] &= bytes32(0xffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffff);
|
account[_account] &= bytes32(0xffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffff);
|
||||||
increaseBaseBalance(_account, value);
|
increaseBaseBalance(_account, value);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user