ETH Price: $3,386.07 (+3.97%)
Gas: 2 Gwei

Contract

0x13e987c9169f532e1EAcAFcd69CFc84344Dbd781
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Exchange187609922023-12-11 5:51:35231 days ago1702273895IN
0x13e987c9...344Dbd781
0.15785632 ETH0.0179237732
Exchange132704832021-09-21 17:27:421041 days ago1632245262IN
0x13e987c9...344Dbd781
0 ETH0.09831173204.25058999
Exchange132693772021-09-21 13:20:521041 days ago1632230452IN
0x13e987c9...344Dbd781
0 ETH0.0266547460.55831909
Exchange132659442021-09-21 0:40:461042 days ago1632184846IN
0x13e987c9...344Dbd781
11.8 ETH0.18566789180.2387396
Exchange132647092021-09-20 20:10:051042 days ago1632168605IN
0x13e987c9...344Dbd781
5.37685912 ETH0.0476887780.83993387
Exchange132630232021-09-20 13:57:301042 days ago1632146250IN
0x13e987c9...344Dbd781
0 ETH0.0277124262.29920249
Exchange132628712021-09-20 13:24:331042 days ago1632144273IN
0x13e987c9...344Dbd781
0 ETH0.00358932104.4380495
Exchange132628692021-09-20 13:24:011042 days ago1632144241IN
0x13e987c9...344Dbd781
0 ETH0.0317485998.49411772
Exchange132610012021-09-20 6:31:181043 days ago1632119478IN
0x13e987c9...344Dbd781
1 ETH0.0590229657.53
Exchange132606942021-09-20 5:13:141043 days ago1632114794IN
0x13e987c9...344Dbd781
0 ETH0.0242626675.90337605
Exchange132605702021-09-20 4:45:521043 days ago1632113152IN
0x13e987c9...344Dbd781
0 ETH0.0330371656.72375602
Exchange132601962021-09-20 3:20:581043 days ago1632108058IN
0x13e987c9...344Dbd781
0 ETH0.0308693294.88970122
Exchange132599492021-09-20 2:20:001043 days ago1632104400IN
0x13e987c9...344Dbd781
0 ETH0.0240119354.83428336
Exchange132584222021-09-19 20:44:161043 days ago1632084256IN
0x13e987c9...344Dbd781
0 ETH0.0372632852.94705402
Exchange132580502021-09-19 19:27:511043 days ago1632079671IN
0x13e987c9...344Dbd781
0 ETH0.0316484969.36519639
Exchange132568382021-09-19 15:05:311043 days ago1632063931IN
0x13e987c9...344Dbd781
0.02 ETH0.001834150.17790717
Exchange132553072021-09-19 9:16:291044 days ago1632042989IN
0x13e987c9...344Dbd781
0 ETH0.0125765428.6465888
Exchange132516952021-09-18 19:59:401044 days ago1631995180IN
0x13e987c9...344Dbd781
0 ETH0.0273509857.53366103
Exchange132516422021-09-18 19:46:551044 days ago1631994415IN
0x13e987c9...344Dbd781
0 ETH0.020049548
Exchange132513502021-09-18 18:39:131044 days ago1631990353IN
0x13e987c9...344Dbd781
0 ETH0.0287507561.937598
Exchange132482722021-09-18 7:15:141045 days ago1631949314IN
0x13e987c9...344Dbd781
0 ETH0.0199649536
Exchange132442652021-09-17 16:18:531045 days ago1631895533IN
0x13e987c9...344Dbd781
0 ETH0.09643076121.53304745
Exchange132423942021-09-17 9:28:241046 days ago1631870904IN
0x13e987c9...344Dbd781
0 ETH0.0204801363.79727552
Exchange132415772021-09-17 6:19:151046 days ago1631859555IN
0x13e987c9...344Dbd781
0 ETH0.0500900163.09217888
Exchange132388682021-09-16 20:14:561046 days ago1631823296IN
0x13e987c9...344Dbd781
0.2 ETH0.00740344104.1520517
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
187609922023-12-11 5:51:35231 days ago1702273895
0x13e987c9...344Dbd781
0.15785632 ETH
132704832021-09-21 17:27:421041 days ago1632245262
0x13e987c9...344Dbd781
11.98191676 ETH
132704832021-09-21 17:27:421041 days ago1632245262
0x13e987c9...344Dbd781
11.98191676 ETH
132693772021-09-21 13:20:521041 days ago1632230452
0x13e987c9...344Dbd781
1.09995436 ETH
132693772021-09-21 13:20:521041 days ago1632230452
0x13e987c9...344Dbd781
1.09995436 ETH
132659442021-09-21 0:40:461042 days ago1632184846
0x13e987c9...344Dbd781
11.8 ETH
132647092021-09-20 20:10:051042 days ago1632168605
0x13e987c9...344Dbd781
5.37685912 ETH
132630232021-09-20 13:57:301042 days ago1632146250
0x13e987c9...344Dbd781
5.36659338 ETH
132630232021-09-20 13:57:301042 days ago1632146250
0x13e987c9...344Dbd781
5.36659338 ETH
132628692021-09-20 13:24:011042 days ago1632144241
0x13e987c9...344Dbd781
0.08920777 ETH
132628692021-09-20 13:24:011042 days ago1632144241
0x13e987c9...344Dbd781
0.08920777 ETH
132610012021-09-20 6:31:181043 days ago1632119478
0x13e987c9...344Dbd781
1 ETH
132606942021-09-20 5:13:141043 days ago1632114794
0x13e987c9...344Dbd781
0.58303931 ETH
132606942021-09-20 5:13:141043 days ago1632114794
0x13e987c9...344Dbd781
0.58303931 ETH
132605702021-09-20 4:45:521043 days ago1632113152
0x13e987c9...344Dbd781
0.51098587 ETH
132605702021-09-20 4:45:521043 days ago1632113152
0x13e987c9...344Dbd781
0.51098587 ETH
132601962021-09-20 3:20:581043 days ago1632108058
0x13e987c9...344Dbd781
2.20748031 ETH
132601962021-09-20 3:20:581043 days ago1632108058
0x13e987c9...344Dbd781
2.20748031 ETH
132599492021-09-20 2:20:001043 days ago1632104400
0x13e987c9...344Dbd781
1.51382522 ETH
132599492021-09-20 2:20:001043 days ago1632104400
0x13e987c9...344Dbd781
1.51382522 ETH
132584222021-09-19 20:44:161043 days ago1632084256
0x13e987c9...344Dbd781
2.94377103 ETH
132584222021-09-19 20:44:161043 days ago1632084256
0x13e987c9...344Dbd781
2.94377103 ETH
132553072021-09-19 9:16:291044 days ago1632042989
0x13e987c9...344Dbd781
0.21190711 ETH
132553072021-09-19 9:16:291044 days ago1632042989
0x13e987c9...344Dbd781
0.21190711 ETH
132516952021-09-18 19:59:401044 days ago1631995180
0x13e987c9...344Dbd781
4.75747756 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.2.12

