STASIS EURS Token
ERC20
This contract is an ERC20 token.
Name
STASIS EURS Token
Symbol
EURS
Decimals
2
Total Supply
31,979,207 EURS
About link
STASIS EURO (EURS) is a cryptocurrency and operates on the Ethereum platform. STASIS EURO has a current supply of 88,625,940. The last known price of STASIS EURO is 1.19325727 USD and is up 0.49 over the last 24 hours. It is currently trading on 8 active market(s) with $3,804,156.44 traded over the last 24 hours. More information can be found at https://stasis.net.
Stats
Public Functions
24
Event Types
6
Code Size
26,639 bytes
Events (6) keyboard_arrow_up
Constants (8) keyboard_arrow_up
MAX_TOKENS_COUNT Constant
uint256 help
0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff / MAX_FEE_NUMERATOR
MAX_UINT256 Constant
uint256 help
0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
State Variables (13) keyboard_arrow_up
Functions
totalSupply keyboard_arrow_up
balanceOf keyboard_arrow_up
transfer keyboard_arrow_up
Modifiers help
delegatable checks for the following:
Source Code
function transfer(address _to, uint256 _value)
public
payable
delegatable
returns (bool)
{
if (frozen) return false;
else if (
(addressFlags[msg.sender] | addressFlags[_to]) & BLACK_LIST_FLAG ==
BLACK_LIST_FLAG
) return false;
else {
uint256 fee = (addressFlags[msg.sender] | addressFlags[_to]) &
ZERO_FEE_FLAG ==
ZERO_FEE_FLAG
? 0
: calculateFee(_value);
if (
_value <= accounts[msg.sender] &&
fee <= safeSub(accounts[msg.sender], _value)
) {
require(AbstractToken.transfer(_to, _value));
require(AbstractToken.transfer(feeCollector, fee));
return true;
} else return false;
}
}
transferFrom keyboard_arrow_up
Modifiers help
delegatable checks for the following:
Source Code
function transferFrom(
address _from,
address _to,
uint256 _value
) public payable delegatable returns (bool) {
if (frozen) return false;
else if (
(addressFlags[_from] | addressFlags[_to]) & BLACK_LIST_FLAG ==
BLACK_LIST_FLAG
) return false;
else {
uint256 fee = (addressFlags[_from] | addressFlags[_to]) & ZERO_FEE_FLAG ==
ZERO_FEE_FLAG
? 0
: calculateFee(_value);
if (
_value <= allowances[_from][msg.sender] &&
fee <= safeSub(allowances[_from][msg.sender], _value) &&
_value <= accounts[_from] &&
fee <= safeSub(accounts[_from], _value)
) {
require(AbstractToken.transferFrom(_from, _to, _value));
require(AbstractToken.transferFrom(_from, feeCollector, fee));
return true;
} else return false;
}
}
approve keyboard_arrow_up
Modifiers help
delegatable checks for the following:
Source Code
function approve(address _spender, uint256 _value)
public
payable
delegatable
returns (bool success)
{
return AbstractToken.approve(_spender, _value);
}
allowance keyboard_arrow_up
Modifiers help
delegatable checks for the following:
Source Code
function allowance(address _owner, address _spender)
public
view
delegatable
returns (uint256 remaining)
{
return AbstractToken.allowance(_owner, _spender);
}
constructor keyboard_arrow_up
name keyboard_arrow_up
symbol keyboard_arrow_up
decimals keyboard_arrow_up
delegatedTransfer keyboard_arrow_up
Parameters help
Modifiers help
delegatable checks for the following:
Source Code
function delegatedTransfer(
address _to,
uint256 _value,
uint256 _fee,
uint256 _nonce,
uint8 _v,
bytes32 _r,
bytes32 _s
) public payable delegatable returns (bool) {
if (frozen) return false;
else {
address _from = ecrecover(
keccak256(
thisAddress(),
messageSenderAddress(),
_to,
_value,
_fee,
_nonce
),
_v,
_r,
_s
);
if (_nonce != nonces[_from]) return false;
if (
(addressFlags[_from] | addressFlags[_to]) & BLACK_LIST_FLAG ==
BLACK_LIST_FLAG
) return false;
uint256 fee = (addressFlags[_from] | addressFlags[_to]) & ZERO_FEE_FLAG ==
ZERO_FEE_FLAG
? 0
: calculateFee(_value);
uint256 balance = accounts[_from];
if (_value > balance) return false;
balance = safeSub(balance, _value);
if (fee > balance) return false;
balance = safeSub(balance, fee);
if (_fee > balance) return false;
balance = safeSub(balance, _fee);
nonces[_from] = _nonce + 1;
accounts[_from] = balance;
accounts[_to] = safeAdd(accounts[_to], _value);
accounts[feeCollector] = safeAdd(accounts[feeCollector], fee);
accounts[msg.sender] = safeAdd(accounts[msg.sender], _fee);
Transfer(_from, _to, _value);
Transfer(_from, feeCollector, fee);
Transfer(_from, msg.sender, _fee);
return true;
}
}
createTokens keyboard_arrow_up
Modifiers help
delegatable checks for the following:
Requirements help
Source Code
function createTokens(uint256 _value)
public
payable
delegatable
returns (bool)
{
require(msg.sender == owner);
if (_value > 0) {
if (_value <= safeSub(MAX_TOKENS_COUNT, tokensCount)) {
accounts[msg.sender] = safeAdd(accounts[msg.sender], _value);
tokensCount = safeAdd(tokensCount, _value);
Transfer(address(0), msg.sender, _value);
return true;
} else return false;
} else return true;
}
burnTokens keyboard_arrow_up
Modifiers help
delegatable checks for the following:
Requirements help
Source Code
function burnTokens(uint256 _value) public payable delegatable returns (bool) {
require(msg.sender == owner);
if (_value > 0) {
if (_value <= accounts[msg.sender]) {
accounts[msg.sender] = safeSub(accounts[msg.sender], _value);
tokensCount = safeSub(tokensCount, _value);
Transfer(msg.sender, address(0), _value);
return true;
} else return false;
} else return true;
}
freezeTransfers keyboard_arrow_up
unfreezeTransfers keyboard_arrow_up
setOwner keyboard_arrow_up
setFeeCollector keyboard_arrow_up
nonce keyboard_arrow_up
setFeeParameters keyboard_arrow_up
Parameters help
Modifiers help
delegatable checks for the following:
Requirements help
Source Code
function setFeeParameters(
uint256 _fixedFee,
uint256 _minVariableFee,
uint256 _maxVariableFee,
uint256 _variableFeeNumerator
) public payable delegatable {
require(msg.sender == owner);
require(_minVariableFee <= _maxVariableFee);
require(_variableFeeNumerator <= MAX_FEE_NUMERATOR);
fixedFee = _fixedFee;
minVariableFee = _minVariableFee;
maxVariableFee = _maxVariableFee;
variableFeeNumerator = _variableFeeNumerator;
FeeChange(_fixedFee, _minVariableFee, _maxVariableFee, _variableFeeNumerator);
}
getFeeParameters keyboard_arrow_up
Parameters help
This function has no parameters.
Modifiers help
delegatable checks for the following:
Source Code
function getFeeParameters()
public
view
delegatable
returns (
uint256 _fixedFee,
uint256 _minVariableFee,
uint256 _maxVariableFee,
uint256 _variableFeeNumnerator
)
{
_fixedFee = fixedFee;
_minVariableFee = minVariableFee;
_maxVariableFee = maxVariableFee;
_variableFeeNumnerator = variableFeeNumerator;
}
calculateFee keyboard_arrow_up
Modifiers help
delegatable checks for the following:
Requirements help
Source Code
function calculateFee(uint256 _amount)
public
view
delegatable
returns (uint256 _fee)
{
require(_amount <= MAX_TOKENS_COUNT);
_fee = safeMul(_amount, variableFeeNumerator) / FEE_DENOMINATOR;
if (_fee < minVariableFee) _fee = minVariableFee;
if (_fee > maxVariableFee) _fee = maxVariableFee;
_fee = safeAdd(_fee, fixedFee);
}
setFlags keyboard_arrow_up
flags keyboard_arrow_up
setDelegate keyboard_arrow_up
Requirements help
Source Code
function setDelegate(address _delegate) public {
require(msg.sender == owner);
if (delegate != _delegate) {
delegate = _delegate;
Delegation(delegate);
}
}
Internal Functions
Internal functions are parts of the contract that can't be used directly, but instead are used by the public functions listed above.
internal EURSToken.thisAddress keyboard_arrow_up
internal EURSToken.messageSenderAddress keyboard_arrow_up
internal SafeMath.safeAdd keyboard_arrow_up
Requirements help
Source Code
function safeAdd(uint256 x, uint256 y) internal pure returns (uint256 z) {
assert(x <= MAX_UINT256 - y);
return x + y;
}
internal SafeMath.safeSub keyboard_arrow_up
internal SafeMath.safeMul keyboard_arrow_up
Requirements help
Source Code
function safeMul(uint256 x, uint256 y) internal pure returns (uint256 z) {
if (y == 0) return 0; // Prevent division by zero at the next line
assert(x <= MAX_UINT256 / y);
return x * y;
}