ETH Price: $2,398.80 (-3.53%)

Contract

0xfA9a30350048B2BF66865ee20363067c66f67e58
 
Transaction Hash
Method
Block
From
To
0x2bbb039c9626a1f1d9c9fab5904ccd2b392c236452888f8c61cd3468c5d76e48 Exchange(pending)2024-10-02 9:29:4019 hrs ago1727861380IN
0xfA9a3035...c66f67e58
0.001 ETH(Pending)(Pending)
Exchange208635412024-09-30 12:42:472 days ago1727700167IN
0xfA9a3035...c66f67e58
0 ETH0.0055027610.46747868
Exchange206794212024-09-04 19:51:1128 days ago1725479471IN
0xfA9a3035...c66f67e58
0.1 ETH0.001279653.44360905
Exchange205531412024-08-18 4:31:4746 days ago1723955507IN
0xfA9a3035...c66f67e58
0.001 ETH0.000732121.14434457
Exchange204085222024-07-29 0:04:5966 days ago1722211499IN
0xfA9a3035...c66f67e58
0.00031262 ETH0.000308821
Exchange200520222024-06-09 4:56:23115 days ago1717908983IN
0xfA9a3035...c66f67e58
0 ETH0.004182524.33614506
Exchange198121142024-05-06 16:04:35149 days ago1715011475IN
0xfA9a3035...c66f67e58
0 ETH0.003925719.44571011
Exchange197346062024-04-25 19:55:47160 days ago1714074947IN
0xfA9a3035...c66f67e58
3 ETH0.005195098.37303293
Exchange195292782024-03-28 1:14:35189 days ago1711588475IN
0xfA9a3035...c66f67e58
0 ETH0.0124711923.3871427
Exchange194353112024-03-14 19:28:11202 days ago1710444491IN
0xfA9a3035...c66f67e58
7 ETH0.0430063761.21032908
Exchange194220342024-03-12 22:38:47204 days ago1710283127IN
0xfA9a3035...c66f67e58
0.051 ETH0.0558989453.01407622
Exchange193640882024-03-04 20:07:59212 days ago1709582879IN
0xfA9a3035...c66f67e58
0 ETH0.05051987101.7973223
Exchange193632492024-03-04 17:19:59212 days ago1709572799IN
0xfA9a3035...c66f67e58
0 ETH0.05355705103.00582398
Exchange193624692024-03-04 14:43:11212 days ago1709563391IN
0xfA9a3035...c66f67e58
0 ETH0.04527448101.64265158
Exchange193286292024-02-28 21:12:11217 days ago1709154731IN
0xfA9a3035...c66f67e58
0 ETH0.0512923156.89511738
Exchange193268002024-02-28 15:04:23217 days ago1709132663IN
0xfA9a3035...c66f67e58
0 ETH0.0421350190.63749597
Exchange193256102024-02-28 11:03:47217 days ago1709118227IN
0xfA9a3035...c66f67e58
0 ETH0.0219984455.95617816
Exchange193163502024-02-27 3:57:35219 days ago1709006255IN
0xfA9a3035...c66f67e58
0 ETH0.0198660545.68054661
Exchange193161362024-02-27 3:14:35219 days ago1709003675IN
0xfA9a3035...c66f67e58
0 ETH0.0258130551.0094054
Exchange193140802024-02-26 20:20:47219 days ago1708978847IN
0xfA9a3035...c66f67e58
0 ETH0.0268812853.03148047
Exchange192954022024-02-24 5:37:23221 days ago1708753043IN
0xfA9a3035...c66f67e58
0 ETH0.0104849822.05808647
Exchange192704562024-02-20 17:39:35225 days ago1708450775IN
0xfA9a3035...c66f67e58
0 ETH0.0269868455.81848435
Exchange192300142024-02-15 1:19:23231 days ago1707959963IN
0xfA9a3035...c66f67e58
0 ETH0.0115284924.20117966
Exchange191367082024-02-01 22:57:59244 days ago1706828279IN
0xfA9a3035...c66f67e58
0 ETH0.0244411724.66333836
Exchange190388912024-01-19 5:42:47257 days ago1705642967IN
0xfA9a3035...c66f67e58
8 ETH0.0114464420.90903755
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
208799162024-10-02 19:30:359 hrs ago1727897435
0xfA9a3035...c66f67e58
3.07076 ETH
208799162024-10-02 19:30:359 hrs ago1727897435
0xfA9a3035...c66f67e58
3.07076 ETH
208765462024-10-02 8:13:4720 hrs ago1727856827
0xfA9a3035...c66f67e58
2.15975073 ETH
208765462024-10-02 8:13:4720 hrs ago1727856827
0xfA9a3035...c66f67e58
2.15975073 ETH
208686002024-10-01 5:37:3547 hrs ago1727761055
0xfA9a3035...c66f67e58
2.4146672 ETH
208686002024-10-01 5:37:3547 hrs ago1727761055
0xfA9a3035...c66f67e58
2.4146672 ETH
208663502024-09-30 22:06:112 days ago1727733971
0xfA9a3035...c66f67e58
3.5892 ETH
208663502024-09-30 22:06:112 days ago1727733971
0xfA9a3035...c66f67e58
3.5892 ETH
208663342024-09-30 22:02:592 days ago1727733779
0xfA9a3035...c66f67e58
3.4895 ETH
208663342024-09-30 22:02:592 days ago1727733779
0xfA9a3035...c66f67e58
3.4895 ETH
208659352024-09-30 20:43:112 days ago1727728991
0xfA9a3035...c66f67e58
3.79642409 ETH
208659352024-09-30 20:43:112 days ago1727728991
0xfA9a3035...c66f67e58
3.79642409 ETH
208635412024-09-30 12:42:472 days ago1727700167
0xfA9a3035...c66f67e58
1.45437937 ETH
208635412024-09-30 12:42:472 days ago1727700167
0xfA9a3035...c66f67e58
1.45437937 ETH
208632802024-09-30 11:50:232 days ago1727697023
0xfA9a3035...c66f67e58
2.991 ETH
208632802024-09-30 11:50:232 days ago1727697023
0xfA9a3035...c66f67e58
2.991 ETH
208625162024-09-30 9:17:112 days ago1727687831
0xfA9a3035...c66f67e58
1.980042 ETH
208625162024-09-30 9:17:112 days ago1727687831
0xfA9a3035...c66f67e58
1.980042 ETH
208620632024-09-30 7:46:232 days ago1727682383
0xfA9a3035...c66f67e58
7.69869319 ETH
208620632024-09-30 7:46:232 days ago1727682383
0xfA9a3035...c66f67e58
7.69869319 ETH
208616812024-09-30 6:29:592 days ago1727677799
0xfA9a3035...c66f67e58
8.10392417 ETH
208616812024-09-30 6:29:592 days ago1727677799
0xfA9a3035...c66f67e58
8.10392417 ETH
208594232024-09-29 22:56:353 days ago1727650595
0xfA9a3035...c66f67e58
3.08293423 ETH
208594232024-09-29 22:56:353 days ago1727650595
0xfA9a3035...c66f67e58
3.08293423 ETH
208584642024-09-29 19:43:233 days ago1727639003
0xfA9a3035...c66f67e58
3.30383044 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.2.16

