ETH Price: $1,590.71 (-0.16%)
Gas: 7 Gwei
 
Transaction Hash
Method
Block
From
To
Value
0x60206116140548632022-01-22 10:30:44610 days 8 hrs ago1642847444IN
 Create: Vyper_contract
0 ETH0.33798489264.34106087

Latest 25 internal transactions (View All)

Advanced mode:
Advanced Filter
Parent Txn Hash Block From To Value
182056302023-09-24 12:23:116 hrs 22 mins ago1695558191
Anchor Protocol: Rewards Liquidator 2
0.26197876 ETH
182056302023-09-24 12:23:116 hrs 22 mins ago1695558191
Anchor Protocol: Rewards Liquidator 2
0.26197876 ETH
181985212023-09-23 12:28:111 day 6 hrs ago1695472091
Anchor Protocol: Rewards Liquidator 2
0.25819787 ETH
181985212023-09-23 12:28:111 day 6 hrs ago1695472091
Anchor Protocol: Rewards Liquidator 2
0.25819787 ETH
181913772023-09-22 12:27:232 days 6 hrs ago1695385643
Anchor Protocol: Rewards Liquidator 2
0.27600545 ETH
181913772023-09-22 12:27:232 days 6 hrs ago1695385643
Anchor Protocol: Rewards Liquidator 2
0.27600545 ETH
181842332023-09-21 12:24:593 days 6 hrs ago1695299099
Anchor Protocol: Rewards Liquidator 2
0.28691114 ETH
181842332023-09-21 12:24:593 days 6 hrs ago1695299099
Anchor Protocol: Rewards Liquidator 2
0.28691114 ETH
181770732023-09-20 12:22:474 days 6 hrs ago1695212567
Anchor Protocol: Rewards Liquidator 2
0.28934429 ETH
181770732023-09-20 12:22:474 days 6 hrs ago1695212567
Anchor Protocol: Rewards Liquidator 2
0.28934429 ETH
181699272023-09-19 12:22:355 days 6 hrs ago1695126155
Anchor Protocol: Rewards Liquidator 2
0.2848815 ETH
181699272023-09-19 12:22:355 days 6 hrs ago1695126155
Anchor Protocol: Rewards Liquidator 2
0.2848815 ETH
181627962023-09-18 12:22:236 days 6 hrs ago1695039743
Anchor Protocol: Rewards Liquidator 2
0.26628018 ETH
181627962023-09-18 12:22:236 days 6 hrs ago1695039743
Anchor Protocol: Rewards Liquidator 2
0.26628018 ETH
181557292023-09-17 12:23:477 days 6 hrs ago1694953427
Anchor Protocol: Rewards Liquidator 2
0.25368587 ETH
181557292023-09-17 12:23:477 days 6 hrs ago1694953427
Anchor Protocol: Rewards Liquidator 2
0.25368587 ETH
181486942023-09-16 12:26:118 days 6 hrs ago1694867171
Anchor Protocol: Rewards Liquidator 2
0.26936703 ETH
181486942023-09-16 12:26:118 days 6 hrs ago1694867171
Anchor Protocol: Rewards Liquidator 2
0.26936703 ETH
181415972023-09-15 12:23:359 days 6 hrs ago1694780615
Anchor Protocol: Rewards Liquidator 2
0.28033185 ETH
181415972023-09-15 12:23:359 days 6 hrs ago1694780615
Anchor Protocol: Rewards Liquidator 2
0.28033185 ETH
181345012023-09-14 12:24:2310 days 6 hrs ago1694694263
Anchor Protocol: Rewards Liquidator 2
0.26767655 ETH
181345012023-09-14 12:24:2310 days 6 hrs ago1694694263
Anchor Protocol: Rewards Liquidator 2
0.26767655 ETH
181273602023-09-13 12:23:4711 days 6 hrs ago1694607827
Anchor Protocol: Rewards Liquidator 2
0.28724522 ETH
181273602023-09-13 12:23:4711 days 6 hrs ago1694607827
Anchor Protocol: Rewards Liquidator 2
0.28724522 ETH
181202342023-09-12 12:24:4712 days 6 hrs ago1694521487
Anchor Protocol: Rewards Liquidator 2
0.3217613 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
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.