ETH Price: $3,400.20 (+1.97%)

Contract

0xd1E4d74D9B0AE84a78188B589f4B47Ac2E94AcA9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Wallet105408322020-07-27 9:46:301616 days ago1595843190IN
0xd1E4d74D...c2E94AcA9
0 ETH0.0027437995
Swap104114012020-07-07 9:13:061636 days ago1594113186IN
0xd1E4d74D...c2E94AcA9
0.2805 ETH0.0189173349
Swap104113602020-07-07 9:02:501636 days ago1594112570IN
0xd1E4d74D...c2E94AcA9
0 ETH0.036903948.10000025
Swap104091652020-07-07 0:40:071636 days ago1594082407IN
0xd1E4d74D...c2E94AcA9
0 ETH0.0150157226
Swap104082032020-07-06 21:08:221636 days ago1594069702IN
0xd1E4d74D...c2E94AcA9
0 ETH0.0157351828
Swap104078772020-07-06 20:03:071636 days ago1594065787IN
0xd1E4d74D...c2E94AcA9
0 ETH0.0190097130
Swap104078632020-07-06 19:59:471636 days ago1594065587IN
0xd1E4d74D...c2E94AcA9
0 ETH0.0213305430
Swap104077412020-07-06 19:30:551636 days ago1594063855IN
0xd1E4d74D...c2E94AcA9
0 ETH0.0216124533
Swap104076622020-07-06 19:15:301636 days ago1594062930IN
0xd1E4d74D...c2E94AcA9
0 ETH0.0230030835
Swap104074992020-07-06 18:34:481636 days ago1594060488IN
0xd1E4d74D...c2E94AcA9
0 ETH0.0257526637
Swap104072862020-07-06 17:43:551636 days ago1594057435IN
0xd1E4d74D...c2E94AcA9
0 ETH0.0331700949.5
Swap104072802020-07-06 17:42:341636 days ago1594057354IN
0xd1E4d74D...c2E94AcA9
0 ETH0.0342378449.99999999
Swap104070342020-07-06 16:45:391636 days ago1594053939IN
0xd1E4d74D...c2E94AcA9
2.0063665 ETH0.0160846851
Swap104070052020-07-06 16:39:391636 days ago1594053579IN
0xd1E4d74D...c2E94AcA9
0 ETH0.0247413751
Swap104069942020-07-06 16:37:021636 days ago1594053422IN
0xd1E4d74D...c2E94AcA9
0.1 ETH0.0160860151
Swap104069762020-07-06 16:30:561636 days ago1594053056IN
0xd1E4d74D...c2E94AcA9
0.63450874 ETH0.0160943751
Swap104069722020-07-06 16:29:151636 days ago1594052955IN
0xd1E4d74D...c2E94AcA9
0 ETH0.0436993551
Swap104068662020-07-06 16:07:511636 days ago1594051671IN
0xd1E4d74D...c2E94AcA9
0 ETH0.0362625351
Swap104064862020-07-06 14:40:451636 days ago1594046445IN
0xd1E4d74D...c2E94AcA9
0 ETH0.0215180849.35
Swap104064792020-07-06 14:38:181636 days ago1594046298IN
0xd1E4d74D...c2E94AcA9
0 ETH0.0174576649.35
Swap104063552020-07-06 14:07:131636 days ago1594044433IN
0xd1E4d74D...c2E94AcA9
0.07946722 ETH0.0149938445.41250051
Swap104061542020-07-06 13:18:551636 days ago1594041535IN
0xd1E4d74D...c2E94AcA9
0.07 ETH0.0187812242.00000145
Swap104060612020-07-06 12:57:301636 days ago1594040250IN
0xd1E4d74D...c2E94AcA9
0 ETH0.0113233439.76328141
Swap104060242020-07-06 12:47:091636 days ago1594039629IN
0xd1E4d74D...c2E94AcA9
1.27796695 ETH0.0191063339
Swap104058982020-07-06 12:21:321636 days ago1594038092IN
0xd1E4d74D...c2E94AcA9
0.1 ETH0.01254638
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
214381762024-12-19 17:52:119 days ago1734630731
0xd1E4d74D...c2E94AcA9
0.00046163 ETH
214381762024-12-19 17:52:119 days ago1734630731
0xd1E4d74D...c2E94AcA9
0.00000046 ETH
214381762024-12-19 17:52:119 days ago1734630731
0xd1E4d74D...c2E94AcA9
0.00046209 ETH
211338362024-11-07 5:58:3552 days ago1730959115
0xd1E4d74D...c2E94AcA9
0.00044944 ETH
211338362024-11-07 5:58:3552 days ago1730959115
0xd1E4d74D...c2E94AcA9
0.00000044 ETH
211338362024-11-07 5:58:3552 days ago1730959115
0xd1E4d74D...c2E94AcA9
0.00044989 ETH
104114012020-07-07 9:13:061636 days ago1594113186
0xd1E4d74D...c2E94AcA9
0.2805 ETH
104070342020-07-06 16:45:391636 days ago1594053939
0xd1E4d74D...c2E94AcA9
2.0063665 ETH
104070052020-07-06 16:39:391636 days ago1594053579
0xd1E4d74D...c2E94AcA9
0.86395359 ETH
104070052020-07-06 16:39:391636 days ago1594053579
0xd1E4d74D...c2E94AcA9
0.00086481 ETH
104070052020-07-06 16:39:391636 days ago1594053579
0xd1E4d74D...c2E94AcA9
0.86481841 ETH
104069942020-07-06 16:37:021636 days ago1594053422
0xd1E4d74D...c2E94AcA9
0.1 ETH
104069762020-07-06 16:30:561636 days ago1594053056
0xd1E4d74D...c2E94AcA9
0.63450874 ETH
104064862020-07-06 14:40:451636 days ago1594046445
0xd1E4d74D...c2E94AcA9
14.11991666 ETH
104064862020-07-06 14:40:451636 days ago1594046445
0xd1E4d74D...c2E94AcA9
0.01413405 ETH
104064862020-07-06 14:40:451636 days ago1594046445
0xd1E4d74D...c2E94AcA9
14.13405071 ETH
104064792020-07-06 14:38:181636 days ago1594046298
0xd1E4d74D...c2E94AcA9
0.05448153 ETH
104064792020-07-06 14:38:181636 days ago1594046298
0xd1E4d74D...c2E94AcA9
0.00005453 ETH
104064792020-07-06 14:38:181636 days ago1594046298
0xd1E4d74D...c2E94AcA9
0.05453607 ETH
104063552020-07-06 14:07:131636 days ago1594044433
0xd1E4d74D...c2E94AcA9
0.07946722 ETH
104061542020-07-06 13:18:551636 days ago1594041535
0xd1E4d74D...c2E94AcA9
0 ETH
104061542020-07-06 13:18:551636 days ago1594041535
0xd1E4d74D...c2E94AcA9
0 ETH
104061542020-07-06 13:18:551636 days ago1594041535
0xd1E4d74D...c2E94AcA9
0.07 ETH
104060612020-07-06 12:57:301636 days ago1594040250
0xd1E4d74D...c2E94AcA9
39.20488653 ETH
104060612020-07-06 12:57:301636 days ago1594040250
0xd1E4d74D...c2E94AcA9
0.03924413 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KyberTokenSwap

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-12-10
*/

/**
 *Submitted for verification at Etherscan.io on 2019-11-07
*/

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol

pragma solidity ^0.4.24;


/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * See https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address _who) public view returns (uint256);
  function transfer(address _to, uint256 _value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol

pragma solidity ^0.4.24;



/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address _owner, address _spender)
    public view returns (uint256);

  function transferFrom(address _from, address _to, uint256 _value)
    public returns (bool);

  function approve(address _spender, uint256 _value) public returns (bool);
  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );
}

// File: openzeppelin-solidity/contracts/math/SafeMath.sol

pragma solidity ^0.4.24;


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

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

    c = _a * _b;
    assert(c / _a == _b);
    return c;
  }

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

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

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

// File: contracts/Utils/Ownable.sol

pragma solidity ^0.4.24;

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


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


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

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

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function transferOwnership(address _newOwner) public onlyOwner {
    _transferOwnership(_newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address _newOwner) internal {
    require(_newOwner != address(0), "_newOwner == 0");
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }
}

// File: contracts/Utils/Destructible.sol