Optimization Enabled:
N/A

Other Settings:
MIT license

Contract Source Code (Vyper language format)

# @version 0.2.16

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, if required
    if _indices[3] != _indices[4]:
        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

    route[2] = crypto_input
    route[3] = crypto_output

    # get i, j and dy for crypto swap if needed
    if crypto_input != crypto_output:
        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
        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 True


@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":56417},{"stateMutability":"view","type":"function","name":"can_route","inputs":[{"name":"_initial","type":"address"},{"name":"_target","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":26664},{"stateMutability":"nonpayable","type":"function","name":"commit_transfer_ownership","inputs":[{"name":"addr","type":"address"}],"outputs":[],"gas":39625},{"stateMutability":"nonpayable","type":"function","name":"accept_transfer_ownership","inputs":[],"outputs":[],"gas":39570},{"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":42235},{"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":2763},{"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}]

6f7fffffffffffffffffffffffffffffff604052602061146f61014039602061146f60c03960c05160a01c61146a57336005556101405160005561016060006003818352015b6020610220602463c66106576101a052610160516101c0526101bc610140515afa1561146a57601f3d111561146a57600050610220516101805273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26101805114156100cc5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600161016051600381101561146a57026001015561013b565b610180513b1561146a5760006000604463095ea7b36101a052610140516101c0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101e0526101bc6000610180515af11561146a5761018051600161016051600381101561146a5702600101555b5b8151600101808352811415610045575b505061145256600436101561000d576112f8565b600035601c526f7fffffffffffffffffffffffffffffff604052600051630eb1d29981141561004057336101405261006d565b63d6db9993811415610068576102043560a01c6112fa5760206102046101403760005061006d565b61084e565b6000610120525b610120516024013560a01c6112fa57602061012051016101205260c061012051101561009f57610074565b336101605261014051610180526006546101605114156101a057366101a05260006020366101c037506102186101a051141561010d5736610218116112fa576014610220526014610204610240376102208051602001806101c08284600060045af1156112fa57505061014f565b6102386101a051141561014e5736610238116112fa576014610220526014610224610240376102208051602001806101c08284600060045af1156112fa5750505b5b6101c080602001516000825180602090136112fa57809190126112fa57806020036101000a82049050905090508060a01c6112fa57809050610160523361014051141561019f5761016051610180525b5b60006101a0526004356101c052600060443518156103aa576024353b156112fa576000600060646323b872dd6101e05261016051610200523061022052600435610240526101fc60006024355af1156112fa57600460243560e05260c052604060c02060443560e05260c052604060c0205461028b576024353b156112fa5760006000604463095ea7b36101e052604435610200527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610220526101fc60006024355af1156112fa576001600460243560e05260c052604060c02060443560e05260c052604060c020555b610124356102ec576044353b156112fa57600060006084633df021246101e05260e43560405181116112fa57610200526101043560405181116112fa5761022052600435610240526000610260526101fc346044355af1156112fa57610341565b6044353b156112fa5760006000608463a6417ed66101e05260e43560405181116112fa57610200526101043560405181116112fa5761022052600435610240526000610260526101fc346044355af1156112fa575b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee606435141561036e57476101c052476101a0526103a5565b602061026060246370a082316101e05230610200526101fc6064355afa156112fa57601f3d11156112fa57600050610260516101c0525b61041e565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60643514156103dc573460043514156112fa57346101a05261041d565b346112fa576064353b156112fa576000600060646323b872dd6101e05261016051610200523061022052600435610240526101fc60006064355af1156112fa575b5b6101643561014435181561054e57606435610220526084356102405260006102005261020061012060006002818352015b61012051602002610220015173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561047f5760018352610490565b5b815160010180835281141561044f575b505050610200516101e0526000543b156112fa576000600060a463394747c5610200526040610144610220376101c051610260526000610280526101e0516102a05261021c6101a0516000545af1156112fa5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee608435141561051057476101c052476101a05261054d565b602061028060246370a0823161020052306102205261021c6084355afa156112fa57601f3d11156112fa57600050610280516101c05260006101a0525b5b600060a43518156107ab5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee608435181561059c57600460843560e05260c052604060c02060a43560e05260c052604060c020541561059f565b60005b15610619576084353b156112fa5760006000604463095ea7b36101e05260a435610200527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610220526101fc60006084355af1156112fa576001600460843560e05260c052604060c02060a43560e05260c052604060c020555b6101c4356106815760a4353b156112fa57600060006084633df021246101e0526101843560405181116112fa57610200526101a43560405181116112fa57610220526101c051610240526101e435610260526101fc6101a05160a4355af1156112fa576106dd565b60a4353b156112fa5760006000608463a6417ed66101e0526101843560405181116112fa57610200526101a43560405181116112fa57610220526101c051610240526101e435610260526101fc6101a05160a4355af1156112fa575b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60c43514156107385760006101e0526101e08051602001806102208284600060045af1156112fa575050600060006102205161024047610180515af1156112fa576107a6565b602061026060246370a082316101e05230610200526101fc60c4355afa156112fa57601f3d11156112fa57600050610260516101c05260c4353b156112fa5760006000604463a9059cbb6101e05261018051610200526101c051610220526101fc600060c4355af1156112fa575b61084c565b6101e4356101c051106112fa5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60843514156108135760006101e0526101e08051602001806102208284600060045af1156112fa575050600060006102205161024047610180515af1156112fa5761084b565b6084353b156112fa5760006000604463a9059cbb6101e05261018051610200526101c051610220526101fc60006084355af1156112fa575b5b005b63d7804a15811415610e5f57346112fa5760043560a01c6112fa5760243560a01c6112fa57610220366101403760443561036052600180546103805260018101546103a05260028101546103c052506020610480602463493f4f746104005260026104205261041c6f22d53366457f9d5e68ec105046fc43835afa156112fa57601f3d11156112fa57600050610480516103e0526020610480600463a262904b6104205261043c6f22d53366457f9d5e68ec105046fc43835afa156112fa57601f3d11156112fa57600050610480516104005260006104205261042061012060006003818352015b61012051602002610380015160043514156109545760018352610965565b5b8151600101808352811415610936575b505050610420511561097d5760043561030052610af0565b60006104205261046060006003818352015b6020610460510261038001516104405260406105406064634e21df75610480526004356104a052610440516104c052610360516104e05261049c6103e0515afa156112fa57603f3d11156112fa576105408080808051610580525050602081019050808080516105a05250505050600050610580805161034052806020015161042052506000610340511815610ad0576060610540606463eb85226d61048052610340516104a0526004356104c052610440516104e05261049c610400515afa156112fa57605f3d11156112fa5761054080808080516105a0525050602081019050808080516105c0525050602081019050808080516105e052505050506000506105a08051610200528060200151610220528060400151610240525060043561014052610340516101605261044051610300526104205161036052610ae1565b5b815160010180835281141561098f575b505060006103405118156112fa575b60006104205261042061012060006003818352015b6101205160200261038001516024351415610b235760018352610b34565b5b8151600101808352811415610b05575b5050506104205115610b4c5760243561032052610bda565b61044060006003818352015b6020610440510261038001516104205260006020610500604463a87df06c6104605261042051610480526024356104a05261047c610400515afa156112fa57601f3d11156112fa57600050610500511815610bba576104205161032052610bcb565b5b8151600101808352811415610b58575b505060006103205118156112fa575b6103005161018052610320516101a05261032051610300511815610cac5761042060006003818352015b60016104205160038110156112fa5702600101546104405261030051610440511415610c37576104205161026052610c4f565b61032051610440511415610c4e5761042051610280525b5b5b8151600101808352811415610c04575b505060206104e0606463556d6e9f6104205261026051610440526102805161046052610360516104805261043c6000545afa156112fa57601f3d11156112fa576000506104e051610360525b602435610320511815610dca5760406104e06064634e21df7561042052610320516104405260243561046052610360516104805261043c6103e0515afa156112fa57603f3d11156112fa576104e080808080516105205250506020810190508080805161054052505050506000506105208051610340528060200151610360525060606104e0606463eb85226d61042052610340516104405261032051610460526024356104805261043c610400515afa156112fa57605f3d11156112fa576104e080808080516105405250506020810190508080805161056052505060208101905080808051610580525050505060005061054080516102a05280602001516102c05280604001516102e05250610340516101c0526024356101e0525b610600806101405181526101605181602001526101805181604001526101a05181606001526101c05181608001526101e0518160a00152508060c0016102005181526102205181602001526102405181604001526102605181606001526102805181608001526102a0518160a001526102c0518160c001526102e0518160e001525061036051816101c00152506101e0610600f35b63edaf77f48114156110db57346112fa5760043560a01c6112fa5760243560a01c6112fa576001805461014052600181015461016052600281015461018052506020610220600463a262904b6101c0526101dc6f22d53366457f9d5e68ec105046fc43835afa156112fa57601f3d11156112fa57600050610220516101a0526004356101c05260006101e0526101e061012060006003818352015b6101205160200261014001516004351415610f185760018352610f29565b5b8151600101808352811415610efa575b5050506101e051610fd75760006102005261024060006003818352015b602061024051026101400151610220526020610300604463a87df06c6102605260043561028052610220516102a05261027c6101a0515afa156112fa57601f3d11156112fa5760005061030051610200526000610200511815610fb057610220516101c052610fc1565b5b8151600101808352811415610f46575b505061020051610fd657600060005260206000f35b5b6024356101e05260006102005261020061012060006003818352015b61012051602002610140015160243514156110115760018352611022565b5b8151600101808352811415610ff3575b505050610200516110d05760006102205261026060006003818352015b602061026051026101400151610240526020610320604463a87df06c61028052610240516102a0526024356102c05261029c6101a0515afa156112fa57601f3d11156112fa57600050610320516102205260006102205118156110a957610240516101e0526110ba565b5b815160010180835281141561103f575b5050610220516110cf57600060005260206000f35b5b600160005260206000f35b636b441a4081141561114057346112fa5760043560a01c6112fa576005543314156112fa576004356007557f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e961014080808060043581525050602090509050610140a1005b63e5ea47b88114156111a557346112fa5760075461014052610140513314156112fa57610140516005557febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056101608080806101405181525050602090509050610160a1005b63572b6c058114156111d057346112fa5760043560a01c6112fa576006546004351460005260206000f35b63a23d610581141561125557346112fa5760043560a01c6112fa576005543314156112fa57600654610140526004356006557f775b1d49267d8a88315e68596af64504759b94c99e309bc52aaf5385f08805316101608080806101405181525050602081019050808060043581525050604090509050610160a1600160005260206000f35b638119c06581141561127257346112fa5760005460005260206000f35b6356d498ef81141561129f57346112fa57600160043560038110156112fa57026001015460005260206000f35b638da5cb5b8114156112bc57346112fa5760055460005260206000f35b633648692c8114156112d957346112fa5760065460005260206000f35b631ec0cdc18114156112f657346112fa5760075460005260206000f35b505b005b600080fd5b61015361145203610153600039610153611452036000f35b600080fd000000000000000000000000d51a44d3fae010294c616388b506acda1bfaae46

