ETH Price: $1,982.35 (-4.88%)

Contract

0xaA5bBD5A177A588b9F213505cA3740b444Dbd586
 

Overview

ETH Balance

4.687747078184687238 ETH

Eth Value

$9,292.75 (@ $1,982.35/ETH)

Token Holdings

More Info

Private Name Tags

Multichain Info

Transaction Hash
Method
Block
From
To
0x164762d3cff4dda8713fc997e6aeed1ff728c10100ca61a958b9d5028575b72c Cancel Order(pending)2026-03-01 3:05:346 days ago1772334334IN
Saturn Network 2
0 ETH(Pending)(Pending)
0x6977b341453089df5dd00508122de9a069b57d7b0af37872b8ed660463769804 Cancel Order(pending)2026-03-01 3:05:346 days ago1772334334IN
Saturn Network 2
0 ETH(Pending)(Pending)
0xf4209738b2a65920c476e312578adae4de0df0882df3f2bcd01cbd3d6b38d63a Cancel Order(pending)2026-03-01 3:05:346 days ago1772334334IN
Saturn Network 2
0 ETH(Pending)(Pending)
0x06a1628facbf735f08b0188388a2618438096e6b89b5807ab6b4a9ff10ceb853 Cancel Order(pending)2026-03-01 3:05:346 days ago1772334334IN
Saturn Network 2
0 ETH(Pending)(Pending)
0xd803ddf84280efb78084c1972ccf217f17e09f3a2bf3f2dc3731790b9ff10b69 Cancel Order(pending)2026-03-01 3:05:346 days ago1772334334IN
Saturn Network 2
0 ETH(Pending)(Pending)
0x11c2af8ef7263920d1038b2106083310ffa4f96b2d762bac4e947301150501f3 Cancel Order(pending)2026-03-01 2:05:066 days ago1772330706IN
Saturn Network 2
0 ETH(Pending)(Pending)
Buy Order With E...241303892025-12-31 5:02:1165 days ago1767157331IN
Saturn Network 2
0 ETH0.000004290.02952365
Buy Order With E...241217472025-12-30 0:01:4767 days ago1767052907IN
Saturn Network 2
0 ETH0.000005950.05
Buy Order With E...239206982025-12-01 19:24:2395 days ago1764617063IN
Saturn Network 2
0 ETH0.000009940.05377893
Buy Order With E...236961792025-10-31 8:34:59126 days ago1761899699IN
Saturn Network 2
0 ETH0.000017410.11756425
Buy Order With E...236961792025-10-31 8:34:59126 days ago1761899699IN
Saturn Network 2
0.00000074 ETH0.000011950.11756425
Buy Order With E...236961662025-10-31 8:32:23126 days ago1761899543IN
Saturn Network 2
0 ETH0.000019120.12916143
Buy Order With E...236961602025-10-31 8:31:11126 days ago1761899471IN
Saturn Network 2
0.00000017 ETH0.000015610.13145517
Buy Order With E...236961082025-10-31 8:20:47126 days ago1761898847IN
Saturn Network 2
0 ETH0.000015450.10526681
Buy Order With E...236960942025-10-31 8:17:59126 days ago1761898679IN
Saturn Network 2
0.000011 ETH0.000016320.11234972
Buy Order With E...236960232025-10-31 8:03:35126 days ago1761897815IN
Saturn Network 2
0 ETH0.000019590.12038849
Buy Order With E...236960232025-10-31 8:03:35126 days ago1761897815IN
Saturn Network 2
0.00043 ETH0.000017690.12038849
Buy Order With E...236960102025-10-31 8:00:59126 days ago1761897659IN
Saturn Network 2
0 ETH0.000020310.13657913
Buy Order With E...236960102025-10-31 8:00:59126 days ago1761897659IN
Saturn Network 2
0.00013 ETH0.000020140.13657913
Buy Order With E...236543592025-10-25 12:05:11132 days ago1761393911IN
Saturn Network 2
0 ETH0.000017130.11755775
Buy Order With E...236543592025-10-25 12:05:11132 days ago1761393911IN
Saturn Network 2
0 ETH0.000017130.11755776
Buy Order With E...236033442025-10-18 8:28:59139 days ago1760776139IN
Saturn Network 2
0 ETH0.000017440.1181019
Buy Order With E...236033332025-10-18 8:26:47139 days ago1760776007IN
Saturn Network 2
0 ETH0.000016890.1162575
Buy Order With E...235350232025-10-08 19:10:11149 days ago1759950611IN
Saturn Network 2
0 ETH0.000053270.35856003
Buy Order With E...235348132025-10-08 18:28:11149 days ago1759948091IN
Saturn Network 2
0 ETH0.000077380.5236354
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer242627892026-01-18 16:18:5947 days ago1768753139
Saturn Network 2
0.00000002 ETH
Transfer242627892026-01-18 16:18:5947 days ago1768753139
Saturn Network 2
0.00000893 ETH
Transfer241303892025-12-31 5:02:1165 days ago1767157331
Saturn Network 2
0.00002481 ETH
Transfer241303892025-12-31 5:02:1165 days ago1767157331
Saturn Network 2
0.00989999 ETH
Transfer239206982025-12-01 19:24:2395 days ago1764617063
Saturn Network 2
0.00005804 ETH
Transfer239206982025-12-01 19:24:2395 days ago1764617063
Saturn Network 2
0.02316025 ETH
Transfer236961792025-10-31 8:34:59126 days ago1761899699
Saturn Network 2
0.00000059 ETH
Transfer236961792025-10-31 8:34:59126 days ago1761899699
Saturn Network 2
0.00023805 ETH
Transfer236961792025-10-31 8:34:59126 days ago1761899699
Saturn Network 2
0 ETH
Transfer236961792025-10-31 8:34:59126 days ago1761899699
Saturn Network 2
0.00000073 ETH
Transfer236961662025-10-31 8:32:23126 days ago1761899543
Saturn Network 2
0.00000059 ETH
Transfer236961662025-10-31 8:32:23126 days ago1761899543
Saturn Network 2
0.00023871 ETH
Transfer236961602025-10-31 8:31:11126 days ago1761899471
Saturn Network 2
0 ETH
Transfer236961602025-10-31 8:31:11126 days ago1761899471
Saturn Network 2
0.00000016 ETH
Transfer236961082025-10-31 8:20:47126 days ago1761898847
Saturn Network 2
0.0000007 ETH
Transfer236961082025-10-31 8:20:47126 days ago1761898847
Saturn Network 2
0.00028101 ETH
Transfer236960942025-10-31 8:17:59126 days ago1761898679
Saturn Network 2
0.00000002 ETH
Transfer236960942025-10-31 8:17:59126 days ago1761898679
Saturn Network 2
0.00001097 ETH
Transfer236960232025-10-31 8:03:35126 days ago1761897815
Saturn Network 2
0.00000188 ETH
Transfer236960232025-10-31 8:03:35126 days ago1761897815
Saturn Network 2
0.00075371 ETH
Transfer236960232025-10-31 8:03:35126 days ago1761897815
Saturn Network 2
0.00000107 ETH
Transfer236960232025-10-31 8:03:35126 days ago1761897815
Saturn Network 2
0.00042892 ETH
Transfer236960102025-10-31 8:00:59126 days ago1761897659
Saturn Network 2
0.00000125 ETH
Transfer236960102025-10-31 8:00:59126 days ago1761897659
Saturn Network 2
0.00050225 ETH
Transfer236960102025-10-31 8:00:59126 days ago1761897659
Saturn Network 2
0.00000032 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Exchange

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2020-02-08
*/

// Saturn Protocol

// File: contracts/SafeMath.sol

pragma solidity ^0.4.24;

library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  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 c;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

// File: contracts/BytesLib.sol
// from
// https://github.com/GNSPS/solidity-bytes-utils/blob/master/contracts/BytesLib.sol


library BytesLib {
  function toAddress(bytes _bytes, uint _start) internal pure returns (address) {
    require(_bytes.length >= (_start + 20));
    address tempAddress;

    assembly {
      tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000)
    }

    return tempAddress;
  }

  function toUint(bytes _bytes, uint _start) internal pure returns (uint256) {
    require(_bytes.length >= (_start + 32));
    uint256 tempUint;

    assembly {
      tempUint := mload(add(add(_bytes, 0x20), _start))
    }

    return tempUint;
  }
}

// File: contracts/ERC223.sol

contract ERC223 {
  uint public totalSupply;
  function balanceOf(address who) constant public returns (uint);

  function name() constant public returns (string _name);
  function symbol() constant public returns (string _symbol);
  function decimals() constant public returns (uint8 _decimals);
  function totalSupply() constant public returns (uint256 _supply);

  function transfer(address to, uint value) public returns (bool ok);
  function transfer(address to, uint value, bytes data) public returns (bool ok);
  event Transfer(address indexed _from, address indexed _to, uint256 _value);
  event ERC223Transfer(address indexed _from, address indexed _to, uint256 _value, bytes _data);
}

contract ContractReceiver {
  function tokenFallback(address _from, uint _value, bytes _data) public;
}

contract ERC223I is ERC223 {
  using SafeMath for uint;

  mapping(address => uint) balances;

  string public name;
  string public symbol;
  uint8 public decimals;
  uint256 public totalSupply;


  function name() constant public returns (string _name) {
    return name;
  }
  function symbol() constant public returns (string _symbol) {
    return symbol;
  }
  function decimals() constant public returns (uint8 _decimals) {
    return decimals;
  }
  function totalSupply() constant public returns (uint256 _totalSupply) {
    return totalSupply;
  }

  function transfer(address _to, uint _value, bytes _data) public returns (bool success) {
    if (isContract(_to)) {
      return transferToContract(_to, _value, _data);
    } else {
      return transferToAddress(_to, _value, _data);
    }
  }

  function transfer(address _to, uint _value) public returns (bool success) {
    bytes memory empty;
    if (isContract(_to)) {
      return transferToContract(_to, _value, empty);
    } else {
      return transferToAddress(_to, _value, empty);
    }
  }

  function isContract(address _addr) private view returns (bool is_contract) {
    uint length;
    assembly {
      length := extcodesize(_addr)
    }
    return (length > 0);
  }

  function transferToAddress(address _to, uint _value, bytes _data) private returns (bool success) {
    if (balanceOf(msg.sender) < _value) revert();
    balances[msg.sender] = balanceOf(msg.sender).sub(_value);
    balances[_to] = balanceOf(_to).add(_value);
    Transfer(msg.sender, _to, _value);
    ERC223Transfer(msg.sender, _to, _value, _data);
    return true;
  }

  function transferToContract(address _to, uint _value, bytes _data) private returns (bool success) {
    if (balanceOf(msg.sender) < _value) revert();
    balances[msg.sender] = balanceOf(msg.sender).sub(_value);
    balances[_to] = balanceOf(_to).add(_value);
    ContractReceiver reciever = ContractReceiver(_to);
    reciever.tokenFallback(msg.sender, _value, _data);
    Transfer(msg.sender, _to, _value);
    ERC223Transfer(msg.sender, _to, _value, _data);
    return true;
  }

  function balanceOf(address _owner) constant public returns (uint balance) {
    return balances[_owner];
  }
}