pragma solidity ^0.4.24;


/**
 * @title Destructible
 * @dev Base contract that can be destroyed by owner. All funds in contract will be sent to the owner.
 */
contract Destructible is Ownable {
  /**
   * @dev Transfers the current balance to the owner and terminates the contract.
   */
  function destroy() public onlyOwner {
    selfdestruct(owner);
  }

  function destroyAndSend(address _recipient) public onlyOwner {
    selfdestruct(_recipient);
  }
}

// File: contracts/Interfaces/IBadERC20.sol

pragma solidity ^0.4.24;

/**
 * @title Bad formed ERC20 token interface.
 * @dev The interface of the a bad formed ERC20 token.
 */
interface IBadERC20 {
    function transfer(address to, uint256 value) external;
    function approve(address spender, uint256 value) external;
    function transferFrom(
      address from,
      address to,
      uint256 value
    ) external;

    function totalSupply() external view returns (uint256);

    function balanceOf(
      address who
    ) external view returns (uint256);

    function allowance(
      address owner,
      address spender
    ) external view returns (uint256);

    event Transfer(
      address indexed from,
      address indexed to,
      uint256 value
    );
    event Approval(
      address indexed owner,
      address indexed spender,
      uint256 value
    );
}

// File: contracts/Utils/SafeTransfer.sol

pragma solidity ^0.4.24;


/**
 * @title SafeTransfer
 * @dev Transfer Bad ERC20 tokens
 */
library SafeTransfer {
/**
   * @dev Wrapping the ERC20 transferFrom function to avoid missing returns.
   * @param _tokenAddress The address of bad formed ERC20 token.
   * @param _from Transfer sender.
   * @param _to Transfer receiver.
   * @param _value Amount to be transfered.
   * @return Success of the safeTransferFrom.
   */

  function _safeTransferFrom(
    address _tokenAddress,
    address _from,
    address _to,
    uint256 _value
  )
    internal
    returns (bool result)
  {
    IBadERC20(_tokenAddress).transferFrom(_from, _to, _value);

    assembly {
      switch returndatasize()
      case 0 {                      // This is our BadToken
        result := not(0)            // result is true
      }
      case 32 {                     // This is our GoodToken
        returndatacopy(0, 0, 32)
        result := mload(0)          // result == returndata of external call
      }
      default {                     // This is not an ERC20 token
        revert(0, 0)
      }
    }
  }

  /**
   * @dev Wrapping the ERC20 transfer function to avoid missing returns.
   * @param _tokenAddress The address of bad formed ERC20 token.
   * @param _to Transfer receiver.
   * @param _amount Amount to be transfered.
   * @return Success of the safeTransfer.
   */
  function _safeTransfer(
    address _tokenAddress,
    address _to,
    uint _amount
  )
    internal
    returns (bool result)
  {
    IBadERC20(_tokenAddress).transfer(_to, _amount);

    assembly {
      switch returndatasize()
      case 0 {                      // This is our BadToken
        result := not(0)            // result is true
      }
      case 32 {                     // This is our GoodToken
        returndatacopy(0, 0, 32)
        result := mload(0)          // result == returndata of external call
      }
      default {                     // This is not an ERC20 token
        revert(0, 0)
      }
    }
  }

  function _safeApprove(
    address _token,
    address _spender,
    uint256 _value
  )
  internal
  returns (bool result)
  {
    IBadERC20(_token).approve(_spender, _value);

    assembly {
      switch returndatasize()
      case 0 {                      // This is our BadToken
        result := not(0)            // result is true
      }
      case 32 {                     // This is our GoodToken
        returndatacopy(0, 0, 32)
        result := mload(0)          // result == returndata of external call
      }
      default {                     // This is not an ERC20 token
        revert(0, 0)
      }
    }
  }
}

// File: contracts/Utils/Pausable.sol

pragma solidity ^0.4.24;



