Contract Overview
Balance: 0 Ether
Transactions: 7755 txns
 Latest 25 txns From a total of 7755 Transactions

TxHash Age From To Value [TxFee]
0x8b13f050ae63deed6f2143e835a98e7b0036cded4c3afc4d7869dbbefdd67dc78 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034934
0x07580da1721a4a536ec61500d54f83c396d0c5c4ea7a8f27f4e88d7991ddd0b39 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034998
0x2d18a55b4e60b28be8d8b91507ed0568e922820b5af878edb9e36302bc81dd7238 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034934
0x0e6918e1743bbbad67b55533e2dafe0ae4c2dab4f70847181a64816d99967fbe38 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034998
0xed8c0025f6669d4d97c20a458032c6943a3a9b69cb31be0d4018c595878432f21 hr 8 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034934
0x6afb3d082439ca85a803630965fd7817745f07d5128a24b37fb5e445d58e567b1 hr 8 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034998
0xb4a9b40ee8a79f794788380251f154a57ff3e8077336c0dd259380de4ab400fc1 hr 38 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034934
0x31abd343f80ae7bbcc51171c30b039ce979c0cabb66611c1eadb130de5ea1e4b1 hr 38 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034998
0xfeb6be4d2b381048a09bd610ef65698f5d09140946b10d29287f748aa8479b4e2 hrs 8 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034934
0x07db805550bbcc9e4790fdc76ed4f286bbd4834770f3e336c14649fb426758ba2 hrs 8 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034998
0xf033262113eb0ddbb76e033f3e0654225fe47201e734bf49c45ce3bc243ec7b42 hrs 38 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034934
0x09047cc5e44b85146fe13faea9b1ce0e3ba0f38180c0b954f6c64576c87dceb72 hrs 38 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034998
0x6708bf0911034f2fa5e39770282d4d20c88c66eb08064dccdbe5753428e44bc13 hrs 8 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034934
0xb4a68066ea3ccd74733ddfcb1b89895210b21d7b4e4a0051c151d4c514f655753 hrs 9 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034998
0x224cc44649dcf27c3e9d4951a96d3571f4b8820de5b4c30c4637233a6c7fbebb3 hrs 38 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034934
0x510e5038178e619e69e91054aa562a3580ae9b4c129fe767d947378017d71d303 hrs 38 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034998
0xa42dc18f2720aaf58894a2e0630517b36165132fa0dde0f6b5fa9e1d3cd2874f4 hrs 8 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034934
0x71fec0a93931858ea856cdf0beddb4011ef5276b69f9fb585021ae8a7816ee6d4 hrs 8 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034998
0xe61d2d43dae140ede389a049f9d6e14a9b83a549898c0b826f7fe0be8c94f1784 hrs 38 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034934
0x21dcb4a2147963f0c6ca1709a5d48ef657a878770bbb86418a72adf6fc2a103c4 hrs 38 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034998
0x875fda82dc19d22cdd022649f8c7e760f4e1d8262e440ca7fcfce3c0d861f47c5 hrs 8 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034934
0xb979c561563d0623e26dda1d916df0154dc6217e4a75d5c93839fcd8c7c758dc5 hrs 8 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034998
0x848288eb646f827e513ee998c6402480f3d4eec6092566ead3b5fdcfba7670905 hrs 38 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034934
0xa8573f63a3e7d5dd4ffcd552efac7992a4bec6fae60883cd9afbbda6c924f2395 hrs 38 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034998
0x3757da78bd9dedd8863d118f41189bf3cf8479800da6a75e0b3bde250a1d41956 hrs 8 mins ago0xf7f72a1dff80e6799553912f09742810bee2fd3c  IN   0x374436ac2ee332cf12c67665e37d11bc62d3f3230 Ether0.000034934
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Contract Source Code Verified (Similar Match)
Note: Displaying Similar Match Verified Source Code At Contract 0xe8d6508c91669a0cd6d182af201e0a0eed31c48a(Excluding Constructor Arguments if_any)
Contract Name: ShipCoinCurrency
Compiler Text: v0.4.25+commit.59dbf8f1
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.24;

// File: contracts/base/Ownable.sol

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


  event OwnershipRenounced(address indexed previousOwner);
  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor () public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    emit OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }
}

// File: contracts/base/MultiOwnable.sol

/**
 * @title MultiOwnable
 * @dev The MultiOwnable contract has an owner address[], and provides basic authorization control
 */
contract MultiOwnable is Ownable {

  struct Types {
    mapping (address => bool) access;
  }
  mapping (uint => Types) private multiOwnersTypes;

  event AddOwner(uint _type, address addr);
  event AddOwner(uint[] types, address addr);
  event RemoveOwner(uint _type, address addr);

  modifier onlyMultiOwnersType(uint _type) {
    require(multiOwnersTypes[_type].access[msg.sender] || msg.sender == owner, "403");
    _;
  }

  function onlyMultiOwnerType(uint _type, address _sender) public view returns(bool) {
    if (multiOwnersTypes[_type].access[_sender] || _sender == owner) {
      return true;
    }
    return false;
  }

  function addMultiOwnerType(uint _type, address _owner) public onlyOwner returns(bool) {
    require(_owner != address(0));
    multiOwnersTypes[_type].access[_owner] = true;
    emit AddOwner(_type, _owner);
    return true;
  }
  
  function addMultiOwnerTypes(uint[] types, address _owner) public onlyOwner returns(bool) {
    require(_owner != address(0));
    require(types.length > 0);
    for (uint i = 0; i < types.length; i++) {
      multiOwnersTypes[types[i]].access[_owner] = true;
    }
    emit AddOwner(types, _owner);
    return true;
  }

  function removeMultiOwnerType(uint types, address _owner) public onlyOwner returns(bool) {
    require(_owner != address(0));
    multiOwnersTypes[types].access[_owner] = false;
    emit RemoveOwner(types, _owner);
    return true;
  }
}

// File: contracts/base/String.sol

/**
 * @title String
 * @dev ConcatenationString, uintToString, stringsEqual, stringToBytes32, bytes32ToString
 */