// File: contracts/Exchange.sol

// Saturn Protocol

contract ERC20 {
    function totalSupply() public view returns (uint);
    function balanceOf(address holder) public view returns (uint);
    function allowance(address holder, address other) public view returns (uint);

    function approve(address other, uint amount) public returns (bool);
    function transfer(address to, uint amount) public returns (bool);
    function transferFrom(
        address from, address to, uint amount
    ) public returns (bool);
}

contract Exchange is ContractReceiver {
  using SafeMath for uint256;
  using BytesLib for bytes;

  bool private rentrancy_lock = false;
  modifier nonReentrant() {
    require(!rentrancy_lock);
    rentrancy_lock = true;
    _;
    rentrancy_lock = false;
  }

  struct Order {
    address owner;
    bool    active;
    address sellToken;
    address buyToken;
    address ring;
    uint256 amount;
    uint256 priceMul;
    uint256 priceDiv;
  }

  // person => token => balance
  mapping(address => mapping(address => uint256)) private balances;
  mapping(uint256 => Order) private orderBook;
  uint256 public orderCount;
  address private etherAddress = 0x0;

  address private saturnToken;
  address private admin;
  uint256 public tradeMiningBalance;
  address public treasury;

  uint256 public feeMul;
  uint256 public feeDiv;
  uint256 public tradeMiningMul;
  uint256 public tradeMiningDiv;

  event NewOrder(
    uint256 id,
    address owner,
    address sellToken,
    address buyToken,
    address ring,
    uint256 amount,
    uint256 priceMul,
    uint256 priceDiv,
    uint256 time
  );

  event OrderCancelled(
    uint256 id,
    uint256 time
  );

  event OrderFulfilled(
    uint256 id,
    uint256 time
  );

  event Trade(
    address from,
    address to,
    uint256 orderId,
    uint256 soldTokens,
    uint256 boughtTokens,
    uint256 feePaid,
    uint256 time
  );

  event Mined(
    address trader,
    uint256 amount,
    uint256 time
  );

  function Exchange(
    address _saturnToken,
    address _treasury,
    uint256 _feeMul,
    uint256 _feeDiv,
    uint256 _tradeMiningMul,
    uint256 _tradeMiningDiv
  ) public {
    saturnToken    = _saturnToken;
    treasury       = _treasury;
    feeMul         = _feeMul;
    feeDiv         = _feeDiv;
    tradeMiningMul = _tradeMiningMul;
    tradeMiningDiv = _tradeMiningDiv;
    admin          = msg.sender;
  }

  function() payable public { revert(); }

  //////////////////
  // public views //
  //////////////////
  // add views for prices too
  // and for order owner too

  function getBalance(address token, address user) view public returns(uint256) {
    return balances[user][token];
  }

  function isOrderActive(uint256 orderId) view public returns(bool) {
    return orderBook[orderId].active;
  }

  function remainingAmount(uint256 orderId) view public returns(uint256) {
    return orderBook[orderId].amount;
  }

  function getBuyTokenAmount(uint256 desiredSellTokenAmount, uint256 orderId) public view returns(uint256 amount) {
    require(desiredSellTokenAmount > 0);
    Order storage order = orderBook[orderId];

    if (order.sellToken == etherAddress || order.buyToken == etherAddress) {
      uint256 feediff = feeDiv.sub(feeMul);
      amount = desiredSellTokenAmount.mul(order.priceDiv).mul(feeDiv).div(order.priceMul).div(feediff);
    } else {
      amount = desiredSellTokenAmount.mul(order.priceDiv).div(order.priceMul);
    }
    require(amount > 0);
  }

  function calcFees(uint256 amount, uint256 orderId) public view returns(uint256 fees) {
    Order storage order = orderBook[orderId];

    if (order.sellToken == etherAddress) {
      uint256 sellTokenAmount = amount.mul(order.priceMul).div(order.priceDiv);
      fees = sellTokenAmount.mul(feeMul).div(feeDiv);
    } else if (order.buyToken == etherAddress) {
      fees = amount.mul(feeMul).div(feeDiv);
    } else {
      fees = 0;
    }
    return fees;
  }

  function tradeMiningAmount(uint256 fees, uint256 orderId) public view returns(uint256) {
    if (fees == 0) { return 0; }
    Order storage order = orderBook[orderId];
    if (!order.active) { return 0; }
    uint256 tokenAmount = fees.mul(tradeMiningMul).div(tradeMiningDiv);

    if (tradeMiningBalance < tokenAmount) {
      return tradeMiningBalance;
    } else {
      return tokenAmount;
    }
  }

  ////////////////////
  // public methods //
  ////////////////////

  function withdrawTradeMining() public {
    if (msg.sender != admin) { revert(); }
    require(tradeMiningBalance > 0);

    uint toSend = tradeMiningBalance;
    tradeMiningBalance = 0;
    require(sendTokensTo(admin, toSend, saturnToken));
  }

  function changeTradeMiningPrice(uint256 newMul, uint256 newDiv) public {
    if (msg.sender != admin) { revert(); }
    require(newDiv != 0);
    tradeMiningMul = newMul;
    tradeMiningDiv = newDiv;
  }

  // handle incoming ERC223 tokens
  function tokenFallback(address from, uint value, bytes data) public {
    // depending on length of data
    // this should be either an order creating transaction
    // or an order taking transaction
    // or a transaction allocating tokens for trade mining
    if (data.length == 0 && msg.sender == saturnToken) {
      _topUpTradeMining(value);
    } else if (data.length == 84) {
      _newOrder(from, msg.sender, data.toAddress(64), value, data.toUint(0), data.toUint(32), etherAddress);
    } else if (data.length == 104) {
      _newOrder(from, msg.sender, data.toAddress(64), value, data.toUint(0), data.toUint(32), data.toAddress(84));
    } else if (data.length == 32) {
      _executeOrder(from, data.toUint(0), msg.sender, value);
    } else {
      // unknown payload!
      revert();
    }
  }

  function sellEther(
    address buyToken,
    uint256 priceMul,
    uint256 priceDiv
  ) public payable returns(uint256 orderId) {
    require(msg.value > 0);
    return _newOrder(msg.sender, etherAddress, buyToken, msg.value, priceMul, priceDiv, etherAddress);
  }

  function sellEtherWithRing(
    address buyToken,
    uint256 priceMul,
    uint256 priceDiv,
    address ring
  ) public payable returns(uint256 orderId) {
    require(msg.value > 0);
    return _newOrder(msg.sender, etherAddress, buyToken, msg.value, priceMul, priceDiv, ring);
  }

  function buyOrderWithEth(uint256 orderId) public payable {
    require(msg.value > 0);
    _executeOrder(msg.sender, orderId, etherAddress, msg.value);
  }

  function sellERC20Token(
    address sellToken,
    address buyToken,
    uint256 amount,
    uint256 priceMul,
    uint256 priceDiv
  ) public returns(uint256 orderId) {
    require(amount > 0);
    uint256 pulledAmount = pullTokens(sellToken, amount);
    return _newOrder(msg.sender, sellToken, buyToken, pulledAmount, priceMul, priceDiv, etherAddress);
  }

  function sellERC20TokenWithRing(
    address sellToken,
    address buyToken,
    uint256 amount,
    uint256 priceMul,
    uint256 priceDiv,
    address ring
  ) public returns(uint256 orderId) {
    require(amount > 0);
    uint256 pulledAmount = pullTokens(sellToken, amount);
    return _newOrder(msg.sender, sellToken, buyToken, pulledAmount, priceMul, priceDiv, ring);
  }

  function buyOrderWithERC20Token(
    uint256 orderId,
    address token,
    uint256 amount
  ) public {
    require(amount > 0);
    require(pullTokens(token, amount) > 0);
    _executeOrder(msg.sender, orderId, token, amount);
  }

  function cancelOrder(uint256 orderId) public nonReentrant {
    Order storage order = orderBook[orderId];
    require(order.amount > 0);
    require(order.active);
    require(msg.sender == order.owner);

    balances[msg.sender][order.sellToken] = balances[msg.sender][order.sellToken].sub(order.amount);
    require(sendTokensTo(order.owner, order.amount, order.sellToken));

    // deleting the order refunds the caller some gas
    // this also sets order.active to false
    delete orderBook[orderId];
    emit OrderCancelled(orderId, now);
  }

  /////////////////////
  // private methods //
  /////////////////////

  function _newOrder(
    address owner,
    address sellToken,
    address buyToken,
    uint256 amount,
    uint256 priceMul,
    uint256 priceDiv,
    address ring
  ) private nonReentrant returns(uint256 orderId) {
    /////////////////////////
    // step 1. validations //
    /////////////////////////
    require(amount > 0);
    require(priceMul > 0);
    require(priceDiv > 0);
    require(sellToken != buyToken);
    ///////////////////////////////
    // step 2. Update order book //
    ///////////////////////////////
    orderId = orderCount++;
    orderBook[orderId] = Order(owner, true, sellToken, buyToken, ring, amount, priceMul, priceDiv);
    balances[owner][sellToken] = balances[owner][sellToken].add(amount);

    emit NewOrder(orderId, owner, sellToken, buyToken, ring, amount, priceMul, priceDiv, now);
  }

  function _executeBuyOrder(address trader, uint256 orderId, uint256 buyTokenAmount) private returns(uint256) {
    // buytoken: tkn
    // selltoken: ether
    Order storage order = orderBook[orderId];
    uint256 sellTokenAmount = buyTokenAmount.mul(order.priceMul).div(order.priceDiv);
    uint256 fees = sellTokenAmount.mul(feeMul).div(feeDiv);

    require(sellTokenAmount > 0);
    require(sellTokenAmount <= order.amount);
    order.amount = order.amount.sub(sellTokenAmount);
    // send tokens to order owner
    require(sendTokensTo(order.owner, buyTokenAmount, order.buyToken));
    // send ether to trader
    require(sendTokensTo(trader, sellTokenAmount.sub(fees), order.sellToken));

    emit Trade(trader, order.owner, orderId, sellTokenAmount.sub(fees), buyTokenAmount, fees, now);
    return fees;
  }

  function _executeSellOrder(address trader, uint256 orderId, uint256 buyTokenAmount) private returns(uint256) {
    // buytoken: ether
    // selltoken: tkn
    Order storage order = orderBook[orderId];
    uint256 fees = buyTokenAmount.mul(feeMul).div(feeDiv);
    uint256 sellTokenAmount = buyTokenAmount.sub(fees).mul(order.priceMul).div(order.priceDiv);


    require(sellTokenAmount > 0);
    require(sellTokenAmount <= order.amount);
    order.amount = order.amount.sub(sellTokenAmount);
    // send ether to order owner
    require(sendTokensTo(order.owner, buyTokenAmount.sub(fees), order.buyToken));
    // send token to trader
    require(sendTokensTo(trader, sellTokenAmount, order.sellToken));

    emit Trade(trader, order.owner, orderId, sellTokenAmount, buyTokenAmount.sub(fees), fees, now);
    return fees;
  }

  function _executeTokenSwap(address trader, uint256 orderId, uint256 buyTokenAmount) private returns(uint256) {
    // no ether was exchanged
    Order storage order = orderBook[orderId];
    uint256 sellTokenAmount = buyTokenAmount.mul(order.priceMul).div(order.priceDiv);

    require(sellTokenAmount > 0);
    require(sellTokenAmount <= order.amount);
    order.amount = order.amount.sub(sellTokenAmount);

    require(sendTokensTo(order.owner, buyTokenAmount, order.buyToken));
    require(order.active);
    require(sendTokensTo(trader, sellTokenAmount, order.sellToken));

    emit Trade(trader, order.owner, orderId, sellTokenAmount, buyTokenAmount, 0, now);
    return 0;
  }

  function _executeOrder(address trader, uint256 orderId, address buyToken, uint256 buyTokenAmount) private nonReentrant {
    /////////////////////////
    // step 0. validations //
    /////////////////////////
    require(orderId < orderCount);
    require(buyTokenAmount > 0);
    Order storage order = orderBook[orderId];
    require(order.active);
    require(trader != order.owner);
    require(buyToken == order.buyToken);

    // enforce exclusivity
    if (order.ring != etherAddress) { require(order.ring == tx.origin); }

    ////////////////////////////
    // step 1. token exchange //
    ////////////////////////////
    uint256 fees;
    if (order.sellToken == etherAddress) {
      // buy order: taker sends ether, gets tokens
      fees = _executeBuyOrder(trader, orderId, buyTokenAmount);
    } else if (order.buyToken == etherAddress) {
      // sell order: taker sends tokens, gets ether
      fees = _executeSellOrder(trader, orderId, buyTokenAmount);
    } else {
      fees = _executeTokenSwap(trader, orderId, buyTokenAmount);
    }

    ////////////////////////////
    // step 2. fees & wrap up //
    ////////////////////////////
    // collect fees and issue trade mining
    require(_tradeMiningAndFees(fees, trader));
    // deleting the order refunds the caller some gas
    if (orderBook[orderId].amount == 0) {
      delete orderBook[orderId];
      emit OrderFulfilled(orderId, now);
    }
  }

  function _tradeMiningAndFees(uint256 fees, address trader) private returns(bool) {
    if (fees == 0) { return true; }
    // step one: send fees to the treasury
    require(sendTokensTo(treasury, fees, etherAddress));
    if (tradeMiningBalance == 0) { return true; }

    // step two: calculate reward
    uint256 tokenAmount = fees.mul(tradeMiningMul).div(tradeMiningDiv);
    if (tokenAmount == 0) { return true; }
    if (tokenAmount > tradeMiningBalance) { tokenAmount = tradeMiningBalance; }

    // account for sent tokens
    tradeMiningBalance = tradeMiningBalance.sub(tokenAmount);
    // step three: send the reward to the trader
    require(sendTokensTo(trader, tokenAmount, saturnToken));
    emit Mined(trader, tokenAmount, now);
    return true;
  }

  function sendTokensTo(
    address destination,
    uint256 amount,
    address tkn
  ) private returns(bool) {
    if (tkn == etherAddress) {
      destination.transfer(amount);
    } else {
      // works with both ERC223 and ERC20
      ERC20(tkn).transfer(destination, amount);
    }
    return true;
  }

  // ERC20 fixture
  function pullTokens(address token, uint256 amount) private nonReentrant returns(uint256) {
    ERC20 tkn = ERC20(token);
    // need to do this balance dance in order to account for deflationary tokens
    uint256 balanceBefore = tkn.balanceOf(address(this));
    tkn.transferFrom(msg.sender, address(this), amount);
    uint256 balanceAfter = tkn.balanceOf(address(this));
    return balanceAfter.sub(balanceBefore);
  }

  function _topUpTradeMining(uint256 amount) private returns(bool) {
    tradeMiningBalance = tradeMiningBalance.add(amount);
    return true;
  }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"sellToken","type":"address"},{"name":"buyToken","type":"address"},{"name":"amount","type":"uint256"},{"name":"priceMul","type":"uint256"},{"name":"priceDiv","type":"uint256"},{"name":"ring","type":"address"}],"name":"sellERC20TokenWithRing","outputs":[{"name":"orderId","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"orderCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newMul","type":"uint256"},{"name":"newDiv","type":"uint256"}],"name":"changeTradeMiningPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"orderId","type":"uint256"}],"name":"cancelOrder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeMul","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"treasury","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tradeMiningMul","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"amount","type":"uint256"},{"name":"orderId","type":"uint256"}],"name":"calcFees","outputs":[{"name":"fees","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"orderId","type":"uint256"}],"name":"remainingAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeDiv","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"orderId","type":"uint256"}],"name":"buyOrderWithEth","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"fees","type":"uint256"},{"name":"orderId","type":"uint256"}],"name":"tradeMiningAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tradeMiningBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"buyToken","type":"address"},{"name":"priceMul","type":"uint256"},{"name":"priceDiv","type":"uint256"}],"name":"sellEther","outputs":[{"name":"orderId","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"orderId","type":"uint256"},{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"buyOrderWithERC20Token","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"},{"name":"user","type":"address"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"orderId","type":"uint256"}],"name":"isOrderActive","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"buyToken","type":"address"},{"name":"priceMul","type":"uint256"},{"name":"priceDiv","type":"uint256"},{"name":"ring","type":"address"}],"name":"sellEtherWithRing","outputs":[{"name":"orderId","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"sellToken","type":"address"},{"name":"buyToken","type":"address"},{"name":"amount","type":"uint256"},{"name":"priceMul","type":"uint256"},{"name":"priceDiv","type":"uint256"}],"name":"sellERC20Token","outputs":[{"name":"orderId","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawTradeMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tradeMiningDiv","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"desiredSellTokenAmount","type":"uint256"},{"name":"orderId","type":"uint256"}],"name":"getBuyTokenAmount","outputs":[{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_saturnToken","type":"address"},{"name":"_treasury","type":"address"},{"name":"_feeMul","type":"uint256"},{"name":"_feeDiv","type":"uint256"},{"name":"_tradeMiningMul","type":"uint256"},{"name":"_tradeMiningDiv","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"sellToken","type":"address"},{"indexed":false,"name":"buyToken","type":"address"},{"indexed":false,"name":"ring","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"priceMul","type":"uint256"},{"indexed":false,"name":"priceDiv","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"NewOrder","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"OrderCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"OrderFulfilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"orderId","type":"uint256"},{"indexed":false,"name":"soldTokens","type":"uint256"},{"indexed":false,"name":"boughtTokens","type":"uint256"},{"indexed":false,"name":"feePaid","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"Trade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"trader","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"Mined","type":"event"}]

