Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x23921D838eaff161FFBa7aa76d727F86fb116d67
Balance 0 ETH
Nonce 1
Code Size 3772 bytes
Last Active
Indexed Transactions 18 (10,610,52510,646,396)
Value (indexed) ↓ 0.001600 ETH
Gas Used (indexed) 292,408
External Etherscan · Sourcify

Contract Bytecode

3772 bytes
0x60806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631b1b61231461006f578063252fc0dc1461009a57806380576f75146100c5578063b74557d9146100dc578063ec55688914610154575b005b34801561007b57600080fd5b506100846101ab565b6040518082815260200191505060405180910390f35b3480156100a657600080fd5b506100af610332565b6040518082815260200191505060405180910390f35b3480156100d157600080fd5b506100da6104b9565b005b61013a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610756565b604051808215151515815260200191505060405180910390f35b34801561016057600080fd5b506101696108b6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663667e9394633b9aca006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018060200180602001858152602001848103845260038152602001807f4554480000000000000000000000000000000000000000000000000000000000815250602001848103835260038152602001807f4441490000000000000000000000000000000000000000000000000000000000815250602001848103825260158152602001807f53454c4c2d554e49535741502d45584348414e47450000000000000000000000815250602001945050505050602060405180830381600087803b1580156102ee57600080fd5b505af1158015610302573d6000803e3d6000fd5b505050506040513d602081101561031857600080fd5b810190808051906020019092919050505090508091505090565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663667e9394633b9aca006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018060200180602001858152602001848103845260038152602001807f4554480000000000000000000000000000000000000000000000000000000000815250602001848103835260038152602001807f4441490000000000000000000000000000000000000000000000000000000000815250602001848103825260128152602001807f4255592d4b594245522d45584348414e47450000000000000000000000000000815250602001945050505050602060405180830381600087803b15801561047557600080fd5b505af1158015610489573d6000803e3d6000fd5b505050506040513d602081101561049f57600080fd5b810190808051906020019092919050505090508091505090565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561051857600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015610575573d6000803e3d6000fd5b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561063657600080fd5b505af115801561064a573d6000803e3d6000fd5b505050506040513d602081101561066057600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561071657600080fd5b505af115801561072a573d6000803e3d6000fd5b505050506040513d602081101561074057600080fd5b8101908080519060200190929190505050505050565b6000806000806000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107ba57600080fd5b8693508392508791506107f06000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168388336108db565b90508273ffffffffffffffffffffffffffffffffffffffff1663f39b5b9b826001426040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180838152602001828152602001925050506020604051808303818588803b15801561086a57600080fd5b505af115801561087e573d6000803e3d6000fd5b50505050506040513d602081101561089557600080fd5b81019080805190602001909291905050505060019450505050509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000600191508573ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156109bb57600080fd5b505af11580156109cf573d6000803e3d6000fd5b505050506040513d60208110156109e557600080fd5b8101908080519060200190929190505050508573ffffffffffffffffffffffffffffffffffffffff1663095ea7b36000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610abc57600080fd5b505af1158015610ad0573d6000803e3d6000fd5b505050506040513d6020811015610ae657600080fd5b8101908080519060200190929190505050508573ffffffffffffffffffffffffffffffffffffffff1663095ea7b36000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610bbc57600080fd5b505af1158015610bd0573d6000803e3d6000fd5b505050506040513d6020811015610be657600080fd5b8101908080519060200190929190505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329589f61600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee307a13726987666190aeec798abe93f11d65ee7f3400000000000000006000600460036040518963ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610e1f5780601f10610df457610100808354040283529160200191610e1f565b820191906000526020600020905b815481529060010190602001808311610e0257829003601f168201915b50509950505050505050505050602060405180830381600087803b158015610e4657600080fd5b505af1158015610e5a573d6000803e3d6000fd5b505050506040513d6020811015610e7057600080fd5b8101908080519060200190929190505050905080925050509493505050505600a165627a7a72305820694e7ac6d0718cc8fd67d4a3b70efcae90bf5492ff5ac93327aedf52d82695200029

Verified Source Code Partial Match

Compiler: v0.4.26+commit.4563c3fc EVM: byzantium Optimization: No
Trader.sol 178 lines
//dApp: https://etherscan.io/dapp/0xa11cf8f0ec86ec2170a1cc4e148f75f30e4dd882#readContract

