ETH Price: $2,647.06 (+1.54%)
Gas: 1 Gwei

Contract

0xaA5bBD5A177A588b9F213505cA3740b444Dbd586
 

Overview

ETH Balance

5.870840983578309801 ETH

Eth Value

$15,540.45 (@ $2,647.06/ETH)

Token Holdings

Transaction Hash
Method
Block
From
To
0xfdffce434c99cd032a9bc30eab450286cf3ce875e5270e2ac97fdbef01ae9493 Sell ERC20Token(pending)2024-08-11 5:08:5111 mins ago1723352931IN
Saturn Network 2
0 ETH(Pending)(Pending)
0x8e745c6cb4a0fe85adb0d827360bec38e3c768fca6db572146b162901671a509 Buy Order With E...(pending)2024-08-11 5:02:0518 mins ago1723352525IN
Saturn Network 2
0.0007778601 ETH(Pending)(Pending)
0x11c2af8ef7263920d1038b2106083310ffa4f96b2d762bac4e947301150501f3 Cancel Order(pending)2024-08-11 4:24:1356 mins ago1723350253IN
Saturn Network 2
0 ETH(Pending)(Pending)
0xe40a5e434e2cab03ea1c3a55867e19e52ed4bfa9e293ce62d21e016efa7dfc8a Sell ERC20Token(pending)2024-08-11 3:35:021 hr ago1723347302IN
Saturn Network 2
0 ETH(Pending)(Pending)
Buy Order With E...205009212024-08-10 21:32:117 hrs ago1723325531IN
Saturn Network 2
0 ETH0.000180711.15334424
Sell ERC20Token204958312024-08-10 4:30:1124 hrs ago1723264211IN
Saturn Network 2
0 ETH0.000155130.78419
Buy Order With E...204955152024-08-10 3:26:4725 hrs ago1723260407IN
Saturn Network 2
0 ETH0.000209341.31512892
Buy Order With E...204954962024-08-10 3:22:5925 hrs ago1723260179IN
Saturn Network 2
0 ETH0.000227241.33373981
Buy Order With E...204886772024-08-09 4:33:232 days ago1723178003IN
Saturn Network 2
0 ETH0.000223951.28446779
Buy Order With E...204886062024-08-09 4:18:592 days ago1723177139IN
Saturn Network 2
0 ETH0.000220761.4018175
Buy Order With E...204883992024-08-09 3:37:232 days ago1723174643IN
Saturn Network 2
0 ETH0.000334391.96048877
Buy Order With E...204883952024-08-09 3:36:352 days ago1723174595IN
Saturn Network 2
0 ETH0.000361211.96048877
Buy Order With E...204883072024-08-09 3:18:592 days ago1723173539IN
Saturn Network 2
0 ETH0.000251711.59837151
Buy Order With E...204868642024-08-08 22:29:112 days ago1723156151IN
Saturn Network 2
0 ETH0.000629073.95934565
Buy Order With E...204742202024-08-07 4:11:114 days ago1723003871IN
Saturn Network 2
0 ETH0.000286831.68326008
Buy Order With E...204736012024-08-07 2:06:474 days ago1722996407IN
Saturn Network 2
0 ETH0.000294281.84316546
Buy Order With E...204735692024-08-07 2:00:234 days ago1722996023IN
Saturn Network 2
0 ETH0.000330461.91589259
Buy Order With E...204687652024-08-06 9:55:114 days ago1722938111IN
Saturn Network 2
0 ETH0.000527633.32173977
Buy Order With E...204677322024-08-06 6:27:234 days ago1722925643IN
Saturn Network 2
0 ETH0.000426082.71870156
Buy Order With E...204664112024-08-06 2:01:355 days ago1722909695IN
Saturn Network 2
0 ETH0.000561882.86306098
Buy Order With E...204661832024-08-06 1:15:475 days ago1722906947IN
Saturn Network 2
0 ETH0.000826385.2725909
Buy Order With E...204652472024-08-05 22:07:475 days ago1722895667IN
Saturn Network 2
0 ETH0.000641494.04985178
Buy Order With E...204649662024-08-05 21:11:355 days ago1722892295IN
Saturn Network 2
0 ETH0.000824825.06982274
Buy Order With E...204587932024-08-05 0:31:116 days ago1722817871IN
Saturn Network 2
0 ETH0.000564353.81046314
Buy Order With E...204586312024-08-04 23:58:476 days ago1722815927IN
Saturn Network 2
0 ETH0.000290871.82347755
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
205009212024-08-10 21:32:117 hrs ago1723325531
Saturn Network 2
0.00000797 ETH
205009212024-08-10 21:32:117 hrs ago1723325531
Saturn Network 2
0.00318202 ETH
204955152024-08-10 3:26:4725 hrs ago1723260407
Saturn Network 2
0.00000607 ETH
204955152024-08-10 3:26:4725 hrs ago1723260407
Saturn Network 2
0.00242402 ETH
204954962024-08-10 3:22:5925 hrs ago1723260179
Saturn Network 2
0.00000484 ETH
204954962024-08-10 3:22:5925 hrs ago1723260179
Saturn Network 2
0.00193315 ETH
204886772024-08-09 4:33:232 days ago1723178003
Saturn Network 2
0.00001245 ETH
204886772024-08-09 4:33:232 days ago1723178003
Saturn Network 2
0.00496755 ETH
204886062024-08-09 4:18:592 days ago1723177139
Saturn Network 2
0.00001062 ETH
204886062024-08-09 4:18:592 days ago1723177139
Saturn Network 2
0.00423937 ETH
204885822024-08-09 4:14:112 days ago1723176851
Saturn Network 2
0.0000028 ETH
204885822024-08-09 4:14:112 days ago1723176851
Saturn Network 2
0.00111723 ETH
204883992024-08-09 3:37:232 days ago1723174643
Saturn Network 2
0.0000025 ETH
204883992024-08-09 3:37:232 days ago1723174643
Saturn Network 2
0.0009975 ETH
204883952024-08-09 3:36:352 days ago1723174595
Saturn Network 2
0.0000025 ETH
204883952024-08-09 3:36:352 days ago1723174595
Saturn Network 2
0.0009975 ETH
204883072024-08-09 3:18:592 days ago1723173539
Saturn Network 2
0.0000065 ETH
204883072024-08-09 3:18:592 days ago1723173539
Saturn Network 2
0.0025935 ETH
204868642024-08-08 22:29:112 days ago1723156151
Saturn Network 2
0.0000285 ETH
204868642024-08-08 22:29:112 days ago1723156151
Saturn Network 2
0.0113715 ETH
204742202024-08-07 4:11:114 days ago1723003871
Saturn Network 2
0.000007 ETH
204742202024-08-07 4:11:114 days ago1723003871
Saturn Network 2
0.002794 ETH
204739462024-08-07 3:15:474 days ago1723000547
Saturn Network 2
0.00000527 ETH
204739462024-08-07 3:15:474 days ago1723000547
Saturn Network 2
0.00210412 ETH
204739202024-08-07 3:10:354 days ago1723000235
Saturn Network 2
0.0000125 ETH
View All Internal Transactions
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