/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
  event Pause();
  event Unpause();

  bool public paused = false;


  /**
   * @dev Modifier to make a function callable only when the contract is not paused.
   */
  modifier whenNotPaused() {
    require(!paused, "The contract is paused");
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is paused.
   */
  modifier whenPaused() {
    require(paused, "The contract is not paused");
    _;
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() public onlyOwner whenNotPaused {
    paused = true;
    emit Pause();
  }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() public onlyOwner whenPaused {
    paused = false;
    emit Unpause();
  }
}

// File: contracts/Interfaces/IErc20Swap.sol

pragma solidity ^0.4.0;

interface IErc20Swap {
    function getRate(address src, address dst, uint256 srcAmount) external view returns(uint expectedRate, uint slippageRate);  // real rate = returned value / 1e18
    function swap(address src, uint srcAmount, address dest, uint maxDestAmount, uint minConversionRate) external payable;
}

// File: contracts/Interfaces/IKyberNetwork.sol

pragma solidity >=0.4.21 <0.6.0;

interface IKyberNetwork {

    function getExpectedRate(address src, address dest, uint srcQty) external view
        returns (uint expectedRate, uint slippageRate);

    function trade(
        address src,
        uint srcAmount,
        address dest,
        address destAddress,
        uint maxDestAmount,
        uint minConversionRate,
        address walletId
    ) external payable returns(uint256);
}

// File: contracts/KyberTokenSwap.sol

pragma solidity ^0.4.24;








/**
 * @title TokenSwap.
 * @author Eidoo SAGL.
 * @dev A swap asset contract. The offerAmount and wantAmount are collected and sent into the contract itself.
 */
contract KyberTokenSwap is Pausable, Destructible, IErc20Swap
{
  using SafeMath for uint;
  using SafeTransfer for ERC20;
  address constant ETHER = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
  uint constant expScale = 1e18;
  uint constant rateDecimals = 18;
  uint constant rateUnit = 10 ** rateDecimals;

  IKyberNetwork public kyberNetwork;

  address public wallet;
  address public kyberFeeWallet;

  uint public spreadDefault;
  mapping (address => mapping (address => uint)) spreadCustom;
  uint constant spreadDecimals = 6;
  uint constant spreadUnit = 10 ** spreadDecimals;

  event LogWithdrawToken(
    address indexed _from,
    address indexed _token,
    uint amount
  );

  event LogTokenSwap(
    address indexed _userAddress,
    address indexed _userSentTokenAddress,
    uint _userSentTokenAmount,
    address indexed _userReceivedTokenAddress,
    uint _userReceivedTokenAmount
  );

  event LogFee(address token, uint amount);

  event UnexpectedIntialBalance(address token, uint amount);

  constructor(
    address _kyberNetwork,
    address _wallet,
    address _kyberFeeWallet,
    uint _spread
  )
    public
  {
    require(_wallet != address(0), "_wallet == address(0)");
    require(_kyberNetwork != address(0), "_kyberNetwork == address(0)");
    require(_spread < spreadUnit, "spread >= spreadUnit");
    wallet = _wallet;
    spreadDefault = _spread;
    kyberNetwork = IKyberNetwork(_kyberNetwork);
    kyberFeeWallet = _kyberFeeWallet;
  }

  function() external payable {
    // can receive ethers from KyberNetwork
  }

  function setWallet(address _wallet) public onlyOwner {
    require(_wallet != address(0), "_wallet == address(0)");
    wallet = _wallet;
  }

  function setKyberFeeWallet(address _wallet) public onlyOwner {
    kyberFeeWallet = _wallet;
  }

  function setSpreadDefault(uint _spread) public onlyOwner {
    require(_spread < spreadUnit, "spread >= spreadUnit");
    spreadDefault = _spread;
  }

  // spread value >= spreadUnit means no fee
  function setSpread(address tokenA, address tokenB, uint spread) public onlyOwner {
    uint value = spread > spreadUnit ? spreadUnit : spread;
    spreadCustom[tokenA][tokenB] = value;
    spreadCustom[tokenB][tokenA] = value;
  }

  function getSpread(address tokenA, address tokenB) public view returns(uint) {
    uint value = spreadCustom[tokenA][tokenB];
    if (value == 0) return spreadDefault;
    if (value >= spreadUnit) return 0;
    else return value;
  }

  /**
   * @dev Withdraw asset.
   * @param _tokenAddress Asset to be withdrawed.
   * @return bool.
   */
  function withdrawToken(address _tokenAddress)
    public
    onlyOwner
  {
    uint tokenBalance;
    if (_tokenAddress == ETHER || _tokenAddress == address(0)) {
      tokenBalance = address(this).balance;
      msg.sender.transfer(tokenBalance);
    } else {
      tokenBalance = ERC20(_tokenAddress).balanceOf(address(this));
      ERC20(_tokenAddress)._safeTransfer(msg.sender, tokenBalance);
    }
    emit LogWithdrawToken(msg.sender, _tokenAddress, tokenBalance);
  }

  /*******************  *******************/
  function getRate(address src, address dest, uint256 srcAmount) external view
    returns(uint expectedRate, uint slippageRate)
  {
    (uint256 kExpected, uint256 kSplippage) = kyberNetwork.getExpectedRate(src, dest, srcAmount);
    uint256 spread = getSpread(src, dest);
    expectedRate = kExpected.mul(spreadUnit - spread).div(spreadUnit);
    slippageRate = kSplippage.mul(spreadUnit - spread).div(spreadUnit);
  }

  function _freeUnexpectedTokens(address token) private {
    uint256 unexpectedBalance = token == ETHER
      ? address(this).balance.sub(msg.value)
      : ERC20(token).balanceOf(address(this));
    if (unexpectedBalance > 0) {
      _transfer(token, wallet, unexpectedBalance);
      emit UnexpectedIntialBalance(token, unexpectedBalance);
    }
  }

  function swap(address src, uint srcAmount, address dest, uint maxDestAmount, uint minConversionRate) public payable {
    require(src != dest, "src == dest");
    require(srcAmount > 0, "srcAmount == 0");

    // empty unexpected initial balances
    _freeUnexpectedTokens(src);
    _freeUnexpectedTokens(dest);

    if (src == ETHER) {
      require(msg.value == srcAmount, "msg.value != srcAmount");
    } else {
      require(
        ERC20(src).allowance(msg.sender, address(this)) >= srcAmount,
        "ERC20 allowance < srcAmount"
      );
      // get user's tokens
      require(
        ERC20(src)._safeTransferFrom(msg.sender, address(this), srcAmount),
        "cannot transfer src token from msg.sender to this"
      );
    }

//    (uint256 expectedRate, ) = kyberNetwork.getExpectedRate(src, dest, srcAmount);
//    require(expectedRate > 0, "expectedRate is 0, pair is not tradable");

    uint256 spread = getSpread(src, dest);

    uint256 destTradedAmount = _callKyberNetworkTrade(src, srcAmount, dest, maxDestAmount, minConversionRate, spread);

    uint256 notTraded = _myBalance(src);
    uint256 srcTradedAmount = srcAmount.sub(notTraded);
    require(srcTradedAmount > 0, "no traded tokens");
    require(
       _myBalance(dest) >= destTradedAmount,
       "No enough dest tokens after trade"
     );
    // pay fee and user
    uint256 toUserAmount = _payFee(dest, destTradedAmount, spread);
    _transfer(dest, msg.sender, toUserAmount);
    // returns not traded tokens if any
    if (notTraded > 0) {
      _transfer(src, msg.sender, notTraded);
    }

    emit LogTokenSwap(
      msg.sender,
      src,
      srcTradedAmount,
      dest,
      toUserAmount
    );
  }

  function _callKyberNetworkTrade(address src, uint srcAmount, address dest, uint maxDestAmount, uint minConversionRate, uint spread) private returns(uint256) {
    // calculate the minConversionRate and maxDestAmount keeping in mind the fee
    uint256 adaptedMinRate = minConversionRate.mul(spreadUnit).div(spreadUnit - spread);
    uint256 adaptedMaxDestAmount = maxDestAmount.mul(spreadUnit).div(spreadUnit - spread);
    if (src == ETHER) {
      return kyberNetwork.trade
        .value(srcAmount)(src, srcAmount, dest, address(this), adaptedMaxDestAmount, adaptedMinRate, kyberFeeWallet);
    } else {
      if (ERC20(src).allowance(address(this), address(kyberNetwork)) > 0) {
        ERC20(src)._safeApprove(address(kyberNetwork), 0);
      }
      ERC20(src)._safeApprove(address(kyberNetwork), srcAmount);
      return kyberNetwork.trade(src, srcAmount, dest, address(this), adaptedMaxDestAmount, adaptedMinRate, kyberFeeWallet);
    }
  }

  function _payFee(address token, uint destTradedAmount, uint spread) private returns(uint256 toUserAmount) {
    uint256 fee = destTradedAmount.mul(spread).div(spreadUnit);
    toUserAmount = destTradedAmount.sub(fee);
    // pay fee
    if (fee > 0) {
      _transfer(token, wallet, fee);
      emit LogFee(token, fee);
    }
  }

  function _myBalance(address token) private view returns(uint256) {
    return token == ETHER
      ? address(this).balance
      : ERC20(token).balanceOf(address(this));
  }

  function _transfer(address token, address recipient, uint256 amount) private {
    if (token == ETHER) {
      recipient.transfer(amount);
    } else {
      require(ERC20(token)._safeTransfer(recipient, amount), "cannot transfer tokens");
    }
  }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"kyberFeeWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_wallet","type":"address"}],"name":"setKyberFeeWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenA","type":"address"},{"name":"tokenB","type":"address"},{"name":"spread","type":"uint256"}],"name":"setSpread","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"srcAmount","type":"uint256"},{"name":"dest","type":"address"},{"name":"maxDestAmount","type":"uint256"},{"name":"minConversionRate","type":"uint256"}],"name":"swap","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenA","type":"address"},{"name":"tokenB","type":"address"}],"name":"getSpread","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"destroy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"spreadDefault","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kyberNetwork","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_wallet","type":"address"}],"name":"setWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"dest","type":"address"},{"name":"srcAmount","type":"uint256"}],"name":"getRate","outputs":[{"name":"expectedRate","type":"uint256"},{"name":"slippageRate","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spread","type":"uint256"}],"name":"setSpreadDefault","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"}],"name":"destroyAndSend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_kyberNetwork","type":"address"},{"name":"_wallet","type":"address"},{"name":"_kyberFeeWallet","type":"address"},{"name":"_spread","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogWithdrawToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_userAddress","type":"address"},{"indexed":true,"name":"_userSentTokenAddress","type":"address"},{"indexed":false,"name":"_userSentTokenAmount","type":"uint256"},{"indexed":true,"name":"_userReceivedTokenAddress","type":"address"},{"indexed":false,"name":"_userReceivedTokenAmount","type":"uint256"}],"name":"LogTokenSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"UnexpectedIntialBalance","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040526000805460a060020a60ff021916905534801561002057600080fd5b50604051608080611dc6833981016040908152815160208301519183015160609093015160008054600160a060020a03191633179055909290600160a060020a03831615156100d057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5f77616c6c6574203d3d20616464726573732830290000000000000000000000604482015290519081900360640190fd5b600160a060020a038416151561014757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5f6b796265724e6574776f726b203d3d20616464726573732830290000000000604482015290519081900360640190fd5b620f424081106101b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f737072656164203e3d20737072656164556e6974000000000000000000000000604482015290519081900360640190fd5b60028054600160a060020a0319908116600160a060020a039586161790915560049190915560018054821694841694909417909355600380549093169116179055611bbe806102086000396000f3006080604052600436106101115763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632220e22e81146101135780633f4ba83a1461014457806340a9cadb1461015957806345db50341461017a578063521eb273146101a45780635c975abb146101b95780635e75228f146101e2578063715018a61461020657806375ead4591461021b57806383197ef0146102545780638456cb5914610269578063894760691461027e5780638da5cb5b1461029f5780639236a652146102b4578063b78b842d146102c9578063deaa59df146102de578063e56c174b146102ff578063ebdea6b914610342578063f2fde38b1461035a578063f5074f411461037b575b005b34801561011f57600080fd5b5061012861039c565b60408051600160a060020a039092168252519081900360200190f35b34801561015057600080fd5b506101116103ab565b34801561016557600080fd5b50610111600160a060020a03600435166104b6565b34801561018657600080fd5b50610111600160a060020a0360043581169060243516604435610535565b3480156101b057600080fd5b506101286105dc565b3480156101c557600080fd5b506101ce6105eb565b604080519115158252519081900360200190f35b610111600160a060020a03600435811690602435906044351660643560843561060c565b34801561021257600080fd5b50610111610a90565b34801561022757600080fd5b50610242600160a060020a0360043581169060243516610b35565b60408051918252519081900360200190f35b34801561026057600080fd5b50610111610b8c565b34801561027557600080fd5b50610111610bea565b34801561028a57600080fd5b50610111600160a060020a0360043516610d0b565b3480156102ab57600080fd5b50610128610eb9565b3480156102c057600080fd5b50610242610ec8565b3480156102d557600080fd5b50610128610ece565b3480156102ea57600080fd5b50610111600160a060020a0360043516610edd565b34801561030b57600080fd5b50610329600160a060020a0360043581169060243516604435610fbc565b6040805192835260208301919091528051918290030190f35b34801561034e57600080fd5b506101116004356110ca565b34801561036657600080fd5b50610111600160a060020a0360043516611179565b34801561038757600080fd5b50610111600160a060020a03600435166111d5565b600354600160a060020a031681565b600054600160a060020a031633146103fb576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b60005474010000000000000000000000000000000000000000900460ff16151561046f576040805160e560020a62461bcd02815260206004820152601a60248201527f54686520636f6e7472616374206973206e6f7420706175736564000000000000604482015290519081900360640190fd5b6000805474ff0000000000000000000000000000000000000000191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a1565b600054600160a060020a03163314610506576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008054600160a060020a03163314610586576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b620f42408211610596578161059b565b620f42405b600160a060020a0394851660008181526005602081815260408084209890991683529687528782208490558652868120918152945293909220929092555050565b600254600160a060020a031681565b60005474010000000000000000000000000000000000000000900460ff1681565b600080808080600160a060020a038a81169089161415610676576040805160e560020a62461bcd02815260206004820152600b60248201527f737263203d3d2064657374000000000000000000000000000000000000000000604482015290519081900360640190fd5b600089116106ce576040805160e560020a62461bcd02815260206004820152600e60248201527f737263416d6f756e74203d3d2030000000000000000000000000000000000000604482015290519081900360640190fd5b6106d78a611231565b6106e088611231565b600160a060020a038a1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156107615734891461075c576040805160e560020a62461bcd02815260206004820152601660248201527f6d73672e76616c756520213d20737263416d6f756e7400000000000000000000604482015290519081900360640190fd5b6108e4565b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290518a91600160a060020a038d169163dd62ed3e916044808201926020929091908290030181600087803b1580156107cb57600080fd5b505af11580156107df573d6000803e3d6000fd5b505050506040513d60208110156107f557600080fd5b5051101561084d576040805160e560020a62461bcd02815260206004820152601b60248201527f455243323020616c6c6f77616e6365203c20737263416d6f756e740000000000604482015290519081900360640190fd5b610868600160a060020a038b1633308c63ffffffff61136616565b15156108e4576040805160e560020a62461bcd02815260206004820152603160248201527f63616e6e6f74207472616e736665722073726320746f6b656e2066726f6d206d60448201527f73672e73656e64657220746f2074686973000000000000000000000000000000606482015290519081900360840190fd5b6108ee8a89610b35565b94506108fe8a8a8a8a8a8a611426565b93506109098a611707565b925061091b898463ffffffff6117c816565b915060008211610975576040805160e560020a62461bcd02815260206004820152601060248201527f6e6f2074726164656420746f6b656e7300000000000000000000000000000000604482015290519081900360640190fd5b8361097f89611707565b10156109fb576040805160e560020a62461bcd02815260206004820152602160248201527f4e6f20656e6f756768206465737420746f6b656e73206166746572207472616460448201527f6500000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610a068885876117da565b9050610a13883383611876565b6000831115610a2757610a278a3385611876565b87600160a060020a03168a600160a060020a031633600160a060020a03167f3ec01f4da9d8c31a1cdb8e6e7231364ba5ef0850b01daaa44a9f126f920693c68585604051808381526020018281526020019250505060405180910390a450505050505050505050565b600054600160a060020a03163314610ae0576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600160a060020a038083166000908152600560209081526040808320938516835292905290812054801515610b6e576004549150610b85565b620f42408110610b815760009150610b85565b8091505b5092915050565b600054600160a060020a03163314610bdc576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b600054600160a060020a0316ff5b600054600160a060020a03163314610c3a576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b60005474010000000000000000000000000000000000000000900460ff1615610cad576040805160e560020a62461bcd02815260206004820152601660248201527f54686520636f6e74726163742069732070617573656400000000000000000000604482015290519081900360640190fd5b6000805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a1565b60008054600160a060020a03163314610d5c576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b600160a060020a03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480610d8e5750600160a060020a038216155b15610dca5750604051303190339082156108fc029083906000818181858888f19350505050158015610dc4573d6000803e3d6000fd5b50610e75565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015610e2b57600080fd5b505af1158015610e3f573d6000803e3d6000fd5b505050506040513d6020811015610e5557600080fd5b50519050610e73600160a060020a038316338363ffffffff61194c16565b505b604080518281529051600160a060020a0384169133917f46ae78bc7b198b8b534ca0070d125569ac5f955976841c4343223079f3abf0de9181900360200190a35050565b600054600160a060020a031681565b60045481565b600154600160a060020a031681565b600054600160a060020a03163314610f2d576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b600160a060020a0381161515610f8d576040805160e560020a62461bcd02815260206004820152601560248201527f5f77616c6c6574203d3d20616464726573732830290000000000000000000000604482015290519081900360640190fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154604080517f809a9e55000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301528581166024830152604482018590528251600094859485948594859493169263809a9e559260648084019391929182900301818787803b15801561103957600080fd5b505af115801561104d573d6000803e3d6000fd5b505050506040513d604081101561106357600080fd5b508051602090910151909350915061107b8888610b35565b90506110a2620f42406110968584830363ffffffff611a0116565b9063ffffffff611a2a16565b94506110bd620f42406110968484830363ffffffff611a0116565b9350505050935093915050565b600054600160a060020a0316331461111a576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b620f42408110611174576040805160e560020a62461bcd02815260206004820152601460248201527f737072656164203e3d20737072656164556e6974000000000000000000000000604482015290519081900360640190fd5b600455565b600054600160a060020a031633146111c9576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b6111d281611a3f565b50565b600054600160a060020a03163314611225576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b80600160a060020a0316ff5b6000600160a060020a03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146112e957604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b1580156112b857600080fd5b505af11580156112cc573d6000803e3d6000fd5b505050506040513d60208110156112e257600080fd5b50516112fa565b6112fa30313463ffffffff6117c816565b905060008111156113625760025461131d908390600160a060020a031683611876565b60408051600160a060020a03841681526020810183905281517f53189a8ce98afbf89498c735cf6b58ad2708c8a3a12b6f077bd4f3313dced7a9929181900390910190a15b5050565b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015284811660248301526044820184905291516000928716916323b872dd916064808301928692919082900301818387803b1580156113d957600080fd5b505af11580156113ed573d6000803e3d6000fd5b505050503d60008114611407576020811461141157600080fd5b600019915061141d565b60206000803e60005191505b50949350505050565b60008080611446620f42408581039061109690889063ffffffff611a0116565b9150611464620f42408581039061109690899063ffffffff611a0116565b9050600160a060020a03891673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561155757600154600354604080517fcb3c28c7000000000000000000000000000000000000000000000000000000008152600160a060020a038d81166004830152602482018d90528b811660448301523060648301526084820186905260a4820187905292831660c48201529051919092169163cb3c28c7918b9160e48082019260209290919082900301818588803b15801561152357600080fd5b505af1158015611537573d6000803e3d6000fd5b50505050506040513d602081101561154e57600080fd5b505192506116fb565b600154604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a03928316602482015290516000928c169163dd62ed3e91604480830192602092919082900301818787803b1580156115c557600080fd5b505af11580156115d9573d6000803e3d6000fd5b505050506040513d60208110156115ef57600080fd5b5051111561161a5760015461161890600160a060020a038b81169116600063ffffffff611b0716565b505b60015461163a90600160a060020a038b811691168a63ffffffff611b0716565b50600154600354604080517fcb3c28c7000000000000000000000000000000000000000000000000000000008152600160a060020a038d81166004830152602482018d90528b811660448301523060648301526084820186905260a4820187905292831660c48201529051919092169163cb3c28c79160e48083019260209291908290030181600087803b1580156116d157600080fd5b505af11580156116e5573d6000803e3d6000fd5b505050506040513d602081101561154e57600080fd5b50509695505050505050565b6000600160a060020a03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146117bf57604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561178e57600080fd5b505af11580156117a2573d6000803e3d6000fd5b505050506040513d60208110156117b857600080fd5b50516117c2565b30315b92915050565b6000828211156117d457fe5b50900390565b6000806117f4620f4240611096868663ffffffff611a0116565b9050611806848263ffffffff6117c816565b9150600081111561186e57600254611829908690600160a060020a031683611876565b60408051600160a060020a03871681526020810183905281517f1cdf74906ad7d5c402e19a20dbe986befe937e6768a0722bdb18918cdba45c4a929181900390910190a15b509392505050565b600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156118d757604051600160a060020a0383169082156108fc029083906000818181858888f193505050501580156118d1573d6000803e3d6000fd5b50611947565b6118f1600160a060020a038416838363ffffffff61194c16565b1515611947576040805160e560020a62461bcd02815260206004820152601660248201527f63616e6e6f74207472616e7366657220746f6b656e7300000000000000000000604482015290519081900360640190fd5b505050565b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a03848116600483015260248201849052915160009286169163a9059cbb916044808301928692919082900301818387803b1580156119b757600080fd5b505af11580156119cb573d6000803e3d6000fd5b505050503d600081146119e557602081146119ef57600080fd5b600019915061186e565b60206000803e50506000519392505050565b6000821515611a12575060006117c2565b50818102818382811515611a2257fe5b04146117c257fe5b60008183811515611a3757fe5b049392505050565b600160a060020a0381161515611a9f576040805160e560020a62461bcd02815260206004820152600e60248201527f5f6e65774f776e6572203d3d2030000000000000000000000000000000000000604482015290519081900360640190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a03848116600483015260248201849052915160009286169163095ea7b3916044808301928692919082900301818387803b1580156119b757600080fd006d73672e73656e646572206e6f74206f776e6572000000000000000000000000a165627a7a7230582063b73dc12e564c08b0db90e09a4e59d730abbaed118744045b20d86c5378944a0029000000000000000000000000818e6fecd516ecc3849daf6845e3ec868087b755000000000000000000000000c74cbdc94a3c25640dbf60a430c4dc74526823b0000000000000000000000000fb0fce9d94f3f69d419dbf11cf35bed84a50103400000000000000000000000000000000000000000000000000000000000003e8