60806040526000805460ff1916905560048054600160a060020a031916905534801561002a57600080fd5b5060405160c080611a7783398101604090815281516020830151918301516060840151608085015160a09095015160058054600160a060020a03958616600160a060020a031991821617909155600880549590961694811694909417909455600991909155600a55600b92909255600c5560068054909116331790556119c2806100b56000396000f3006080604052600436106101325763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166322fdd3ea81146101375780632453ffa81461018257806341f9377f14610197578063514fcac7146101b457806353e1a7a0146101cc57806361d027b3146101e15780636fb768e81461021257806378d067dd1461022757806387bda8f21461024257806389a447e01461025a578063a4ff9c341461026f578063c0ee0b8a1461027a578063c49063e7146102e3578063c655de64146102fe578063cb2bb26414610313578063cf6ff1731461032d578063d4fac45d14610354578063d6e435851461037b578063e3319e82146103a7578063eeb3377a146103c9578063f2037fec146103f9578063fc5f42411461040e578063ff700e5214610423575b600080fd5b34801561014357600080fd5b50610170600160a060020a0360043581169060243581169060443590606435906084359060a4351661043e565b60408051918252519081900360200190f35b34801561018e57600080fd5b50610170610474565b3480156101a357600080fd5b506101b260043560243561047a565b005b3480156101c057600080fd5b506101b26004356104a8565b3480156101d857600080fd5b50610170610660565b3480156101ed57600080fd5b506101f6610666565b60408051600160a060020a039092168252519081900360200190f35b34801561021e57600080fd5b50610170610675565b34801561023357600080fd5b5061017060043560243561067b565b34801561024e57600080fd5b50610170600435610738565b34801561026657600080fd5b5061017061074d565b6101b2600435610753565b34801561028657600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101b2948235600160a060020a031694602480359536959460649492019190819084018382808284375094975061077d9650505050505050565b3480156102ef57600080fd5b50610170600435602435610882565b34801561030a57600080fd5b506101706108fb565b610170600160a060020a0360043516602435604435610901565b34801561033957600080fd5b506101b2600435600160a060020a0360243516604435610933565b34801561036057600080fd5b50610170600160a060020a0360043581169060243516610962565b34801561038757600080fd5b5061039360043561098e565b604080519115158252519081900360200190f35b610170600160a060020a036004358116906024359060443590606435166109aa565b3480156103d557600080fd5b50610170600160a060020a03600435811690602435166044356064356084356109dd565b34801561040557600080fd5b506101b2610a27565b34801561041a57600080fd5b50610170610a83565b34801561042f57600080fd5b50610170600435602435610a89565b60008080861161044d57600080fd5b6104578887610b64565b905061046833898984898989610d6b565b98975050505050505050565b60035481565b600654600160a060020a0316331461049157600080fd5b80151561049d57600080fd5b600b91909155600c55565b6000805460ff16156104b957600080fd5b506000805460ff1916600117815581815260026020526040812060048101549091106104e457600080fd5b805460a060020a900460ff1615156104fb57600080fd5b8054600160a060020a0316331461051157600080fd5b600481015433600090815260016020818152604080842092860154600160a060020a0316845291905290205461054c9163ffffffff61104a16565b3360009081526001602081815260408084209286018054600160a060020a03908116865293909252909220929092558254600484015491546105939391821692911661105c565b151561059e57600080fd5b6000828152600260208181526040808420805474ffffffffffffffffffffffffffffffffffffffffff1916815560018101805473ffffffffffffffffffffffffffffffffffffffff1990811690915593810180548516905560038101805490941690935560048301849055600583018490556006909201929092558051848152429281019290925280517faa2a006d186dc89a3d6851834c85d16226329ac40bcad6531a5756a38ed1c90f9281900390910190a150506000805460ff19169055565b60095481565b600854600160a060020a031681565b600b5481565b600081815260026020526040812060045460018201548391600160a060020a03918216911614156106f5576106d182600601546106c584600501548861116490919063ffffffff16565b9063ffffffff61119316565b90506106ee600a546106c56009548461116490919063ffffffff16565b9250610730565b6004546002830154600160a060020a039081169116141561072b576106ee600a546106c56009548861116490919063ffffffff16565b600092505b505092915050565b60009081526002602052604090206004015490565b600a5481565b6000341161076057600080fd5b60045461077a9033908390600160a060020a0316346111aa565b50565b80511580156107965750600554600160a060020a031633145b156107aa576107a4826113cb565b5061087d565b8051605414156107fe576107a483336107ca84604063ffffffff6113ec16565b856107dc86600063ffffffff61141c16565b6107ed87602063ffffffff61141c16565b600454600160a060020a0316610d6b565b805160681415610857576107a4833361081e84604063ffffffff6113ec16565b8561083086600063ffffffff61141c16565b61084187602063ffffffff61141c16565b61085288605463ffffffff6113ec16565b610d6b565b8051602014156101325761087d8361087683600063ffffffff61141c16565b33856111aa565b505050565b600080808415156108965760009250610730565b6000848152600260205260409020805490925060a060020a900460ff1615156108c25760009250610730565b6108dd600c546106c5600b548861116490919063ffffffff16565b90508060075410156108f3576007549250610730565b809250610730565b60075481565b600034811061090f57600080fd5b60045461092b903390600160a060020a03168634878784610d6b565b949350505050565b6000811161094057600080fd5b600061094c8383610b64565b1161095657600080fd5b61087d338484846111aa565b600160a060020a0380821660009081526001602090815260408083209386168352929052205492915050565b60009081526002602052604090205460a060020a900460ff1690565b60003481106109b857600080fd5b6004546109d4903390600160a060020a03168734888888610d6b565b95945050505050565b6000808085116109ec57600080fd5b6109f68786610b64565b9050610a1c338888848888600460009054906101000a9004600160a060020a0316610d6b565b979650505050505050565b600654600090600160a060020a03163314610a4157600080fd5b600754600010610a5057600080fd5b50600780546000909155600654600554610a7891600160a060020a039081169184911661105c565b151561077a57600080fd5b600c5481565b60008080808511610a9957600080fd5b60008481526002602052604090206004546001820154919350600160a060020a0391821691161480610add57506004546002830154600160a060020a039081169116145b15610b3557600954600a54610af79163ffffffff61104a16565b9050610b2e816106c584600501546106c5600a54610b2288600601548c61116490919063ffffffff16565b9063ffffffff61116416565b9250610b57565b610b5482600501546106c584600601548861116490919063ffffffff16565b92505b6000831161073057600080fd5b6000805481908190819060ff1615610b7b57600080fd5b6000805460ff19166001178155604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051889550600160a060020a038616926370a0823192602480820193602093909283900390910190829087803b158015610bee57600080fd5b505af1158015610c02573d6000803e3d6000fd5b505050506040513d6020811015610c1857600080fd5b5051604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890529051919350600160a060020a038516916323b872dd916064808201926020929091908290030181600087803b158015610c8c57600080fd5b505af1158015610ca0573d6000803e3d6000fd5b505050506040513d6020811015610cb657600080fd5b5050604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038516916370a082319160248083019260209291908290030181600087803b158015610d1957600080fd5b505af1158015610d2d573d6000803e3d6000fd5b505050506040513d6020811015610d4357600080fd5b50519050610d57818363ffffffff61104a16565b6000805460ff191690559695505050505050565b6000805460ff1615610d7c57600080fd5b6000805460ff191660011781558511610d9457600080fd5b60008411610da157600080fd5b60008311610dae57600080fd5b600160a060020a038781169087161415610dc757600080fd5b600360008154809291906001019190505590506101006040519081016040528089600160a060020a0316815260200160011515815260200188600160a060020a0316815260200187600160a060020a0316815260200183600160a060020a03168152602001868152602001858152602001848152506002600083815260200190815260200160002060008201518160000160006101000a815481600160a060020a030219169083600160a060020a0316021790555060208201518160000160146101000a81548160ff02191690831515021790555060408201518160010160006101000a815481600160a060020a030219169083600160a060020a0316021790555060608201518160020160006101000a815481600160a060020a030219169083600160a060020a0316021790555060808201518160030160006101000a815481600160a060020a030219169083600160a060020a0316021790555060a0820151816004015560c0820151816005015560e08201518160060155905050610f9f85600160008b600160a060020a0316600160a060020a0316815260200190815260200160002060008a600160a060020a0316600160a060020a031681526020019081526020016000205461143c90919063ffffffff16565b600160a060020a03808a1660008181526001602090815260408083208d86168085529083529281902095909555845186815290810192909252818401528882166060820152908416608082015260a0810187905260c0810186905260e081018590524261010082015290517f9684ab37f360879637d39ea3a41f58c0705a15f80d518ec92bd1c7383ef8a61a918190036101200190a16000805460ff19169055979650505050505050565b60008282111561105657fe5b50900390565b600454600090600160a060020a03838116911614156110b157604051600160a060020a0385169084156108fc029085906000818181858888f193505050501580156110ab573d6000803e3d6000fd5b5061115a565b81600160a060020a031663a9059cbb85856040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561112d57600080fd5b505af1158015611141573d6000803e3d6000fd5b505050506040513d602081101561115757600080fd5b50505b5060019392505050565b6000828202831580611180575082848281151561117d57fe5b04145b151561118857fe5b8091505b5092915050565b60008082848115156111a157fe5b04949350505050565b60008054819060ff16156111bd57600080fd5b6000805460ff1916600117905560035485106111d857600080fd5b600083116111e557600080fd5b6000858152600260205260409020805490925060a060020a900460ff16151561120d57600080fd5b8154600160a060020a038781169116141561122757600080fd5b6002820154600160a060020a0385811691161461124357600080fd5b6004546003830154600160a060020a03908116911614611276576003820154600160a060020a0316321461127657600080fd5b6004546001830154600160a060020a03908116911614156112a35761129c86868561144b565b90506112d7565b6004546002830154600160a060020a03908116911614156112c95761129c8686856115bf565b6112d486868561173d565b90505b6112e18187611880565b15156112ec57600080fd5b60008581526002602052604090206004015415156113b9576000858152600260208181526040808420805474ffffffffffffffffffffffffffffffffffffffffff1916815560018101805473ffffffffffffffffffffffffffffffffffffffff1990811690915593810180548516905560038101805490941690935560048301849055600583018490556006909201929092558051878152429281019290925280517feb3b41be12efa25c0c65725eeff2e2ad0250e2e5de2aa939e18f36aa656e98809281900390910190a15b50506000805460ff1916905550505050565b6007546000906113e1908363ffffffff61143c16565b600755506001919050565b6000808260140184511015151561140257600080fd5b505001602001516c01000000000000000000000000900490565b6000808260200184511015151561143257600080fd5b5050016020015190565b60008282018381101561118857fe5b6000828152600260205260408120600681015460058201548391829161147d91906106c590889063ffffffff61116416565b915061149a600a546106c56009548561116490919063ffffffff16565b9050600082116114a957600080fd5b60048301548211156114ba57600080fd5b60048301546114cf908363ffffffff61104a16565b6004840155825460028401546114f391600160a060020a039081169188911661105c565b15156114fe57600080fd5b61152587611512848463ffffffff61104a16565b6001860154600160a060020a031661105c565b151561153057600080fd5b82547f01f5d7c359dba416997ea6c723ea4663e9ad524f956ed8bb3b5234e6475a7285908890600160a060020a031688611570868663ffffffff61104a16565b60408051600160a060020a0395861681529390941660208401528284019190915260608201526080810188905260a081018490524260c082015290519081900360e00190a19695505050505050565b6000828152600260205260408120600a54600954839182916115ed91906106c590889063ffffffff61116416565b915061161283600601546106c58560050154610b22868a61104a90919063ffffffff16565b90506000811161162157600080fd5b600483015481111561163257600080fd5b6004830154611647908263ffffffff61104a16565b6004840155825461167e90600160a060020a031661166b878563ffffffff61104a16565b6002860154600160a060020a031661105c565b151561168957600080fd5b60018301546116a49088908390600160a060020a031661105c565b15156116af57600080fd5b82547f01f5d7c359dba416997ea6c723ea4663e9ad524f956ed8bb3b5234e6475a7285908890600160a060020a031688846116f08a8863ffffffff61104a16565b60408051600160a060020a039687168152949095166020850152838501929092526060830152608082015260a081018590524260c082015290519081900360e00190a15095945050505050565b600082815260026020526040812060068101546005820154839161176c916106c590879063ffffffff61116416565b90506000811161177b57600080fd5b600482015481111561178c57600080fd5b60048201546117a1908263ffffffff61104a16565b6004830155815460028301546117c591600160a060020a039081169187911661105c565b15156117d057600080fd5b815460a060020a900460ff1615156117e757600080fd5b60018201546118029087908390600160a060020a031661105c565b151561180d57600080fd5b815460408051600160a060020a03808a16825290921660208301528181018790526060820183905260808201869052600060a08301524260c0830152517f01f5d7c359dba416997ea6c723ea4663e9ad524f956ed8bb3b5234e6475a72859181900360e00190a150600095945050505050565b600080831515611893576001915061118c565b6008546004546118b191600160a060020a039081169187911661105c565b15156118bc57600080fd5b60075415156118ce576001915061118c565b6118e9600c546106c5600b548761116490919063ffffffff16565b90508015156118fb576001915061118c565b60075481111561190a57506007545b60075461191d908263ffffffff61104a16565b6007556005546119399084908390600160a060020a031661105c565b151561194457600080fd5b60408051600160a060020a038516815260208101839052428183015290517f5a9ec13c12ca9563a7b3108125f74c57ed388bb313394ea50f7e4a71b01497c29181900360600190a150600193925050505600a165627a7a72305820b0946e0e1d3d1e148149c2bb4e2cd4e7a7e4ff34839dd14ff5edcfedca71a0cb0029000000000000000000000000b9440022a095343b440d590fcd2d7a3794bd76c800000000000000000000000092eeb915dafe3803f8a9d12000765c3b6af6d5fd00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000002540be400