Deployed Bytecode

0x600436101561000d576112f8565b600035601c526f7fffffffffffffffffffffffffffffff604052600051630eb1d29981141561004057336101405261006d565b63d6db9993811415610068576102043560a01c6112fa5760206102046101403760005061006d565b61084e565b6000610120525b610120516024013560a01c6112fa57602061012051016101205260c061012051101561009f57610074565b336101605261014051610180526006546101605114156101a057366101a05260006020366101c037506102186101a051141561010d5736610218116112fa576014610220526014610204610240376102208051602001806101c08284600060045af1156112fa57505061014f565b6102386101a051141561014e5736610238116112fa576014610220526014610224610240376102208051602001806101c08284600060045af1156112fa5750505b5b6101c080602001516000825180602090136112fa57809190126112fa57806020036101000a82049050905090508060a01c6112fa57809050610160523361014051141561019f5761016051610180525b5b60006101a0526004356101c052600060443518156103aa576024353b156112fa576000600060646323b872dd6101e05261016051610200523061022052600435610240526101fc60006024355af1156112fa57600460243560e05260c052604060c02060443560e05260c052604060c0205461028b576024353b156112fa5760006000604463095ea7b36101e052604435610200527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610220526101fc60006024355af1156112fa576001600460243560e05260c052604060c02060443560e05260c052604060c020555b610124356102ec576044353b156112fa57600060006084633df021246101e05260e43560405181116112fa57610200526101043560405181116112fa5761022052600435610240526000610260526101fc346044355af1156112fa57610341565b6044353b156112fa5760006000608463a6417ed66101e05260e43560405181116112fa57610200526101043560405181116112fa5761022052600435610240526000610260526101fc346044355af1156112fa575b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee606435141561036e57476101c052476101a0526103a5565b602061026060246370a082316101e05230610200526101fc6064355afa156112fa57601f3d11156112fa57600050610260516101c0525b61041e565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60643514156103dc573460043514156112fa57346101a05261041d565b346112fa576064353b156112fa576000600060646323b872dd6101e05261016051610200523061022052600435610240526101fc60006064355af1156112fa575b5b6101643561014435181561054e57606435610220526084356102405260006102005261020061012060006002818352015b61012051602002610220015173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561047f5760018352610490565b5b815160010180835281141561044f575b505050610200516101e0526000543b156112fa576000600060a463394747c5610200526040610144610220376101c051610260526000610280526101e0516102a05261021c6101a0516000545af1156112fa5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee608435141561051057476101c052476101a05261054d565b602061028060246370a0823161020052306102205261021c6084355afa156112fa57601f3d11156112fa57600050610280516101c05260006101a0525b5b600060a43518156107ab5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee608435181561059c57600460843560e05260c052604060c02060a43560e05260c052604060c020541561059f565b60005b15610619576084353b156112fa5760006000604463095ea7b36101e05260a435610200527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610220526101fc60006084355af1156112fa576001600460843560e05260c052604060c02060a43560e05260c052604060c020555b6101c4356106815760a4353b156112fa57600060006084633df021246101e0526101843560405181116112fa57610200526101a43560405181116112fa57610220526101c051610240526101e435610260526101fc6101a05160a4355af1156112fa576106dd565b60a4353b156112fa5760006000608463a6417ed66101e0526101843560405181116112fa57610200526101a43560405181116112fa57610220526101c051610240526101e435610260526101fc6101a05160a4355af1156112fa575b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60c43514156107385760006101e0526101e08051602001806102208284600060045af1156112fa575050600060006102205161024047610180515af1156112fa576107a6565b602061026060246370a082316101e05230610200526101fc60c4355afa156112fa57601f3d11156112fa57600050610260516101c05260c4353b156112fa5760006000604463a9059cbb6101e05261018051610200526101c051610220526101fc600060c4355af1156112fa575b61084c565b6101e4356101c051106112fa5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60843514156108135760006101e0526101e08051602001806102208284600060045af1156112fa575050600060006102205161024047610180515af1156112fa5761084b565b6084353b156112fa5760006000604463a9059cbb6101e05261018051610200526101c051610220526101fc60006084355af1156112fa575b5b005b63d7804a15811415610e5f57346112fa5760043560a01c6112fa5760243560a01c6112fa57610220366101403760443561036052600180546103805260018101546103a05260028101546103c052506020610480602463493f4f746104005260026104205261041c6f22d53366457f9d5e68ec105046fc43835afa156112fa57601f3d11156112fa57600050610480516103e0526020610480600463a262904b6104205261043c6f22d53366457f9d5e68ec105046fc43835afa156112fa57601f3d11156112fa57600050610480516104005260006104205261042061012060006003818352015b61012051602002610380015160043514156109545760018352610965565b5b8151600101808352811415610936575b505050610420511561097d5760043561030052610af0565b60006104205261046060006003818352015b6020610460510261038001516104405260406105406064634e21df75610480526004356104a052610440516104c052610360516104e05261049c6103e0515afa156112fa57603f3d11156112fa576105408080808051610580525050602081019050808080516105a05250505050600050610580805161034052806020015161042052506000610340511815610ad0576060610540606463eb85226d61048052610340516104a0526004356104c052610440516104e05261049c610400515afa156112fa57605f3d11156112fa5761054080808080516105a0525050602081019050808080516105c0525050602081019050808080516105e052505050506000506105a08051610200528060200151610220528060400151610240525060043561014052610340516101605261044051610300526104205161036052610ae1565b5b815160010180835281141561098f575b505060006103405118156112fa575b60006104205261042061012060006003818352015b6101205160200261038001516024351415610b235760018352610b34565b5b8151600101808352811415610b05575b5050506104205115610b4c5760243561032052610bda565b61044060006003818352015b6020610440510261038001516104205260006020610500604463a87df06c6104605261042051610480526024356104a05261047c610400515afa156112fa57601f3d11156112fa57600050610500511815610bba576104205161032052610bcb565b5b8151600101808352811415610b58575b505060006103205118156112fa575b6103005161018052610320516101a05261032051610300511815610cac5761042060006003818352015b60016104205160038110156112fa5702600101546104405261030051610440511415610c37576104205161026052610c4f565b61032051610440511415610c4e5761042051610280525b5b5b8151600101808352811415610c04575b505060206104e0606463556d6e9f6104205261026051610440526102805161046052610360516104805261043c6000545afa156112fa57601f3d11156112fa576000506104e051610360525b602435610320511815610dca5760406104e06064634e21df7561042052610320516104405260243561046052610360516104805261043c6103e0515afa156112fa57603f3d11156112fa576104e080808080516105205250506020810190508080805161054052505050506000506105208051610340528060200151610360525060606104e0606463eb85226d61042052610340516104405261032051610460526024356104805261043c610400515afa156112fa57605f3d11156112fa576104e080808080516105405250506020810190508080805161056052505060208101905080808051610580525050505060005061054080516102a05280602001516102c05280604001516102e05250610340516101c0526024356101e0525b610600806101405181526101605181602001526101805181604001526101a05181606001526101c05181608001526101e0518160a00152508060c0016102005181526102205181602001526102405181604001526102605181606001526102805181608001526102a0518160a001526102c0518160c001526102e0518160e001525061036051816101c00152506101e0610600f35b63edaf77f48114156110db57346112fa5760043560a01c6112fa5760243560a01c6112fa576001805461014052600181015461016052600281015461018052506020610220600463a262904b6101c0526101dc6f22d53366457f9d5e68ec105046fc43835afa156112fa57601f3d11156112fa57600050610220516101a0526004356101c05260006101e0526101e061012060006003818352015b6101205160200261014001516004351415610f185760018352610f29565b5b8151600101808352811415610efa575b5050506101e051610fd75760006102005261024060006003818352015b602061024051026101400151610220526020610300604463a87df06c6102605260043561028052610220516102a05261027c6101a0515afa156112fa57601f3d11156112fa5760005061030051610200526000610200511815610fb057610220516101c052610fc1565b5b8151600101808352811415610f46575b505061020051610fd657600060005260206000f35b5b6024356101e05260006102005261020061012060006003818352015b61012051602002610140015160243514156110115760018352611022565b5b8151600101808352811415610ff3575b505050610200516110d05760006102205261026060006003818352015b602061026051026101400151610240526020610320604463a87df06c61028052610240516102a0526024356102c05261029c6101a0515afa156112fa57601f3d11156112fa57600050610320516102205260006102205118156110a957610240516101e0526110ba565b5b815160010180835281141561103f575b5050610220516110cf57600060005260206000f35b5b600160005260206000f35b636b441a4081141561114057346112fa5760043560a01c6112fa576005543314156112fa576004356007557f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e961014080808060043581525050602090509050610140a1005b63e5ea47b88114156111a557346112fa5760075461014052610140513314156112fa57610140516005557febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056101608080806101405181525050602090509050610160a1005b63572b6c058114156111d057346112fa5760043560a01c6112fa576006546004351460005260206000f35b63a23d610581141561125557346112fa5760043560a01c6112fa576005543314156112fa57600654610140526004356006557f775b1d49267d8a88315e68596af64504759b94c99e309bc52aaf5385f08805316101608080806101405181525050602081019050808060043581525050604090509050610160a1600160005260206000f35b638119c06581141561127257346112fa5760005460005260206000f35b6356d498ef81141561129f57346112fa57600160043560038110156112fa57026001015460005260206000f35b638da5cb5b8114156112bc57346112fa5760055460005260206000f35b633648692c8114156112d957346112fa5760065460005260206000f35b631ec0cdc18114156112f657346112fa5760075460005260206000f35b505b005b600080fd

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

000000000000000000000000d51a44d3fae010294c616388b506acda1bfaae46

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d51a44d3fae010294c616388b506acda1bfaae46


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.