Deployed Bytecode

0x6080604052600436106101115763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632220e22e81146101135780633f4ba83a1461014457806340a9cadb1461015957806345db50341461017a578063521eb273146101a45780635c975abb146101b95780635e75228f146101e2578063715018a61461020657806375ead4591461021b57806383197ef0146102545780638456cb5914610269578063894760691461027e5780638da5cb5b1461029f5780639236a652146102b4578063b78b842d146102c9578063deaa59df146102de578063e56c174b146102ff578063ebdea6b914610342578063f2fde38b1461035a578063f5074f411461037b575b005b34801561011f57600080fd5b5061012861039c565b60408051600160a060020a039092168252519081900360200190f35b34801561015057600080fd5b506101116103ab565b34801561016557600080fd5b50610111600160a060020a03600435166104b6565b34801561018657600080fd5b50610111600160a060020a0360043581169060243516604435610535565b3480156101b057600080fd5b506101286105dc565b3480156101c557600080fd5b506101ce6105eb565b604080519115158252519081900360200190f35b610111600160a060020a03600435811690602435906044351660643560843561060c565b34801561021257600080fd5b50610111610a90565b34801561022757600080fd5b50610242600160a060020a0360043581169060243516610b35565b60408051918252519081900360200190f35b34801561026057600080fd5b50610111610b8c565b34801561027557600080fd5b50610111610bea565b34801561028a57600080fd5b50610111600160a060020a0360043516610d0b565b3480156102ab57600080fd5b50610128610eb9565b3480156102c057600080fd5b50610242610ec8565b3480156102d557600080fd5b50610128610ece565b3480156102ea57600080fd5b50610111600160a060020a0360043516610edd565b34801561030b57600080fd5b50610329600160a060020a0360043581169060243516604435610fbc565b6040805192835260208301919091528051918290030190f35b34801561034e57600080fd5b506101116004356110ca565b34801561036657600080fd5b50610111600160a060020a0360043516611179565b34801561038757600080fd5b50610111600160a060020a03600435166111d5565b600354600160a060020a031681565b600054600160a060020a031633146103fb576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b60005474010000000000000000000000000000000000000000900460ff16151561046f576040805160e560020a62461bcd02815260206004820152601a60248201527f54686520636f6e7472616374206973206e6f7420706175736564000000000000604482015290519081900360640190fd5b6000805474ff0000000000000000000000000000000000000000191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a1565b600054600160a060020a03163314610506576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008054600160a060020a03163314610586576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b620f42408211610596578161059b565b620f42405b600160a060020a0394851660008181526005602081815260408084209890991683529687528782208490558652868120918152945293909220929092555050565b600254600160a060020a031681565b60005474010000000000000000000000000000000000000000900460ff1681565b600080808080600160a060020a038a81169089161415610676576040805160e560020a62461bcd02815260206004820152600b60248201527f737263203d3d2064657374000000000000000000000000000000000000000000604482015290519081900360640190fd5b600089116106ce576040805160e560020a62461bcd02815260206004820152600e60248201527f737263416d6f756e74203d3d2030000000000000000000000000000000000000604482015290519081900360640190fd5b6106d78a611231565b6106e088611231565b600160a060020a038a1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156107615734891461075c576040805160e560020a62461bcd02815260206004820152601660248201527f6d73672e76616c756520213d20737263416d6f756e7400000000000000000000604482015290519081900360640190fd5b6108e4565b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290518a91600160a060020a038d169163dd62ed3e916044808201926020929091908290030181600087803b1580156107cb57600080fd5b505af11580156107df573d6000803e3d6000fd5b505050506040513d60208110156107f557600080fd5b5051101561084d576040805160e560020a62461bcd02815260206004820152601b60248201527f455243323020616c6c6f77616e6365203c20737263416d6f756e740000000000604482015290519081900360640190fd5b610868600160a060020a038b1633308c63ffffffff61136616565b15156108e4576040805160e560020a62461bcd02815260206004820152603160248201527f63616e6e6f74207472616e736665722073726320746f6b656e2066726f6d206d60448201527f73672e73656e64657220746f2074686973000000000000000000000000000000606482015290519081900360840190fd5b6108ee8a89610b35565b94506108fe8a8a8a8a8a8a611426565b93506109098a611707565b925061091b898463ffffffff6117c816565b915060008211610975576040805160e560020a62461bcd02815260206004820152601060248201527f6e6f2074726164656420746f6b656e7300000000000000000000000000000000604482015290519081900360640190fd5b8361097f89611707565b10156109fb576040805160e560020a62461bcd02815260206004820152602160248201527f4e6f20656e6f756768206465737420746f6b656e73206166746572207472616460448201527f6500000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610a068885876117da565b9050610a13883383611876565b6000831115610a2757610a278a3385611876565b87600160a060020a03168a600160a060020a031633600160a060020a03167f3ec01f4da9d8c31a1cdb8e6e7231364ba5ef0850b01daaa44a9f126f920693c68585604051808381526020018281526020019250505060405180910390a450505050505050505050565b600054600160a060020a03163314610ae0576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600160a060020a038083166000908152600560209081526040808320938516835292905290812054801515610b6e576004549150610b85565b620f42408110610b815760009150610b85565b8091505b5092915050565b600054600160a060020a03163314610bdc576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b600054600160a060020a0316ff5b600054600160a060020a03163314610c3a576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b60005474010000000000000000000000000000000000000000900460ff1615610cad576040805160e560020a62461bcd02815260206004820152601660248201527f54686520636f6e74726163742069732070617573656400000000000000000000604482015290519081900360640190fd5b6000805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a1565b60008054600160a060020a03163314610d5c576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b600160a060020a03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480610d8e5750600160a060020a038216155b15610dca5750604051303190339082156108fc029083906000818181858888f19350505050158015610dc4573d6000803e3d6000fd5b50610e75565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015610e2b57600080fd5b505af1158015610e3f573d6000803e3d6000fd5b505050506040513d6020811015610e5557600080fd5b50519050610e73600160a060020a038316338363ffffffff61194c16565b505b604080518281529051600160a060020a0384169133917f46ae78bc7b198b8b534ca0070d125569ac5f955976841c4343223079f3abf0de9181900360200190a35050565b600054600160a060020a031681565b60045481565b600154600160a060020a031681565b600054600160a060020a03163314610f2d576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b600160a060020a0381161515610f8d576040805160e560020a62461bcd02815260206004820152601560248201527f5f77616c6c6574203d3d20616464726573732830290000000000000000000000604482015290519081900360640190fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154604080517f809a9e55000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301528581166024830152604482018590528251600094859485948594859493169263809a9e559260648084019391929182900301818787803b15801561103957600080fd5b505af115801561104d573d6000803e3d6000fd5b505050506040513d604081101561106357600080fd5b508051602090910151909350915061107b8888610b35565b90506110a2620f42406110968584830363ffffffff611a0116565b9063ffffffff611a2a16565b94506110bd620f42406110968484830363ffffffff611a0116565b9350505050935093915050565b600054600160a060020a0316331461111a576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b620f42408110611174576040805160e560020a62461bcd02815260206004820152601460248201527f737072656164203e3d20737072656164556e6974000000000000000000000000604482015290519081900360640190fd5b600455565b600054600160a060020a031633146111c9576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b6111d281611a3f565b50565b600054600160a060020a03163314611225576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611b73833981519152604482015290519081900360640190fd5b80600160a060020a0316ff5b6000600160a060020a03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146112e957604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b1580156112b857600080fd5b505af11580156112cc573d6000803e3d6000fd5b505050506040513d60208110156112e257600080fd5b50516112fa565b6112fa30313463ffffffff6117c816565b905060008111156113625760025461131d908390600160a060020a031683611876565b60408051600160a060020a03841681526020810183905281517f53189a8ce98afbf89498c735cf6b58ad2708c8a3a12b6f077bd4f3313dced7a9929181900390910190a15b5050565b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015284811660248301526044820184905291516000928716916323b872dd916064808301928692919082900301818387803b1580156113d957600080fd5b505af11580156113ed573d6000803e3d6000fd5b505050503d60008114611407576020811461141157600080fd5b600019915061141d565b60206000803e60005191505b50949350505050565b60008080611446620f42408581039061109690889063ffffffff611a0116565b9150611464620f42408581039061109690899063ffffffff611a0116565b9050600160a060020a03891673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561155757600154600354604080517fcb3c28c7000000000000000000000000000000000000000000000000000000008152600160a060020a038d81166004830152602482018d90528b811660448301523060648301526084820186905260a4820187905292831660c48201529051919092169163cb3c28c7918b9160e48082019260209290919082900301818588803b15801561152357600080fd5b505af1158015611537573d6000803e3d6000fd5b50505050506040513d602081101561154e57600080fd5b505192506116fb565b600154604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a03928316602482015290516000928c169163dd62ed3e91604480830192602092919082900301818787803b1580156115c557600080fd5b505af11580156115d9573d6000803e3d6000fd5b505050506040513d60208110156115ef57600080fd5b5051111561161a5760015461161890600160a060020a038b81169116600063ffffffff611b0716565b505b60015461163a90600160a060020a038b811691168a63ffffffff611b0716565b50600154600354604080517fcb3c28c7000000000000000000000000000000000000000000000000000000008152600160a060020a038d81166004830152602482018d90528b811660448301523060648301526084820186905260a4820187905292831660c48201529051919092169163cb3c28c79160e48083019260209291908290030181600087803b1580156116d157600080fd5b505af11580156116e5573d6000803e3d6000fd5b505050506040513d602081101561154e57600080fd5b50509695505050505050565b6000600160a060020a03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146117bf57604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561178e57600080fd5b505af11580156117a2573d6000803e3d6000fd5b505050506040513d60208110156117b857600080fd5b50516117c2565b30315b92915050565b6000828211156117d457fe5b50900390565b6000806117f4620f4240611096868663ffffffff611a0116565b9050611806848263ffffffff6117c816565b9150600081111561186e57600254611829908690600160a060020a031683611876565b60408051600160a060020a03871681526020810183905281517f1cdf74906ad7d5c402e19a20dbe986befe937e6768a0722bdb18918cdba45c4a929181900390910190a15b509392505050565b600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156118d757604051600160a060020a0383169082156108fc029083906000818181858888f193505050501580156118d1573d6000803e3d6000fd5b50611947565b6118f1600160a060020a038416838363ffffffff61194c16565b1515611947576040805160e560020a62461bcd02815260206004820152601660248201527f63616e6e6f74207472616e7366657220746f6b656e7300000000000000000000604482015290519081900360640190fd5b505050565b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a03848116600483015260248201849052915160009286169163a9059cbb916044808301928692919082900301818387803b1580156119b757600080fd5b505af11580156119cb573d6000803e3d6000fd5b505050503d600081146119e557602081146119ef57600080fd5b600019915061186e565b60206000803e50506000519392505050565b6000821515611a12575060006117c2565b50818102818382811515611a2257fe5b04146117c257fe5b60008183811515611a3757fe5b049392505050565b600160a060020a0381161515611a9f576040805160e560020a62461bcd02815260206004820152600e60248201527f5f6e65774f776e6572203d3d2030000000000000000000000000000000000000604482015290519081900360640190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a03848116600483015260248201849052915160009286169163095ea7b3916044808301928692919082900301818387803b1580156119b757600080fd006d73672e73656e646572206e6f74206f776e6572000000000000000000000000a165627a7a7230582063b73dc12e564c08b0db90e09a4e59d730abbaed118744045b20d86c5378944a0029

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

