ETH Price: $3,387.27 (-2.08%)
Gas: 5 Gwei

Contract

0xE3c8A4De3b8A484ff890a38d6D7B5D278d697Fb7
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x60206116140548632022-01-22 10:30:44914 days ago1642847444IN
 Create: Vyper_contract
0 ETH0.33798489264.34106087

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
182914322023-10-06 12:22:47292 days ago1696594967
Anchor Protocol: Rewards Liquidator 2
0.25564156 ETH
182914322023-10-06 12:22:47292 days ago1696594967
Anchor Protocol: Rewards Liquidator 2
0.25564156 ETH
182842882023-10-05 12:23:35293 days ago1696508615
Anchor Protocol: Rewards Liquidator 2
0.26264566 ETH
182842882023-10-05 12:23:35293 days ago1696508615
Anchor Protocol: Rewards Liquidator 2
0.26264566 ETH
182771382023-10-04 12:24:47294 days ago1696422287
Anchor Protocol: Rewards Liquidator 2
0.28066013 ETH
182771382023-10-04 12:24:47294 days ago1696422287
Anchor Protocol: Rewards Liquidator 2
0.28066013 ETH
182699872023-10-03 12:23:35295 days ago1696335815
Anchor Protocol: Rewards Liquidator 2
0.30279663 ETH
182699872023-10-03 12:23:35295 days ago1696335815
Anchor Protocol: Rewards Liquidator 2
0.30279663 ETH
182628202023-10-02 12:22:59296 days ago1696249379
Anchor Protocol: Rewards Liquidator 2
0.28228811 ETH
182628202023-10-02 12:22:59296 days ago1696249379
Anchor Protocol: Rewards Liquidator 2
0.28228811 ETH
182556692023-10-01 12:24:23297 days ago1696163063
Anchor Protocol: Rewards Liquidator 2
0.25777036 ETH
182556692023-10-01 12:24:23297 days ago1696163063
Anchor Protocol: Rewards Liquidator 2
0.25777036 ETH
182484912023-09-30 12:21:59298 days ago1696076519
Anchor Protocol: Rewards Liquidator 2
0.2679573 ETH
182484912023-09-30 12:21:59298 days ago1696076519
Anchor Protocol: Rewards Liquidator 2
0.2679573 ETH
182413262023-09-29 12:19:23299 days ago1695989963
Anchor Protocol: Rewards Liquidator 2
0.26956673 ETH
182413262023-09-29 12:19:23299 days ago1695989963
Anchor Protocol: Rewards Liquidator 2
0.26956673 ETH
182341902023-09-28 12:20:11300 days ago1695903611
Anchor Protocol: Rewards Liquidator 2
0.27120745 ETH
182341902023-09-28 12:20:11300 days ago1695903611
Anchor Protocol: Rewards Liquidator 2
0.27120745 ETH
182270602023-09-27 12:21:23301 days ago1695817283
Anchor Protocol: Rewards Liquidator 2
0.27782909 ETH
182270602023-09-27 12:21:23301 days ago1695817283
Anchor Protocol: Rewards Liquidator 2
0.27782909 ETH
182199352023-09-26 12:25:23302 days ago1695731123
Anchor Protocol: Rewards Liquidator 2
0.29197286 ETH
182199352023-09-26 12:25:23302 days ago1695731123
Anchor Protocol: Rewards Liquidator 2
0.29197286 ETH
182127872023-09-25 12:25:47303 days ago1695644747
Anchor Protocol: Rewards Liquidator 2
0.2557194 ETH
182127872023-09-25 12:25:47303 days ago1695644747
Anchor Protocol: Rewards Liquidator 2
0.2557194 ETH
182056302023-09-24 12:23:11304 days ago1695558191
Anchor Protocol: Rewards Liquidator 2
0.26197876 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.3.1

Optimization Enabled:
N/A

Other Settings:
MIT license

Contract Source Code (Vyper language format)

# @version 0.3.1
# @author skozin, krogla <[email protected]>
# @licence MIT
from vyper.interfaces import ERC20


interface ERC20Decimals:
    def decimals() -> uint256: view

interface ChainlinkAggregatorV3Interface:
    def decimals() -> uint256: view
    # (roundId: uint80, answer: int256, startedAt: uint256, updatedAt: uint256, answeredInRound: uint80)
    def latestRoundData() -> (uint256, int256, uint256, uint256, uint256): view

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

interface CurveMetaPool:
    def exchange_underlying(i: int128, j: int128, dx: uint256, min_dy: uint256) -> uint256: nonpayable


event SoldStethToUST:
    steth_amount: uint256
    eth_amount: uint256
    usdc_amount: uint256
    ust_amount: uint256
    steth_eth_price: uint256
    eth_usdc_price: uint256
    usdc_ust_price: uint256

event AdminChanged:
    new_admin: address

event PriceDifferenceChanged:
    max_steth_eth_price_difference_percent: uint256
    max_eth_usdc_price_difference_percent: uint256
    max_usdc_ust_price_difference_percent: uint256
    max_steth_ust_price_difference_percent: uint256

event UniswapUSDCPoolFeeChanged:
    fee: uint256


UST_TOKEN: constant(address) = 0xa693B19d2931d498c5B318dF961919BB4aee87a5
UST_TOKEN_DECIMALS: constant(uint256) = 6
USDC_TOKEN: constant(address) = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
USDC_TOKEN_DECIMALS: constant(uint256) = 6
STETH_TOKEN: constant(address) = 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84
STETH_TOKEN_DECIMALS: constant(uint256) = 18
WETH_TOKEN: constant(address) = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
WETH_TOKEN_DECIMALS: constant(uint256) = 18

CHAINLINK_STETH_ETH_FEED: constant(address) = 0x86392dC19c0b719886221c78AB11eb8Cf5c52812
CHAINLINK_UST_ETH_FEED: constant(address) = 0xa20623070413d42a5C01Db2c8111640DD7A5A03a
CHAINLINK_USDC_ETH_FEED: constant(address) = 0x986b5E1e1755e3C2440e960477f25201B0a8bbD4

CURVE_STETH_POOL: constant(address) = 0xDC24316b9AE028F1497c275EB9192a3Ea0f67022
CURVE_UST_POOL: constant(address) = 0xCEAF7747579696A2F0bb206a14210e3c9e6fB269
UNISWAP_ROUTER_V3: constant(address) = 0xE592427A0AEce92De3Edee1F18E0157C05861564

CURVE_ETH_INDEX: constant(uint256) = 0
CURVE_STETH_INDEX: constant(uint256) = 1
CURVE_USDC_UNDERLYING_INDEX: constant(uint256) = 2
CURVE_UST_UNDERLYING_INDEX: constant(uint256) = 0

# An address that is allowed to configure the liquidator settings.
admin: public(address)

# An address that is allowed to sell.
vault: public(address)

# Maximum difference (in percents multiplied by 10**18) between the resulting
# stETH/ETH price and the stETH/ETH anchor price obtained from the feed.
max_steth_eth_price_difference_percent: public(uint256)

# Maximum difference (in percents multiplied by 10**18) between the resulting
# ETH/USDC price and the ETH/USDC anchor price obtained from the feed.
max_eth_usdc_price_difference_percent: public(uint256)

# Maximum difference (in percents multiplied by 10**18) between the resulting
# USDC/UST price and the USDC/USD anchor price obtained from the feed.
max_usdc_ust_price_difference_percent: public(uint256)

# Maximum difference (in percents multiplied by 10**18) between the resulting
# stETH/UST price and the stETH/USD anchor price obtained from the feed.
max_steth_ust_price_difference_percent: public(uint256)

# Uniswap pool fee (required for pool selection)
uniswap_usdc_pool_fee: public(uint256)


@external
def __init__(
    vault: address,
    admin: address,
    max_steth_eth_price_difference_percent: uint256,
    max_eth_usdc_price_difference_percent: uint256,
    max_usdc_ust_price_difference_percent: uint256,
    max_steth_ust_price_difference_percent: uint256
):
    assert ERC20Decimals(USDC_TOKEN).decimals() == USDC_TOKEN_DECIMALS
    assert ERC20Decimals(UST_TOKEN).decimals() == UST_TOKEN_DECIMALS
    assert ERC20Decimals(STETH_TOKEN).decimals() == STETH_TOKEN_DECIMALS

    self.vault = vault
    self.admin = admin
    log AdminChanged(self.admin)

    self.uniswap_usdc_pool_fee = 3000 # initially we use a pool with a commission of 0.3%

    log UniswapUSDCPoolFeeChanged(self.uniswap_usdc_pool_fee)

    assert max_steth_eth_price_difference_percent <= 10**18, "invalid percentage"
    assert max_eth_usdc_price_difference_percent <= 10**18, "invalid percentage"
    assert max_usdc_ust_price_difference_percent <= 10**18, "invalid percentage"
    assert max_steth_ust_price_difference_percent <= 10**18, "invalid percentage"

    self.max_steth_eth_price_difference_percent = max_steth_eth_price_difference_percent
    self.max_eth_usdc_price_difference_percent = max_eth_usdc_price_difference_percent
    self.max_usdc_ust_price_difference_percent = max_usdc_ust_price_difference_percent
    self.max_steth_ust_price_difference_percent = max_steth_ust_price_difference_percent

    log PriceDifferenceChanged(
        self.max_steth_eth_price_difference_percent, 
        self.max_eth_usdc_price_difference_percent,
        self.max_usdc_ust_price_difference_percent,
        self.max_steth_ust_price_difference_percent
    )


@external
@payable
def __default__():
    pass


@external
def change_admin(new_admin: address):
    assert msg.sender == self.admin, "unauthorized"
    self.admin = new_admin
    log AdminChanged(self.admin)


@external
def set_uniswap_usdc_pool_fee(
    fee: uint256
):
    assert msg.sender == self.admin, "unauthorized"
    assert fee > 0, "invalid uniswap_usdc_pool_fee"

    self.uniswap_usdc_pool_fee = fee

    log UniswapUSDCPoolFeeChanged(self.uniswap_usdc_pool_fee)


@external
def configure(
    max_steth_eth_price_difference_percent: uint256,
    max_eth_usdc_price_difference_percent: uint256,
    max_usdc_ust_price_difference_percent: uint256,
    max_steth_ust_price_difference_percent: uint256
):
    assert msg.sender == self.admin, "unauthorized"
    assert max_steth_eth_price_difference_percent <= 10**18, "invalid percentage"
    assert max_eth_usdc_price_difference_percent <= 10**18, "invalid percentage"
    assert max_usdc_ust_price_difference_percent <= 10**18, "invalid percentage"
    assert max_steth_ust_price_difference_percent <= 10**18, "invalid percentage"

    self.max_steth_eth_price_difference_percent = max_steth_eth_price_difference_percent
    self.max_eth_usdc_price_difference_percent = max_eth_usdc_price_difference_percent
    self.max_usdc_ust_price_difference_percent = max_usdc_ust_price_difference_percent
    self.max_steth_ust_price_difference_percent = max_steth_ust_price_difference_percent

    log PriceDifferenceChanged(
        self.max_steth_eth_price_difference_percent, 
        self.max_eth_usdc_price_difference_percent,
        self.max_usdc_ust_price_difference_percent,
        self.max_steth_ust_price_difference_percent
    )


@internal
@view
def _get_chainlink_price(chainlink_price_feed: address) -> uint256:
    price_decimals: uint256 = ChainlinkAggregatorV3Interface(chainlink_price_feed).decimals()
    assert 0 < price_decimals and price_decimals <= 18

    round_id: uint256 = 0
    answer: int256 = 0
    started_at: uint256 = 0
    updated_at: uint256 = 0
    answered_in_round: uint256 = 0

    (round_id, answer, started_at, updated_at, answered_in_round) = \
        ChainlinkAggregatorV3Interface(chainlink_price_feed).latestRoundData()

    assert updated_at != 0
    # forced conversion to 18 decimal places
    return convert(answer, uint256) * (10 ** (18 - price_decimals))


@internal
@view
def _get_inverse_rate(price: uint256) -> uint256:
    return  (10 ** 36) / price  


@internal
@view
def _get_chainlink_cross_price(priceA: uint256, priceB: uint256) -> uint256:
    return (priceA * priceB) / (10 ** 18)
    

@internal
def _uniswap_v3_sell_eth_to_usdc(
    eth_amount_in: uint256,
    usdc_amount_out_min: uint256,
    usdc_recipient: address
) -> uint256:

    result: Bytes[32] = raw_call(
        UNISWAP_ROUTER_V3,
        concat(
            method_id("exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))"),
            convert(WETH_TOKEN, bytes32),
            convert(USDC_TOKEN, bytes32),
            convert(self.uniswap_usdc_pool_fee, bytes32), #pool fee
            convert(usdc_recipient, bytes32), #recipient
            convert(block.timestamp, bytes32), #deadline
            convert(eth_amount_in, bytes32),
            convert(usdc_amount_out_min, bytes32),
            convert(0, bytes32), #sqrtPriceLimitX96
        ),
        value=eth_amount_in,
        max_outsize=32
    )
    return convert(result, uint256)


@internal
@pure
def _get_min_amount_out(
    amount: uint256,
    price: uint256,
    max_diff_percent: uint256,
    decimal_token_in: uint256,
    decimal_token_out: uint256
) -> uint256:
    # = (amount * (10 ** (18 - decimal_token_in)) * price) / 10 ** 18
    amount_out: uint256 = (amount * price) / (10 ** decimal_token_in)

    min_mult: uint256 = 10**18 - max_diff_percent

    # = ((amount_out * min_mult) / 10**18) / (10 ** (18 - decimal_token_out))
    return (amount_out * min_mult) / (10 ** (36 - decimal_token_out))


# 1) stETH -> ETH (Curve)
# 2) ETH -> USDC (Uniswap v3)
# 3) USDC -> UST (Curve)
@external
def liquidate(ust_recipient: address) -> uint256:
    assert msg.sender == self.vault, "unauthorized"

    steth_amount: uint256 = ERC20(STETH_TOKEN).balanceOf(self)
    assert steth_amount > 0, "zero stETH balance"

    # steth -> eth
    steth_eth_price: uint256 = self._get_chainlink_price(CHAINLINK_STETH_ETH_FEED)
    min_eth_amount: uint256 = self._get_min_amount_out(
        steth_amount,
        steth_eth_price,
        self.max_steth_eth_price_difference_percent,
        STETH_TOKEN_DECIMALS,
        WETH_TOKEN_DECIMALS
    )

    ERC20(STETH_TOKEN).approve(CURVE_STETH_POOL, steth_amount)

    CurvePool(CURVE_STETH_POOL).exchange(
        CURVE_STETH_INDEX,
        CURVE_ETH_INDEX,
        steth_amount,
        0 # do not require a minimum amount
    )
    eth_amount: uint256 = self.balance

    assert eth_amount >= min_eth_amount, "insuff. ETH return"

    # eth -> usdc
    usdc_eth_price: uint256 = self._get_chainlink_price(CHAINLINK_USDC_ETH_FEED)
    eth_usdc_price: uint256 = self._get_inverse_rate(usdc_eth_price)
    min_usdc_amount: uint256 = self._get_min_amount_out(
        eth_amount,
        eth_usdc_price,
        self.max_eth_usdc_price_difference_percent,
        WETH_TOKEN_DECIMALS,
        USDC_TOKEN_DECIMALS
    )

    self._uniswap_v3_sell_eth_to_usdc(
        eth_amount,
        0, # do not require a minimum amount
        self
    )
    usdc_amount: uint256 = ERC20(USDC_TOKEN).balanceOf(self)

    assert usdc_amount >= min_usdc_amount, "insuff. USDC return"

    # usdc -> ust
    eth_ust_price: uint256 = self._get_inverse_rate(self._get_chainlink_price(CHAINLINK_UST_ETH_FEED))
    usdc_ust_price: uint256 = self._get_chainlink_cross_price(usdc_eth_price, eth_ust_price)
    min_ust_amount: uint256 = self._get_min_amount_out(
        usdc_amount,
        usdc_ust_price,
        self.max_usdc_ust_price_difference_percent,
        USDC_TOKEN_DECIMALS,
        UST_TOKEN_DECIMALS
    )

    ERC20(USDC_TOKEN).approve(CURVE_UST_POOL, usdc_amount)

    CurveMetaPool(CURVE_UST_POOL).exchange_underlying(
        CURVE_USDC_UNDERLYING_INDEX,
        CURVE_UST_UNDERLYING_INDEX,
        usdc_amount,
        0 # do not require a minimum amount
    )
    ust_amount: uint256 = ERC20(UST_TOKEN).balanceOf(self)

    assert ust_amount >= min_ust_amount, "insuff. UST return"

    # final overall check
    steth_ust_price: uint256 = self._get_chainlink_cross_price(steth_eth_price, eth_ust_price)
    min_ust_amount = self._get_min_amount_out(
        steth_amount,
        steth_ust_price,
        self.max_steth_ust_price_difference_percent,
        STETH_TOKEN_DECIMALS,
        UST_TOKEN_DECIMALS
    )

    assert ust_amount >= min_ust_amount, "insuff. overall UST return"

    ERC20(UST_TOKEN).transfer(ust_recipient, ust_amount)

    log SoldStethToUST(
        steth_amount,
        eth_amount,
        usdc_amount,
        ust_amount,
        steth_eth_price,
        eth_usdc_price,
        usdc_ust_price
    )

    return ust_amount

Contract Security Audit

Contract ABI

[{"name":"SoldStethToUST","inputs":[{"name":"steth_amount","type":"uint256","indexed":false},{"name":"eth_amount","type":"uint256","indexed":false},{"name":"usdc_amount","type":"uint256","indexed":false},{"name":"ust_amount","type":"uint256","indexed":false},{"name":"steth_eth_price","type":"uint256","indexed":false},{"name":"eth_usdc_price","type":"uint256","indexed":false},{"name":"usdc_ust_price","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"AdminChanged","inputs":[{"name":"new_admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"PriceDifferenceChanged","inputs":[{"name":"max_steth_eth_price_difference_percent","type":"uint256","indexed":false},{"name":"max_eth_usdc_price_difference_percent","type":"uint256","indexed":false},{"name":"max_usdc_ust_price_difference_percent","type":"uint256","indexed":false},{"name":"max_steth_ust_price_difference_percent","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"UniswapUSDCPoolFeeChanged","inputs":[{"name":"fee","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"vault","type":"address"},{"name":"admin","type":"address"},{"name":"max_steth_eth_price_difference_percent","type":"uint256"},{"name":"max_eth_usdc_price_difference_percent","type":"uint256"},{"name":"max_usdc_ust_price_difference_percent","type":"uint256"},{"name":"max_steth_ust_price_difference_percent","type":"uint256"}],"outputs":[]},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"nonpayable","type":"function","name":"change_admin","inputs":[{"name":"new_admin","type":"address"}],"outputs":[],"gas":44958},{"stateMutability":"nonpayable","type":"function","name":"set_uniswap_usdc_pool_fee","inputs":[{"name":"fee","type":"uint256"}],"outputs":[],"gas":48260},{"stateMutability":"nonpayable","type":"function","name":"configure","inputs":[{"name":"max_steth_eth_price_difference_percent","type":"uint256"},{"name":"max_eth_usdc_price_difference_percent","type":"uint256"},{"name":"max_usdc_ust_price_difference_percent","type":"uint256"},{"name":"max_steth_ust_price_difference_percent","type":"uint256"}],"outputs":[],"gas":170715},{"stateMutability":"nonpayable","type":"function","name":"liquidate","inputs":[{"name":"ust_recipient","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":125312},{"stateMutability":"view","type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2670},{"stateMutability":"view","type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2700},{"stateMutability":"view","type":"function","name":"max_steth_eth_price_difference_percent","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2730},{"stateMutability":"view","type":"function","name":"max_eth_usdc_price_difference_percent","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2760},{"stateMutability":"view","type":"function","name":"max_usdc_ust_price_difference_percent","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2790},{"stateMutability":"view","type":"function","name":"max_steth_ust_price_difference_percent","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2820},{"stateMutability":"view","type":"function","name":"uniswap_usdc_pool_fee","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2850}]

602061167a6080396080518060a01c6116755760e0526020602061167a016080396080518060a01c6116755761010052600663313ce567610120526020610120600461013c73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb485afa61006a573d600060003e3d6000fd5b601f3d111561167557610120511861167557600663313ce567610120526020610120600461013c73a693b19d2931d498c5b318df961919bb4aee87a55afa6100b7573d600060003e3d6000fd5b601f3d111561167557610120511861167557601263313ce567610120526020610120600461013c73ae7ab96520de3a18e5e111b5eaab095312d7fe845afa610104573d600060003e3d6000fd5b601f3d11156116755761012051186116755760e051600155610100516000557f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c600054610120526020610120a1610bb86006557f1f813fb780c47fcb66639dd51006f6c427a0a8ef9a704388afd756973e9406ed600654610120526020610120a1670de0b6b3a76400006020604061167a016080396080511115610217576012610120527f696e76616c69642070657263656e7461676500000000000000000000000000006101405261012050610120518061014001818260206001820306601f82010390500336823750506308c379a060e0526020610100526101205160206001820306601f820103905060440160fcfd5b670de0b6b3a76400006020606061167a0160803960805111156102a9576012610120527f696e76616c69642070657263656e7461676500000000000000000000000000006101405261012050610120518061014001818260206001820306601f82010390500336823750506308c379a060e0526020610100526101205160206001820306601f820103905060440160fcfd5b670de0b6b3a76400006020608061167a01608039608051111561033b576012610120527f696e76616c69642070657263656e7461676500000000000000000000000000006101405261012050610120518061014001818260206001820306601f82010390500336823750506308c379a060e0526020610100526101205160206001820306601f820103905060440160fcfd5b670de0b6b3a7640000602060a061167a0160803960805111156103cd576012610120527f696e76616c69642070657263656e7461676500000000000000000000000000006101405261012050610120518061014001818260206001820306601f82010390500336823750506308c379a060e0526020610100526101205160206001820306601f820103905060440160fcfd5b6020604061167a016080396080516002556020606061167a016080396080516003556020608061167a01608039608051600455602060a061167a016080396080516005557f1cab61ebc671d9aef529fce39532aed3d80e17be7c9d2077701a6700aaa9c8c2600254610120526003546101405260045461016052600554610180526080610120a161165d56600436101561000d57610e42565b60046000601c3760005163158686b581186100e8576004358060a01c6111ff5760e052346111ff5760005433146100b257600c610100527f756e617574686f72697a656400000000000000000000000000000000000000006101205261010050610100518061012001818260206001820306601f82010390500336823750506308c379a060c052602060e0526101005160206001820306601f820103905060440160dcfd5b60e0516000557f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c600054610100526020610100a1005b6364f48335811861021f57346111ff57600054331461017157600c60e0527f756e617574686f72697a656400000000000000000000000000000000000000006101005260e05060e0518061010001818260206001820306601f82010390500336823750506308c379a060a052602060c05260e05160206001820306601f820103905060440160bcfd5b6000600435116101eb57601d60e0527f696e76616c696420756e69737761705f757364635f706f6f6c5f6665650000006101005260e05060e0518061010001818260206001820306601f82010390500336823750506308c379a060a052602060c05260e05160206001820306601f820103905060440160bcfd5b6004356006557f1f813fb780c47fcb66639dd51006f6c427a0a8ef9a704388afd756973e9406ed60065460e052602060e0a1005b63022fc225811861050b57346111ff5760005433146102a857600c60e0527f756e617574686f72697a656400000000000000000000000000000000000000006101005260e05060e0518061010001818260206001820306601f82010390500336823750506308c379a060a052602060c05260e05160206001820306601f820103905060440160bcfd5b670de0b6b3a7640000600435111561032a57601260e0527f696e76616c69642070657263656e7461676500000000000000000000000000006101005260e05060e0518061010001818260206001820306601f82010390500336823750506308c379a060a052602060c05260e05160206001820306601f820103905060440160bcfd5b670de0b6b3a764000060243511156103ac57601260e0527f696e76616c69642070657263656e7461676500000000000000000000000000006101005260e05060e0518061010001818260206001820306601f82010390500336823750506308c379a060a052602060c05260e05160206001820306601f820103905060440160bcfd5b670de0b6b3a7640000604435111561042e57601260e0527f696e76616c69642070657263656e7461676500000000000000000000000000006101005260e05060e0518061010001818260206001820306601f82010390500336823750506308c379a060a052602060c05260e05160206001820306601f820103905060440160bcfd5b670de0b6b3a764000060643511156104b057601260e0527f696e76616c69642070657263656e7461676500000000000000000000000000006101005260e05060e0518061010001818260206001820306601f82010390500336823750506308c379a060a052602060c05260e05160206001820306601f820103905060440160bcfd5b6004356002556024356003556044356004556064356005557f1cab61ebc671d9aef529fce39532aed3d80e17be7c9d2077701a6700aaa9c8c260025460e052600354610100526004546101205260055461014052608060e0a1005b632f8655688118610d7c576004358060a01c6111ff5761034052346111ff5760015433146105aa57600c610360527f756e617574686f72697a656400000000000000000000000000000000000000006103805261036050610360518061038001818260206001820306601f82010390500336823750506308c379a0610320526020610340526103605160206001820306601f820103905060440161033cfd5b6370a0823161038052306103a0526020610380602461039c73ae7ab96520de3a18e5e111b5eaab095312d7fe845afa6105e8573d600060003e3d6000fd5b601f3d11156111ff5761038051610360526000610360511161067b576012610380527f7a65726f2073744554482062616c616e636500000000000000000000000000006103a0526103805061038051806103a001818260206001820306601f82010390500336823750506308c379a0610340526020610360526103805160206001820306601f820103905060440161035cfd5b7386392dc19c0b719886221c78ab11eb8cf5c5281260e05261069e6103a0610e44565b6103a051610380526103605160e0526103805161010052600254610120526012610140526012610160526106d36103c0611140565b6103c0516103a05263095ea7b36103c05273dc24316b9ae028f1497c275eb9192a3ea0f670226103e052610360516104005260206103c060446103dc600073ae7ab96520de3a18e5e111b5eaab095312d7fe845af1610737573d600060003e3d6000fd5b601f3d11156111ff576103c050633df021246103c05260016103e052600061040052610360516104205260006104405260206103c060846103dc600073dc24316b9ae028f1497c275eb9192a3ea0f670225af1610799573d600060003e3d6000fd5b601f3d11156111ff576103c050476103c0526103a0516103c05110156108305760126103e0527f696e737566662e204554482072657475726e0000000000000000000000000000610400526103e0506103e0518061040001818260206001820306601f82010390500336823750506308c379a06103a05260206103c0526103e05160206001820306601f82010390506044016103bcfd5b73986b5e1e1755e3c2440e960477f25201b0a8bbd460e052610853610400610e44565b610400516103e0526103e05160e05261086d610420610f64565b61042051610400526103c05160e0526104005161010052600354610120526012610140526006610160526108a2610440611140565b61044051610420526103c05160e05260006101005230610120526108c7610440610fb9565b610440506370a082316104605230610480526020610460602461047c73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb485afa610909573d600060003e3d6000fd5b601f3d11156111ff5761046051610440526104205161044051101561099f576013610460527f696e737566662e20555344432072657475726e000000000000000000000000006104805261046050610460518061048001818260206001820306601f82010390500336823750506308c379a0610420526020610440526104605160206001820306601f820103905060440161043cfd5b73a20623070413d42a5c01db2c8111640dd7a5a03a60e0526109c2610480610e44565b610480516104c0526104c05160e0526109dc6104a0610f64565b6104a051610460526103e05160e05261046051610100526109fe6104a0610f89565b6104a051610480526104405160e052610480516101005260045461012052600661014052600661016052610a336104c0611140565b6104c0516104a05263095ea7b36104c05273ceaf7747579696a2f0bb206a14210e3c9e6fb2696104e052610440516105005260206104c060446104dc600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb485af1610a97573d600060003e3d6000fd5b601f3d11156111ff576104c05063a6417ed66104c05260026104e052600061050052610440516105205260006105405260206104c060846104dc600073ceaf7747579696a2f0bb206a14210e3c9e6fb2695af1610af9573d600060003e3d6000fd5b601f3d11156111ff576104c0506370a082316104e052306105005260206104e060246104fc73a693b19d2931d498c5b318df961919bb4aee87a55afa610b44573d600060003e3d6000fd5b601f3d11156111ff576104e0516104c0526104a0516104c0511015610bda5760126104e0527f696e737566662e205553542072657475726e0000000000000000000000000000610500526104e0506104e0518061050001818260206001820306601f82010390500336823750506308c379a06104a05260206104c0526104e05160206001820306601f82010390506044016104bcfd5b6103805160e0526104605161010052610bf4610500610f89565b610500516104e0526103605160e0526104e0516101005260055461012052601261014052600661016052610c29610500611140565b610500516104a0526104a0516104c0511015610cb657601a610500527f696e737566662e206f766572616c6c205553542072657475726e0000000000006105205261050050610500518061052001818260206001820306601f82010390500336823750506308c379a06104c05260206104e0526105005160206001820306601f82010390506044016104dcfd5b63a9059cbb6105005261034051610520526104c051610540526020610500604461051c600073a693b19d2931d498c5b318df961919bb4aee87a55af1610d01573d600060003e3d6000fd5b601f3d11156111ff57610500507f6884419c4d6f6863629def79bd30677825c116f246918bfd1ae673a7ed511c3b61036051610500526103c0516105205261044051610540526104c051610560526103805161058052610400516105a052610480516105c05260e0610500a16104c051610500526020610500f35b63f851a4408118610d9857346111ff5760005460e052602060e0f35b63fbfa77cf8118610db457346111ff5760015460e052602060e0f35b637b19812f8118610dd057346111ff5760025460e052602060e0f35b6310a052658118610dec57346111ff5760035460e052602060e0f35b63bec54b0e8118610e0857346111ff5760045460e052602060e0f35b63d48135ad8118610e2457346111ff5760055460e052602060e0f35b6301a517368118610e4057346111ff5760065460e052602060e0f35b505b005b63313ce567610120526020610120600461013c60e0515afa610e6b573d600060003e3d6000fd5b601f3d11156111ff57610120516101005261010051600010610e8e576000610e97565b60126101005111155b156111ff5760a0366101203763feaf968c6101c05260a06101c060046101dc60e0515afa610eca573d600060003e3d6000fd5b609f3d11156111ff576101c080516101205260208101516101405260408101516101605260608101516101805260808101516101a05250600061018051146111ff5761014051600081126111ff57604e6012610100518082106111ff578082039050905010156111ff576012610100518082106111ff5780820390509050600a0a8082028215828483041417156111ff5790509050815250565b6ec097ce7bc90715b34b9f100000000060e0518080156111ff57820490509050815250565b60e051610100518082028215828483041417156111ff5790509050670de0b6b3a764000080820490509050815250565b60006004610180527f414bf389000000000000000000000000000000000000000000000000000000006101a0526101806004806020846101c00101826020850160045afa50508051820191505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26020826101c001015260208101905073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486020826101c00101526020810190506006546020826101c0010152602081019050610120516020826101c0010152602081019050426020826101c001015260208101905060e0516020826101c0010152602081019050610100516020826101c001015260208101905060006020826101c0010152602081019050806101c0526101c0505060206103206101c0516101e060e05173e592427a0aece92de3edee1f18e0157c058615645af16110f8573d600060003e3d6000fd5b61030060203d80821161110b578161110d565b805b905090508152805160200180610140828460045afa90505050610160516101405181816020036008021c90509050815250565b60e051610100518082028215828483041417156111ff5790509050604e6101405110156111ff5761014051600a0a8080156111ff5782049050905061018052670de0b6b3a7640000610120518082106111ff57808203905090506101a052610180516101a0518082028215828483041417156111ff5790509050604e6024610160518082106111ff578082039050905010156111ff576024610160518082106111ff5780820390509050600a0a8080156111ff57820490509050815250565b600080fd5b61045961165d0361045960003961045961165d036000f35b600080fd000000000000000000000000a2f987a546d4cd1c607ee8141276876c26b72bdf0000000000000000000000003cd9f71f80ab08ea5a7dca348b5e94bc595f26a000000000000000000000000000000000000000000000000000354a6ba7a18000000000000000000000000000000000000000000000000000006a94d74f430000000000000000000000000000000000000000000000000000006a94d74f43000000000000000000000000000000000000000000000000000000b1a2bc2ec50000

Deployed Bytecode

0x600436101561000d57610e42565b60046000601c3760005163158686b581186100e8576004358060a01c6111ff5760e052346111ff5760005433146100b257600c610100527f756e617574686f72697a656400000000000000000000000000000000000000006101205261010050610100518061012001818260206001820306601f82010390500336823750506308c379a060c052602060e0526101005160206001820306601f820103905060440160dcfd5b60e0516000557f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c600054610100526020610100a1005b6364f48335811861021f57346111ff57600054331461017157600c60e0527f756e617574686f72697a656400000000000000000000000000000000000000006101005260e05060e0518061010001818260206001820306601f82010390500336823750506308c379a060a052602060c05260e05160206001820306601f820103905060440160bcfd5b6000600435116101eb57601d60e0527f696e76616c696420756e69737761705f757364635f706f6f6c5f6665650000006101005260e05060e0518061010001818260206001820306601f82010390500336823750506308c379a060a052602060c05260e05160206001820306601f820103905060440160bcfd5b6004356006557f1f813fb780c47fcb66639dd51006f6c427a0a8ef9a704388afd756973e9406ed60065460e052602060e0a1005b63022fc225811861050b57346111ff5760005433146102a857600c60e0527f756e617574686f72697a656400000000000000000000000000000000000000006101005260e05060e0518061010001818260206001820306601f82010390500336823750506308c379a060a052602060c05260e05160206001820306601f820103905060440160bcfd5b670de0b6b3a7640000600435111561032a57601260e0527f696e76616c69642070657263656e7461676500000000000000000000000000006101005260e05060e0518061010001818260206001820306601f82010390500336823750506308c379a060a052602060c05260e05160206001820306601f820103905060440160bcfd5b670de0b6b3a764000060243511156103ac57601260e0527f696e76616c69642070657263656e7461676500000000000000000000000000006101005260e05060e0518061010001818260206001820306601f82010390500336823750506308c379a060a052602060c05260e05160206001820306601f820103905060440160bcfd5b670de0b6b3a7640000604435111561042e57601260e0527f696e76616c69642070657263656e7461676500000000000000000000000000006101005260e05060e0518061010001818260206001820306601f82010390500336823750506308c379a060a052602060c05260e05160206001820306601f820103905060440160bcfd5b670de0b6b3a764000060643511156104b057601260e0527f696e76616c69642070657263656e7461676500000000000000000000000000006101005260e05060e0518061010001818260206001820306601f82010390500336823750506308c379a060a052602060c05260e05160206001820306601f820103905060440160bcfd5b6004356002556024356003556044356004556064356005557f1cab61ebc671d9aef529fce39532aed3d80e17be7c9d2077701a6700aaa9c8c260025460e052600354610100526004546101205260055461014052608060e0a1005b632f8655688118610d7c576004358060a01c6111ff5761034052346111ff5760015433146105aa57600c610360527f756e617574686f72697a656400000000000000000000000000000000000000006103805261036050610360518061038001818260206001820306601f82010390500336823750506308c379a0610320526020610340526103605160206001820306601f820103905060440161033cfd5b6370a0823161038052306103a0526020610380602461039c73ae7ab96520de3a18e5e111b5eaab095312d7fe845afa6105e8573d600060003e3d6000fd5b601f3d11156111ff5761038051610360526000610360511161067b576012610380527f7a65726f2073744554482062616c616e636500000000000000000000000000006103a0526103805061038051806103a001818260206001820306601f82010390500336823750506308c379a0610340526020610360526103805160206001820306601f820103905060440161035cfd5b7386392dc19c0b719886221c78ab11eb8cf5c5281260e05261069e6103a0610e44565b6103a051610380526103605160e0526103805161010052600254610120526012610140526012610160526106d36103c0611140565b6103c0516103a05263095ea7b36103c05273dc24316b9ae028f1497c275eb9192a3ea0f670226103e052610360516104005260206103c060446103dc600073ae7ab96520de3a18e5e111b5eaab095312d7fe845af1610737573d600060003e3d6000fd5b601f3d11156111ff576103c050633df021246103c05260016103e052600061040052610360516104205260006104405260206103c060846103dc600073dc24316b9ae028f1497c275eb9192a3ea0f670225af1610799573d600060003e3d6000fd5b601f3d11156111ff576103c050476103c0526103a0516103c05110156108305760126103e0527f696e737566662e204554482072657475726e0000000000000000000000000000610400526103e0506103e0518061040001818260206001820306601f82010390500336823750506308c379a06103a05260206103c0526103e05160206001820306601f82010390506044016103bcfd5b73986b5e1e1755e3c2440e960477f25201b0a8bbd460e052610853610400610e44565b610400516103e0526103e05160e05261086d610420610f64565b61042051610400526103c05160e0526104005161010052600354610120526012610140526006610160526108a2610440611140565b61044051610420526103c05160e05260006101005230610120526108c7610440610fb9565b610440506370a082316104605230610480526020610460602461047c73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb485afa610909573d600060003e3d6000fd5b601f3d11156111ff5761046051610440526104205161044051101561099f576013610460527f696e737566662e20555344432072657475726e000000000000000000000000006104805261046050610460518061048001818260206001820306601f82010390500336823750506308c379a0610420526020610440526104605160206001820306601f820103905060440161043cfd5b73a20623070413d42a5c01db2c8111640dd7a5a03a60e0526109c2610480610e44565b610480516104c0526104c05160e0526109dc6104a0610f64565b6104a051610460526103e05160e05261046051610100526109fe6104a0610f89565b6104a051610480526104405160e052610480516101005260045461012052600661014052600661016052610a336104c0611140565b6104c0516104a05263095ea7b36104c05273ceaf7747579696a2f0bb206a14210e3c9e6fb2696104e052610440516105005260206104c060446104dc600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb485af1610a97573d600060003e3d6000fd5b601f3d11156111ff576104c05063a6417ed66104c05260026104e052600061050052610440516105205260006105405260206104c060846104dc600073ceaf7747579696a2f0bb206a14210e3c9e6fb2695af1610af9573d600060003e3d6000fd5b601f3d11156111ff576104c0506370a082316104e052306105005260206104e060246104fc73a693b19d2931d498c5b318df961919bb4aee87a55afa610b44573d600060003e3d6000fd5b601f3d11156111ff576104e0516104c0526104a0516104c0511015610bda5760126104e0527f696e737566662e205553542072657475726e0000000000000000000000000000610500526104e0506104e0518061050001818260206001820306601f82010390500336823750506308c379a06104a05260206104c0526104e05160206001820306601f82010390506044016104bcfd5b6103805160e0526104605161010052610bf4610500610f89565b610500516104e0526103605160e0526104e0516101005260055461012052601261014052600661016052610c29610500611140565b610500516104a0526104a0516104c0511015610cb657601a610500527f696e737566662e206f766572616c6c205553542072657475726e0000000000006105205261050050610500518061052001818260206001820306601f82010390500336823750506308c379a06104c05260206104e0526105005160206001820306601f82010390506044016104dcfd5b63a9059cbb6105005261034051610520526104c051610540526020610500604461051c600073a693b19d2931d498c5b318df961919bb4aee87a55af1610d01573d600060003e3d6000fd5b601f3d11156111ff57610500507f6884419c4d6f6863629def79bd30677825c116f246918bfd1ae673a7ed511c3b61036051610500526103c0516105205261044051610540526104c051610560526103805161058052610400516105a052610480516105c05260e0610500a16104c051610500526020610500f35b63f851a4408118610d9857346111ff5760005460e052602060e0f35b63fbfa77cf8118610db457346111ff5760015460e052602060e0f35b637b19812f8118610dd057346111ff5760025460e052602060e0f35b6310a052658118610dec57346111ff5760035460e052602060e0f35b63bec54b0e8118610e0857346111ff5760045460e052602060e0f35b63d48135ad8118610e2457346111ff5760055460e052602060e0f35b6301a517368118610e4057346111ff5760065460e052602060e0f35b505b005b63313ce567610120526020610120600461013c60e0515afa610e6b573d600060003e3d6000fd5b601f3d11156111ff57610120516101005261010051600010610e8e576000610e97565b60126101005111155b156111ff5760a0366101203763feaf968c6101c05260a06101c060046101dc60e0515afa610eca573d600060003e3d6000fd5b609f3d11156111ff576101c080516101205260208101516101405260408101516101605260608101516101805260808101516101a05250600061018051146111ff5761014051600081126111ff57604e6012610100518082106111ff578082039050905010156111ff576012610100518082106111ff5780820390509050600a0a8082028215828483041417156111ff5790509050815250565b6ec097ce7bc90715b34b9f100000000060e0518080156111ff57820490509050815250565b60e051610100518082028215828483041417156111ff5790509050670de0b6b3a764000080820490509050815250565b60006004610180527f414bf389000000000000000000000000000000000000000000000000000000006101a0526101806004806020846101c00101826020850160045afa50508051820191505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26020826101c001015260208101905073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486020826101c00101526020810190506006546020826101c0010152602081019050610120516020826101c0010152602081019050426020826101c001015260208101905060e0516020826101c0010152602081019050610100516020826101c001015260208101905060006020826101c0010152602081019050806101c0526101c0505060206103206101c0516101e060e05173e592427a0aece92de3edee1f18e0157c058615645af16110f8573d600060003e3d6000fd5b61030060203d80821161110b578161110d565b805b905090508152805160200180610140828460045afa90505050610160516101405181816020036008021c90509050815250565b60e051610100518082028215828483041417156111ff5790509050604e6101405110156111ff5761014051600a0a8080156111ff5782049050905061018052670de0b6b3a7640000610120518082106111ff57808203905090506101a052610180516101a0518082028215828483041417156111ff5790509050604e6024610160518082106111ff578082039050905010156111ff576024610160518082106111ff5780820390509050600a0a8080156111ff57820490509050815250565b600080fd

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

000000000000000000000000a2f987a546d4cd1c607ee8141276876c26b72bdf0000000000000000000000003cd9f71f80ab08ea5a7dca348b5e94bc595f26a000000000000000000000000000000000000000000000000000354a6ba7a18000000000000000000000000000000000000000000000000000006a94d74f430000000000000000000000000000000000000000000000000000006a94d74f43000000000000000000000000000000000000000000000000000000b1a2bc2ec50000

-----Decoded View---------------
Arg [0] : vault (address): 0xA2F987A546D4CD1c607Ee8141276876C26b72Bdf
Arg [1] : admin (address): 0x3cd9F71F80AB08ea5a7Dca348B5e94BC595f26A0
Arg [2] : max_steth_eth_price_difference_percent (uint256): 15000000000000000
Arg [3] : max_eth_usdc_price_difference_percent (uint256): 30000000000000000
Arg [4] : max_usdc_ust_price_difference_percent (uint256): 30000000000000000
Arg [5] : max_steth_ust_price_difference_percent (uint256): 50000000000000000

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000a2f987a546d4cd1c607ee8141276876c26b72bdf
Arg [1] : 0000000000000000000000003cd9f71f80ab08ea5a7dca348b5e94bc595f26a0
Arg [2] : 00000000000000000000000000000000000000000000000000354a6ba7a18000
Arg [3] : 000000000000000000000000000000000000000000000000006a94d74f430000
Arg [4] : 000000000000000000000000000000000000000000000000006a94d74f430000
Arg [5] : 00000000000000000000000000000000000000000000000000b1a2bc2ec50000


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.