Blockwell

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

Approval Event

Parameters help
_owner
address help
_spender
address help
_value
uint256 help

Delegation Event

Parameters help
delegate
address help

FeeChange Event

Parameters help
fixedFee
uint256 help
minVariableFee
uint256 help
maxVariableFee
uint256 help
variableFeeNumerator
uint256 help

Freeze Event

Parameters help

Transfer Event

Parameters help
_from
address help
_to
address help
_value
uint256 help

Unfreeze Event

Parameters help

Functions Expand All Collapse All

totalSupply keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help view

Modifiers help

delegatable checks for the following:
Source Code
  function totalSupply () public delegatable view returns (uint256) {
    return tokensCount;
  }

balanceOf keyboard_arrow_up

Parameters help

Name Type
_owner
address help

Properties

Visibility help public
Mutability help view

Modifiers help

delegatable checks for the following:
Source Code
  function balanceOf (address _owner)
    public delegatable view returns (uint256 balance) {
    return AbstractToken.balanceOf (_owner);
  }

transfer keyboard_arrow_up

Parameters help

Name Type
_to
address help
_value
uint256 help

Properties

Visibility help public
Mutability help payable

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

Parameters help

Name Type
_from
address help
_to
address help
_value
uint256 help

Properties

Visibility help public
Mutability help payable

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

Parameters help

Name Type
_spender
address help
_value
uint256 help

Properties

Visibility help public
Mutability help payable

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

Parameters help

Name Type
_owner
address help
_spender
address help

Properties

Visibility help public
Mutability help view

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

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help payable

Modifiers help

delegatable checks for the following:
Source Code
  function () public delegatable payable {
    revert (); // Revert if not delegated
  }

name keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help view

Modifiers help

delegatable checks for the following:
Source Code
  function name () public delegatable view returns (string) {
    return "STASIS EURS Token";
  }

symbol keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help view

Modifiers help

delegatable checks for the following:
Source Code
  function symbol () public delegatable view returns (string) {
    return "EURS";
  }

decimals keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help view

Modifiers help

delegatable checks for the following:
Source Code
  function decimals () public delegatable view returns (uint8) {
    return 2;
  }

delegatedTransfer keyboard_arrow_up

Parameters help

Name Type
_to
address help
_value
uint256 help
_fee
uint256 help
_nonce
uint256 help
_v
uint8 help
_r
bytes32 help
_s
bytes32 help

Properties

Visibility help public
Mutability help payable

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

Parameters help

Name Type
_value
uint256 help

Properties

Visibility help public
Mutability help payable

Modifiers help

delegatable checks for the following:
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

Parameters help

Name Type
_value
uint256 help

Properties

Visibility help public
Mutability help payable

Modifiers help

delegatable checks for the following:
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

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help payable

Modifiers help

delegatable checks for the following:
Source Code
  function freezeTransfers () public delegatable payable {
    require (msg.sender == owner);

    if (!frozen) {
      frozen = true;

      Freeze ();
    }
  }

unfreezeTransfers keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help payable

Modifiers help

delegatable checks for the following:
Source Code
  function unfreezeTransfers () public delegatable payable {
    require (msg.sender == owner);

    if (frozen) {
      frozen = false;

      Unfreeze ();
    }
  }

setOwner keyboard_arrow_up

Parameters help

Name Type
_newOwner
address help

Properties

Visibility help public
Mutability help transaction
Source Code
  function setOwner (address _newOwner) public {
    require (msg.sender == owner);

    owner = _newOwner;
  }

setFeeCollector keyboard_arrow_up

Parameters help

Name Type
_newFeeCollector
address help

Properties

Visibility help public
Mutability help payable

Modifiers help

delegatable checks for the following:
Source Code
  function setFeeCollector (address _newFeeCollector)
  public delegatable payable {
    require (msg.sender == owner);

    feeCollector = _newFeeCollector;
  }

nonce keyboard_arrow_up

Parameters help

Name Type
_owner
address help

Properties

Visibility help public
Mutability help view

Modifiers help

delegatable checks for the following:
Source Code
  function nonce (address _owner) public view delegatable returns (uint256) {
    return nonces [_owner];
  }

setFeeParameters keyboard_arrow_up

Parameters help

Name Type
_fixedFee
uint256 help
_minVariableFee
uint256 help
_maxVariableFee
uint256 help
_variableFeeNumerator
uint256 help

Properties

Visibility help public
Mutability help payable

Modifiers help

delegatable checks for the following:
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.

Properties

Visibility help public
Mutability help view

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

Parameters help

Name Type
_amount
uint256 help

Properties

Visibility help public
Mutability help view

Modifiers help

delegatable checks for the following:
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

Parameters help

Name Type
_address
address help
_flags
uint256 help

Properties

Visibility help public
Mutability help payable

Modifiers help

delegatable checks for the following:
Source Code
  function setFlags (address _address, uint256 _flags)
  public delegatable payable {
    require (msg.sender == owner);

    addressFlags [_address] = _flags;
  }

flags keyboard_arrow_up

Parameters help

Name Type
_address
address help

Properties

Visibility help public
Mutability help view

Modifiers help

delegatable checks for the following:
Source Code
  function flags (address _address) public delegatable view returns (uint256) {
    return addressFlags [_address];
  }

setDelegate keyboard_arrow_up

Parameters help

Name Type
_delegate
address help

Properties

Visibility help public
Mutability help transaction
Source Code
  function setDelegate (address _delegate) public {
    require (msg.sender == owner);

    if (delegate != _delegate) {
      delegate = _delegate;
      Delegation (delegate);
    }
  }