contract String {

  function strConcat(string _a, string _b, string _c, string _d, string _e) internal pure returns (string memory) {
    bytes memory _ba = bytes(_a);
    bytes memory _bb = bytes(_b);
    bytes memory _bc = bytes(_c);
    bytes memory _bd = bytes(_d);
    bytes memory _be = bytes(_e);
    bytes memory abcde = bytes(new string(_ba.length + _bb.length + _bc.length + _bd.length + _be.length));
    uint k = 0;
    uint i;
    for (i = 0; i < _ba.length; i++) {
      abcde[k++] = _ba[i];
    }
    for (i = 0; i < _bb.length; i++) {
      abcde[k++] = _bb[i];
    }
    for (i = 0; i < _bc.length; i++) {
      abcde[k++] = _bc[i];
    }
    for (i = 0; i < _bd.length; i++) {
      abcde[k++] = _bd[i];
    }
    for (i = 0; i < _be.length; i++) {
      abcde[k++] = _be[i];
    }
    return string(abcde);
  }

  function strConcat(string _a, string _b, string _c, string _d) internal pure returns(string) {
    return strConcat(_a, _b, _c, _d, "");
  }

  function strConcat(string _a, string _b, string _c) internal pure returns(string) {
    return strConcat(_a, _b, _c, "", "");
  }

  function strConcat(string _a, string _b) internal pure returns(string) {
    return strConcat(_a, _b, "", "", "");
  }

  function uint2str(uint i) internal pure returns(string) {
    if (i == 0) {
      return "0";
    }
    uint j = i;
    uint length;
    while (j != 0) {
      length++;
      j /= 10;
    }
    bytes memory bstr = new bytes(length);
    uint k = length - 1;
    while (i != 0) {
      bstr[k--] = byte(uint8(48 + i % 10));
      i /= 10;
    }
    return string(bstr);
  }

  function stringsEqual(string memory _a, string memory _b) internal pure returns(bool) {
    bytes memory a = bytes(_a);
    bytes memory b = bytes(_b);

    if (a.length != b.length)
      return false;

    for (uint i = 0; i < a.length; i++) {
      if (a[i] != b[i]) {
        return false;
      }
    }

    return true;
  }

  function stringToBytes32(string memory source) internal pure returns(bytes32 result) {
    bytes memory _tmp = bytes(source);
    if (_tmp.length == 0) {
      return 0x0;
    }
    assembly {
      result := mload(add(source, 32))
    }
  }

  function bytes32ToString(bytes32 x) internal pure returns (string) {
    bytes memory bytesString = new bytes(32);
    uint charCount = 0;
    uint j;
    for (j = 0; j < 32; j++) {
      byte char = byte(bytes32(uint(x) * 2 ** (8 * j)));
      if (char != 0) {
        bytesString[charCount] = char;
        charCount++;
      }
    }
    bytes memory bytesStringTrimmed = new bytes(charCount);
    for (j = 0; j < charCount; j++) {
      bytesStringTrimmed[j] = bytesString[j];
    }
    return string(bytesStringTrimmed);
  }

  function inArray(string[] _array, string _value) internal pure returns(bool result) {
    if (_array.length == 0 || bytes(_value).length == 0) {
      return false;
    }
    result = false;
    for (uint i = 0; i < _array.length; i++) {
      if (stringsEqual(_array[i],_value)) {
        result = true;
        return true;
      }
    }
  }
}

// File: contracts/lib/SafeMath.sol

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    // Gas optimization: this is cheaper than asserting 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (a == 0) {
      return 0;
    }

    c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    // uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return a / b;
  }

  /**
  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a + b;
    assert(c >= a);
    return c;
  }
}

// File: contracts/ICurrency.sol

contract ICurrency {
  function getUsdAbsRaisedInCents() external view returns(uint);
  function getCoinRaisedBonusInWei() external view returns(uint);
  function getCoinRaisedInWei() public view returns(uint);
  function getUsdFromETH(uint ethWei) public view returns(uint);
  function getTokenFromETH(uint ethWei) public view returns(uint);
  function getCurrencyRate(string _ticker) public view returns(uint);
  function addPay(string _ticker, uint value, uint usdAmount, uint coinRaised, uint coinRaisedBonus) public returns(bool);
  function checkTickerExists(string ticker) public view returns(bool);
  function getUsdFromCurrency(string ticker, uint value) public view returns(uint);
  function getUsdFromCurrency(string ticker, uint value, uint usd) public view returns(uint);
  function getUsdFromCurrency(bytes32 ticker, uint value) public view returns(uint);
  function getUsdFromCurrency(bytes32 ticker, uint value, uint usd) public view returns(uint);
  function getTokenWeiFromUSD(uint usdCents) public view returns(uint);
  function editPay(bytes32 ticker, uint currencyValue, uint currencyUsdRaised, uint _usdAbsRaisedInCents, uint _coinRaisedInWei, uint _coinRaisedBonusInWei) public returns(bool);
  function getCurrencyList(string ticker) public view returns(bool active, uint usd, uint devision, uint raised, uint usdRaised, uint usdRaisedExchangeRate, uint counter, uint lastUpdate);
  function getCurrencyList(bytes32 ticker) public view returns(bool active, uint usd, uint devision, uint raised, uint usdRaised, uint usdRaisedExchangeRate, uint counter, uint lastUpdate);
  function getTotalUsdRaisedInCents() public view returns(uint);
  function getAllCurrencyTicker() public view returns(string);
  function getCoinUSDRate() public view  returns(uint);
  function addPreSaleBonus(uint bonusToken) public returns(bool);
  function editPreSaleBonus(uint beforeBonus, uint afterBonus) public returns(bool);
}

// File: contracts/ShipCoinCurrency.sol

/**
 * @title Convert eth,btc,eur,amb to usd and storage payment from currency
 */