Optimization Enabled:
N/A

Other Settings:
MIT license

Contract Source Code (Vyper language format)

# @version 0.2.12

interface AddressProvider:
    def get_registry() -> address: view
    def get_address(_id: uint256) -> address: view

interface Registry:
    def find_pool_for_coins(_from: address, _to: address) -> address: view
    def get_coin_indices(
        _pool: address,
        _from: address,
        _to: address
    ) -> (uint256, uint256, uint256): view

interface RegistrySwap:
    def get_best_rate(_from: address, _to: address, _amount: uint256) -> (address, uint256): view

interface CurveCryptoSwap:
    def get_dy(i: uint256, j: uint256, dx: uint256) -> uint256: view
    def exchange(i: uint256, j: uint256, dx: uint256, min_dy: uint256, use_eth: bool): payable
    def coins(i: uint256) -> address: view

interface CurvePool:
    def exchange(i: int128, j: int128, dx: uint256, min_dy: uint256): payable
    def exchange_underlying(i: int128, j: int128, dx: uint256, min_dy: uint256): payable

interface ERC20:
    def approve(spender: address, amount: uint256): nonpayable
    def transfer(to: address, amount: uint256): nonpayable
    def transferFrom(sender: address, to: address, amount: uint256): nonpayable
    def balanceOf(owner: address) -> uint256: view


event CommitOwnership:
    admin: address

event ApplyOwnership:
    admin: address

event TrustedForwardershipTransferred:
    previous_forwarder: address
    new_forwarder: address


ADDRESS_PROVIDER: constant(address) = 0x0000000022D53366457F9d5E68Ec105046FC4383
ETH: constant(address) = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
WETH: constant(address) = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2

swap: public(address)
crypto_coins: public(address[3])

# token -> spender -> is approved to transfer?
is_approved: HashMap[address, HashMap[address, bool]]

owner: public(address)
trusted_forwarder: public(address)

future_owner: public(address)


@external
def __init__(_swap: address):
    self.owner = msg.sender
    self.swap = _swap
    for i in range(3):
        coin: address = CurveCryptoSwap(_swap).coins(i)
        if coin == WETH:
            self.crypto_coins[i] = ETH
        else:
            ERC20(coin).approve(_swap, MAX_UINT256)
            self.crypto_coins[i] = coin


@payable
@external
def __default__():
    # required to receive Ether
    pass


@payable
@external
def exchange(
    _amount: uint256,
    _route: address[6],
    _indices: uint256[8],
    _min_received: uint256,
    _receiver: address = msg.sender
):
    """
    @notice Perform a cross-asset exchange.
    @dev `_route` and `_indices` are generated by calling `get_exchange_routing`
         prior to making a transaction. This reduces gas costs on swaps.
    @param _amount Amount of the input token being swapped.
    @param _route Array of token and pool addresses used within the swap.
    @param _indices Array of `i` and `j` inputs used for individual swaps.
    @param _min_received Minimum amount of the output token to be received. If
                         the actual amount received is less the call will revert.
    @param _receiver An alternate address to which the output of the exchange will be sent
    """
    # Meta-tx support
    msg_sender: address = msg.sender
    receiver: address = _receiver
    if msg_sender == self.trusted_forwarder:
        calldata_len: uint256 = len(msg.data)
        addr_bytes: Bytes[20] = empty(Bytes[20])
        # grab the last 20 bytes of calldata which holds the address
        if calldata_len == 536:
            addr_bytes = slice(msg.data, 516, 20)
        elif calldata_len == 568:
            addr_bytes = slice(msg.data, 548, 20)
        # convert to an address
        msg_sender = convert(convert(addr_bytes, uint256), address)
        if _receiver == msg.sender:
            # we already know that msg.sender is the trusted forwarder
            # if _receiver is set to msg.sender change it to be correct
            receiver = msg_sender

    eth_value: uint256 = 0
    amount: uint256 = _amount

    # perform the first stableswap, if required
    if _route[1] != ZERO_ADDRESS:
        ERC20(_route[0]).transferFrom(msg_sender, self, _amount)  # dev: insufficient amount

        if not self.is_approved[_route[0]][_route[1]]:
            ERC20(_route[0]).approve(_route[1], MAX_UINT256)  # dev: bad response
            self.is_approved[_route[0]][_route[1]] = True

        # `_indices[2]` is a boolean-as-integer indicating if the swap uses `exchange_underlying`
        if _indices[2] == 0:
            CurvePool(_route[1]).exchange(
                convert(_indices[0], int128),
                convert(_indices[1], int128),
                _amount,
                0,
                value=msg.value,
            )  # dev: bad response
        else:
            CurvePool(_route[1]).exchange_underlying(
                convert(_indices[0], int128),
                convert(_indices[1], int128),
                _amount,
                0,
                value=msg.value,
            )  # dev: bad response

        if _route[2] == ETH:
            amount = self.balance
            eth_value = self.balance
        else:
            amount = ERC20(_route[2]).balanceOf(self)  # dev: bad response

    # if no initial stableswap, transfer token and validate the amount of ether sent
    elif _route[2] == ETH:
        assert _amount == msg.value  # dev: insufficient amount
        eth_value = msg.value
    else:
        assert msg.value == 0
        ERC20(_route[2]).transferFrom(msg_sender, self, _amount)  # dev: insufficient amount

    # perform the main crypto swap
    use_eth: bool = ETH in [_route[2], _route[3]]
    CurveCryptoSwap(self.swap).exchange(
        _indices[3],
        _indices[4],
        amount,
        0,
        use_eth,
        value=eth_value
    )  # dev: bad response
    if _route[3] == ETH:
        amount = self.balance
        eth_value = self.balance
    else:
        amount = ERC20(_route[3]).balanceOf(self)  # dev: bad response
        eth_value = 0

    # perform the second stableswap, if required
    if _route[4] != ZERO_ADDRESS:
        if _route[3] != ETH and not self.is_approved[_route[3]][_route[4]]:
            ERC20(_route[3]).approve(_route[4], MAX_UINT256)  # dev: bad response
            self.is_approved[_route[3]][_route[4]] = True

        # `_indices[7]` is a boolean-as-integer indicating if the swap uses `exchange_underlying`
        if _indices[7] == 0:
            CurvePool(_route[4]).exchange(
                convert(_indices[5], int128),
                convert(_indices[6], int128),
                amount,
                _min_received,
                value=eth_value,
            )  # dev: bad response
        else:
            CurvePool(_route[4]).exchange_underlying(
                convert(_indices[5], int128),
                convert(_indices[6], int128),
                amount,
                _min_received,
                value=eth_value,
            )  # dev: bad response

        if _route[5] == ETH:
            raw_call(receiver, b"", value=self.balance)
        else:
            amount = ERC20(_route[5]).balanceOf(self)
            ERC20(_route[5]).transfer(receiver, amount)

    # if no final swap, check slippage and transfer to receiver
    else:
        assert amount >= _min_received
        if _route[3] == ETH:
            raw_call(receiver, b"", value=self.balance)
        else:
            ERC20(_route[3]).transfer(receiver, amount)


@view
@external
def get_exchange_routing(
    _initial: address,
    _target: address,
    _amount: uint256
) -> (address[6], uint256[8], uint256):
    """
    @notice Get routing data for a cross-asset exchange.
    @dev Outputs from this function are used as inputs when calling `exchange`.
    @param _initial Address of the initial token being swapped.
    @param _target Address of the token to be received in the swap.
    @param _amount Amount of `_initial` to swap.
    @return _route Array of token and pool addresses used within the swap,
                    Array of `i` and `j` inputs used for individual swaps.
                    Expected amount of the output token to be received.
    """

    # route is [initial coin, stableswap, cryptopool input, cryptopool output, stableswap, target coin]
    route: address[6] = empty(address[6])

    # indices is [(i, j, is_underlying), (i, j), (i, j, is_underlying)]
    # tuples indicate first stableswap, crypto swap, second stableswap
    indices: uint256[8] = empty(uint256[8])

    crypto_input: address = ZERO_ADDRESS
    crypto_output: address = ZERO_ADDRESS
    market: address = ZERO_ADDRESS

    amount: uint256 = _amount
    crypto_coins: address[3] = self.crypto_coins
    swaps: address = AddressProvider(ADDRESS_PROVIDER).get_address(2)
    registry: address = AddressProvider(ADDRESS_PROVIDER).get_registry()

    # if initial coin is not in the crypto pool, get info for the first stableswap
    if _initial in crypto_coins:
        crypto_input = _initial
    else:
        received: uint256 = 0
        for coin in crypto_coins:
            market, received = RegistrySwap(swaps).get_best_rate(_initial, coin, amount)
            if market != ZERO_ADDRESS:
                indices[0], indices[1], indices[2] = Registry(registry).get_coin_indices(market, _initial, coin)
                route[0] = _initial
                route[1] = market
                crypto_input = coin
                amount = received
                break
        assert market != ZERO_ADDRESS

    # determine target coin when swapping in the crypto pool
    if _target in crypto_coins:
        crypto_output = _target
    else:
        for coin in crypto_coins:
            if Registry(registry).find_pool_for_coins(coin, _target) != ZERO_ADDRESS:
                crypto_output = coin
                break
        assert crypto_output != ZERO_ADDRESS

    assert crypto_input != crypto_output

    # get i, j and dy for crypto swap
    for x in range(3):
        coin: address = self.crypto_coins[x]
        if coin == crypto_input:
            indices[3] = x
        elif coin == crypto_output:
            indices[4] = x
    route[2] = crypto_input
    route[3] = crypto_output
    amount = CurveCryptoSwap(self.swap).get_dy(indices[3], indices[4], amount)

    # if target coin is not in the crypto pool, get info for the final stableswap
    if crypto_output != _target:
        market, amount = RegistrySwap(swaps).get_best_rate(crypto_output, _target, amount)
        indices[5], indices[6], indices[7] = Registry(registry).get_coin_indices(market, crypto_output, _target)
        route[4] = market
        route[5] = _target

    return route, indices, amount


@view
@external
def can_route(_initial: address, _target: address) -> bool:
    """
    @notice Check if a route is available between two tokens.
    @param _initial Address of the initial token being swapped.
    @param _target Address of the token to be received in the swap.
    @return bool Is route available?
    """

    crypto_coins: address[3] = self.crypto_coins
    registry: address = AddressProvider(ADDRESS_PROVIDER).get_registry()

    crypto_input: address = _initial
    if _initial not in crypto_coins:
        market: address = ZERO_ADDRESS
        for coin in crypto_coins:
            market = Registry(registry).find_pool_for_coins(_initial, coin)
            if market != ZERO_ADDRESS:
                crypto_input = coin
                break
        if market == ZERO_ADDRESS:
            return False

    crypto_output: address = _target
    if _target not in crypto_coins:
        market: address = ZERO_ADDRESS
        for coin in crypto_coins:
            market = Registry(registry).find_pool_for_coins(coin, _target)
            if market != ZERO_ADDRESS:
                crypto_output = coin
                break
        if market == ZERO_ADDRESS:
            return False

    return crypto_input != crypto_output


@external
def commit_transfer_ownership(addr: address):
    """
    @notice Transfer ownership of GaugeController to `addr`
    @param addr Address to have ownership transferred to
    """
    assert msg.sender == self.owner  # dev: admin only

    self.future_owner = addr
    log CommitOwnership(addr)


@external
def accept_transfer_ownership():
    """
    @notice Accept a pending ownership transfer
    """
    _admin: address = self.future_owner
    assert msg.sender == _admin  # dev: future admin only

    self.owner = _admin
    log ApplyOwnership(_admin)


@view
@external
def isTrustedForwarder(_forwarder: address) -> bool:
    """
    @notice ERC-2771 meta-txs discovery mechanism
    @param _forwarder Address to compare against the set trusted forwarder 
    @return bool True if `_forwarder` equals the set trusted forwarder
    """
    return _forwarder == self.trusted_forwarder


@external
def set_trusted_forwarder(_forwarder: address) -> bool:
    """
    @notice Set the trusted forwarder address
    @param _forwarder The address of the trusted forwarder
    @return bool True on successful execution
    """
    assert msg.sender == self.owner

    prev_forwarder: address = self.trusted_forwarder
    self.trusted_forwarder = _forwarder

    log TrustedForwardershipTransferred(prev_forwarder, _forwarder)
    return True

Contract Security Audit

Contract ABI

[{"name":"CommitOwnership","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyOwnership","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"TrustedForwardershipTransferred","inputs":[{"name":"previous_forwarder","type":"address","indexed":false},{"name":"new_forwarder","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_swap","type":"address"}],"outputs":[]},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"function","name":"exchange","inputs":[{"name":"_amount","type":"uint256"},{"name":"_route","type":"address[6]"},{"name":"_indices","type":"uint256[8]"},{"name":"_min_received","type":"uint256"}],"outputs":[]},{"stateMutability":"payable","type":"function","name":"exchange","inputs":[{"name":"_amount","type":"uint256"},{"name":"_route","type":"address[6]"},{"name":"_indices","type":"uint256[8]"},{"name":"_min_received","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"get_exchange_routing","inputs":[{"name":"_initial","type":"address"},{"name":"_target","type":"address"},{"name":"_amount","type":"uint256"}],"outputs":[{"name":"","type":"address[6]"},{"name":"","type":"uint256[8]"},{"name":"","type":"uint256"}],"gas":58134},{"stateMutability":"view","type":"function","name":"can_route","inputs":[{"name":"_initial","type":"address"},{"name":"_target","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":26895},{"stateMutability":"nonpayable","type":"function","name":"commit_transfer_ownership","inputs":[{"name":"addr","type":"address"}],"outputs":[],"gas":39075},{"stateMutability":"nonpayable","type":"function","name":"accept_transfer_ownership","inputs":[],"outputs":[],"gas":39020},{"stateMutability":"view","type":"function","name":"isTrustedForwarder","inputs":[{"name":"_forwarder","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":2737},{"stateMutability":"nonpayable","type":"function","name":"set_trusted_forwarder","inputs":[{"name":"_forwarder","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":41913},{"stateMutability":"view","type":"function","name":"swap","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2688},{"stateMutability":"view","type":"function","name":"crypto_coins","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}],"gas":2827},{"stateMutability":"view","type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2748},{"stateMutability":"view","type":"function","name":"trusted_forwarder","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2778},{"stateMutability":"view","type":"function","name":"future_owner","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2808}]

6f7fffffffffffffffffffffffffffffff60405260206117a66101403960206117a660c03960c05160a01c1561003457600080fd5b336003556101405160005561016060006003818352015b6020610220602463c66106576101a052610160516101c0526101bc610140515afa61007557600080fd5b601f3d1161008257600080fd5b600050610220516101805273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26101805114156100e35773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61016051600381106100d257600080fd5b600160c052602060c0200155610163565b610180513b6100f157600080fd5b60006000604463095ea7b36101a052610140516101c0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101e0526101bc6000610180515af161014157600080fd5b61018051610160516003811061015657600080fd5b600160c052602060c02001555b815160010180835281141561004b575b505061178e56600436101561000d57611612565b600035601c526f7fffffffffffffffffffffffffffffff604052600051630eb1d299811415610040573361014052610073565b63d6db999381141561006e576102043560a01c1561005d57600080fd5b602061020461014037600050610073565b6109fb565b6000610120525b610120516024013560a01c1561008f57600080fd5b602061012051016101205260c06101205110156100ab5761007a565b3361016052610140516101805260045461016051141561029e57366101c0526101c0516101a05260006020366101c037506102186101a051141561018e576102046014602082066104a00136610218111561010557600080fd5b6102186102205261021860006102403761022051828401111561012757600080fd5b610238806104c08260206020880688030136610218111561014757600080fd5b6102186102205261021860006102403761022001600060045af15050818152809050905090508051602001806101c08284600060045af161018757600080fd5b505061023c565b6102386101a051141561023c576102246014602082066104c0013661023811156101b757600080fd5b610238610220526102386000610240376102205182840111156101d957600080fd5b610258806104e0826020602088068803013661023811156101f957600080fd5b6102386102205261023860006102403761022001600060045af15050818152809050905090508051602001806101c08284600060045af161023957600080fd5b50505b6101c080602001516000825180602090131561025757600080fd5b809190121561026557600080fd5b806020036101000a82049050905090508060a01c1561028357600080fd5b809050610160523361014051141561029e5761016051610180525b60006101a0526004356101c052600060443518156104eb576024353b6102c357600080fd5b6000600060646323b872dd6101e05261016051610200523061022052600435610240526101fc60006024355af16102f957600080fd5b600260243560e05260c052604060c02060443560e05260c052604060c02054151561039b576024353b61032b57600080fd5b60006000604463095ea7b36101e052604435610200527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610220526101fc60006024355af161037957600080fd5b6001600260243560e05260c052604060c02060443560e05260c052604060c020555b610124351515610412576044353b6103b257600080fd5b600060006084633df021246101e05260e4356040518111156103d357600080fd5b61020052610104356040518111156103ea57600080fd5b61022052600435610240526000610260526101fc346044355af161040d57600080fd5b61047a565b6044353b61041f57600080fd5b60006000608463a6417ed66101e05260e43560405181111561044057600080fd5b610200526101043560405181111561045757600080fd5b61022052600435610240526000610260526101fc346044355af161047a57600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60643514156104a757476101c052476101a0526104e6565b602061026060246370a082316101e05230610200526101fc6064355afa6104cd57600080fd5b601f3d116104da57600080fd5b600050610260516101c0525b61056f565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee606435141561052157346004351461051757600080fd5b346101a05261056f565b341561052c57600080fd5b6064353b61053957600080fd5b6000600060646323b872dd6101e05261016051610200523061022052600435610240526101fc60006064355af161056f57600080fd5b606435610220526084356102405260006102005261020061012060006002818352015b61012051602002610220015173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156105c257600183526105d2565b8151600101808352811415610592575b505050610200516101e0526000543b6105ea57600080fd5b6000600060a463394747c5610200526040610144610220376101c051610260526000610280526101e0516102a05261021c6101a0516000545af161062d57600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee608435141561065a57476101c052476101a05261069f565b602061028060246370a0823161020052306102205261021c6084355afa61068057600080fd5b601f3d1161068d57600080fd5b600050610280516101c05260006101a0525b600060a43518156109445773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60843518156106ed57600260843560e05260c052604060c02060a43560e05260c052604060c02054156106f0565b60005b15610772576084353b61070257600080fd5b60006000604463095ea7b36102005260a435610220527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102405261021c60006084355af161075057600080fd5b6001600260843560e05260c052604060c02060a43560e05260c052604060c020555b6101c43515156107f05760a4353b61078957600080fd5b600060006084633df0212461020052610184356040518111156107ab57600080fd5b610220526101a4356040518111156107c257600080fd5b610240526101c051610260526101e4356102805261021c6101a05160a4355af16107eb57600080fd5b61085f565b60a4353b6107fd57600080fd5b60006000608463a6417ed6610200526101843560405181111561081f57600080fd5b610220526101a43560405181111561083657600080fd5b610240526101c051610260526101e4356102805261021c6101a05160a4355af161085f57600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60c43514156108c2576000610200526102008051602001806102408284600060045af16108a057600080fd5b5050600060006102405161026047610180515af16108bd57600080fd5b61093f565b602061028060246370a0823161020052306102205261021c60c4355afa6108e857600080fd5b601f3d116108f557600080fd5b600050610280516101c05260c4353b61090d57600080fd5b60006000604463a9059cbb6102005261018051610220526101c0516102405261021c600060c4355af161093f57600080fd5b6109f9565b6101e4356101c051101561095757600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60843514156109ba576000610200526102008051602001806102408284600060045af161099857600080fd5b5050600060006102405161026047610180515af16109b557600080fd5b6109f9565b6084353b6109c757600080fd5b60006000604463a9059cbb6102005261018051610220526101c0516102405261021c60006084355af16109f957600080fd5b005b63d7804a158114156110f6573415610a1257600080fd5b60043560a01c15610a2257600080fd5b60243560a01c15610a3257600080fd5b61022036610140376044356103605260018060c052602060c020546103805260018160c052602060c02001546103a05260028160c052602060c02001546103c052506020610480602463493f4f746104005260026104205261041c6f22d53366457f9d5e68ec105046fc43835afa610aa957600080fd5b601f3d11610ab657600080fd5b600050610480516103e0526020610480600463a262904b6104205261043c6f22d53366457f9d5e68ec105046fc43835afa610af057600080fd5b601f3d11610afd57600080fd5b600050610480516104005260006104205261042061012060006003818352015b6101205160200261038001516004351415610b3b5760018352610b4b565b8151600101808352811415610b1d575b5050506104205115610b635760043561030052610ce8565b60006104205261046060006003818352015b6020610460510261038001516104405260406105406064634e21df75610480526004356104a052610440516104c052610360516104e05261049c6103e0515afa610bbe57600080fd5b603f3d11610bcb57600080fd5b6105408080808051610580525050602081019050808080516105a05250505050600050610580805161034052806020015161042052506000610340511815610cc6576060610540606463eb85226d61048052610340516104a0526004356104c052610440516104e05261049c610400515afa610c4657600080fd5b605f3d11610c5357600080fd5b61054080808080516105a0525050602081019050808080516105c0525050602081019050808080516105e052505050506000506105a08051610200528060200151610220528060400151610240525060043561014052610340516101605261044051610300526104205161036052610cd6565b8151600101808352811415610b75575b505060006103405118610ce857600080fd5b60006104205261042061012060006003818352015b6101205160200261038001516024351415610d1b5760018352610d2b565b8151600101808352811415610cfd575b5050506104205115610d435760243561032052610ddb565b61044060006003818352015b6020610440510261038001516104205260006020610500604463a87df06c6104605261042051610480526024356104a05261047c610400515afa610d9257600080fd5b601f3d11610d9f57600080fd5b600050610500511815610db9576104205161032052610dc9565b8151600101808352811415610d4f575b505060006103205118610ddb57600080fd5b610320516103005118610ded57600080fd5b61042060006003818352015b6104205160038110610e0a57600080fd5b600160c052602060c02001546104405261030051610440511415610e35576104205161026052610e4c565b61032051610440511415610e4c5761042051610280525b8151600101808352811415610df9575b50506103005161018052610320516101a05260206104e0606463556d6e9f6104205261026051610440526102805161046052610360516104805261043c6000545afa610ea757600080fd5b601f3d11610eb457600080fd5b6000506104e05161036052602435610320511815610fed5760406104e06064634e21df7561042052610320516104405260243561046052610360516104805261043c6103e0515afa610f0557600080fd5b603f3d11610f1257600080fd5b6104e080808080516105205250506020810190508080805161054052505050506000506105208051610340528060200151610360525060606104e0606463eb85226d61042052610340516104405261032051610460526024356104805261043c610400515afa610f8157600080fd5b605f3d11610f8e57600080fd5b6104e080808080516105405250506020810190508080805161056052505060208101905080808051610580525050505060005061054080516102a05280602001516102c05280604001516102e05250610340516101c0526024356101e0525b61042080808080806101405181525050602081019050808061016051815250506020810190508080610180518152505060208101905080806101a0518152505060208101905080806101c0518152505060208101905080806101e05181525050505060c0810190508080808061020051815250506020810190508080610220518152505060208101905080806102405181525050602081019050808061026051815250506020810190508080610280518152505060208101905080806102a0518152505060208101905080806102c0518152505060208101905080806102e05181525050505061010081019050808061036051815250506101e09050905060c05260c051610420f35b63edaf77f48114156113be57341561110d57600080fd5b60043560a01c1561111d57600080fd5b60243560a01c1561112d57600080fd5b60018060c052602060c020546101405260018160c052602060c02001546101605260028160c052602060c020015461018052506020610220600463a262904b6101c0526101dc6f22d53366457f9d5e68ec105046fc43835afa61118f57600080fd5b601f3d1161119c57600080fd5b600050610220516101a0526004356101c05260006101e0526101e061012060006003818352015b61012051602002610140015160043514156111e157600183526111f1565b81516001018083528114156111c3575b5050506101e05115156112a95760006102005261024060006003818352015b602061024051026101400151610220526020610300604463a87df06c6102605260043561028052610220516102a05261027c6101a0515afa61125157600080fd5b601f3d1161125e57600080fd5b6000506103005161020052600061020051181561128257610220516101c052611292565b8151600101808352811415611210575b50506102005115156112a957600060005260206000f35b6024356101e05260006102005261020061012060006003818352015b61012051602002610140015160243514156112e357600183526112f3565b81516001018083528114156112c5575b5050506102005115156113ab5760006102205261026060006003818352015b602061026051026101400151610240526020610320604463a87df06c61028052610240516102a0526024356102c05261029c6101a0515afa61135357600080fd5b601f3d1161136057600080fd5b6000506103205161022052600061022051181561138457610240516101e052611394565b8151600101808352811415611312575b50506102205115156113ab57600060005260206000f35b6101e0516101c051141560005260206000f35b636b441a408114156114295734156113d557600080fd5b60043560a01c156113e557600080fd5b60035433146113f357600080fd5b600435600555600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b63e5ea47b881141561148e57341561144057600080fd5b6005546101405261014051331461145657600080fd5b6101405160035561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b63572b6c058114156114c55734156114a557600080fd5b60043560a01c156114b557600080fd5b6004546004351460005260206000f35b63a23d61058114156115485734156114dc57600080fd5b60043560a01c156114ec57600080fd5b60035433146114fa57600080fd5b600454610140526004356004556101405161016052600435610180527f775b1d49267d8a88315e68596af64504759b94c99e309bc52aaf5385f08805316040610160a1600160005260206000f35b638119c06581141561156b57341561155f57600080fd5b60005460005260206000f35b6356d498ef8114156115a757341561158257600080fd5b6004356003811061159257600080fd5b600160c052602060c020015460005260206000f35b638da5cb5b8114156115ca5734156115be57600080fd5b60035460005260206000f35b633648692c8114156115ed5734156115e157600080fd5b60045460005260206000f35b631ec0cdc181141561161057341561160457600080fd5b60055460005260206000f35b505b005b61017a61178e0361017a60003961017a61178e036000f300000000000000000000000080466c64868e1ab14a1ddf27a676c3fcbe638fe5

Deployed Bytecode

0x600436101561000d57611612565b600035601c526f7fffffffffffffffffffffffffffffff604052600051630eb1d299811415610040573361014052610073565b63d6db999381141561006e576102043560a01c1561005d57600080fd5b602061020461014037600050610073565b6109fb565b6000610120525b610120516024013560a01c1561008f57600080fd5b602061012051016101205260c06101205110156100ab5761007a565b3361016052610140516101805260045461016051141561029e57366101c0526101c0516101a05260006020366101c037506102186101a051141561018e576102046014602082066104a00136610218111561010557600080fd5b6102186102205261021860006102403761022051828401111561012757600080fd5b610238806104c08260206020880688030136610218111561014757600080fd5b6102186102205261021860006102403761022001600060045af15050818152809050905090508051602001806101c08284600060045af161018757600080fd5b505061023c565b6102386101a051141561023c576102246014602082066104c0013661023811156101b757600080fd5b610238610220526102386000610240376102205182840111156101d957600080fd5b610258806104e0826020602088068803013661023811156101f957600080fd5b6102386102205261023860006102403761022001600060045af15050818152809050905090508051602001806101c08284600060045af161023957600080fd5b50505b6101c080602001516000825180602090131561025757600080fd5b809190121561026557600080fd5b806020036101000a82049050905090508060a01c1561028357600080fd5b809050610160523361014051141561029e5761016051610180525b60006101a0526004356101c052600060443518156104eb576024353b6102c357600080fd5b6000600060646323b872dd6101e05261016051610200523061022052600435610240526101fc60006024355af16102f957600080fd5b600260243560e05260c052604060c02060443560e05260c052604060c02054151561039b576024353b61032b57600080fd5b60006000604463095ea7b36101e052604435610200527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610220526101fc60006024355af161037957600080fd5b6001600260243560e05260c052604060c02060443560e05260c052604060c020555b610124351515610412576044353b6103b257600080fd5b600060006084633df021246101e05260e4356040518111156103d357600080fd5b61020052610104356040518111156103ea57600080fd5b61022052600435610240526000610260526101fc346044355af161040d57600080fd5b61047a565b6044353b61041f57600080fd5b60006000608463a6417ed66101e05260e43560405181111561044057600080fd5b610200526101043560405181111561045757600080fd5b61022052600435610240526000610260526101fc346044355af161047a57600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60643514156104a757476101c052476101a0526104e6565b602061026060246370a082316101e05230610200526101fc6064355afa6104cd57600080fd5b601f3d116104da57600080fd5b600050610260516101c0525b61056f565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee606435141561052157346004351461051757600080fd5b346101a05261056f565b341561052c57600080fd5b6064353b61053957600080fd5b6000600060646323b872dd6101e05261016051610200523061022052600435610240526101fc60006064355af161056f57600080fd5b606435610220526084356102405260006102005261020061012060006002818352015b61012051602002610220015173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156105c257600183526105d2565b8151600101808352811415610592575b505050610200516101e0526000543b6105ea57600080fd5b6000600060a463394747c5610200526040610144610220376101c051610260526000610280526101e0516102a05261021c6101a0516000545af161062d57600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee608435141561065a57476101c052476101a05261069f565b602061028060246370a0823161020052306102205261021c6084355afa61068057600080fd5b601f3d1161068d57600080fd5b600050610280516101c05260006101a0525b600060a43518156109445773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60843518156106ed57600260843560e05260c052604060c02060a43560e05260c052604060c02054156106f0565b60005b15610772576084353b61070257600080fd5b60006000604463095ea7b36102005260a435610220527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102405261021c60006084355af161075057600080fd5b6001600260843560e05260c052604060c02060a43560e05260c052604060c020555b6101c43515156107f05760a4353b61078957600080fd5b600060006084633df0212461020052610184356040518111156107ab57600080fd5b610220526101a4356040518111156107c257600080fd5b610240526101c051610260526101e4356102805261021c6101a05160a4355af16107eb57600080fd5b61085f565b60a4353b6107fd57600080fd5b60006000608463a6417ed6610200526101843560405181111561081f57600080fd5b610220526101a43560405181111561083657600080fd5b610240526101c051610260526101e4356102805261021c6101a05160a4355af161085f57600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60c43514156108c2576000610200526102008051602001806102408284600060045af16108a057600080fd5b5050600060006102405161026047610180515af16108bd57600080fd5b61093f565b602061028060246370a0823161020052306102205261021c60c4355afa6108e857600080fd5b601f3d116108f557600080fd5b600050610280516101c05260c4353b61090d57600080fd5b60006000604463a9059cbb6102005261018051610220526101c0516102405261021c600060c4355af161093f57600080fd5b6109f9565b6101e4356101c051101561095757600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60843514156109ba576000610200526102008051602001806102408284600060045af161099857600080fd5b5050600060006102405161026047610180515af16109b557600080fd5b6109f9565b6084353b6109c757600080fd5b60006000604463a9059cbb6102005261018051610220526101c0516102405261021c60006084355af16109f957600080fd5b005b63d7804a158114156110f6573415610a1257600080fd5b60043560a01c15610a2257600080fd5b60243560a01c15610a3257600080fd5b61022036610140376044356103605260018060c052602060c020546103805260018160c052602060c02001546103a05260028160c052602060c02001546103c052506020610480602463493f4f746104005260026104205261041c6f22d53366457f9d5e68ec105046fc43835afa610aa957600080fd5b601f3d11610ab657600080fd5b600050610480516103e0526020610480600463a262904b6104205261043c6f22d53366457f9d5e68ec105046fc43835afa610af057600080fd5b601f3d11610afd57600080fd5b600050610480516104005260006104205261042061012060006003818352015b6101205160200261038001516004351415610b3b5760018352610b4b565b8151600101808352811415610b1d575b5050506104205115610b635760043561030052610ce8565b60006104205261046060006003818352015b6020610460510261038001516104405260406105406064634e21df75610480526004356104a052610440516104c052610360516104e05261049c6103e0515afa610bbe57600080fd5b603f3d11610bcb57600080fd5b6105408080808051610580525050602081019050808080516105a05250505050600050610580805161034052806020015161042052506000610340511815610cc6576060610540606463eb85226d61048052610340516104a0526004356104c052610440516104e05261049c610400515afa610c4657600080fd5b605f3d11610c5357600080fd5b61054080808080516105a0525050602081019050808080516105c0525050602081019050808080516105e052505050506000506105a08051610200528060200151610220528060400151610240525060043561014052610340516101605261044051610300526104205161036052610cd6565b8151600101808352811415610b75575b505060006103405118610ce857600080fd5b60006104205261042061012060006003818352015b6101205160200261038001516024351415610d1b5760018352610d2b565b8151600101808352811415610cfd575b5050506104205115610d435760243561032052610ddb565b61044060006003818352015b6020610440510261038001516104205260006020610500604463a87df06c6104605261042051610480526024356104a05261047c610400515afa610d9257600080fd5b601f3d11610d9f57600080fd5b600050610500511815610db9576104205161032052610dc9565b8151600101808352811415610d4f575b505060006103205118610ddb57600080fd5b610320516103005118610ded57600080fd5b61042060006003818352015b6104205160038110610e0a57600080fd5b600160c052602060c02001546104405261030051610440511415610e35576104205161026052610e4c565b61032051610440511415610e4c5761042051610280525b8151600101808352811415610df9575b50506103005161018052610320516101a05260206104e0606463556d6e9f6104205261026051610440526102805161046052610360516104805261043c6000545afa610ea757600080fd5b601f3d11610eb457600080fd5b6000506104e05161036052602435610320511815610fed5760406104e06064634e21df7561042052610320516104405260243561046052610360516104805261043c6103e0515afa610f0557600080fd5b603f3d11610f1257600080fd5b6104e080808080516105205250506020810190508080805161054052505050506000506105208051610340528060200151610360525060606104e0606463eb85226d61042052610340516104405261032051610460526024356104805261043c610400515afa610f8157600080fd5b605f3d11610f8e57600080fd5b6104e080808080516105405250506020810190508080805161056052505060208101905080808051610580525050505060005061054080516102a05280602001516102c05280604001516102e05250610340516101c0526024356101e0525b61042080808080806101405181525050602081019050808061016051815250506020810190508080610180518152505060208101905080806101a0518152505060208101905080806101c0518152505060208101905080806101e05181525050505060c0810190508080808061020051815250506020810190508080610220518152505060208101905080806102405181525050602081019050808061026051815250506020810190508080610280518152505060208101905080806102a0518152505060208101905080806102c0518152505060208101905080806102e05181525050505061010081019050808061036051815250506101e09050905060c05260c051610420f35b63edaf77f48114156113be57341561110d57600080fd5b60043560a01c1561111d57600080fd5b60243560a01c1561112d57600080fd5b60018060c052602060c020546101405260018160c052602060c02001546101605260028160c052602060c020015461018052506020610220600463a262904b6101c0526101dc6f22d53366457f9d5e68ec105046fc43835afa61118f57600080fd5b601f3d1161119c57600080fd5b600050610220516101a0526004356101c05260006101e0526101e061012060006003818352015b61012051602002610140015160043514156111e157600183526111f1565b81516001018083528114156111c3575b5050506101e05115156112a95760006102005261024060006003818352015b602061024051026101400151610220526020610300604463a87df06c6102605260043561028052610220516102a05261027c6101a0515afa61125157600080fd5b601f3d1161125e57600080fd5b6000506103005161020052600061020051181561128257610220516101c052611292565b8151600101808352811415611210575b50506102005115156112a957600060005260206000f35b6024356101e05260006102005261020061012060006003818352015b61012051602002610140015160243514156112e357600183526112f3565b81516001018083528114156112c5575b5050506102005115156113ab5760006102205261026060006003818352015b602061026051026101400151610240526020610320604463a87df06c61028052610240516102a0526024356102c05261029c6101a0515afa61135357600080fd5b601f3d1161136057600080fd5b6000506103205161022052600061022051181561138457610240516101e052611394565b8151600101808352811415611312575b50506102205115156113ab57600060005260206000f35b6101e0516101c051141560005260206000f35b636b441a408114156114295734156113d557600080fd5b60043560a01c156113e557600080fd5b60035433146113f357600080fd5b600435600555600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b63e5ea47b881141561148e57341561144057600080fd5b6005546101405261014051331461145657600080fd5b6101405160035561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b63572b6c058114156114c55734156114a557600080fd5b60043560a01c156114b557600080fd5b6004546004351460005260206000f35b63a23d61058114156115485734156114dc57600080fd5b60043560a01c156114ec57600080fd5b60035433146114fa57600080fd5b600454610140526004356004556101405161016052600435610180527f775b1d49267d8a88315e68596af64504759b94c99e309bc52aaf5385f08805316040610160a1600160005260206000f35b638119c06581141561156b57341561155f57600080fd5b60005460005260206000f35b6356d498ef8114156115a757341561158257600080fd5b6004356003811061159257600080fd5b600160c052602060c020015460005260206000f35b638da5cb5b8114156115ca5734156115be57600080fd5b60035460005260206000f35b633648692c8114156115ed5734156115e157600080fd5b60045460005260206000f35b631ec0cdc181141561161057341561160457600080fd5b60055460005260206000f35b505b00

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

00000000000000000000000080466c64868e1ab14a1ddf27a676c3fcbe638fe5

-----Decoded View---------------
Arg [0] : _swap (address): 0x80466c64868E1ab14a1Ddf27A676C3fcBE638Fe5

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000080466c64868e1ab14a1ddf27a676c3fcbe638fe5


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.