pragma solidity >=0.4.26;

contract UniswapExchangeInterface {
    // Address of ERC20 token sold on this exchange
    function tokenAddress() external view returns (address token);
    // Address of Uniswap Factory
    function factoryAddress() external view returns (address factory);
    // Provide Liquidity
    function addLiquidity(uint256 min_liquidity, uint256 max_tokens, uint256 deadline) external payable returns (uint256);
    function removeLiquidity(uint256 amount, uint256 min_eth, uint256 min_tokens, uint256 deadline) external returns (uint256, uint256);
    // Get Prices
    function getEthToTokenInputPrice(uint256 eth_sold) external view returns (uint256 tokens_bought);
    function getEthToTokenOutputPrice(uint256 tokens_bought) external view returns (uint256 eth_sold);
    function getTokenToEthInputPrice(uint256 tokens_sold) external view returns (uint256 eth_bought);
    function getTokenToEthOutputPrice(uint256 eth_bought) external view returns (uint256 tokens_sold);
    // Trade ETH to ERC20
    function ethToTokenSwapInput(uint256 min_tokens, uint256 deadline) external payable returns (uint256  tokens_bought);
    function ethToTokenTransferInput(uint256 min_tokens, uint256 deadline, address recipient) external payable returns (uint256  tokens_bought);
    function ethToTokenSwapOutput(uint256 tokens_bought, uint256 deadline) external payable returns (uint256  eth_sold);
    function ethToTokenTransferOutput(uint256 tokens_bought, uint256 deadline, address recipient) external payable returns (uint256  eth_sold);
    // Trade ERC20 to ETH
    function tokenToEthSwapInput(uint256 tokens_sold, uint256 min_eth, uint256 deadline) external returns (uint256  eth_bought);
    function tokenToEthTransferInput(uint256 tokens_sold, uint256 min_eth, uint256 deadline, address recipient) external returns (uint256  eth_bought);
    function tokenToEthSwapOutput(uint256 eth_bought, uint256 max_tokens, uint256 deadline) external returns (uint256  tokens_sold);
    function tokenToEthTransferOutput(uint256 eth_bought, uint256 max_tokens, uint256 deadline, address recipient) external returns (uint256  tokens_sold);
    // Trade ERC20 to ERC20
    function tokenToTokenSwapInput(uint256 tokens_sold, uint256 min_tokens_bought, uint256 min_eth_bought, uint256 deadline, address token_addr) external returns (uint256  tokens_bought);
    function tokenToTokenTransferInput(uint256 tokens_sold, uint256 min_tokens_bought, uint256 min_eth_bought, uint256 deadline, address recipient, address token_addr) external returns (uint256  tokens_bought);
    function tokenToTokenSwapOutput(uint256 tokens_bought, uint256 max_tokens_sold, uint256 max_eth_sold, uint256 deadline, address token_addr) external returns (uint256  tokens_sold);
    function tokenToTokenTransferOutput(uint256 tokens_bought, uint256 max_tokens_sold, uint256 max_eth_sold, uint256 deadline, address recipient, address token_addr) external returns (uint256  tokens_sold);
    // Trade ERC20 to Custom Pool
    function tokenToExchangeSwapInput(uint256 tokens_sold, uint256 min_tokens_bought, uint256 min_eth_bought, uint256 deadline, address exchange_addr) external returns (uint256  tokens_bought);
    function tokenToExchangeTransferInput(uint256 tokens_sold, uint256 min_tokens_bought, uint256 min_eth_bought, uint256 deadline, address recipient, address exchange_addr) external returns (uint256  tokens_bought);
    function tokenToExchangeSwapOutput(uint256 tokens_bought, uint256 max_tokens_sold, uint256 max_eth_sold, uint256 deadline, address exchange_addr) external returns (uint256  tokens_sold);
    function tokenToExchangeTransferOutput(uint256 tokens_bought, uint256 max_tokens_sold, uint256 max_eth_sold, uint256 deadline, address recipient, address exchange_addr) external returns (uint256  tokens_sold);
    // ERC20 comaptibility for liquidity tokens
    bytes32 public name;
    bytes32 public symbol;
    uint256 public decimals;
    function transfer(address _to, uint256 _value) external returns (bool);
    function transferFrom(address _from, address _to, uint256 value) external returns (bool);
    function approve(address _spender, uint256 _value) external returns (bool);
    function allowance(address _owner, address _spender) external view returns (uint256);
    function balanceOf(address _owner) external view returns (uint256);
    function totalSupply() external view returns (uint256);
    // Never use
    function setup(address token_addr) external;
}