Deployed Bytecode

0x6080604052600436106101325763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166322fdd3ea81146101375780632453ffa81461018257806341f9377f14610197578063514fcac7146101b457806353e1a7a0146101cc57806361d027b3146101e15780636fb768e81461021257806378d067dd1461022757806387bda8f21461024257806389a447e01461025a578063a4ff9c341461026f578063c0ee0b8a1461027a578063c49063e7146102e3578063c655de64146102fe578063cb2bb26414610313578063cf6ff1731461032d578063d4fac45d14610354578063d6e435851461037b578063e3319e82146103a7578063eeb3377a146103c9578063f2037fec146103f9578063fc5f42411461040e578063ff700e5214610423575b600080fd5b34801561014357600080fd5b50610170600160a060020a0360043581169060243581169060443590606435906084359060a4351661043e565b60408051918252519081900360200190f35b34801561018e57600080fd5b50610170610474565b3480156101a357600080fd5b506101b260043560243561047a565b005b3480156101c057600080fd5b506101b26004356104a8565b3480156101d857600080fd5b50610170610660565b3480156101ed57600080fd5b506101f6610666565b60408051600160a060020a039092168252519081900360200190f35b34801561021e57600080fd5b50610170610675565b34801561023357600080fd5b5061017060043560243561067b565b34801561024e57600080fd5b50610170600435610738565b34801561026657600080fd5b5061017061074d565b6101b2600435610753565b34801561028657600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101b2948235600160a060020a031694602480359536959460649492019190819084018382808284375094975061077d9650505050505050565b3480156102ef57600080fd5b50610170600435602435610882565b34801561030a57600080fd5b506101706108fb565b610170600160a060020a0360043516602435604435610901565b34801561033957600080fd5b506101b2600435600160a060020a0360243516604435610933565b34801561036057600080fd5b50610170600160a060020a0360043581169060243516610962565b34801561038757600080fd5b5061039360043561098e565b604080519115158252519081900360200190f35b610170600160a060020a036004358116906024359060443590606435166109aa565b3480156103d557600080fd5b50610170600160a060020a03600435811690602435166044356064356084356109dd565b34801561040557600080fd5b506101b2610a27565b34801561041a57600080fd5b50610170610a83565b34801561042f57600080fd5b50610170600435602435610a89565b60008080861161044d57600080fd5b6104578887610b64565b905061046833898984898989610d6b565b98975050505050505050565b60035481565b600654600160a060020a0316331461049157600080fd5b80151561049d57600080fd5b600b91909155600c55565b6000805460ff16156104b957600080fd5b506000805460ff1916600117815581815260026020526040812060048101549091106104e457600080fd5b805460a060020a900460ff1615156104fb57600080fd5b8054600160a060020a0316331461051157600080fd5b600481015433600090815260016020818152604080842092860154600160a060020a0316845291905290205461054c9163ffffffff61104a16565b3360009081526001602081815260408084209286018054600160a060020a03908116865293909252909220929092558254600484015491546105939391821692911661105c565b151561059e57600080fd5b6000828152600260208181526040808420805474ffffffffffffffffffffffffffffffffffffffffff1916815560018101805473ffffffffffffffffffffffffffffffffffffffff1990811690915593810180548516905560038101805490941690935560048301849055600583018490556006909201929092558051848152429281019290925280517faa2a006d186dc89a3d6851834c85d16226329ac40bcad6531a5756a38ed1c90f9281900390910190a150506000805460ff19169055565b60095481565b600854600160a060020a031681565b600b5481565b600081815260026020526040812060045460018201548391600160a060020a03918216911614156106f5576106d182600601546106c584600501548861116490919063ffffffff16565b9063ffffffff61119316565b90506106ee600a546106c56009548461116490919063ffffffff16565b9250610730565b6004546002830154600160a060020a039081169116141561072b576106ee600a546106c56009548861116490919063ffffffff16565b600092505b505092915050565b60009081526002602052604090206004015490565b600a5481565b6000341161076057600080fd5b60045461077a9033908390600160a060020a0316346111aa565b50565b80511580156107965750600554600160a060020a031633145b156107aa576107a4826113cb565b5061087d565b8051605414156107fe576107a483336107ca84604063ffffffff6113ec16565b856107dc86600063ffffffff61141c16565b6107ed87602063ffffffff61141c16565b600454600160a060020a0316610d6b565b805160681415610857576107a4833361081e84604063ffffffff6113ec16565b8561083086600063ffffffff61141c16565b61084187602063ffffffff61141c16565b61085288605463ffffffff6113ec16565b610d6b565b8051602014156101325761087d8361087683600063ffffffff61141c16565b33856111aa565b505050565b600080808415156108965760009250610730565b6000848152600260205260409020805490925060a060020a900460ff1615156108c25760009250610730565b6108dd600c546106c5600b548861116490919063ffffffff16565b90508060075410156108f3576007549250610730565b809250610730565b60075481565b600034811061090f57600080fd5b60045461092b903390600160a060020a03168634878784610d6b565b949350505050565b6000811161094057600080fd5b600061094c8383610b64565b1161095657600080fd5b61087d338484846111aa565b600160a060020a0380821660009081526001602090815260408083209386168352929052205492915050565b60009081526002602052604090205460a060020a900460ff1690565b60003481106109b857600080fd5b6004546109d4903390600160a060020a03168734888888610d6b565b95945050505050565b6000808085116109ec57600080fd5b6109f68786610b64565b9050610a1c338888848888600460009054906101000a9004600160a060020a0316610d6b565b979650505050505050565b600654600090600160a060020a03163314610a4157600080fd5b600754600010610a5057600080fd5b50600780546000909155600654600554610a7891600160a060020a039081169184911661105c565b151561077a57600080fd5b600c5481565b60008080808511610a9957600080fd5b60008481526002602052604090206004546001820154919350600160a060020a0391821691161480610add57506004546002830154600160a060020a039081169116145b15610b3557600954600a54610af79163ffffffff61104a16565b9050610b2e816106c584600501546106c5600a54610b2288600601548c61116490919063ffffffff16565b9063ffffffff61116416565b9250610b57565b610b5482600501546106c584600601548861116490919063ffffffff16565b92505b6000831161073057600080fd5b6000805481908190819060ff1615610b7b57600080fd5b6000805460ff19166001178155604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051889550600160a060020a038616926370a0823192602480820193602093909283900390910190829087803b158015610bee57600080fd5b505af1158015610c02573d6000803e3d6000fd5b505050506040513d6020811015610c1857600080fd5b5051604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890529051919350600160a060020a038516916323b872dd916064808201926020929091908290030181600087803b158015610c8c57600080fd5b505af1158015610ca0573d6000803e3d6000fd5b505050506040513d6020811015610cb657600080fd5b5050604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038516916370a082319160248083019260209291908290030181600087803b158015610d1957600080fd5b505af1158015610d2d573d6000803e3d6000fd5b505050506040513d6020811015610d4357600080fd5b50519050610d57818363ffffffff61104a16565b6000805460ff191690559695505050505050565b6000805460ff1615610d7c57600080fd5b6000805460ff191660011781558511610d9457600080fd5b60008411610da157600080fd5b60008311610dae57600080fd5b600160a060020a038781169087161415610dc757600080fd5b600360008154809291906001019190505590506101006040519081016040528089600160a060020a0316815260200160011515815260200188600160a060020a0316815260200187600160a060020a0316815260200183600160a060020a03168152602001868152602001858152602001848152506002600083815260200190815260200160002060008201518160000160006101000a815481600160a060020a030219169083600160a060020a0316021790555060208201518160000160146101000a81548160ff02191690831515021790555060408201518160010160006101000a815481600160a060020a030219169083600160a060020a0316021790555060608201518160020160006101000a815481600160a060020a030219169083600160a060020a0316021790555060808201518160030160006101000a815481600160a060020a030219169083600160a060020a0316021790555060a0820151816004015560c0820151816005015560e08201518160060155905050610f9f85600160008b600160a060020a0316600160a060020a0316815260200190815260200160002060008a600160a060020a0316600160a060020a031681526020019081526020016000205461143c90919063ffffffff16565b600160a060020a03808a1660008181526001602090815260408083208d86168085529083529281902095909555845186815290810192909252818401528882166060820152908416608082015260a0810187905260c0810186905260e081018590524261010082015290517f9684ab37f360879637d39ea3a41f58c0705a15f80d518ec92bd1c7383ef8a61a918190036101200190a16000805460ff19169055979650505050505050565b60008282111561105657fe5b50900390565b600454600090600160a060020a03838116911614156110b157604051600160a060020a0385169084156108fc029085906000818181858888f193505050501580156110ab573d6000803e3d6000fd5b5061115a565b81600160a060020a031663a9059cbb85856040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561112d57600080fd5b505af1158015611141573d6000803e3d6000fd5b505050506040513d602081101561115757600080fd5b50505b5060019392505050565b6000828202831580611180575082848281151561117d57fe5b04145b151561118857fe5b8091505b5092915050565b60008082848115156111a157fe5b04949350505050565b60008054819060ff16156111bd57600080fd5b6000805460ff1916600117905560035485106111d857600080fd5b600083116111e557600080fd5b6000858152600260205260409020805490925060a060020a900460ff16151561120d57600080fd5b8154600160a060020a038781169116141561122757600080fd5b6002820154600160a060020a0385811691161461124357600080fd5b6004546003830154600160a060020a03908116911614611276576003820154600160a060020a0316321461127657600080fd5b6004546001830154600160a060020a03908116911614156112a35761129c86868561144b565b90506112d7565b6004546002830154600160a060020a03908116911614156112c95761129c8686856115bf565b6112d486868561173d565b90505b6112e18187611880565b15156112ec57600080fd5b60008581526002602052604090206004015415156113b9576000858152600260208181526040808420805474ffffffffffffffffffffffffffffffffffffffffff1916815560018101805473ffffffffffffffffffffffffffffffffffffffff1990811690915593810180548516905560038101805490941690935560048301849055600583018490556006909201929092558051878152429281019290925280517feb3b41be12efa25c0c65725eeff2e2ad0250e2e5de2aa939e18f36aa656e98809281900390910190a15b50506000805460ff1916905550505050565b6007546000906113e1908363ffffffff61143c16565b600755506001919050565b6000808260140184511015151561140257600080fd5b505001602001516c01000000000000000000000000900490565b6000808260200184511015151561143257600080fd5b5050016020015190565b60008282018381101561118857fe5b6000828152600260205260408120600681015460058201548391829161147d91906106c590889063ffffffff61116416565b915061149a600a546106c56009548561116490919063ffffffff16565b9050600082116114a957600080fd5b60048301548211156114ba57600080fd5b60048301546114cf908363ffffffff61104a16565b6004840155825460028401546114f391600160a060020a039081169188911661105c565b15156114fe57600080fd5b61152587611512848463ffffffff61104a16565b6001860154600160a060020a031661105c565b151561153057600080fd5b82547f01f5d7c359dba416997ea6c723ea4663e9ad524f956ed8bb3b5234e6475a7285908890600160a060020a031688611570868663ffffffff61104a16565b60408051600160a060020a0395861681529390941660208401528284019190915260608201526080810188905260a081018490524260c082015290519081900360e00190a19695505050505050565b6000828152600260205260408120600a54600954839182916115ed91906106c590889063ffffffff61116416565b915061161283600601546106c58560050154610b22868a61104a90919063ffffffff16565b90506000811161162157600080fd5b600483015481111561163257600080fd5b6004830154611647908263ffffffff61104a16565b6004840155825461167e90600160a060020a031661166b878563ffffffff61104a16565b6002860154600160a060020a031661105c565b151561168957600080fd5b60018301546116a49088908390600160a060020a031661105c565b15156116af57600080fd5b82547f01f5d7c359dba416997ea6c723ea4663e9ad524f956ed8bb3b5234e6475a7285908890600160a060020a031688846116f08a8863ffffffff61104a16565b60408051600160a060020a039687168152949095166020850152838501929092526060830152608082015260a081018590524260c082015290519081900360e00190a15095945050505050565b600082815260026020526040812060068101546005820154839161176c916106c590879063ffffffff61116416565b90506000811161177b57600080fd5b600482015481111561178c57600080fd5b60048201546117a1908263ffffffff61104a16565b6004830155815460028301546117c591600160a060020a039081169187911661105c565b15156117d057600080fd5b815460a060020a900460ff1615156117e757600080fd5b60018201546118029087908390600160a060020a031661105c565b151561180d57600080fd5b815460408051600160a060020a03808a16825290921660208301528181018790526060820183905260808201869052600060a08301524260c0830152517f01f5d7c359dba416997ea6c723ea4663e9ad524f956ed8bb3b5234e6475a72859181900360e00190a150600095945050505050565b600080831515611893576001915061118c565b6008546004546118b191600160a060020a039081169187911661105c565b15156118bc57600080fd5b60075415156118ce576001915061118c565b6118e9600c546106c5600b548761116490919063ffffffff16565b90508015156118fb576001915061118c565b60075481111561190a57506007545b60075461191d908263ffffffff61104a16565b6007556005546119399084908390600160a060020a031661105c565b151561194457600080fd5b60408051600160a060020a038516815260208101839052428183015290517f5a9ec13c12ca9563a7b3108125f74c57ed388bb313394ea50f7e4a71b01497c29181900360600190a150600193925050505600a165627a7a72305820b0946e0e1d3d1e148149c2bb4e2cd4e7a7e4ff34839dd14ff5edcfedca71a0cb0029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000b9440022a095343b440d590fcd2d7a3794bd76c800000000000000000000000092eeb915dafe3803f8a9d12000765c3b6af6d5fd00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000002540be400

