ETH Price: $3,242.31 (-0.76%)

Contract

0xfA9a30350048B2BF66865ee20363067c66f67e58
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x2bbb039c9626a1f1d9c9fab5904ccd2b392c236452888f8c61cd3468c5d76e48 Exchange(pending)2025-01-19 1:24:232 days ago1737249863IN
0xfA9a3035...c66f67e58
0.001 ETH(Pending)(Pending)
Exchange214354072024-12-19 8:34:5932 days ago1734597299IN
0xfA9a3035...c66f67e58
0 ETH0.0025695414
Exchange214353972024-12-19 8:32:5932 days ago1734597179IN
0xfA9a3035...c66f67e58
0 ETH0.0025695414
Exchange214353882024-12-19 8:30:5932 days ago1734597059IN
0xfA9a3035...c66f67e58
0 ETH0.002218112
Exchange214353782024-12-19 8:28:5932 days ago1734596939IN
0xfA9a3035...c66f67e58
0 ETH0.0024029413
Exchange214353682024-12-19 8:26:5932 days ago1734596819IN
0xfA9a3035...c66f67e58
0 ETH0.0024029413
Exchange214353582024-12-19 8:24:5932 days ago1734596699IN
0xfA9a3035...c66f67e58
0 ETH0.0024029413
Exchange214353482024-12-19 8:22:5932 days ago1734596579IN
0xfA9a3035...c66f67e58
0 ETH0.0024029413
Exchange214353382024-12-19 8:20:5932 days ago1734596459IN
0xfA9a3035...c66f67e58
0 ETH0.0024029413
Exchange214353302024-12-19 8:19:2332 days ago1734596363IN
0xfA9a3035...c66f67e58
0 ETH0.0044023413
Exchange212223282024-11-19 14:18:3562 days ago1732025915IN
0xfA9a3035...c66f67e58
0 ETH0.008213116.46094576
Exchange210615452024-10-28 3:47:3585 days ago1730087255IN
0xfA9a3035...c66f67e58
0.0202 ETH0.002941385.688125
Exchange209160562024-10-07 20:24:35105 days ago1728332675IN
0xfA9a3035...c66f67e58
0 ETH0.010604121.04690108
Exchange208635412024-09-30 12:42:47112 days ago1727700167IN
0xfA9a3035...c66f67e58
0 ETH0.0055027610.46747868
Exchange206794212024-09-04 19:51:11138 days ago1725479471IN
0xfA9a3035...c66f67e58
0.1 ETH0.001279653.44360905
Exchange205531412024-08-18 4:31:47155 days ago1723955507IN
0xfA9a3035...c66f67e58
0.001 ETH0.000732121.14434457
Exchange204085222024-07-29 0:04:59176 days ago1722211499IN
0xfA9a3035...c66f67e58
0.00031262 ETH0.000308821
Exchange200520222024-06-09 4:56:23225 days ago1717908983IN
0xfA9a3035...c66f67e58
0 ETH0.004182524.33614506
Exchange198121142024-05-06 16:04:35259 days ago1715011475IN
0xfA9a3035...c66f67e58
0 ETH0.003925719.44571011
Exchange197346062024-04-25 19:55:47270 days ago1714074947IN
0xfA9a3035...c66f67e58
3 ETH0.005195098.37303293
Exchange195292782024-03-28 1:14:35299 days ago1711588475IN
0xfA9a3035...c66f67e58
0 ETH0.0124711923.3871427
Exchange194353112024-03-14 19:28:11312 days ago1710444491IN
0xfA9a3035...c66f67e58
7 ETH0.0430063761.21032908
Exchange194220342024-03-12 22:38:47314 days ago1710283127IN
0xfA9a3035...c66f67e58
0.051 ETH0.0558989453.01407622
Exchange193640882024-03-04 20:07:59322 days ago1709582879IN
0xfA9a3035...c66f67e58
0 ETH0.05051987101.7973223
Exchange193632492024-03-04 17:19:59322 days ago1709572799IN
0xfA9a3035...c66f67e58
0 ETH0.05355705103.00582398
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
216701872025-01-21 3:30:2346 mins ago1737430223
0xfA9a3035...c66f67e58
0 ETH
216701872025-01-21 3:30:2346 mins ago1737430223
0xfA9a3035...c66f67e58
0 ETH
216701872025-01-21 3:30:2346 mins ago1737430223
0xfA9a3035...c66f67e58
1.84445 ETH
216701872025-01-21 3:30:2346 mins ago1737430223
0xfA9a3035...c66f67e58
1.84445 ETH
216701462025-01-21 3:22:1154 mins ago1737429731
0xfA9a3035...c66f67e58
0 ETH
216701462025-01-21 3:22:1154 mins ago1737429731
0xfA9a3035...c66f67e58
0 ETH
216701462025-01-21 3:22:1154 mins ago1737429731
0xfA9a3035...c66f67e58
0 ETH
216701462025-01-21 3:22:1154 mins ago1737429731
0xfA9a3035...c66f67e58
0 ETH
216701462025-01-21 3:22:1154 mins ago1737429731
0xfA9a3035...c66f67e58
0 ETH
216701462025-01-21 3:22:1154 mins ago1737429731
0xfA9a3035...c66f67e58
0 ETH
216701462025-01-21 3:22:1154 mins ago1737429731
0xfA9a3035...c66f67e58
0 ETH
216697532025-01-21 2:02:592 hrs ago1737424979
0xfA9a3035...c66f67e58
0 ETH
216697532025-01-21 2:02:592 hrs ago1737424979
0xfA9a3035...c66f67e58
0 ETH
216697532025-01-21 2:02:592 hrs ago1737424979
0xfA9a3035...c66f67e58
2.42271 ETH
216697532025-01-21 2:02:592 hrs ago1737424979
0xfA9a3035...c66f67e58
2.42271 ETH
216688952025-01-20 23:09:235 hrs ago1737414563
0xfA9a3035...c66f67e58
0 ETH
216688952025-01-20 23:09:235 hrs ago1737414563
0xfA9a3035...c66f67e58
0 ETH
216688952025-01-20 23:09:235 hrs ago1737414563
0xfA9a3035...c66f67e58
0 ETH
216688952025-01-20 23:09:235 hrs ago1737414563
0xfA9a3035...c66f67e58
0 ETH
216688952025-01-20 23:09:235 hrs ago1737414563
0xfA9a3035...c66f67e58
0 ETH
216676012025-01-20 18:49:359 hrs ago1737398975
0xfA9a3035...c66f67e58
0 ETH
216676012025-01-20 18:49:359 hrs ago1737398975
0xfA9a3035...c66f67e58
0 ETH
216676012025-01-20 18:49:359 hrs ago1737398975
0xfA9a3035...c66f67e58
0 ETH
216676012025-01-20 18:49:359 hrs ago1737398975
0xfA9a3035...c66f67e58
0 ETH
216676012025-01-20 18:49:359 hrs ago1737398975
0xfA9a3035...c66f67e58
0 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:
default evmVersion, 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  ]

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.