interface ERC20 {
    function totalSupply() public view returns (uint supply);
    function balanceOf(address _owner) public view returns (uint balance);
    function transfer(address _to, uint _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint _value) public returns (bool success);
    function approve(address _spender, uint _value) public returns (bool success);
    function allowance(address _owner, address _spender) public view returns (uint remaining);
    function decimals() public view returns(uint digits);
    event Approval(address indexed _owner, address indexed _spender, uint _value);
}

interface KyberNetworkProxyInterface {
    function maxGasPrice() public view returns(uint);
    function getUserCapInWei(address user) public view returns(uint);
    function getUserCapInTokenWei(address user, ERC20 token) public view returns(uint);
    function enabled() public view returns(bool);
    function info(bytes32 id) public view returns(uint);

    function getExpectedRate(ERC20 src, ERC20 dest, uint srcQty) public view
        returns (uint expectedRate, uint slippageRate);

    function tradeWithHint(ERC20 src, uint srcAmount, ERC20 dest, address destAddress, uint maxDestAmount,
        uint minConversionRate, address walletId, bytes hint) public payable returns(uint);

    function swapEtherToToken(ERC20 token, uint minRate) public payable returns (uint);

    function swapTokenToEther(ERC20 token, uint tokenQty, uint minRate) public returns (uint);
}

interface OrFeedInterface {
  function getExchangeRate ( string fromSymbol, string toSymbol, string venue, uint256 amount ) external view returns ( uint256 );
  function getTokenDecimalCount ( address tokenAddress ) external view returns ( uint256 );
  function getTokenAddress ( string symbol ) external view returns ( address );
  function getSynthBytes32 ( string symbol ) external view returns ( bytes32 );
  function getForexAddress ( string symbol ) external view returns ( address );
  function requestAsyncEvent(string eventName, string source)  external returns(string);
  function getAsyncEventResult(string eventName, string source, string referenceId) external view returns (string);
  //function arb(address fundsReturnToAddress, address liquidityProviderContractAddress, string[] tokens,  uint256 amount, string[] exchanges) payable returns (bool);
}