-----Decoded View---------------
Arg [0] : _saturnToken (address): 0xb9440022a095343B440D590FCD2d7A3794Bd76c8
Arg [1] : _treasury (address): 0x92EEb915Dafe3803f8A9d12000765c3B6Af6d5fD
Arg [2] : _feeMul (uint256): 1
Arg [3] : _feeDiv (uint256): 400
Arg [4] : _tradeMiningMul (uint256): 1
Arg [5] : _tradeMiningDiv (uint256): 10000000000

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000b9440022a095343b440d590fcd2d7a3794bd76c8
Arg [1] : 00000000000000000000000092eeb915dafe3803f8a9d12000765c3b6af6d5fd
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000190
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [5] : 00000000000000000000000000000000000000000000000000000002540be400


Deployed Bytecode Sourcemap

5202:14256:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7224:8;;;11731:389;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11731:389:0;-1:-1:-1;;;;;11731:389:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5828:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5828:25:0;;;;9534:208;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9534:208:0;;;;;;;;;12372:562;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12372:562:0;;;;;6025:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6025:21:0;;;;5995:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5995:23:0;;;;;;;;-1:-1:-1;;;;;5995:23:0;;;;;;;;;;;;;;6077:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6077:29:0;;;;8304:472;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8304:472:0;;;;;;;7612:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7612:116:0;;;;;6051:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6051:21:0;;;;11191:158;;;;;;9784:826;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9784:826:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9784:826:0;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9784:826:0;;-1:-1:-1;9784:826:0;;-1:-1:-1;;;;;;;9784:826:0;8782:414;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8782:414:0;;;;;;;5957:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5957:33:0;;;;10616:272;;-1:-1:-1;;;;;10616:272:0;;;;;;;;;12126:240;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12126:240:0;;;-1:-1:-1;;;;;12126:240:0;;;;;;;7370:119;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7370:119:0;-1:-1:-1;;;;;7370:119:0;;;;;;;;;;7495:111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7495:111:0;;;;;;;;;;;;;;;;;;;;;;;10894:291;;-1:-1:-1;;;;;10894:291:0;;;;;;;;;;;;;;;;11355:370;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11355:370:0;-1:-1:-1;;;;;11355:370:0;;;;;;;;;;;;;;;;9276:252;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9276:252:0;;;;6111:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6111:29:0;;;;7734:564;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7734:564:0;;;;;;;11731:389;11916:15;;11948:10;;;11940:19;;;;;;11989:29;12000:9;12011:6;11989:10;:29::i;:::-;11966:52;;12032:82;12042:10;12054:9;12065:8;12075:12;12089:8;12099;12109:4;12032:9;:82::i;:::-;12025:89;11731:389;-1:-1:-1;;;;;;;;11731:389:0:o;5828:25::-;;;;:::o;9534:208::-;9630:5;;-1:-1:-1;;;;;9630:5:0;9616:10;:19;9612:38;;9639:8;;;9612:38;9664:11;;;9656:20;;;;;;9683:14;:23;;;;9713:14;:23;9534:208::o;12372:562::-;12437:19;5387:14;;;;5386:15;5378:24;;;;;;-1:-1:-1;5409:14:0;:21;;-1:-1:-1;;5409:21:0;5426:4;5409:21;;;12459:18;;;:9;:18;;;;;12492:12;;;;12459:18;;-1:-1:-1;12484:25:0;;;;;;12524:12;;-1:-1:-1;;;12524:12:0;;;;12516:21;;;;;;;;12566:11;;-1:-1:-1;;;;;12566:11:0;12552:10;:25;12544:34;;;;;;12669:12;;;;12636:10;12627:20;;;;:8;:20;;;;;;;;12648:15;;;;-1:-1:-1;;;;;12648:15:0;12627:37;;;;;;;;:55;;;:41;:55;:::i;:::-;12596:10;12587:20;;;;:8;:20;;;;;;;;12608:15;;;;;-1:-1:-1;;;;;12608:15:0;;;12587:37;;;;;;;;;:95;;;;12710:11;;12723:12;;;;12737:15;;12697:56;;12710:11;;;;12723:12;12737:15;12697:12;:56::i;:::-;12689:65;;;;;;;;12870:18;;;;:9;:18;;;;;;;;12863:25;;-1:-1:-1;;12863:25:0;;;;;;;;-1:-1:-1;;12863:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12900:28;;;;;12924:3;12900:28;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5462:5:0;5445:22;;-1:-1:-1;;5445:22:0;;;12372:562::o;6025:21::-;;;;:::o;5995:23::-;;;-1:-1:-1;;;;;5995:23:0;;:::o;6077:29::-;;;;:::o;8304:472::-;8375:12;8418:18;;;:9;:18;;;;;8468:12;;;8449:15;;;8375:12;;-1:-1:-1;;;;;8449:15:0;;;8468:12;;8449:31;8445:308;;;8517:46;8548:5;:14;;;8517:26;8528:5;:14;;;8517:6;:10;;:26;;;;:::i;:::-;:30;:46;:30;:46;:::i;:::-;8491:72;;8579:39;8611:6;;8579:27;8599:6;;8579:15;:19;;:27;;;;:::i;:39::-;8572:46;;8445:308;;;8654:12;;8636:14;;;;-1:-1:-1;;;;;8636:14:0;;;8654:12;;8636:30;8632:121;;;8684:30;8707:6;;8684:18;8695:6;;8684;:10;;:18;;;;:::i;8632:121::-;8744:1;8737:8;;8632:121;8304:472;;;;;;:::o;7612:116::-;7674:7;7697:18;;;:9;:18;;;;;:25;;;;7612:116::o;6051:21::-;;;;:::o;11191:158::-;11275:1;11263:9;:13;11255:22;;;;;;11319:12;;11284:59;;11298:10;;11310:7;;-1:-1:-1;;;;;11319:12:0;11333:9;11284:13;:59::i;:::-;11191:158;:::o;9784:826::-;10058:11;;:16;:45;;;;-1:-1:-1;10092:11:0;;-1:-1:-1;;;;;10092:11:0;10078:10;:25;10058:45;10054:551;;;10114:24;10132:5;10114:17;:24::i;:::-;;10054:551;;;10156:4;:11;10171:2;10156:17;10152:453;;;10184:101;10194:4;10200:10;10212:18;:4;10227:2;10212:18;:14;:18;:::i;:::-;10232:5;10239:14;:4;10251:1;10239:14;:11;:14;:::i;:::-;10255:15;:4;10267:2;10255:15;:11;:15;:::i;:::-;10272:12;;-1:-1:-1;;;;;10272:12:0;10184:9;:101::i;10152:453::-;10303:4;:11;10318:3;10303:18;10299:306;;;10332:107;10342:4;10348:10;10360:18;:4;10375:2;10360:18;:14;:18;:::i;:::-;10380:5;10387:14;:4;10399:1;10387:14;:11;:14;:::i;:::-;10403:15;:4;10415:2;10403:15;:11;:15;:::i;:::-;10420:18;:4;10435:2;10420:18;:14;:18;:::i;:::-;10332:9;:107::i;10299:306::-;10457:4;:11;10472:2;10457:17;10453:152;;;10485:54;10499:4;10505:14;:4;10517:1;10505:14;:11;:14;:::i;:::-;10521:10;10533:5;10485:13;:54::i;:::-;9784:826;;;:::o;8782:414::-;8860:7;;;8880:9;;8876:28;;;8900:1;8893:8;;;;8876:28;8932:18;;;;:9;:18;;;;;8962:12;;8932:18;;-1:-1:-1;;;;8962:12:0;;;;8961:13;8957:32;;;8985:1;8978:8;;;;8957:32;9017:44;9046:14;;9017:24;9026:14;;9017:4;:8;;:24;;;;:::i;:44::-;8995:66;;9095:11;9074:18;;:32;9070:121;;;9124:18;;9117:25;;;;9070:121;9172:11;9165:18;;;;5957:33;;;;:::o;10616:272::-;10732:15;10764:9;:13;-1:-1:-1;10756:22:0;;;;;;10814:12;;10792:90;;10802:10;;-1:-1:-1;;;;;10814:12:0;10828:8;10838:9;10849:8;10859;10814:12;10792:9;:90::i;:::-;10785:97;10616:272;-1:-1:-1;;;;10616:272:0:o;12126:240::-;12257:1;12248:10;;12240:19;;;;;;12302:1;12274:25;12285:5;12292:6;12274:10;:25::i;:::-;:29;12266:38;;;;;;12311:49;12325:10;12337:7;12346:5;12353:6;12311:13;:49::i;7370:119::-;-1:-1:-1;;;;;7462:14:0;;;7439:7;7462:14;;;:8;:14;;;;;;;;:21;;;;;;;;;;7370:119;;;;:::o;7495:111::-;7555:4;7575:18;;;:9;:18;;;;;:25;-1:-1:-1;;;7575:25:0;;;;;7495:111::o;10894:291::-;11037:15;11069:9;:13;-1:-1:-1;11061:22:0;;;;;;11119:12;;11097:82;;11107:10;;-1:-1:-1;;;;;11119:12:0;11133:8;11143:9;11154:8;11164;11174:4;11097:9;:82::i;:::-;11090:89;10894:291;-1:-1:-1;;;;;10894:291:0:o;11355:370::-;11513:15;;11545:10;;;11537:19;;;;;;11586:29;11597:9;11608:6;11586:10;:29::i;:::-;11563:52;;11629:90;11639:10;11651:9;11662:8;11672:12;11686:8;11696;11706:12;;;;;;;;;-1:-1:-1;;;;;11706:12:0;11629:9;:90::i;:::-;11622:97;11355:370;-1:-1:-1;;;;;;;11355:370:0:o;9276:252::-;9339:5;;9405:11;;-1:-1:-1;;;;;9339:5:0;9325:10;:19;9321:38;;9348:8;;;9321:38;9373:18;;9394:1;-1:-1:-1;9365:31:0;;;;;;-1:-1:-1;9419:18:0;;;9465:1;9444:22;;;9494:5;;9509:11;;9481:40;;-1:-1:-1;;;;;9494:5:0;;;;9419:18;;9509:11;9481:12;:40::i;:::-;9473:49;;;;;;;6111:29;;;;:::o;7734:564::-;7830:14;;;7861:26;;;7853:35;;;;;;7917:18;;;;:9;:18;;;;;7967:12;;;7948:15;;;7917:18;;-1:-1:-1;;;;;;7948:15:0;;;7967:12;;7948:31;;:65;;-1:-1:-1;8001:12:0;;7983:14;;;;-1:-1:-1;;;;;7983:14:0;;;8001:12;;7983:30;7948:65;7944:323;;;8053:6;;8042;;:18;;;:10;:18;:::i;:::-;8024:36;;8078:87;8157:7;8078:74;8137:5;:14;;;8078:54;8125:6;;8078:42;8105:5;:14;;;8078:22;:26;;:42;;;;:::i;:::-;:46;:54;:46;:54;:::i;:87::-;8069:96;;7944:323;;;8197:62;8244:5;:14;;;8197:42;8224:5;:14;;;8197:22;:26;;:42;;;;:::i;:62::-;8188:71;;7944:323;8290:1;8281:10;;8273:19;;;;;18874:428;18954:7;5387:14;;18954:7;;;;;;5387:14;;5386:15;5378:24;;;;;;5409:14;:21;;-1:-1:-1;;5409:21:0;5426:4;5409:21;;;19107:28;;;;;;19129:4;19107:28;;;;;;18988:5;;-1:-1:-1;;;;;;19107:13:0;;;;;:28;;;;;;;;;;;;;;;;;;:13;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;19107:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19107:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19107:28:0;19142:51;;;;;;19159:10;19142:51;;;;19179:4;19142:51;;;;;;;;;;;;19107:28;;-1:-1:-1;;;;;;19142:16:0;;;;;:51;;;;;19107:28;;19142:51;;;;;;;;-1:-1:-1;19142:16:0;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;19142:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19142:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;19223:28:0;;;;;;19245:4;19223:28;;;;;;-1:-1:-1;;;;;19223:13:0;;;;;:28;;;;;19142:51;;19223:28;;;;;;;-1:-1:-1;19223:13:0;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;19223:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19223:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19223:28:0;;-1:-1:-1;19265:31:0;19223:28;19282:13;19265:31;:16;:31;:::i;:::-;5462:5;5445:22;;-1:-1:-1;;5445:22:0;;;19258:38;18874:428;-1:-1:-1;;;;;;18874:428:0:o;13017:854::-;13223:15;5387:14;;;;5386:15;5378:24;;;;;;5409:14;:21;;-1:-1:-1;;5409:21:0;5426:4;5409:21;;;13348:10;;13340:19;;;;;;13385:1;13374:12;;13366:21;;;;;;13413:1;13402:12;;13394:21;;;;;;-1:-1:-1;;;;;13430:21:0;;;;;;;;13422:30;;;;;;13580:10;;:12;;;;;;;;;;;;13570:22;;13620:73;;;;;;;;;13626:5;-1:-1:-1;;;;;13620:73:0;;;;;13633:4;13620:73;;;;;;13639:9;-1:-1:-1;;;;;13620:73:0;;;;;13650:8;-1:-1:-1;;;;;13620:73:0;;;;;13660:4;-1:-1:-1;;;;;13620:73:0;;;;;13666:6;13620:73;;;;13674:8;13620:73;;;;13684:8;13620:73;;;13599:9;:18;13609:7;13599:18;;;;;;;;;;;:94;;;;;;;;;;;;;-1:-1:-1;;;;;13599:94:0;;;;;-1:-1:-1;;;;;13599:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13599:94:0;;;;;-1:-1:-1;;;;;13599:94:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13599:94:0;;;;;-1:-1:-1;;;;;13599:94:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13599:94:0;;;;;-1:-1:-1;;;;;13599:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13729:38;13760:6;13729:8;:15;13738:5;-1:-1:-1;;;;;13729:15:0;-1:-1:-1;;;;;13729:15:0;;;;;;;;;;;;:26;13745:9;-1:-1:-1;;;;;13729:26:0;-1:-1:-1;;;;;13729:26:0;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;-1:-1:-1;;;;;13700:15:0;;;;;;;:8;:15;;;;;;;;:26;;;;;;;;;;;;;:67;;;;13781:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13861:3;13781:84;;;;;;;;;;;;;;;5462:5;5445:22;;-1:-1:-1;;5445:22:0;;;13017:854;;-1:-1:-1;;;;;;;13017:854:0:o;536:113::-;594:7;617:6;;;;610:14;;;;-1:-1:-1;638:5:0;;;536:113::o;18528:320::-;18660:12;;18636:4;;-1:-1:-1;;;;;18653:19:0;;;18660:12;;18653:19;18649:176;;;18683:28;;-1:-1:-1;;;;;18683:20:0;;;:28;;;;;18704:6;;18683:28;;;;18704:6;18683:20;:28;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18683:28:0;18649:176;;;18783:3;-1:-1:-1;;;;;18777:19:0;;18797:11;18810:6;18777:40;;;;;;;;;;;;;-1:-1:-1;;;;;18777:40:0;-1:-1:-1;;;;;18777:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18777:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18777:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;18649:176:0;-1:-1:-1;18838:4:0;18528:320;;;;;:::o;107:147::-;165:7;193:5;;;212:6;;;:20;;;231:1;226;222;:5;;;;;;;;:10;212:20;205:28;;;;;;247:1;240:8;;107:147;;;;;;:::o;260:270::-;318:7;409:9;425:1;421;:5;;;;;;;;;260:270;-1:-1:-1;;;;260:270:0:o;16269:1465::-;16558:19;5387:14;;16558:19;;5387:14;;5386:15;5378:24;;;;;;5409:14;:21;;-1:-1:-1;;5409:21:0;5426:4;5409:21;;;16506:10;;16496:20;;16488:29;;;;;;16549:1;16532:18;;16524:27;;;;;;16580:18;;;;:9;:18;;;;;16613:12;;16580:18;;-1:-1:-1;;;;16613:12:0;;;;16605:21;;;;;;;;16651:11;;-1:-1:-1;;;;;16641:21:0;;;16651:11;;16641:21;;16633:30;;;;;;16690:14;;;;-1:-1:-1;;;;;16678:26:0;;;16690:14;;16678:26;16670:35;;;;;;16760:12;;16746:10;;;;-1:-1:-1;;;;;16746:10:0;;;16760:12;;16746:26;16742:69;;16784:10;;;;-1:-1:-1;;;;;16784:10:0;16798:9;16784:23;16776:32;;;;;;16963:12;;;16944:15;;;-1:-1:-1;;;;;16944:15:0;;;16963:12;;16944:31;16940:411;;;17045:49;17062:6;17070:7;17079:14;17045:16;:49::i;:::-;17038:56;;16940:411;;;17130:12;;17112:14;;;;-1:-1:-1;;;;;17112:14:0;;;17130:12;;17112:30;17108:243;;;17213:50;17231:6;17239:7;17248:14;17213:17;:50::i;17108:243::-;17293:50;17311:6;17319:7;17328:14;17293:17;:50::i;:::-;17286:57;;17108:243;17513:33;17533:4;17539:6;17513:19;:33::i;:::-;17505:42;;;;;;;;17613:18;;;;:9;:18;;;;;:25;;;:30;17609:120;;;17661:18;;;;:9;:18;;;;;;;;17654:25;;-1:-1:-1;;17654:25:0;;;;;;;;-1:-1:-1;;17654:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17693:28;;;;;17717:3;17693:28;;;;;;;;;;;;;;;;;;;17609:120;-1:-1:-1;;5462:5:0;5445:22;;-1:-1:-1;;5445:22:0;;;-1:-1:-1;;;;16269:1465:0:o;19308:147::-;19401:18;;19367:4;;19401:30;;19424:6;19401:30;:22;:30;:::i;:::-;19380:18;:51;-1:-1:-1;19445:4:0;19308:147;;;:::o;948:302::-;1017:7;1079:19;1059:6;1068:2;1059:11;1041:6;:13;:30;;1033:39;;;;;;;;-1:-1:-1;;1150:30:0;1166:4;1150:30;1144:37;1183:27;1140:71;;;948:302::o;1256:256::-;1322:7;1384:16;1364:6;1373:2;1364:11;1346:6;:13;:30;;1338:39;;;;;;;;-1:-1:-1;;1445:30:0;1461:4;1445:30;1439:37;;1256:256::o;655:133::-;713:7;741:5;;;760:6;;;;753:14;;;13877:833;13976:7;14061:18;;;:9;:18;;;;;14151:14;;;;14131;;;;13976:7;;;;14112:54;;14151:14;14112:34;;:14;;:34;:18;:34;:::i;:54::-;14086:80;;14188:39;14220:6;;14188:27;14208:6;;14188:15;:19;;:27;;;;:::i;:39::-;14173:54;-1:-1:-1;14262:1:0;14244:19;;14236:28;;;;;;14298:12;;;;14279:31;;;14271:40;;;;;;14333:12;;;;:33;;14350:15;14333:33;:16;:33;:::i;:::-;14318:12;;;:48;14429:11;;14458:14;;;;14416:57;;-1:-1:-1;;;;;14429:11:0;;;;14442:14;;14458;14416:12;:57::i;:::-;14408:66;;;;;;;;14518:64;14531:6;14539:25;:15;14559:4;14539:25;:19;:25;:::i;:::-;14566:15;;;;-1:-1:-1;;;;;14566:15:0;14518:12;:64::i;:::-;14510:73;;;;;;;;14611:11;;14597:89;;14603:6;;-1:-1:-1;;;;;14611:11:0;14624:7;14633:25;:15;14653:4;14633:25;:19;:25;:::i;:::-;14597:89;;;-1:-1:-1;;;;;14597:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14682:3;14597:89;;;;;;;;;;;;;;14700:4;13877:833;-1:-1:-1;;;;;;13877:833:0:o;14716:844::-;14816:7;14901:18;;;:9;:18;;;;;14972:6;;14960;;14816:7;;;;14941:38;;14972:6;14941:26;;:14;;:26;:18;:26;:::i;:38::-;14926:53;;15012:64;15061:5;:14;;;15012:44;15041:5;:14;;;15012:24;15031:4;15012:14;:18;;:24;;;;:::i;:64::-;14986:90;-1:-1:-1;15113:1:0;15095:19;;15087:28;;;;;;15149:12;;;;15130:31;;;15122:40;;;;;;15184:12;;;;:33;;15201:15;15184:33;:16;:33;:::i;:::-;15169:12;;;:48;15279:11;;15266:67;;-1:-1:-1;;;;;15279:11:0;15292:24;:14;15311:4;15292:24;:18;:24;:::i;:::-;15318:14;;;;-1:-1:-1;;;;;15318:14:0;15266:12;:67::i;:::-;15258:76;;;;;;;;15416:15;;;;15378:54;;15391:6;;15399:15;;-1:-1:-1;;;;;15416:15:0;15378:12;:54::i;:::-;15370:63;;;;;;;;15461:11;;15447:89;;15453:6;;-1:-1:-1;;;;;15461:11:0;15474:7;15483:15;15500:24;:14;15519:4;15500:24;:18;:24;:::i;:::-;15447:89;;;-1:-1:-1;;;;;15447:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15532:3;15447:89;;;;;;;;;;;;;;-1:-1:-1;15550:4:0;14716:844;-1:-1:-1;;;;;14716:844:0:o;15566:697::-;15666:7;15735:18;;;:9;:18;;;;;15825:14;;;;15805;;;;15666:7;;15786:54;;:34;;:14;;:34;:18;:34;:::i;:54::-;15760:80;-1:-1:-1;15875:1:0;15857:19;;15849:28;;;;;;15911:12;;;;15892:31;;;15884:40;;;;;;15946:12;;;;:33;;15963:15;15946:33;:16;:33;:::i;:::-;15931:12;;;:48;16009:11;;16038:14;;;;15996:57;;-1:-1:-1;;;;;16009:11:0;;;;16022:14;;16038;15996:12;:57::i;:::-;15988:66;;;;;;;;16069:12;;-1:-1:-1;;;16069:12:0;;;;16061:21;;;;;;;;16135:15;;;;16097:54;;16110:6;;16118:15;;-1:-1:-1;;;;;16135:15:0;16097:12;:54::i;:::-;16089:63;;;;;;;;16180:11;;16166:76;;;-1:-1:-1;;;;;16166:76:0;;;;;16180:11;;;16166:76;;;;;;;;;;;;;;;;;;;;;;16180:11;16166:76;;;;16238:3;16166:76;;;;;;;;;;;;;;-1:-1:-1;16256:1:0;;15566:697;-1:-1:-1;;;;;15566:697:0:o;17740:782::-;17815:4;;17832:9;;17828:31;;;17852:4;17845:11;;;;17828:31;17930:8;;17946:12;;17917:42;;-1:-1:-1;;;;;17930:8:0;;;;17940:4;;17946:12;17917;:42::i;:::-;17909:51;;;;;;;;17971:18;;:23;17967:45;;;18005:4;17998:11;;;;17967:45;18077:44;18106:14;;18077:24;18086:14;;18077:4;:8;;:24;;;;:::i;:44::-;18055:66;-1:-1:-1;18132:16:0;;18128:38;;;18159:4;18152:11;;;;18128:38;18190:18;;18176:11;:32;18172:75;;;-1:-1:-1;18226:18:0;;18172:75;18308:18;;:35;;18331:11;18308:35;:22;:35;:::i;:::-;18287:18;:56;18442:11;;18408:46;;18421:6;;18429:11;;-1:-1:-1;;;;;18442:11:0;18408:12;:46::i;:::-;18400:55;;;;;;;;18467:31;;;-1:-1:-1;;;;;18467:31:0;;;;;;;;;;18494:3;18467:31;;;;;;;;;;;;;;;-1:-1:-1;18512:4:0;;17740:782;-1:-1:-1;;;17740:782:0:o