Contract Source Code (Solidity)

/**
 *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

[{"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 Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

Order book DEX contract.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Chain Token Portfolio % Price Amount Value
ETH88.87%$0.2200521,010,679.465$222,402.04
ETH
Ether (ETH)
6.21%$2,647.065.8708$15,540.45
ETH2.40%$0.0049061,223,993$6,005.44
ETH1.75%$0.019266227,773.6098$4,388.29
ETH0.41%$0.03962725,974.8795$1,029.29
ETH0.15%$0.00113325,215.7183$367.37
ETH0.07%$0.01493412,219.5401$182.48
ETH0.06%<$0.0000011,011,999,998$147.34
ETH0.02%$0.57843670.06$40.53
ETH0.02%$0.039342990$38.95
ETH<0.01%$0.0000151,665,839.6137$24.79
ETH<0.01%$0.000026726,216.1139$19.24
ETH<0.01%$0.0014429,091.7505$13.11
ETH<0.01%$0.00015648,298.98$7.53
ETH<0.01%$0.000026198,559$5.26
ETH<0.01%$0.05265382.4234$4.34
ETH<0.01%$0.442769$3.98
ETH<0.01%$0.000013281,090.1178$3.66
ETH<0.01%$0.000012300,000$3.64
ETH<0.01%$0.0004247,156$3.04
ETH<0.01%$0.03813179.1461$3.02
ETH<0.01%$0.000026100,000$2.65
ETH<0.01%$0.000009295,397$2.55
ETH<0.01%$0.00002662,677$1.66
ETH<0.01%$0.000005231,799.5593$1.25
ETH<0.01%$0.0158657.81$0.9168
ETH<0.01%$0.9990040.9$0.8991
ETH<0.01%$0.001416373.7581$0.5291
ETH<0.01%$0.0002551,981.961$0.5046
ETH<0.01%$0.000765622.8813$0.4762
ETH<0.01%$10.630.0428$0.4549
ETH<0.01%$0.00001229,480.7692$0.3578
ETH<0.01%$0.0783483$0.235
ETH<0.01%$0.001537131.6883$0.2024
BSC<0.01%$0.0149281,069.2219$15.96
MATIC<0.01%$0.0004521,981.97$0.8966
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.