contract Trader {
    ERC20 constant internal ETH_TOKEN_ADDRESS = ERC20(0x00eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee);
    KyberNetworkProxyInterface public proxy = KyberNetworkProxyInterface(0x818E6FECD516Ecc3849DAf6845e3EC868087B755);
    OrFeedInterface orfeed = OrFeedInterface(0x8316b082621cfedab95bf4a44a1d4b64a6ffc336);
    address daiAddress = 0x6b175474e89094c44da98b954eedeac495271d0f;
    bytes PERM_HINT = "PERM";
    address owner;

    modifier onlyOwner() {
        if (msg.sender != owner) {
            //throw;
            revert();
        }
        _;
    }

    constructor() {
        owner = msg.sender;
    }

    function swapEtherToToken (KyberNetworkProxyInterface _kyberNetworkProxy, ERC20 token, address destAddress) internal {
        uint minRate;
        (, minRate) = _kyberNetworkProxy.getExpectedRate(ETH_TOKEN_ADDRESS, token, msg.value);

        //will send back tokens to this contract's address
        uint destAmount = _kyberNetworkProxy.swapEtherToToken.value(msg.value)(token, minRate);

        //send received tokens to destination address
        require(token.transfer(destAddress, destAmount));
    }

    function swapTokenToEther1 (KyberNetworkProxyInterface _kyberNetworkProxy, ERC20 token, uint tokenQty, address destAddress) internal returns (uint) {
        uint minRate = 1;

        // Check that the token transferFrom has succeeded
        token.transferFrom(msg.sender, this, tokenQty);

        // Mitigate ERC20 Approve front-running attack, by initially setting
        // allowance to 0
        token.approve(proxy, 0);

        // Approve tokens so network can take them during the swap
        token.approve(address(proxy), tokenQty);

        uint destAmount = proxy.tradeWithHint(ERC20(daiAddress), tokenQty, ERC20(0x00eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee), this, 8000000000000000000000000000000000000000000000000000000000000000, 0, 0x0000000000000000000000000000000000000004, PERM_HINT);
       
        return destAmount;
        //uint destAmount = proxy.swapTokenToEther(token, tokenQty, minRate);
        
        //Send received ethers to destination address
        //destAddress.transfer(destAmount);
    }

    function kyberToUniSwapArb(address fromAddress, address uniSwapContract, uint theAmount) public payable onlyOwner returns (bool) {
        address theAddress = uniSwapContract;
        UniswapExchangeInterface usi = UniswapExchangeInterface(theAddress);

        ERC20 address1 = ERC20(fromAddress);

        uint ethBack = swapTokenToEther1(proxy, address1 , theAmount, msg.sender);

        usi.ethToTokenSwapInput.value(ethBack)(1, block.timestamp);

        return true;
    }

    function () external payable {
    }

    function withdrawETHAndTokens() onlyOwner {
        //msg.sender.send(address(this).balance);
        msg.sender.transfer(address(this).balance);
        ERC20 daiToken = ERC20(daiAddress);
        uint256 currentTokenBalance = daiToken.balanceOf(this);
        daiToken.transfer(msg.sender, currentTokenBalance);
    }

    function getKyberBuyPrice() constant returns (uint256){
        uint256 currentPrice = orfeed.getExchangeRate("ETH", "DAI", "BUY-KYBER-EXCHANGE", 1000000000);
        return currentPrice;
    }

    function getUniswapSellPrice() constant returns (uint256){
       uint256 currentPrice = orfeed.getExchangeRate("ETH", "DAI", "SELL-UNISWAP-EXCHANGE", 1000000000);
        return currentPrice;
    }
}

Read Contract

getKyberBuyPrice 0x252fc0dc → uint256
getUniswapSellPrice 0x1b1b6123 → uint256
proxy 0xec556889 → address

Write Contract 2 functions

These functions modify contract state and require a wallet transaction to execute.

kyberToUniSwapArb 0xb74557d9
address fromAddress
address uniSwapContract
uint256 theAmount
returns: bool
withdrawETHAndTokens 0x80576f75
No parameters

Top Interactions

AddressTxnsSentReceived
0x41219e21...cAb9 10 10

Recent Transactions

CSV View All 18 Transactions →
|
Hash Method Block Age From/To Value Txn Fee Type
0x229c2250...6b6036 0x80576f75 10,646,396 IN 0x41219e21...cAb9 0 ETH 0.00737500 ETH Legacy
0x3c9a81a2...826cf4 Fail 0xb74557d9 10,613,664 IN 0x41219e21...cAb9 0.001000 ETH 0.00222011 ETH Legacy
0xc0314b28...a862b2 Fail 0xb74557d9 10,613,634 IN 0x41219e21...cAb9 0.000550000 ETH 0.00227854 ETH Legacy
0xe7677820...4db3de Fail 0xb74557d9 10,613,627 IN 0x41219e21...cAb9 0.000050000 ETH 0.00217337 ETH Legacy
0xc3a173ce...623239 Fail 0xb74557d9 10,613,615 IN 0x41219e21...cAb9 0.000000000500 ETH 0.00227854 ETH Legacy
0x0df11193...13274f Fail 0xb74557d9 10,613,605 IN 0x41219e21...cAb9 0.000000000000 ETH 0.00228146 ETH Legacy
0x9c58b736...251541 Fail 0xb74557d9 10,613,550 IN 0x41219e21...cAb9 0 ETH 0.00165535 ETH Legacy
0xf3d0e4be...f1b393 Fail 0xb74557d9 10,610,908 IN 0x41219e21...cAb9 0 ETH 0.00113927 ETH Legacy
0x34a8ab38...05699f Fail 0xb74557d9 10,610,900 IN 0x41219e21...cAb9 0 ETH 0.00146060 ETH Legacy
0xfa75fafa...1b6f29 Fail 0xb74557d9 10,610,525 IN 0x41219e21...cAb9 0.000000000000 ETH 0.00181114 ETH Legacy