Swarm Source

bzzr://b0946e0e1d3d1e148149c2bb4e2cd4e7a7e4ff34839dd14ff5edcfedca71a0cb

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Order book DEX contract.

0xaA5bBD5A177A588b9F213505cA3740b444Dbd586
Net Worth in USD
$240,051.42

Net Worth in ETH
121.094376

Token Allocations
EAN 92.65%
ETH 3.87%
XYO 2.06%
Others 1.42%
Chain Token Portfolio % Price Amount Value
ETH92.65%$0.001,010,679.465$0.00
ETH
Ether (ETH)
3.87%$1,982.354.6877$9,292.75
ETH2.06%$0.0040381,223,993$4,942.86
ETH0.95%$0.009992227,773.6098$2,275.88
ETH0.23%$0.02134425,974.8795$554.41
ETH0.09%$0.000663325,215.7183$215.46
ETH0.08%$0.01493412,219.5401$182.48
ETH0.02%$0.00990$0.00
ETH0.02%<$0.0000011,011,999,998$37.15
ETH0.01%$0.000021,665,839.6137$33.1
ETH0.01%$0.000039672,043.6839$26.16
ETH<0.01%$0.0048,298.98$0.00
ETH<0.01%$0.000039198,559$7.8
ETH<0.01%$0.000039100,000$3.93
ETH<0.01%$0.0005117,156$3.66
ETH<0.01%$0.000013281,090.1178$3.66
ETH<0.01%$0.0003989,091.7505$3.62
ETH<0.01%$0.03211179.1461$2.54
ETH<0.01%$0.00003962,677$2.46
ETH<0.01%$0.02681679.4249$2.13
ETH<0.01%$0.00509,600$0.00
ETH<0.01%$0.1291919$1.16
ETH<0.01%$0.9998110.9$0.8998
ETH<0.01%$0.000004231,799.5593$0.8963
ETH<0.01%$0.0089557.81$0.5174
ETH<0.01%$0.0002551,981.961$0.5046
ETH<0.01%$0.00622.8813$0.00
ETH<0.01%$8.810.0428$0.3771
ETH<0.01%$0.000001300,000$0.2515
ETH<0.01%$0.000593373.7581$0.2216
ETH<0.01%<$0.000001521,651.4998$0.1896
BASE<0.01%$0.019895160$3.18
BASE<0.01%$1,982.530.0002489$0.493451
BSC<0.01%$0.001091,076.8005$1.17
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.