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
Produced by STASIS, EURS was developed to tokenize the traditional fiat asset known around the world as the Euro. EURS mirrors the value of the Euro on the blockchain, and is said to be supported by liquidity assurance mechanisms combining the benefits of a global fiat with the transparency, immutability and efficiency of the blockchain. According to their website, all tokens are fully backed by 1:1 collateral reserves. The company aims to promote transparency by providing daily statements from account providers along with weekly verifications and quarterly audits by a top 5 global accounting firm. Download STASIS Stablecoin wallet:
- Android: https://play.google.com/store/apps/details?id=com.stasis.stasiswallet
- iOS: https://itunes.apple.com/app/stasis-wallet/id1371949230
Stats
Public Functions
24
Event Types
6
Code Size
26,639 bytes
Events (6) 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 delegatable payable 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 delegatable payable 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 delegatable payable 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 delegatable view 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 delegatable payable 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 delegatable payable 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 delegatable payable 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 delegatable payable {
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 delegatable view 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 delegatable view 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);
}
}