000000000000000000000000818e6fecd516ecc3849daf6845e3ec868087b755000000000000000000000000c74cbdc94a3c25640dbf60a430c4dc74526823b0000000000000000000000000fb0fce9d94f3f69d419dbf11cf35bed84a50103400000000000000000000000000000000000000000000000000000000000003e8

-----Decoded View---------------
Arg [0] : _kyberNetwork (address): 0x818E6FECD516Ecc3849DAf6845e3EC868087B755
Arg [1] : _wallet (address): 0xc74cBdc94a3c25640dbf60A430c4dc74526823b0
Arg [2] : _kyberFeeWallet (address): 0xFb0fce9D94f3f69D419dBf11Cf35bEd84a501034
Arg [3] : _spread (uint256): 1000

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000818e6fecd516ecc3849daf6845e3ec868087b755
Arg [1] : 000000000000000000000000c74cbdc94a3c25640dbf60a430c4dc74526823b0
Arg [2] : 000000000000000000000000fb0fce9d94f3f69d419dbf11cf35bed84a501034
Arg [3] : 00000000000000000000000000000000000000000000000000000000000003e8


Deployed Bytecode Sourcemap

10967:7518:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11354:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11354:29:0;;;;;;;;-1:-1:-1;;;;;11354:29:0;;;;;;;;;;;;;;9705:95;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9705:95:0;;;;12736:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12736:98:0;-1:-1:-1;;;;;12736:98:0;;;;;13045:234;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13045:234:0;-1:-1:-1;;;;;13045:234:0;;;;;;;;;;;;11328:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11328:21:0;;;;9028:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9028:26:0;;;;;;;;;;;;;;;;;;;;;;14975:1750;;-1:-1:-1;;;;;14975:1750:0;;;;;;;;;;;;;;;;;3790:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3790:114:0;;;;13285:238;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13285:238:0;-1:-1:-1;;;;;13285:238:0;;;;;;;;;;;;;;;;;;;;;;;;;;4866:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4866:68:0;;;;9525:93;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9525:93:0;;;;13641:487;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13641:487:0;-1:-1:-1;;;;;13641:487:0;;;;;2971:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2971:20:0;;;;11390:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11390:25:0;;;;11288:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11288:33:0;;;;12586:144;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12586:144:0;-1:-1:-1;;;;;12586:144:0;;;;;14180:425;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14180:425:0;-1:-1:-1;;;;;14180:425:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12840:153;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12840:153:0;;;;;4072:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4072:105:0;-1:-1:-1;;;;;4072:105:0;;;;;4940:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4940:98:0;-1:-1:-1;;;;;4940:98:0;;;;;11354:29;;;-1:-1:-1;;;;;11354:29:0;;:::o;9705:95::-;3474:5;;-1:-1:-1;;;;;3474:5:0;3460:10;:19;3452:52;;;;;-1:-1:-1;;;;;3452:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3452:52:0;;;;;;;;;;;;;;;9390:6;;;;;;;9382:45;;;;;;;-1:-1:-1;;;;;9382:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9768:5;9759:14;;-1:-1:-1;;9759:14:0;;;9785:9;;;;9768:5;9785:9;9705:95::o;12736:98::-;3474:5;;-1:-1:-1;;;;;3474:5:0;3460:10;:19;3452:52;;;;;-1:-1:-1;;;;;3452:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3452:52:0;;;;;;;;;;;;;;;12804:14;:24;;-1:-1:-1;;12804:24:0;-1:-1:-1;;;;;12804:24:0;;;;;;;;;;12736:98::o;13045:234::-;13133:10;3474:5;;-1:-1:-1;;;;;3474:5:0;3460:10;:19;3452:52;;;;;-1:-1:-1;;;;;3452:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3452:52:0;;;;;;;;;;;;;;;11548:20;13146:19;;:41;;13181:6;13146:41;;;11548:20;13146:41;-1:-1:-1;;;;;13194:20:0;;;;;;;:12;:20;;;;;;;;:28;;;;;;;;;;;;:36;;;13237:20;;;;;:28;;;;;;;;;:36;;;;-1:-1:-1;;13045:234:0:o;11328:21::-;;;-1:-1:-1;;;;;11328:21:0;;:::o;9028:26::-;;;;;;;;;:::o;14975:1750::-;15907:14;;;;;-1:-1:-1;;;;;15106:11:0;;;;;;;;15098:35;;;;;-1:-1:-1;;;;;15098:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15160:1;15148:13;;15140:40;;;;;-1:-1:-1;;;;;15140:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15231:26;15253:3;15231:21;:26::i;:::-;15264:27;15286:4;15264:21;:27::i;:::-;-1:-1:-1;;;;;15304:12:0;;11121:42;15304:12;15300:434;;;15335:9;:22;;15327:57;;;;;-1:-1:-1;;;;;15327:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15300:434;;;15425:47;;;;;;15446:10;15425:47;;;;15466:4;15425:47;;;;;;15476:9;;-1:-1:-1;;;;;15425:20:0;;;;;:47;;;;;;;;;;;;;;;-1:-1:-1;15425:20:0;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;15425:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15425:47:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15425:47:0;:60;;15407:127;;;;;-1:-1:-1;;;;;15407:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15589:66;-1:-1:-1;;;;;15589:28:0;;15618:10;15638:4;15645:9;15589:66;:28;:66;:::i;:::-;15571:155;;;;;;;-1:-1:-1;;;;;15571:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15924:20;15934:3;15939:4;15924:9;:20::i;:::-;15907:37;;15980:86;16003:3;16008:9;16019:4;16025:13;16040:17;16059:6;15980:22;:86::i;:::-;15953:113;;16095:15;16106:3;16095:10;:15::i;:::-;16075:35;-1:-1:-1;16143:24:0;:9;16075:35;16143:24;:13;:24;:::i;:::-;16117:50;-1:-1:-1;16200:1:0;16182:19;;16174:48;;;;;-1:-1:-1;;;;;16174:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16266:16;16246;16257:4;16246:10;:16::i;:::-;:36;;16229:106;;;;;-1:-1:-1;;;;;16229:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16390:39;16398:4;16404:16;16422:6;16390:7;:39::i;:::-;16367:62;;16436:41;16446:4;16452:10;16464:12;16436:9;:41::i;:::-;16541:1;16529:9;:13;16525:73;;;16553:37;16563:3;16568:10;16580:9;16553;:37::i;:::-;16687:4;-1:-1:-1;;;;;16611:108:0;16651:3;-1:-1:-1;;;;;16611:108:0;16632:10;-1:-1:-1;;;;;16611:108:0;;16663:15;16700:12;16611:108;;;;;;;;;;;;;;;;;;;;;;;;14975:1750;;;;;;;;;;:::o;3790:114::-;3474:5;;-1:-1:-1;;;;;3474:5:0;3460:10;:19;3452:52;;;;;-1:-1:-1;;;;;3452:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3452:52:0;;;;;;;;;;;;;;;3867:5;;;3848:25;;-1:-1:-1;;;;;3867:5:0;;;;3848:25;;;3896:1;3880:18;;-1:-1:-1;;3880:18:0;;;3790:114::o;13285:238::-;-1:-1:-1;;;;;13382:20:0;;;13356:4;13382:20;;;:12;:20;;;;;;;;:28;;;;;;;;;;;;13421:10;;13417:36;;;13440:13;;13433:20;;;;13417:36;11548:20;13464:19;;13460:57;;13492:1;13485:8;;;;13460:57;13512:5;13505:12;;13460:57;13285:238;;;;;:::o;4866:68::-;3474:5;;-1:-1:-1;;;;;3474:5:0;3460:10;:19;3452:52;;;;;-1:-1:-1;;;;;3452:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3452:52:0;;;;;;;;;;;;;;;4922:5;;-1:-1:-1;;;;;4922:5:0;4909:19;9525:93;3474:5;;-1:-1:-1;;;;;3474:5:0;3460:10;:19;3452:52;;;;;-1:-1:-1;;;;;3452:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3452:52:0;;;;;;;;;;;;;;;9204:6;;;;;;;9203:7;9195:42;;;;;-1:-1:-1;;;;;9195:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9580:6;:13;;-1:-1:-1;;9580:13:0;;;;;9605:7;;;;9580:6;9605:7;9525:93::o;13641:487::-;13724:17;3474:5;;-1:-1:-1;;;;;3474:5:0;3460:10;:19;3452:52;;;;;-1:-1:-1;;;;;3452:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3452:52:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;13752:22:0;;11121:42;13752:22;;:53;;-1:-1:-1;;;;;;13778:27:0;;;13752:53;13748:306;;;-1:-1:-1;13861:33:0;;13839:4;13831:21;;13861:10;;:33;;;;;13831:21;;13861:33;;;;13831:21;13861:10;:33;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13861:33:0;13748:306;;;13932:45;;;;;;13971:4;13932:45;;;;;;-1:-1:-1;;;;;13932:30:0;;;;;:45;;;;;;;;;;;;;;-1:-1:-1;13932:30:0;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;13932:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13932:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13932:45:0;;-1:-1:-1;13986:60:0;-1:-1:-1;;;;;13986:34:0;;14021:10;13932:45;13986:60;:34;:60;:::i;:::-;;13748:306;14065:57;;;;;;;;-1:-1:-1;;;;;14065:57:0;;;14082:10;;14065:57;;;;;;;;;13641:487;;:::o;2971:20::-;;;-1:-1:-1;;;;;2971:20:0;;:::o;11390:25::-;;;;:::o;11288:33::-;;;-1:-1:-1;;;;;11288:33:0;;:::o;12586:144::-;3474:5;;-1:-1:-1;;;;;3474:5:0;3460:10;:19;3452:52;;;;;-1:-1:-1;;;;;3452:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3452:52:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;12654:21:0;;;;12646:55;;;;;-1:-1:-1;;;;;12646:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12708:6;:16;;-1:-1:-1;;12708:16:0;-1:-1:-1;;;;;12708:16:0;;;;;;;;;;12586:144::o;14180:425::-;14360:12;;:50;;;;;;-1:-1:-1;;;;;14360:50:0;;;;;;;;;;;;;;;;;;;;;;14270:17;;;;;;;;;;14360:12;;;:28;;:50;;;;;;;;;;;;;14270:17;14360:12;:50;;;5:2:-1;;;;30:1;27;20:12;5:2;14360:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14360:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14360:50:0;;;;;;;;;-1:-1:-1;14360:50:0;-1:-1:-1;14434:20:0;14444:3;14449:4;14434:9;:20::i;:::-;14417:37;-1:-1:-1;14476:50:0;11548:20;14476:34;:9;14490:19;;;14476:34;:13;:34;:::i;:::-;:38;:50;:38;:50;:::i;:::-;14461:65;-1:-1:-1;14548:51:0;11548:20;14548:35;:10;14563:19;;;14548:35;:14;:35;:::i;:51::-;14533:66;;14180:425;;;;;;;;;:::o;12840:153::-;3474:5;;-1:-1:-1;;;;;3474:5:0;3460:10;:19;3452:52;;;;;-1:-1:-1;;;;;3452:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3452:52:0;;;;;;;;;;;;;;;11548:20;12912;;12904:53;;;;;-1:-1:-1;;;;;12904:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12964:13;:23;12840:153::o;4072:105::-;3474:5;;-1:-1:-1;;;;;3474:5:0;3460:10;:19;3452:52;;;;;-1:-1:-1;;;;;3452:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3452:52:0;;;;;;;;;;;;;;;4142:29;4161:9;4142:18;:29::i;:::-;4072:105;:::o;4940:98::-;3474:5;;-1:-1:-1;;;;;3474:5:0;3460:10;:19;3452:52;;;;;-1:-1:-1;;;;;3452:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3452:52:0;;;;;;;;;;;;;;;5021:10;-1:-1:-1;;;;;5008:24:0;;14611:358;14672:25;-1:-1:-1;;;;;14700:14:0;;11121:42;14700:14;:107;;14770:37;;;;;;14801:4;14770:37;;;;;;-1:-1:-1;;;;;14770:22:0;;;;;:37;;;;;;;;;;;;;;-1:-1:-1;14770:22:0;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;14770:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14770:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14770:37:0;14700:107;;;14724:36;14732:4;14724:21;14750:9;14724:36;:25;:36;:::i;:::-;14672:135;;14838:1;14818:17;:21;14814:150;;;14867:6;;14850:43;;14860:5;;-1:-1:-1;;;;;14867:6:0;14875:17;14850:9;:43::i;:::-;14907:49;;;-1:-1:-1;;;;;14907:49:0;;;;;;;;;;;;;;;;;;;;;;;14814:150;14611:358;;:::o;6462:695::-;6632:57;;;;;;-1:-1:-1;;;;;6632:57:0;;;;;;;;;;;;;;;;;;;;;;6609:11;;6632:37;;;;;:57;;;;;6609:11;;6632:57;;;;;;;6609:11;6632:37;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;6632:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6632:57:0;;;;6723:16;6752:1;6747:117;;;;6877:2;6872:175;;;;7134:1;7131;7124:12;6747:117;-1:-1:-1;;6820:6:0;-1:-1:-1;6747:117:0;;6872:175;6957:2;6954:1;6951;6936:24;6986:1;6980:8;6970:18;;6716:429;;6707:445;;;;;;:::o;16731:962::-;16879:7;;;17002:58;11548:20;17040:19;;;;17002:33;;:17;;:33;:21;:33;:::i;:58::-;16977:83;-1:-1:-1;17098:54:0;11548:20;17132:19;;;;17098:29;;:13;;:29;:17;:29;:::i;:54::-;17067:85;-1:-1:-1;;;;;;17163:12:0;;11121:42;17163:12;17159:529;;;17193:12;;17314:14;;17193:136;;;;;;-1:-1:-1;;;;;17193:136:0;;;;;;;;;;;;;;;;;;;;17269:4;17193:136;;;;;;;;;;;;;;;;17314:14;;;17193:136;;;;;;:12;;;;;:18;;17228:9;;17193:136;;;;;;;;;;;;;;;17228:9;17193:12;:136;;;5:2:-1;;;;30:1;27;20:12;5:2;17193:136:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17193:136:0;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17193:136:0;;-1:-1:-1;17186:143:0;;17159:529;17400:12;;17356:58;;;;;;17385:4;17356:58;;;;-1:-1:-1;;;;;17400:12:0;;;17356:58;;;;;;17417:1;;17356:20;;;;;:58;;;;;;;;;;;;;;17417:1;17356:20;:58;;;5:2:-1;;;;30:1;27;20:12;5:2;17356:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17356:58:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17356:58:0;:62;17352:138;;;17463:12;;17431:49;;-1:-1:-1;;;;;17431:23:0;;;;17463:12;;17431:49;:23;:49;:::i;:::-;;17352:138;17530:12;;17498:57;;-1:-1:-1;;;;;17498:23:0;;;;17530:12;17545:9;17498:57;:23;:57;:::i;:::-;-1:-1:-1;17571:12:0;;17665:14;;17571:109;;;;;;-1:-1:-1;;;;;17571:109:0;;;;;;;;;;;;;;;;;;;;17620:4;17571:109;;;;;;;;;;;;;;;;17665:14;;;17571:109;;;;;;:12;;;;;:18;;:109;;;;;;;;;;;;;;:12;;:109;;;5:2:-1;;;;30:1;27;20:12;5:2;17571:109:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17571:109:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;17159:529:0;16731:962;;;;;;;;;;:::o;18042:177::-;18098:7;-1:-1:-1;;;;;18121:14:0;;11121:42;18121:14;:92;;18176:37;;;;;;18207:4;18176:37;;;;;;-1:-1:-1;;;;;18176:22:0;;;;;:37;;;;;;;;;;;;;;-1:-1:-1;18176:22:0;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;18176:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18176:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18176:37:0;18121:92;;;18153:4;18145:21;18121:92;18114:99;18042:177;-1:-1:-1;;18042:177:0:o;2361:119::-;2421:7;2444:8;;;;2437:16;;;;-1:-1:-1;2467:7:0;;;2361:119::o;17699:337::-;17783:20;;17826:44;11548:20;17826:28;:16;17847:6;17826:28;:20;:28;:::i;:44::-;17812:58;-1:-1:-1;17892:25:0;:16;17812:58;17892:25;:20;:25;:::i;:::-;17877:40;;17950:1;17944:3;:7;17940:91;;;17979:6;;17962:29;;17972:5;;-1:-1:-1;;;;;17979:6:0;17987:3;17962:9;:29::i;:::-;18005:18;;;-1:-1:-1;;;;;18005:18:0;;;;;;;;;;;;;;;;;;;;;;;17940:91;17699:337;;;;;;:::o;18225:255::-;-1:-1:-1;;;;;18313:14:0;;11121:42;18313:14;18309:166;;;18338:26;;-1:-1:-1;;;;;18338:18:0;;;:26;;;;;18357:6;;18338:26;;;;18357:6;18338:18;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18338:26:0;18309:166;;;18395:45;-1:-1:-1;;;;;18395:26:0;;18422:9;18433:6;18395:45;:26;:45;:::i;:::-;18387:80;;;;;;;-1:-1:-1;;;;;18387:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18225:255;;;:::o;7442:659::-;7586:47;;;;;;-1:-1:-1;;;;;7586:47:0;;;;;;;;;;;;;;;7563:11;;7586:33;;;;;:47;;;;;7563:11;;7586:47;;;;;;;7563:11;7586:33;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;7586:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7586:47:0;;;;7667:16;7696:1;7691:117;;;;7821:2;7816:175;;;;8078:1;8075;8068:12;7691:117;-1:-1:-1;;7764:6:0;-1:-1:-1;7691:117:0;;7816:175;7901:2;7898:1;7895;7880:24;-1:-1:-1;;7930:1:0;7924:8;;7651:445;-1:-1:-1;;;7651:445:0:o;1478:391::-;1538:9;1768:7;;1764:38;;;-1:-1:-1;1793:1:0;1786:8;;1764:38;-1:-1:-1;1814:7:0;;;1819:2;1814;:7;1835:6;;;;;;;;:12;1828:20;;;1956:288;2016:7;2236:2;2231;:7;;;;;;;;;1956:288;-1:-1:-1;;;1956:288:0:o;4318:193::-;-1:-1:-1;;;;;4389:23:0;;;;4381:50;;;;;-1:-1:-1;;;;;4381:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4464:5;;;4443:38;;-1:-1:-1;;;;;4443:38:0;;;;4464:5;;;4443:38;;;4488:5;:17;;-1:-1:-1;;4488:17:0;-1:-1:-1;;;;;4488:17:0;;;;;;;;;;4318:193::o;8107:650::-;8246:43;;;;;;-1:-1:-1;;;;;8246:43:0;;;;;;;;;;;;;;;8223:11;;8246:25;;;;;:43;;;;;8223:11;;8246:43;;;;;;;8223:11;8246:25;:43;;;5:2:-1;;;;30:1;27;20:12

Swarm Source

bzzr://63b73dc12e564c08b0db90e09a4e59d730abbaed118744045b20d86c5378944a

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.