contract ShipCoinCurrency is ICurrency, MultiOwnable, String {
  using SafeMath for uint256;

  uint private coinUSDRate = 12; // in wei 0.12$
  uint private currVolPercent = 5; // 5% currency volatility

  // Amount of wei raised SHPC
  uint256 private coinRaisedInWei = 0;
  // Amount of cents raised USD at the time of payment
  uint private usdAbsRaisedInCents = 0;
  uint private coinRaisedBonusInWei = 0;

  struct CurrencyData {
    bool active;
    uint usd;
    uint devision;
    uint raised;
    uint usdRaised;
    uint counter;
    uint lastUpdate;
  }

  mapping(bytes32 => CurrencyData) private currencyList;

  bytes32[] private currencyTicker;

  /* Events */
  event ChangeCoinUSDRate(uint oldPrice, uint newPrice);
  event ChangeCurrVolPercent(uint oldPercent, uint newPercent);
  event ChangeCurrency();
  event AddPay();
  event EditPay();

  /**
   * @dev constructor 50328,655575,116
   * @param _ethPrice in cents example 58710 = 587.10$
   * @param _btcPrice in cents example 772301 = 7723.01$
   * @param _eurPrice in cents example 117 = 1.17$
   * @param _ambPrice in cents example 18 = 0.18$
   */
  constructor(uint _ethPrice, uint _btcPrice, uint _eurPrice, uint _ambPrice) public {

    require(addUpdateCurrency("ETH", _ethPrice, (1 ether)));
    require(addUpdateCurrency("BTC", _btcPrice, (10**8)));
    require(addUpdateCurrency("USD", 1, 1));
    require(addUpdateCurrency("EUR", _eurPrice, 100));
    require(addUpdateCurrency("AMB", _ambPrice, (1 ether)));

  }

  /**
   * @dev Returns the collected amount in dollars. Summarize at the rate when the payment was made.
   */
  function getUsdAbsRaisedInCents() external view returns(uint) {
    return usdAbsRaisedInCents;
  }

  /**
   * @dev Return the amount of SHPC sold as a bonus.
   */
  function getCoinRaisedBonusInWei() external view returns(uint) {
    return coinRaisedBonusInWei;
  }

  /**
   * @dev Add or Update currency
   */
  function addUpdateCurrency(string _ticker, uint _usd, uint _devision) public returns(bool) {
    return addUpdateCurrency(_ticker, _usd, _devision, 0, 0);
  }

  /**
   * @dev Add or Update currency
   */
  function addUpdateCurrency(string _ticker, uint _usd) public returns(bool) {
    return addUpdateCurrency(_ticker, _usd, 0, 0, 0);
  }

  /**
   * @dev Add or Update currency
   * @param _ticker string
   * @param _usd uint rate in cents
   * @param _devision uint
   * @param _raised uint
   * @param _usdRaised uint raised in usd cents
   */
  function addUpdateCurrency(string _ticker, uint _usd, uint _devision, uint _raised, uint _usdRaised) public onlyMultiOwnersType(1) returns(bool) {
    require(_usd > 0, "1");

    bytes32 ticker = stringToBytes32(_ticker);

    if (!currencyList[ticker].active) {
      currencyTicker.push(ticker);
    }
    currencyList[ticker] = CurrencyData({
      active : true,
      usd : _usd,
      devision : (_devision == 0) ? currencyList[ticker].devision : _devision,
      raised : currencyList[ticker].raised > 0 ? currencyList[ticker].raised : _raised,
      usdRaised: currencyList[ticker].usdRaised > 0 ? currencyList[ticker].usdRaised : _usdRaised,
      counter: currencyList[ticker].counter > 0 ? currencyList[ticker].counter : 0,
      lastUpdate: block.timestamp
    });

    return true;
  }

  /**
   * @dev Set SHPC price in cents
   */
  function setCoinUSDRate(uint _value) public onlyOwner returns(bool) {
    require(_value > 0);
    uint oldCoinUSDRate = coinUSDRate;
    coinUSDRate = _value;
    emit ChangeCoinUSDRate(oldCoinUSDRate, coinUSDRate);
    return true;
  }

  /**
   * @dev Percent deducted from the amount raised getTotalUsdRaisedInCents
   */
  function setCurrVolPercent(uint _value) public onlyOwner returns(bool) {
    require(_value > 0 && _value <= 10);
    uint oldCurrVolPercent = currVolPercent;
    currVolPercent = _value;
    emit ChangeCurrVolPercent(oldCurrVolPercent, currVolPercent);
    return true;
  }

  /**
   * @dev Returns the number of SHPC from USD
   * @param usdCents amount of dollars in cents example 100$ = 10000
   * @return SHPC in wei
   */
  function getTokenWeiFromUSD(uint usdCents) public view returns(uint) {
    return usdCents.mul(1 ether).div(coinUSDRate); // (100.00$ * (10**18)) / 0.12$ = 833333333333333333333 SHPC wei = 833.33 SHPC
  }

  /**
   * @dev Returns the number of SHPC in wei
   * @param ethWei eth в wei
   * @return SHPC in wei
   */
  function getTokenFromETH(uint ethWei) public view returns(uint) {
    return ethWei.mul(currencyList["ETH"].usd).div(coinUSDRate); // (1 ETH * 587.10$) / 0.12$ =  4892500000000000000000 SHPC wei = 4892.50 SHPC
  }

  /**
   * @dev Returns the amount of USD from ETH
   * @param ethWei ETH в wei
   * @return USD in cents
   */
  function getUsdFromETH(uint ethWei) public view returns(uint) {
    return ethWei.mul(currencyList["ETH"].usd).div(1 ether);
  }

  /**
   * @dev Add payment data to currency
   * @param _ticker string
   * @param value uint
   * @param usdAmount uint in cents
   * @param coinRaised uint in wei
   * @param coinRaisedBonus uint in wei (optional field)
   */
  function addPay(string _ticker, uint value, uint usdAmount, uint coinRaised, uint coinRaisedBonus) public onlyMultiOwnersType(2) returns(bool) {
    require(value > 0);
    require(usdAmount > 0);
    require(coinRaised > 0);

    bytes32 ticker = stringToBytes32(_ticker);
    assert(currencyList[ticker].active);

    coinRaisedInWei += coinRaised;
    coinRaisedBonusInWei += coinRaisedBonus;
    usdAbsRaisedInCents += usdAmount;

    currencyList[ticker].usdRaised += usdAmount;
    currencyList[ticker].raised += value;
    currencyList[ticker].counter++;

    emit AddPay();
    return true;
  }

  /**
   * @dev Chacnge currency data when change contributor payment
   * @param ticker bytes32
   * @param currencyValue uint
   * @param currencyUsdRaised uint in cents
   * @param _usdAbsRaisedInCents uint in cents
   * @param _coinRaisedInWei uint in wei
   * @param _coinRaisedBonusInWei uint in wei (optional field)
   */
  function editPay(
    bytes32 ticker,
    uint currencyValue,
    uint currencyUsdRaised,
    uint _usdAbsRaisedInCents,
    uint _coinRaisedInWei,
    uint _coinRaisedBonusInWei
  )
  public
  onlyMultiOwnersType(3)
  returns(bool)
  {
    require(currencyValue > 0);
    require(currencyUsdRaised > 0);
    require(_usdAbsRaisedInCents > 0);
    require(_coinRaisedInWei > 0);
    assert(currencyList[ticker].active);

    coinRaisedInWei = _coinRaisedInWei;
    coinRaisedBonusInWei = _coinRaisedBonusInWei;
    usdAbsRaisedInCents = _usdAbsRaisedInCents;

    currencyList[ticker].usdRaised = currencyUsdRaised;
    currencyList[ticker].raised = currencyValue;


    emit EditPay();

    return true;
  }

  /**
   * @dev Add bonus SHPC
   */
  function addPreSaleBonus(uint bonusToken) public onlyMultiOwnersType(4) returns(bool) {
    coinRaisedInWei += bonusToken;
    coinRaisedBonusInWei += bonusToken;
    emit EditPay();
    return true;
  }

  /**
   * @dev Change bonus SHPC
   */
  function editPreSaleBonus(uint beforeBonus, uint afterBonus) public onlyMultiOwnersType(5) returns(bool) {
    coinRaisedInWei -= beforeBonus;
    coinRaisedBonusInWei -= beforeBonus;

    coinRaisedInWei += afterBonus;
    coinRaisedBonusInWei += afterBonus;
    emit EditPay();
    return true;
  }

  /**
   * @dev Returns the sum of investments with conversion to dollars at the current rate with a deduction of interest.
   */
  function getTotalUsdRaisedInCents() public view returns(uint) {
    uint totalUsdAmount = 0;
    if (currencyTicker.length > 0) {
      for (uint i = 0; i < currencyTicker.length; i++) {
        if (currencyList[currencyTicker[i]].raised > 0) {
          totalUsdAmount += getUsdFromCurrency(currencyTicker[i], currencyList[currencyTicker[i]].raised);
        }
      }
    }
    return subPercent(totalUsdAmount, currVolPercent);
  }

  /**
   * @dev Converts to dollars
   */
  function getUsdFromCurrency(string ticker, uint value) public view returns(uint) {
    return getUsdFromCurrency(stringToBytes32(ticker), value);
  }

  /**
   * @dev Converts to dollars
   */
  function getUsdFromCurrency(string ticker, uint value, uint usd) public view returns(uint) {
    return getUsdFromCurrency(stringToBytes32(ticker), value, usd);
  }

  /**
   * @dev Converts to dollars
   */
  function getUsdFromCurrency(bytes32 ticker, uint value) public view returns(uint) {
    return getUsdFromCurrency(ticker, value, 0);
  }

  /**
   * @dev Converts to dollars
   */
  function getUsdFromCurrency(bytes32 ticker, uint value, uint usd) public view returns(uint) {
    if (currencyList[ticker].active && value > 0) {
      return value.mul(usd > 0 ? usd : currencyList[ticker].usd).div(currencyList[ticker].devision);
    }
    return 0;
  }

  /**
   * @dev Returns information about available currencies in json format
   */
  function getAllCurrencyTicker() public view returns(string) {
    string memory _tickers = "{";
    for (uint i = 0; i < currencyTicker.length; i++) {
      _tickers = strConcat(_tickers, strConcat("\"", bytes32ToString(currencyTicker[i]), "\":"), uint2str(currencyList[currencyTicker[i]].usd), (i+1 < currencyTicker.length) ? "," : "}");
    }
    return _tickers;
  }

  /**
   * @dev Update currency rate.
   */
  function updateCurrency(string ticker, uint value) public onlyMultiOwnersType(6) returns(bool) {
    bytes32 _ticker = stringToBytes32(ticker);
    require(currencyList[_ticker].active);
    require(value > 0);

    currencyList[_ticker].usd = value;
    currencyList[_ticker].lastUpdate = block.timestamp;
    emit ChangeCurrency();
    return true;
  }

  /**
   * @dev Check currency is available.
   */
  function checkTickerExists(string ticker) public view returns(bool) {
    return currencyList[stringToBytes32(ticker)].active;
  }

  /**
   * @dev Returns currency info.
   */
  function getCurrencyList(string ticker)
    public
    view
    returns(
      bool active,
      uint usd,
      uint devision,
      uint raised,
      uint usdRaised,
      uint usdRaisedExchangeRate,
      uint counter,
      uint lastUpdate
    )
  {
    return getCurrencyList(stringToBytes32(ticker));
  }

  /**
   * @dev Return curency info.
   */
  function getCurrencyList(bytes32 ticker)
    public
    view
    returns(
      bool active,
      uint usd,
      uint devision,
      uint raised,
      uint usdRaised,
      uint usdRaisedExchangeRate,
      uint counter,
      uint lastUpdate
    )
  {
    CurrencyData memory _obj = currencyList[ticker];
    uint _usdRaisedExchangeRate = getUsdFromCurrency(ticker, _obj.raised);
    return (
      _obj.active,
      _obj.usd,
      _obj.devision,
      _obj.raised,
      _obj.usdRaised,
      _usdRaisedExchangeRate,
      _obj.counter,
      _obj.lastUpdate
    );
  }

  function getCurrencyRate(string _ticker) public view returns(uint) {
    return currencyList[stringToBytes32(_ticker)].usd;
  }

  /**
   * @dev Return all currency data in json.
   */
  function getCurrencyData() public view returns(string) {
    string memory _array = "{";

    if (currencyTicker.length > 0) {
      for (uint i = 0; i < currencyTicker.length; i++) {
        if (currencyList[currencyTicker[i]].active) {
          _array = strConcat(_array, strConcat("\"", bytes32ToString(currencyTicker[i]), "\":"), getJsonCurrencyData(currencyList[currencyTicker[i]]), (i+1 == currencyTicker.length) ? "}" : ",");
        }
      }
    } else {
      return "[]";
    }

    return _array;
  }

  /**
   * @dev Returns the number of SHPC sold
   */
  function getCoinRaisedInWei() public view returns(uint) {
    return coinRaisedInWei;
  }

  /**
   * @dev Returns SHPC price in cents
   */
  function getCoinUSDRate() public view returns(uint) {
    return coinUSDRate;
  }

  /**
   * @dev Returns percent.
   */
  function getCurrVolPercent() public view returns(uint) {
    return currVolPercent;
  }

  /**
   * @dev Returns json info from currency
   */
  function getJsonCurrencyData(CurrencyData memory _obj) private pure returns (string) {
    return strConcat(
      strConcat("{\"usd\":", uint2str(_obj.usd), ",\"devision\":", uint2str(_obj.devision), ",\"raised\":\""),
      strConcat(uint2str(_obj.raised), "\",\"usdRaised\":", uint2str(_obj.usdRaised), ",\"usdRaisedCurrency\":", uint2str((_obj.raised.mul(_obj.usd).div(_obj.devision)))),
      strConcat(",\"counter\":", uint2str(_obj.counter), ",\"lastUpdate\":", uint2str(_obj.lastUpdate), "}")
    );
  }

  /**
   * @dev Calculate the percentage of the amount
   * example: 100 - 5% = 95
   */
  function subPercent(uint a, uint b) private pure returns(uint) {
    uint c = (a / 100) * b;
    assert(c <= a);
    return a - c;
  }

}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"setCoinUSDRate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_type","type":"uint256"},{"name":"_owner","type":"address"}],"name":"addMultiOwnerType","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"usdCents","type":"uint256"}],"name":"getTokenWeiFromUSD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ethWei","type":"uint256"}],"name":"getTokenFromETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrencyData","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ethWei","type":"uint256"}],"name":"getUsdFromETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCoinUSDRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ticker","type":"bytes32"}],"name":"getCurrencyList","outputs":[{"name":"active","type":"bool"},{"name":"usd","type":"uint256"},{"name":"devision","type":"uint256"},{"name":"raised","type":"uint256"},{"name":"usdRaised","type":"uint256"},{"name":"usdRaisedExchangeRate","type":"uint256"},{"name":"counter","type":"uint256"},{"name":"lastUpdate","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAllCurrencyTicker","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_type","type":"uint256"},{"name":"_sender","type":"address"}],"name":"onlyMultiOwnerType","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_ticker","type":"string"},{"name":"_usd","type":"uint256"}],"name":"addUpdateCurrency","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCoinRaisedBonusInWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ticker","type":"bytes32"},{"name":"value","type":"uint256"}],"name":"getUsdFromCurrency","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ticker","type":"string"}],"name":"checkTickerExists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"setCurrVolPercent","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_ticker","type":"string"},{"name":"_usd","type":"uint256"},{"name":"_devision","type":"uint256"}],"name":"addUpdateCurrency","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"ticker","type":"string"},{"name":"value","type":"uint256"},{"name":"usd","type":"uint256"}],"name":"getUsdFromCurrency","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ticker","type":"string"}],"name":"getCurrencyList","outputs":[{"name":"active","type":"bool"},{"name":"usd","type":"uint256"},{"name":"devision","type":"uint256"},{"name":"raised","type":"uint256"},{"name":"usdRaised","type":"uint256"},{"name":"usdRaisedExchangeRate","type":"uint256"},{"name":"counter","type":"uint256"},{"name":"lastUpdate","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ticker","type":"string"},{"name":"value","type":"uint256"}],"name":"getUsdFromCurrency","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"bonusToken","type":"uint256"}],"name":"addPreSaleBonus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"ticker","type":"bytes32"},{"name":"currencyValue","type":"uint256"},{"name":"currencyUsdRaised","type":"uint256"},{"name":"_usdAbsRaisedInCents","type":"uint256"},{"name":"_coinRaisedInWei","type":"uint256"},{"name":"_coinRaisedBonusInWei","type":"uint256"}],"name":"editPay","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_ticker","type":"string"}],"name":"getCurrencyRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_ticker","type":"string"},{"name":"value","type":"uint256"},{"name":"usdAmount","type":"uint256"},{"name":"coinRaised","type":"uint256"},{"name":"coinRaisedBonus","type":"uint256"}],"name":"addPay","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getUsdAbsRaisedInCents","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beforeBonus","type":"uint256"},{"name":"afterBonus","type":"uint256"}],"name":"editPreSaleBonus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"types","type":"uint256[]"},{"name":"_owner","type":"address"}],"name":"addMultiOwnerTypes","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"ticker","type":"bytes32"},{"name":"value","type":"uint256"},{"name":"usd","type":"uint256"}],"name":"getUsdFromCurrency","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTotalUsdRaisedInCents","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"types","type":"uint256"},{"name":"_owner","type":"address"}],"name":"removeMultiOwnerType","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCoinRaisedInWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"ticker","type":"string"},{"name":"value","type":"uint256"}],"name":"updateCurrency","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_ticker","type":"string"},{"name":"_usd","type":"uint256"},{"name":"_devision","type":"uint256"},{"name":"_raised","type":"uint256"},{"name":"_usdRaised","type":"uint256"}],"name":"addUpdateCurrency","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrVolPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_ethPrice","type":"uint256"},{"name":"_btcPrice","type":"uint256"},{"name":"_eurPrice","type":"uint256"},{"name":"_ambPrice","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldPrice","type":"uint256"},{"indexed":false,"name":"newPrice","type":"uint256"}],"name":"ChangeCoinUSDRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldPercent","type":"uint256"},{"indexed":false,"name":"newPercent","type":"uint256"}],"name":"ChangeCurrVolPercent","type":"event"},{"anonymous":false,"inputs":[],"name":"ChangeCurrency","type":"event"},{"anonymous":false,"inputs":[],"name":"AddPay","type":"event"},{"anonymous":false,"inputs":[],"name":"EditPay","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_type","type":"uint256"},{"indexed":false,"name":"addr","type":"address"}],"name":"AddOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"types","type":"uint256[]"},{"indexed":false,"name":"addr","type":"address"}],"name":"AddOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_type","type":"uint256"},{"indexed":false,"name":"addr","type":"address"}],"name":"RemoveOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6080604052600c60025560056003556000600455600060055560006006553480156200002a57600080fd5b5060405160808062002b6c83398101604081815282516020808501518386015160609096015160008054600160a060020a03191633179055848601909452600385527f45544800000000000000000000000000000000000000000000000000000000009185019190915290939092909190620000b99085670de0b6b3a764000064010000000062000235810204565b1515620000c557600080fd5b60408051808201909152600381527f425443000000000000000000000000000000000000000000000000000000000060208201526200011390846305f5e10064010000000062000235810204565b15156200011f57600080fd5b60408051808201909152600381527f555344000000000000000000000000000000000000000000000000000000000060208201526200016a9060018064010000000062000235810204565b15156200017657600080fd5b60408051808201909152600381527f45555200000000000000000000000000000000000000000000000000000000006020820152620001c19083606464010000000062000235810204565b1515620001cd57600080fd5b60408051808201909152600381527f414d42000000000000000000000000000000000000000000000000000000000060208201526200021f9082670de0b6b3a764000064010000000062000235810204565b15156200022b57600080fd5b5050505062000564565b60006200024f848484848064010000000062000257810204565b949350505050565b3360009081527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f6020526040812054819060019060ff1680620002a45750600054600160a060020a031633145b15156200031257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f3430330000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600087116200038257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f3100000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b62000396886401000000006200053e810204565b60008181526007602052604090205490925060ff161515620003e857600880546001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3018290555b6040805160e081018252600181526020810189905290810187156200040e578762000421565b6000848152600760205260409020600201545b81526000848152600760209081526040822060030154920191116200044757866200045a565b6000848152600760205260409020600301545b815260008481526007602090815260408220600401549201911162000480578562000493565b6000848152600760205260409020600401545b8152600084815260076020908152604082206005015492019111620004ba576000620004cd565b6000848152600760205260409020600501545b8152426020918201526000938452600781526040938490208251815460ff191690151517815590820151600180830191909155938201516002820155606082015160038201556080820151600482015560a0820151600582015560c090910151600690910155509695505050505050565b8051600090829015156200055657600091506200055e565b602083015191505b50919050565b6125f880620005746000396000f3006080604052600436106101c15763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663017e99c981146101c657806323e23746146101f2578063288383bc1461021657806329ba589a1461024057806331ace9e514610258578063376b464b146102e257806343f09349146102fa5780634c286e8e1461030f5780635c1ab6e41461036a5780635d19d2331461037f5780635f8e8472146103a3578063646a2b27146103fe57806364c7dd121461041357806367a1a9741461042e578063715018a6146104875780637365412e1461049e57806374a34ddc146104b65780637fb0b1a4146105185780638bc7624d1461057a5780638da5cb5b146105d357806395636aca146106045780639b97e02b1461065f578063a35cdab514610677578063a89bbd8c1461069e578063ab9a1c7e146106f7578063ad73254b14610762578063b972250f14610777578063bf9ae08914610792578063ca2154c5146107f2578063d79f6d8e14610810578063e41bea2514610825578063eb55d7cb14610849578063ed5b2b441461085e578063f2fde38b146108b9578063f5cc1d94146108da578063fec2ab4314610945575b600080fd5b3480156101d257600080fd5b506101de60043561095a565b604080519115158252519081900360200190f35b3480156101fe57600080fd5b506101de600435600160a060020a03602435166109d0565b34801561022257600080fd5b5061022e600435610a70565b60408051918252519081900360200190f35b34801561024c57600080fd5b5061022e600435610a9e565b34801561026457600080fd5b5061026d610b05565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102a757818101518382015260200161028f565b50505050905090810190601f1680156102d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102ee57600080fd5b5061022e600435610d83565b34801561030657600080fd5b5061022e610def565b34801561031b57600080fd5b50610327600435610df5565b6040805198151589526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561037657600080fd5b5061026d610ec0565b34801561038b57600080fd5b506101de600435600160a060020a0360243516611015565b3480156103af57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101de94369492936024939284019190819084018382808284375094975050933594506110699350505050565b34801561040a57600080fd5b5061022e611081565b34801561041f57600080fd5b5061022e600435602435611087565b34801561043a57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101de9436949293602493928401919081908401838280828437509497506110959650505050505050565b34801561049357600080fd5b5061049c6110be565b005b3480156104aa57600080fd5b506101de60043561112a565b3480156104c257600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101de9436949293602493928401919081908401838280828437509497505084359550505060209092013591506111ad9050565b34801561052457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261022e9436949293602493928401919081908401838280828437509497505084359550505060209092013591506111c59050565b34801561058657600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103279436949293602493928401919081908401838280828437509497506111da9650505050505050565b3480156105df57600080fd5b506105e8611212565b60408051600160a060020a039092168252519081900360200190f35b34801561061057600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261022e94369492936024939284019190819084018382808284375094975050933594506112219350505050565b34801561066b57600080fd5b506101de600435611235565b34801561068357600080fd5b506101de60043560243560443560643560843560a435611300565b3480156106aa57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261022e9436949293602493928401919081908401838280828437509497506114379650505050505050565b34801561070357600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101de9436949293602493928401919081908401838280828437509497505084359550505060208301359260408101359250606001359050611460565b34801561076e57600080fd5b5061022e6115b1565b34801561078357600080fd5b506101de6004356024356115b7565b34801561079e57600080fd5b50604080516020600480358082013583810280860185019096528085526101de9536959394602494938501929182918501908490808284375094975050509235600160a060020a0316935061168b92505050565b3480156107fe57600080fd5b5061022e6004356024356044356117c8565b34801561081c57600080fd5b5061022e611842565b34801561083157600080fd5b506101de600435600160a060020a036024351661190f565b34801561085557600080fd5b5061022e6119ab565b34801561086a57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101de94369492936024939284019190819084018382808284375094975050933594506119b19350505050565b3480156108c557600080fd5b5061049c600160a060020a0360043516611abf565b3480156108e657600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101de9436949293602493928401919081908401838280828437509497505084359550505060208301359260408101359250606001359050611b53565b34801561095157600080fd5b5061022e611dde565b600080548190600160a060020a0316331461097457600080fd5b6000831161098157600080fd5b506002805490839055604080518281526020810185905281517f2de4f545327dc937713a54536941304b40c33fbbeae23f8278075dd35b782699929181900390910190a1600191505b50919050565b60008054600160a060020a031633146109e857600080fd5b600160a060020a03821615156109fd57600080fd5b6000838152600160208181526040808420600160a060020a03871680865290835293819020805460ff191690931790925581518681529081019290925280517fd2bcbdce2fd2f33c1c519ac1be432022e2ec506950a3f516f0c432bf8f2c111f9281900390910190a15060015b92915050565b600254600090610a6a90610a9284670de0b6b3a764000063ffffffff611de416565b9063ffffffff611e0d16565b6002547f4554480000000000000000000000000000000000000000000000000000000000600090815260076020527f79fc3abc0c1ff5ae9d7c3d3fb484b8133febf01a71d91e11388874989daea7e0549091610a6a91610a9290859063ffffffff611de416565b60408051808201909152600181527f7b00000000000000000000000000000000000000000000000000000000000000602082015260085460609190600090811015610d3f575060005b600854811015610d3a5760076000600883815481101515610b6b57fe5b6000918252602080832090910154835282019290925260400190205460ff1615610d3257610d2f82610c276040805190810160405280600181526020017f2200000000000000000000000000000000000000000000000000000000000000815250610bee600886815481101515610bde57fe5b9060005260206000200154611e22565b60408051808201909152600281527f223a0000000000000000000000000000000000000000000000000000000000006020820152611f68565b610cb060076000600887815481101515610c3d57fe5b600091825260208083209091015483528281019390935260409182019020815160e081018352815460ff16151581526001820154938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a08301526006015460c0820152611f97565b6008546001860114610cf55760408051808201909152600181527f2c000000000000000000000000000000000000000000000000000000000000006020820152610d2a565b60408051808201909152600181527f7d0000000000000000000000000000000000000000000000000000000000000060208201525b6121db565b91505b600101610b4e565b610d7a565b60408051808201909152600281527f5b5d00000000000000000000000000000000000000000000000000000000000060208201529250610d7e565b8192505b505090565b7f4554480000000000000000000000000000000000000000000000000000000000600090815260076020527f79fc3abc0c1ff5ae9d7c3d3fb484b8133febf01a71d91e11388874989daea7e054610a6a90670de0b6b3a764000090610a9290859063ffffffff611de416565b60025490565b600080600080600080600080610e0961258c565b506000898152600760209081526040808320815160e081018352815460ff161515815260018201549381019390935260028101549183019190915260038101546060830181905260048201546080840152600582015460a084015260069091015460c0830152909190610e7d908c90611087565b905081600001518260200151836040015184606001518560800151858760a001518860c00151995099509950995099509950995099505050919395975091939597565b60408051808201909152600181527f7b00000000000000000000000000000000000000000000000000000000000000602082015260609060005b600854811015610d7a5761100b82610f536040805190810160405280600181526020017f2200000000000000000000000000000000000000000000000000000000000000815250610bee600886815481101515610bde57fe5b610f8d60076000600887815481101515610f6957fe5b60009182526020808320909101548352820192909252604001902060010154612203565b6008546001860110610fd25760408051808201909152600181527f7d000000000000000000000000000000000000000000000000000000000000006020820152610d2a565b60408051808201909152600181527f2c0000000000000000000000000000000000000000000000000000000000000060208201526121db565b9150600101610efa565b6000828152600160209081526040808320600160a060020a038516845290915281205460ff16806110535750600054600160a060020a038381169116145b1561106057506001610a6a565b50600092915050565b600061107a83836000806000611b53565b9392505050565b60065490565b600061107a838360006117c8565b6000600760006110a4846122f6565b815260208101919091526040016000205460ff1692915050565b600054600160a060020a031633146110d557600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600080548190600160a060020a0316331461114457600080fd5b6000831180156111555750600a8311155b151561116057600080fd5b506003805490839055604080518281526020810185905281517fda65ce831238cfe2e1b136ac31392a7b54840589a878f986e76b6adefd1391f1929181900390910190a150600192915050565b60006111bd848484600080611b53565b949350505050565b60006111bd6111d3856122f6565b84846117c8565b6000806000806000806000806111f76111f28a6122f6565b610df5565b97509750975097509750975097509750919395975091939597565b600054600160a060020a031681565b600061107a61122f846122f6565b83611087565b3360009081527fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643602052604081205460049060ff168061127f5750600054600160a060020a031633145b15156112be576040805160e560020a62461bcd028152602060048201526003602482015260e860020a6234303302604482015290519081900360640190fd5b600480548401905560068054840190556040517fecead7eea1e7bd6c6e12a715d19992a0bff3f3d5baa2af2c61fec1ad273821a690600090a150600192915050565b3360009081527f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b602052604081205460039060ff168061134a5750600054600160a060020a031633145b1515611389576040805160e560020a62461bcd028152602060048201526003602482015260e860020a6234303302604482015290519081900360640190fd5b6000871161139657600080fd5b600086116113a357600080fd5b600085116113b057600080fd5b600084116113bd57600080fd5b60008881526007602052604090205460ff1615156113d757fe5b600484815560068490556005869055600089815260076020526040808220928301899055600390920189905590517fecead7eea1e7bd6c6e12a715d19992a0bff3f3d5baa2af2c61fec1ad273821a69190a1506001979650505050505050565b600060076000611446846122f6565b815260208101919091526040016000206001015492915050565b3360009081527fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f6020526040812054819060029060ff16806114ac5750600054600160a060020a031633145b15156114eb576040805160e560020a62461bcd028152602060048201526003602482015260e860020a6234303302604482015290519081900360640190fd5b600087116114f857600080fd5b6000861161150557600080fd5b6000851161151257600080fd5b61151b886122f6565b60008181526007602052604090205490925060ff16151561153857fe5b60048054860181556006805486019055600580548801815560008481526007602052604080822093840180548b0190556003840180548c019055929091018054600101905590517f1d3cb9e6f8769cb580022c460168d3cf3f4cc5b8553b06c757a9348b9635d1359190a1506001979650505050505050565b60055490565b3360009081527fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c602052604081205460059060ff16806116015750600054600160a060020a031633145b1515611640576040805160e560020a62461bcd028152602060048201526003602482015260e860020a6234303302604482015290519081900360640190fd5b6004805460068054918790038601909255859003840190556040517fecead7eea1e7bd6c6e12a715d19992a0bff3f3d5baa2af2c61fec1ad273821a690600090a15060019392505050565b600080548190600160a060020a031633146116a557600080fd5b600160a060020a03831615156116ba57600080fd5b83516000106116c857600080fd5b5060005b835181101561172f57600180600086848151811015156116e857fe5b60209081029190910181015182528181019290925260409081016000908120600160a060020a03881682529092529020805460ff19169115159190911790556001016116cc565b7f9239e51bd209fecea3bda09b9a8a1438065e2d6cd843e46511430bf229085e3c8484604051808060200183600160a060020a0316600160a060020a03168152602001828103825284818151815260200191508051906020019060200280838360005b838110156117aa578181015183820152602001611792565b50505050905001935050505060405180910390a15060019392505050565b60008381526007602052604081205460ff1680156117e65750600083115b156118385760008481526007602052604081206002015461183191610a9290851161182257600087815260076020526040902060010154611824565b845b869063ffffffff611de416565b905061107a565b5060009392505050565b600854600090819081908110156118fc575060005b6008548110156118fc5760006007600060088481548110151561187657fe5b6000918252602080832090910154835282019290925260400190206003015411156118f4576118ef6008828154811015156118ad57fe5b9060005260206000200154600760006008858154811015156118cb57fe5b60009182526020808320909101548352820192909252604001902060030154611087565b820191505b600101611857565b61190882600354612315565b9250505090565b60008054600160a060020a0316331461192757600080fd5b600160a060020a038216151561193c57600080fd5b6000838152600160209081526040808320600160a060020a03861680855290835292819020805460ff1916905580518681529182019290925281517f86d11c3874d08f6dc589a8a45af47c09ceba70c17083b31bfd183ea49bc239cc929181900390910190a150600192915050565b60045490565b3360009081527f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a6020526040812054819060069060ff16806119fd5750600054600160a060020a031633145b1515611a3c576040805160e560020a62461bcd028152602060048201526003602482015260e860020a6234303302604482015290519081900360640190fd5b611a45856122f6565b60008181526007602052604090205490925060ff161515611a6557600080fd5b60008411611a7257600080fd5b6000828152600760205260408082206001810187905542600690910155517f1b1e255018e39fbb71cdd78af927f848edf221a8fbb6649aed4c3e4c2e868c9c9190a1506001949350505050565b600054600160a060020a03163314611ad657600080fd5b600160a060020a0381161515611aeb57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b3360009081527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f6020526040812054819060019060ff1680611b9f5750600054600160a060020a031633145b1515611bde576040805160e560020a62461bcd028152602060048201526003602482015260e860020a6234303302604482015290519081900360640190fd5b60008711611c36576040805160e560020a62461bcd02815260206004820152600160248201527f3100000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b611c3f886122f6565b60008181526007602052604090205490925060ff161515611c9057600880546001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3018290555b6040805160e08101825260018152602081018990529081018715611cb45787611cc7565b6000848152600760205260409020600201545b8152600084815260076020908152604082206003015492019111611ceb5786611cfe565b6000848152600760205260409020600301545b8152600084815260076020908152604082206004015492019111611d225785611d35565b6000848152600760205260409020600401545b8152600084815260076020908152604082206005015492019111611d5a576000611d6d565b6000848152600760205260409020600501545b8152426020918201526000938452600781526040938490208251815460ff191690151517815590820151600180830191909155938201516002820155606082015160038201556080820151600482015560a0820151600582015560c090910151600690910155509695505050505050565b60035490565b6000821515611df557506000610a6a565b50818102818382811515611e0557fe5b0414610a6a57fe5b60008183811515611e1a57fe5b049392505050565b6040805160208082528183019092526060918291600091829182918591908082016104008038833901905050945060009350600092505b6020831015611ece576008830260020a870291507fff00000000000000000000000000000000000000000000000000000000000000821615611ec357818585815181101515611ea457fe5b906020010190600160f860020a031916908160001a9053506001909301925b600190920191611e59565b836040519080825280601f01601f191660200182016040528015611efc578160200160208202803883390190505b509050600092505b83831015611f5e578483815181101515611f1a57fe5b90602001015160f860020a900460f860020a028184815181101515611f3b57fe5b906020010190600160f860020a031916908160001a905350600190920191611f04565b9695505050505050565b60606111bd84848460206040519081016040528060008152506020604051908101604052806000815250612330565b6060610a6a61205b6040805190810160405280600781526020017f7b22757364223a00000000000000000000000000000000000000000000000000815250611fe28560200151612203565b604080518082018252600c81527f2c226465766973696f6e223a000000000000000000000000000000000000000060208201529087015161202290612203565b60408051808201909152600b81527f2c22726169736564223a220000000000000000000000000000000000000000006020820152612330565b61211461206b8560600151612203565b6040805190810160405280600e81526020017f222c22757364526169736564223a0000000000000000000000000000000000008152506120ae8760800151612203565b6040805190810160405280601581526020017f2c2275736452616973656443757272656e6379223a000000000000000000000081525061210f61210a8a60400151610a928c602001518d60600151611de490919063ffffffff16565b612203565b612330565b6121d66040805190810160405280600b81526020017f2c22636f756e746572223a00000000000000000000000000000000000000000081525061215a8760a00151612203565b6040805190810160405280600e81526020017f2c226c617374557064617465223a00000000000000000000000000000000000081525061219d8960c00151612203565b60408051808201909152600181527f7d000000000000000000000000000000000000000000000000000000000000006020820152612330565b611f68565b60606121fa858585856020604051908101604052806000815250612330565b95945050505050565b6060600080828185151561224c5760408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015294506122ed565b8593505b831561226757600190920191600a84049350612250565b826040519080825280601f01601f191660200182016040528015612295578160200160208202803883390190505b5091505060001982015b85156122e957815160001982019160f860020a6030600a8a0601029184919081106122c657fe5b906020010190600160f860020a031916908160001a905350600a8604955061229f565b8194505b50505050919050565b80516000908290151561230c57600091506109ca565b50506020015190565b60006064830482028381111561232757fe5b90920392915050565b60608060608060608060606000808d97508c96508b95508a945089935083518551875189518b51010101016040519080825280601f01601f191660200182016040528015612388578160200160208202803883390190505b50925060009150600090505b87518110156123f25787818151811015156123ab57fe5b90602001015160f860020a900460f860020a0283838060010194508151811015156123d257fe5b906020010190600160f860020a031916908160001a905350600101612394565b5060005b865181101561245457868181518110151561240d57fe5b90602001015160f860020a900460f860020a02838380600101945081518110151561243457fe5b906020010190600160f860020a031916908160001a9053506001016123f6565b5060005b85518110156124b657858181518110151561246f57fe5b90602001015160f860020a900460f860020a02838380600101945081518110151561249657fe5b906020010190600160f860020a031916908160001a905350600101612458565b5060005b84518110156125185784818151811015156124d157fe5b90602001015160f860020a900460f860020a0283838060010194508151811015156124f857fe5b906020010190600160f860020a031916908160001a9053506001016124ba565b5060005b835181101561257a57838181518110151561253357fe5b90602001015160f860020a900460f860020a02838380600101945081518110151561255a57fe5b906020010190600160f860020a031916908160001a90535060010161251c565b50909c9b505050505050505050505050565b60e06040519081016040528060001515815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250905600a165627a7a72305820ecf82eea34a3958aa1f659af1cda8bdefde4560039030f744aeacfb7f252172a00290000000000000000000000000000000000000000000000000000000000004f72000000000000000000000000000000000000000000000000000000000009d82600000000000000000000000000000000000000000000000000000000000000730000000000000000000000000000000000000000000000000000000000000013

   Swarm Source:
bzzr://ecf82eea34a3958aa1f659af1cda8bdefde4560039030f744aeacfb7f252172a

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward