POL Price: $0.702979 (+1.19%)
 

Overview

POL Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo0 POL

POL Value

$0.00

Token Holdings

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Set_old_implemen...452619802023-07-19 10:59:06506 days ago1689764346IN
Curve.fi: Tricrypto LP Burner
0 POL0.00470258101.58311905
Set_token452619732023-07-19 10:58:52506 days ago1689764332IN
Curve.fi: Tricrypto LP Burner
0 POL0.00465952100.70294173

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Tricrypto LP Burner

Compiler Version
vyper:0.3.7

Optimization Enabled:
N/A

Other Settings:
None license

Contract Source Code (Vyper language format)

# @version 0.3.7
"""
@title Tricrypto LP Burner
@notice Withdraws Tricrypto LP tokens
"""


interface ERC20:
    def transfer(_to: address, _value: uint256) -> bool: nonpayable
    def transferFrom(_from: address, _to: address, _value: uint256) -> bool: nonpayable
    def balanceOf(_owner: address) -> uint256: view
    def decimals() -> uint256: view
    def totalSupply() -> uint256: view

interface CryptoSwap:
    def remove_liquidity_one_coin(token_amount: uint256, i: uint256, min_amount: uint256,
                                  use_eth: bool = False, receiver: address = msg.sender) -> uint256: nonpayable
    def coins(_i: uint256) -> address: view
    def price_oracle(_i: uint256) -> uint256: view
    def lp_price() -> uint256: view
    def balances(_i: uint256) -> uint256: view

interface OldCryptoSwap:
    def remove_liquidity_one_coin(token_amount: uint256, i: uint256, min_amount: uint256): nonpayable

interface PoolProxy:
    def burners(_coin: address) -> address: view

interface LP:
    def minter() -> address: view


ETH_ADDRESS: constant(address) = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
BPS: constant(uint256) = 10000

slippage_of: public(HashMap[address, uint256])
priority_of: public(HashMap[address, uint256])
receiver_of: public(HashMap[address, address])
is_token: public(HashMap[address, bool])
old_implementation: public(HashMap[address, bool])

pool_proxy: public(address)
slippage: public(uint256)
receiver: public(address)
recovery: public(address)

owner: public(address)
future_owner: public(address)


@external
def __init__(_pool_proxy: address):
    """
    @notice Contract constructor
    @param _pool_proxy Address of pool owner proxy
    """
    self.pool_proxy = _pool_proxy
    self.receiver = _pool_proxy
    self.recovery = _pool_proxy
    self.owner = msg.sender

    self.slippage = 100  # 1%
    self.priority_of[0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174] = 64  # USDC
    self.priority_of[0xE7a24EF0C5e95Ffb0f6684b813A78F2a3AD7D171] = 56  # am3crv
    self.priority_of[0xdAD97F7713Ae9437fa9249920eC8507e5FbB23d3] = 48  # tricrypto


@payable
@external
def __default__():
    # required to receive ether during intermediate swaps
    pass


@internal
def _transfer_out(_coin: ERC20, _receiver: address):
    if _coin.address == ETH_ADDRESS:
        raw_call(_receiver, b"", value=self.balance)
    else:
        assert _coin.transfer(
            _receiver, _coin.balanceOf(self), default_return_value=True
        )  # safe transfer


@internal
def _get_price(_token: ERC20, _swap: address, _i: uint256, _coins: address[3], _old_implementation: bool) -> uint256:
    price: uint256 = 10 ** 18
    if _old_implementation:
        sum: uint256 = CryptoSwap(_swap).balances(0) * 10 ** (18 - ERC20(_coins[0]).decimals())
        for i in range(1, 3):
            sum += CryptoSwap(_swap).balances(i) * 10 ** (18 - ERC20(_coins[i]).decimals()) * CryptoSwap(_swap).price_oracle(i - 1) / 10 ** 18
        price = sum * 10 ** 18 / _token.totalSupply()  # simple approximation
    else:
        price = CryptoSwap(_swap).lp_price()
    if _i > 0:
        price = price * 10 ** 18 / CryptoSwap(_swap).price_oracle(_i - 1)
    price /= 10 ** (18 - ERC20(_coins[_i]).decimals())

    return price


@internal
def _burn(_coin: address, _amount: uint256):
    swap: address = _coin
    if self.is_token[_coin]:
        swap = LP(_coin).minter()
    coins: address[3] = [CryptoSwap(swap).coins(0), CryptoSwap(swap).coins(1), CryptoSwap(swap).coins(2)]
    priorities: uint256[3] = [self.priority_of[coins[0]], self.priority_of[coins[1]], self.priority_of[coins[2]]]
    assert priorities[0] > 0 or priorities[1] > 0 or priorities[2] > 0  # dev: unknown coins

    i: uint256 = 0
    if priorities[1] > priorities[i]:
        i = 1
    if priorities[2] > priorities[i]:
        i = 2

    is_old: bool = self.old_implementation[_coin]
    min_amount: uint256 = _amount * self._get_price(ERC20(_coin), swap, i, coins, is_old) / 10 ** 18

    slippage: uint256 = self.slippage_of[swap]
    if slippage == 0:
        slippage = self.slippage
    min_amount -= min_amount * slippage / BPS

    receiver: address = self.receiver_of[coins[i]]
    if receiver == ZERO_ADDRESS:
        receiver = self.receiver

    if is_old:
        print(min_amount, hardhat_compat=True)
        OldCryptoSwap(swap).remove_liquidity_one_coin(_amount, i, min_amount)
        self._transfer_out(ERC20(coins[i]), receiver)
    else:
        CryptoSwap(swap).remove_liquidity_one_coin(_amount, i, min_amount, True, receiver)


@external
def burn(_coin: address) -> bool:
    """
    @notice Convert `_coin` by removing liquidity
    @param _coin Address of the coin(swap) being converted
    @return bool success
    """
    # transfer coins from caller
    amount: uint256 = ERC20(_coin).balanceOf(msg.sender)
    if amount != 0:
        ERC20(_coin).transferFrom(msg.sender, self, amount)

    # get actual balance in case of pre-existing balance
    amount = ERC20(_coin).balanceOf(self)

    if amount != 0:
        self._burn(_coin, amount)

    return True


@external
def burn_amount(_coin: address, _amount_to_burn: uint256):
    """
    @notice Burn a specific quantity of `_coin`
    @dev Useful when the total amount to burn is so large that it fails from slippage
    @param _coin Address of the coin being converted
    @param _amount_to_burn Amount of the coin to burn
    """
    pool_proxy: address = self.pool_proxy
    amount: uint256 = ERC20(_coin).balanceOf(pool_proxy)
    if PoolProxy(pool_proxy).burners(_coin) == self and amount != 0:
        ERC20(_coin).transferFrom(pool_proxy, self, amount)

    amount = ERC20(_coin).balanceOf(self)
    assert amount >= _amount_to_burn, "Insufficient balance"

    self._burn(_coin, _amount_to_burn)


@external
def set_priority_of(_coin: address, _priority: uint256):
    """
    @notice Set priority of a coin
    @dev Bigger value means higher priority
    @param _coin Token address
    @param _priority Token priority
    """
    assert msg.sender == self.owner  # dev: only owner
    self.priority_of[_coin] = _priority


@external
def set_many_priorities(_coins: address[8], _priorities: uint256[8]):
    """
    @notice Set priority of many coins
    @dev Bigger value means higher priority
    @param _coins Token addresses
    @param _priorities Token priorities
    """
    assert msg.sender == self.owner  # dev: only owner
    for i in range(8):
        coin: address = _coins[i]
        if coin == ZERO_ADDRESS:
            break
        self.priority_of[coin] = _priorities[i]


@external
def set_slippage_of(_coin: address, _slippage: uint256):
    """
    @notice Set custom slippage limit of a coin
    @dev Using self.slippage by default
    @param _coin Token address
    @param _slippage Slippage in bps for pool of token
    """
    assert msg.sender == self.owner  # dev: only owner
    assert _slippage <= BPS  # dev: slippage too high
    self.slippage_of[_coin] = _slippage


@external
def set_many_slippages(_coins: address[8], _slippages: uint256[8]):
    """
    @notice Set custom slippage limit of a coin
    @dev Using self.slippage by default
    @param _coins Token addresses
    @param _slippages Slippages in bps for each pool of token
    """
    assert msg.sender == self.owner  # dev: only owner
    for i in range(8):
        coin: address = _coins[i]
        if coin == ZERO_ADDRESS:
            break
        assert _slippages[i] <= BPS  # dev: slippage too high
        self.slippage_of[coin] = _slippages[i]


@external
def set_slippage(_slippage: uint256):
    """
    @notice Set default slippage parameter
    @param _slippage Slippage value in bps
    """
    assert msg.sender == self.owner  # dev: only owner
    assert _slippage <= BPS  # dev: slippage too high
    self.slippage = _slippage


@external
def set_receiver_of(_coin: address, _receiver: address):
    """
    @notice Set receiver of a coin
    @dev Using self.receiver by default
    @param _coin Token address
    @param _receiver Receiver of a token
    """
    assert msg.sender == self.owner  # dev: only owner
    self.receiver_of[_coin] = _receiver


@external
def set_many_receivers(_coins: address[8], _receivers: address[8]):
    """
    @notice Set receivers of many coins
    @dev Using self.receiver by default
    @param _coins Token addresses
    @param _receivers Receivers of each token
    """
    assert msg.sender == self.owner  # dev: only owner
    for i in range(8):
        coin: address = _coins[i]
        if coin == ZERO_ADDRESS:
            break
        self.receiver_of[coin] = _receivers[i]


@external
def set_receiver(_receiver: address):
    """
    @notice Set default receiver
    @param _receiver Address of default receiver
    """
    assert msg.sender == self.owner  # dev: only owner
    self.receiver = _receiver


@external
def set_token(_token: address, _is: bool):
    """
    @notice Set LP tokens that are not pools
    @param _token Token address
    @param _is True if _token is LP
    """
    assert msg.sender == self.owner  # dev: only owner
    self.is_token[_token] = _is


@external
def set_old_implementation(_token: address, _is: bool):
    """
    @notice Set old implementations of LP tokens
    @param _token Token address
    @param _is True if _token is for old implementation
    """
    assert msg.sender == self.owner  # dev: only owner
    self.old_implementation[_token] = _is


@external
def recover_balance(_coin: address) -> bool:
    """
    @notice Recover ERC20 tokens from this contract
    @dev Tokens are sent to the recovery address
    @param _coin Token address
    @return bool success
    """
    assert msg.sender == self.owner  # dev: only owner

    amount: uint256 = ERC20(_coin).balanceOf(self)
    response: Bytes[32] = raw_call(
        _coin,
        _abi_encode(self.recovery, amount, method_id=method_id("transfer(address,uint256)")),
        max_outsize=32,
    )
    if len(response) != 0:
        assert convert(response, bool)

    return True


@external
def set_recovery(_recovery: address) -> bool:
    """
    @notice Set the token recovery address
    @param _recovery Token recovery address
    @return bool success
    """
    assert msg.sender == self.owner  # dev: only owner
    self.recovery = _recovery

    return True


@external
def commit_transfer_ownership(_future_owner: address) -> bool:
    """
    @notice Commit a transfer of ownership
    @dev Must be accepted by the new owner via `accept_transfer_ownership`
    @param _future_owner New owner address
    @return bool success
    """
    assert msg.sender == self.owner  # dev: only owner
    self.future_owner = _future_owner

    return True


@external
def accept_transfer_ownership() -> bool:
    """
    @notice Accept a transfer of ownership
    @return bool success
    """
    assert msg.sender == self.future_owner  # dev: only owner
    self.owner = msg.sender

    return True

Contract Security Audit

Contract ABI

[{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_pool_proxy","type":"address"}],"outputs":[]},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"nonpayable","type":"function","name":"burn","inputs":[{"name":"_coin","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"burn_amount","inputs":[{"name":"_coin","type":"address"},{"name":"_amount_to_burn","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_priority_of","inputs":[{"name":"_coin","type":"address"},{"name":"_priority","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_many_priorities","inputs":[{"name":"_coins","type":"address[8]"},{"name":"_priorities","type":"uint256[8]"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_slippage_of","inputs":[{"name":"_coin","type":"address"},{"name":"_slippage","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_many_slippages","inputs":[{"name":"_coins","type":"address[8]"},{"name":"_slippages","type":"uint256[8]"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_slippage","inputs":[{"name":"_slippage","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_receiver_of","inputs":[{"name":"_coin","type":"address"},{"name":"_receiver","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_many_receivers","inputs":[{"name":"_coins","type":"address[8]"},{"name":"_receivers","type":"address[8]"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_receiver","inputs":[{"name":"_receiver","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_token","inputs":[{"name":"_token","type":"address"},{"name":"_is","type":"bool"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_old_implementation","inputs":[{"name":"_token","type":"address"},{"name":"_is","type":"bool"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"recover_balance","inputs":[{"name":"_coin","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"set_recovery","inputs":[{"name":"_recovery","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"commit_transfer_ownership","inputs":[{"name":"_future_owner","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"accept_transfer_ownership","inputs":[],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"slippage_of","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"priority_of","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"receiver_of","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"is_token","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"old_implementation","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"pool_proxy","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"slippage","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"receiver","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"recovery","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"future_owner","inputs":[],"outputs":[{"name":"","type":"address"}]}]

60206116356000396000518060a01c61163057604052346116305760405160055560405160075560405160085533600955606460065560406001732791bca1f2de4661ed88a30c99a7a9449aa841746020526000526040600020556038600173e7a24ef0c5e95ffb0f6684b813a78f2a3ad7d1716020526000526040600020556030600173dad97f7713ae9437fa9249920ec8507e5fbb23d36020526000526040600020556115796100b661000039611579610000f36003361161000c57610c87565b60003560e01c6389afcb44811861014b5760243610611567576004358060a01c611567576104c05234611567576104c0516370a082316105005233610520526020610500602461051c845afa610067573d600060003e3d6000fd5b60203d10611567576105009050516104e0526104e051156100dd576104c0516323b872dd61050052336105205230610540526104e051610560526020610500606461051c6000855af16100bf573d600060003e3d6000fd5b60203d1061156757610500518060011c611567576105805261058050505b6104c0516370a082316105005230610520526020610500602461051c845afa61010b573d600060003e3d6000fd5b60203d10611567576105009050516104e0526104e0511561013e576104c051610240526104e0516102605261013e61112c565b6001610500526020610500f35b637afb0ed1811861034e5760443610611567576004358060a01c611567576104c05234611567576005546104e0526104c0516370a08231610520526104e051610540526020610520602461053c845afa6101aa573d600060003e3d6000fd5b60203d106115675761052090505161050052306104e0516303d41e0e610520526104c051610540526020610520602461053c845afa6101ee573d600060003e3d6000fd5b60203d1061156757610520518060a01c61156757610560526105609050511861021c5761050051151561021f565b60005b15610282576104c0516323b872dd610580526104e0516105a052306105c052610500516105e0526020610580606461059c6000855af1610264573d600060003e3d6000fd5b60203d1061156757610580518060011c611567576106005261060050505b6104c0516370a082316105205230610540526020610520602461053c845afa6102b0573d600060003e3d6000fd5b60203d106115675761052090505161050052602435610500511015610335576014610520527f496e73756666696369656e742062616c616e63650000000000000000000000006105405261052050610520518061054001601f826000031636823750506308c379a06104e052602061050052601f19601f6105205101166044016104fcfd5b6104c051610240526024356102605261034c61112c565b005b6340cfa09981186103935760443610611567576004358060a01c6115675760405234611567576009543318611567576024356001604051602052600052604060002055005b63820bd888811861048b576102043610611567576004358060a01c611567576040526024358060a01c611567576060526044358060a01c611567576080526064358060a01c6115675760a0526084358060a01c6115675760c05260a4358060a01c6115675760e05260c4358060a01c611567576101005260e4358060a01c6115675761012052346115675760095433186115675760006008905b806101405261014051600781116115675760051b60400151610160526101605161045657610487565b61014051600781116115675760051b610104013560016101605160205260005260406000205560010181811861042d575b5050005b6351b9c55b81186104db5760443610611567576004358060a01c61156757604052346115675760095433186115675761271060243511611567576024356000604051602052600052604060002055005b63629404ed81186105ef576102043610611567576004358060a01c611567576040526024358060a01c611567576060526044358060a01c611567576080526064358060a01c6115675760a0526084358060a01c6115675760c05260a4358060a01c6115675760e05260c4358060a01c611567576101005260e4358060a01c6115675761012052346115675760095433186115675760006008905b806101405261014051600781116115675760051b60400151610160526101605161059e576105eb565b61271061014051600781116115675760051b6101040135116115675761014051600781116115675760051b6101040135600061016051602052600052604060002055600101818118610575575b5050005b638edd69ec811861062357602436106115675734611567576009543318611567576127106004351161156757600435600655005b63c24240c481186106765760443610611567576004358060a01c611567576040526024358060a01c6115675760605234611567576009543318611567576060516002604051602052600052604060002055005b63e6a7199a81186107ee576102043610611567576004358060a01c611567576040526024358060a01c611567576060526044358060a01c611567576080526064358060a01c6115675760a0526084358060a01c6115675760c05260a4358060a01c6115675760e05260c4358060a01c611567576101005260e4358060a01c6115675761012052610104358060a01c6115675761014052610124358060a01c6115675761016052610144358060a01c6115675761018052610164358060a01c611567576101a052610184358060a01c611567576101c0526101a4358060a01c611567576101e0526101c4358060a01c61156757610200526101e4358060a01c6115675761022052346115675760095433186115675760006008905b806102405261024051600781116115675760051b6040015161026052610260516107b9576107ea565b61024051600781116115675760051b6101400151600261026051602052600052604060002055600101818118610790575b5050005b63d1dd6f5681186108255760243610611567576004358060a01c611567576040523461156757600954331861156757604051600755005b63672f616881186108785760443610611567576004358060a01c611567576040526024358060011c6115675760605234611567576009543318611567576060516003604051602052600052604060002055005b638c0b58bb81186108cb5760443610611567576004358060a01c611567576040526024358060011c6115675760605234611567576009543318611567576060516004604051602052600052604060002055005b63db2f5f7981186109bd5760243610611567576004358060a01c6115675760405234611567576009543318611567576040516370a082316080523060a052602060806024609c845afa610923573d600060003e3d6000fd5b60203d1061156757608090505160605263a9059cbb60c452600460085460e4526060516101045260400160c05260c050602061016060c05160e060006040515af1610973573d600060003e3d6000fd5b3d602081183d60201002186101405261014080518060805260208201805160a052505050608051156109b25760a05160805160200360031b1c15611567575b600160c052602060c0f35b635dc659b081186109fd5760243610611567576004358060a01c611567576040523461156757600954331861156757604051600855600160605260206060f35b636b441a408118610a3d5760243610611567576004358060a01c611567576040523461156757600954331861156757604051600a55600160605260206060f35b63e5ea47b88118610a6d5760043610611567573461156757600a5433186115675733600955600160405260206040f35b63b450efbd8118610aad5760243610611567576004358060a01c611567576040523461156757600060405160205260005260406000205460605260206060f35b6358fe27ec8118610aed5760243610611567576004358060a01c611567576040523461156757600160405160205260005260406000205460605260206060f35b63c25085f28118610b2d5760243610611567576004358060a01c611567576040523461156757600260405160205260005260406000205460605260206060f35b63bcacc18f8118610b6d5760243610611567576004358060a01c611567576040523461156757600360405160205260005260406000205460605260206060f35b63e0a42db68118610bad5760243610611567576004358060a01c611567576040523461156757600460405160205260005260406000205460605260206060f35b6391db89f38118610bd1576004361061156757346115675760055460405260206040f35b633e032a3b8118610bf5576004361061156757346115675760065460405260206040f35b63f7260d3e8118610c19576004361061156757346115675760075460405260206040f35b63ddceafa98118610c3d576004361061156757346115675760085460405260206040f35b638da5cb5b8118610c61576004361061156757346115675760095460405260206040f35b631ec0cdc18118610c855760043610611567573461156757600a5460405260206040f35b505b005b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60405118610cd05760006080526080506000600060805160a0476060515af1610d72573d600060003e3d6000fd610d72565b60405163a9059cbb60c05260605160e0526040516370a082316080523060a052602060806024609c845afa610d0a573d600060003e3d6000fd5b60203d1061156757608090505161010052602060c0604460dc6000855af1610d37573d600060003e3d6000fd5b3d610d4e57803b1561156757600161012052610d66565b60203d106115675760c0518060011c61156757610120525b61012090505115611567575b565b670de0b6b3a76400006101205261010051610dc8576060516354f0f7d5610140526020610140600461015c845afa610db1573d600060003e3d6000fd5b60203d106115675761014090505161012052611027565b606051634903b0d1610160526000610180526020610160602461017c845afa610df6573d600060003e3d6000fd5b60203d106115675761016090505160a05163313ce5676101a05260206101a060046101bc845afa610e2c573d600060003e3d6000fd5b60203d10611567576101a09050518060120360128111611567579050604d81116115675780600a0a9050808202811583838304141715611567579050905061014052600160028101905b806101605261014051606051634903b0d161018052610160516101a0526020610180602461019c845afa610eaf573d600060003e3d6000fd5b60203d106115675761018090505161016051600281116115675760051b60a0015163313ce5676101c05260206101c060046101dc845afa610ef5573d600060003e3d6000fd5b60203d10611567576101c09050518060120360128111611567579050604d81116115675780600a0a905080820281158383830414171561156757905090506060516368727653610200526101605160018103818111611567579050610220526020610200602461021c845afa610f70573d600060003e3d6000fd5b60203d10611567576102009050518082028115838383041417156115675790509050670de0b6b3a764000081049050808201828110611567579050905061014052600101818118610e7657505061014051670de0b6b3a7640000810281670de0b6b3a76400008204186115675790506040516318160ddd610160526020610160600461017c845afa611007573d600060003e3d6000fd5b60203d106115675761016090505180156115675780820490509050610120525b608051156110ad5761012051670de0b6b3a7640000810281670de0b6b3a764000082041861156757905060605163687276536101405260805160018103818111611567579050610160526020610140602461015c845afa61108d573d600060003e3d6000fd5b60203d106115675761014090505180156115675780820490509050610120525b61012051608051600281116115675760051b60a0015163313ce567610140526020610140600461015c845afa6110e8573d600060003e3d6000fd5b60203d10611567576101409050518060120360128111611567579050604d81116115675780600a0a9050801561156757808204905090506101205261012051815250565b610240516102805260036102405160205260005260406000205415611197576102405163075461726102a05260206102a060046102bc845afa611174573d600060003e3d6000fd5b60203d10611567576102a0518060a01c611567576102e0526102e0905051610280525b6102805163c6610657610300526000610320526020610300602461031c845afa6111c6573d600060003e3d6000fd5b60203d1061156757610300518060a01c61156757610340526103409050516102a0526102805163c6610657610360526001610380526020610360602461037c845afa611217573d600060003e3d6000fd5b60203d1061156757610360518060a01c611567576103a0526103a09050516102c0526102805163c66106576103c05260026103e05260206103c060246103dc845afa611268573d600060003e3d6000fd5b60203d10611567576103c0518060a01c61156757610400526104009050516102e05260016102a0516020526000526040600020546103005260016102c0516020526000526040600020546103205260016102e0516020526000526040600020546103405261030051156112dc5760016112f3565b61032051156112ec5760016112f3565b6103405115155b156115675760006103605261036051600281116115675760051b6103000151610320511115611323576001610360525b61036051600281116115675760051b6103000151610340511115611348576002610360525b60046102405160205260005260406000205461038052610260516102405160405261028051606052610360516080526102a05160a0526102c05160c0526102e05160e052610380516101005261139f6103c0610d74565b6103c0518082028115838383041417156115675790509050670de0b6b3a7640000810490506103a0526000610280516020526000526040600020546103c0526103c0516113ee576006546103c0525b6103a0516103a0516103c05180820281158383830414171561156757905090506127108104905080820382811161156757905090506103a052600261036051600281116115675760051b6102a001516020526000526040600020546103e0526103e05161145d576007546103e0525b610380516114c857610280516307329bcd61040052610260516104205261036051610440526103a051610460526001610480526103e0516104a052602061040060a461041c6000855af16114b6573d600060003e3d6000fd5b60203d10611567576104005050611565565b63f82c50f161040052600060006103a05161042052602060040161041c6a636f6e736f6c652e6c6f675afa506102805163f1dc3cc961040052610260516104205261036051610440526103a05161046052803b15611567576000610400606461041c6000855af161153e573d600060003e3d6000fd5b5061036051600281116115675760051b6102a001516040526103e051606052611565610c89565b565b600080fda165767970657283000307000b005b600080fd000000000000000000000000774d1dba98cfbd1f2bc3a1f59c494125e07c48f9

Deployed Bytecode

0x6003361161000c57610c87565b60003560e01c6389afcb44811861014b5760243610611567576004358060a01c611567576104c05234611567576104c0516370a082316105005233610520526020610500602461051c845afa610067573d600060003e3d6000fd5b60203d10611567576105009050516104e0526104e051156100dd576104c0516323b872dd61050052336105205230610540526104e051610560526020610500606461051c6000855af16100bf573d600060003e3d6000fd5b60203d1061156757610500518060011c611567576105805261058050505b6104c0516370a082316105005230610520526020610500602461051c845afa61010b573d600060003e3d6000fd5b60203d10611567576105009050516104e0526104e0511561013e576104c051610240526104e0516102605261013e61112c565b6001610500526020610500f35b637afb0ed1811861034e5760443610611567576004358060a01c611567576104c05234611567576005546104e0526104c0516370a08231610520526104e051610540526020610520602461053c845afa6101aa573d600060003e3d6000fd5b60203d106115675761052090505161050052306104e0516303d41e0e610520526104c051610540526020610520602461053c845afa6101ee573d600060003e3d6000fd5b60203d1061156757610520518060a01c61156757610560526105609050511861021c5761050051151561021f565b60005b15610282576104c0516323b872dd610580526104e0516105a052306105c052610500516105e0526020610580606461059c6000855af1610264573d600060003e3d6000fd5b60203d1061156757610580518060011c611567576106005261060050505b6104c0516370a082316105205230610540526020610520602461053c845afa6102b0573d600060003e3d6000fd5b60203d106115675761052090505161050052602435610500511015610335576014610520527f496e73756666696369656e742062616c616e63650000000000000000000000006105405261052050610520518061054001601f826000031636823750506308c379a06104e052602061050052601f19601f6105205101166044016104fcfd5b6104c051610240526024356102605261034c61112c565b005b6340cfa09981186103935760443610611567576004358060a01c6115675760405234611567576009543318611567576024356001604051602052600052604060002055005b63820bd888811861048b576102043610611567576004358060a01c611567576040526024358060a01c611567576060526044358060a01c611567576080526064358060a01c6115675760a0526084358060a01c6115675760c05260a4358060a01c6115675760e05260c4358060a01c611567576101005260e4358060a01c6115675761012052346115675760095433186115675760006008905b806101405261014051600781116115675760051b60400151610160526101605161045657610487565b61014051600781116115675760051b610104013560016101605160205260005260406000205560010181811861042d575b5050005b6351b9c55b81186104db5760443610611567576004358060a01c61156757604052346115675760095433186115675761271060243511611567576024356000604051602052600052604060002055005b63629404ed81186105ef576102043610611567576004358060a01c611567576040526024358060a01c611567576060526044358060a01c611567576080526064358060a01c6115675760a0526084358060a01c6115675760c05260a4358060a01c6115675760e05260c4358060a01c611567576101005260e4358060a01c6115675761012052346115675760095433186115675760006008905b806101405261014051600781116115675760051b60400151610160526101605161059e576105eb565b61271061014051600781116115675760051b6101040135116115675761014051600781116115675760051b6101040135600061016051602052600052604060002055600101818118610575575b5050005b638edd69ec811861062357602436106115675734611567576009543318611567576127106004351161156757600435600655005b63c24240c481186106765760443610611567576004358060a01c611567576040526024358060a01c6115675760605234611567576009543318611567576060516002604051602052600052604060002055005b63e6a7199a81186107ee576102043610611567576004358060a01c611567576040526024358060a01c611567576060526044358060a01c611567576080526064358060a01c6115675760a0526084358060a01c6115675760c05260a4358060a01c6115675760e05260c4358060a01c611567576101005260e4358060a01c6115675761012052610104358060a01c6115675761014052610124358060a01c6115675761016052610144358060a01c6115675761018052610164358060a01c611567576101a052610184358060a01c611567576101c0526101a4358060a01c611567576101e0526101c4358060a01c61156757610200526101e4358060a01c6115675761022052346115675760095433186115675760006008905b806102405261024051600781116115675760051b6040015161026052610260516107b9576107ea565b61024051600781116115675760051b6101400151600261026051602052600052604060002055600101818118610790575b5050005b63d1dd6f5681186108255760243610611567576004358060a01c611567576040523461156757600954331861156757604051600755005b63672f616881186108785760443610611567576004358060a01c611567576040526024358060011c6115675760605234611567576009543318611567576060516003604051602052600052604060002055005b638c0b58bb81186108cb5760443610611567576004358060a01c611567576040526024358060011c6115675760605234611567576009543318611567576060516004604051602052600052604060002055005b63db2f5f7981186109bd5760243610611567576004358060a01c6115675760405234611567576009543318611567576040516370a082316080523060a052602060806024609c845afa610923573d600060003e3d6000fd5b60203d1061156757608090505160605263a9059cbb60c452600460085460e4526060516101045260400160c05260c050602061016060c05160e060006040515af1610973573d600060003e3d6000fd5b3d602081183d60201002186101405261014080518060805260208201805160a052505050608051156109b25760a05160805160200360031b1c15611567575b600160c052602060c0f35b635dc659b081186109fd5760243610611567576004358060a01c611567576040523461156757600954331861156757604051600855600160605260206060f35b636b441a408118610a3d5760243610611567576004358060a01c611567576040523461156757600954331861156757604051600a55600160605260206060f35b63e5ea47b88118610a6d5760043610611567573461156757600a5433186115675733600955600160405260206040f35b63b450efbd8118610aad5760243610611567576004358060a01c611567576040523461156757600060405160205260005260406000205460605260206060f35b6358fe27ec8118610aed5760243610611567576004358060a01c611567576040523461156757600160405160205260005260406000205460605260206060f35b63c25085f28118610b2d5760243610611567576004358060a01c611567576040523461156757600260405160205260005260406000205460605260206060f35b63bcacc18f8118610b6d5760243610611567576004358060a01c611567576040523461156757600360405160205260005260406000205460605260206060f35b63e0a42db68118610bad5760243610611567576004358060a01c611567576040523461156757600460405160205260005260406000205460605260206060f35b6391db89f38118610bd1576004361061156757346115675760055460405260206040f35b633e032a3b8118610bf5576004361061156757346115675760065460405260206040f35b63f7260d3e8118610c19576004361061156757346115675760075460405260206040f35b63ddceafa98118610c3d576004361061156757346115675760085460405260206040f35b638da5cb5b8118610c61576004361061156757346115675760095460405260206040f35b631ec0cdc18118610c855760043610611567573461156757600a5460405260206040f35b505b005b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60405118610cd05760006080526080506000600060805160a0476060515af1610d72573d600060003e3d6000fd610d72565b60405163a9059cbb60c05260605160e0526040516370a082316080523060a052602060806024609c845afa610d0a573d600060003e3d6000fd5b60203d1061156757608090505161010052602060c0604460dc6000855af1610d37573d600060003e3d6000fd5b3d610d4e57803b1561156757600161012052610d66565b60203d106115675760c0518060011c61156757610120525b61012090505115611567575b565b670de0b6b3a76400006101205261010051610dc8576060516354f0f7d5610140526020610140600461015c845afa610db1573d600060003e3d6000fd5b60203d106115675761014090505161012052611027565b606051634903b0d1610160526000610180526020610160602461017c845afa610df6573d600060003e3d6000fd5b60203d106115675761016090505160a05163313ce5676101a05260206101a060046101bc845afa610e2c573d600060003e3d6000fd5b60203d10611567576101a09050518060120360128111611567579050604d81116115675780600a0a9050808202811583838304141715611567579050905061014052600160028101905b806101605261014051606051634903b0d161018052610160516101a0526020610180602461019c845afa610eaf573d600060003e3d6000fd5b60203d106115675761018090505161016051600281116115675760051b60a0015163313ce5676101c05260206101c060046101dc845afa610ef5573d600060003e3d6000fd5b60203d10611567576101c09050518060120360128111611567579050604d81116115675780600a0a905080820281158383830414171561156757905090506060516368727653610200526101605160018103818111611567579050610220526020610200602461021c845afa610f70573d600060003e3d6000fd5b60203d10611567576102009050518082028115838383041417156115675790509050670de0b6b3a764000081049050808201828110611567579050905061014052600101818118610e7657505061014051670de0b6b3a7640000810281670de0b6b3a76400008204186115675790506040516318160ddd610160526020610160600461017c845afa611007573d600060003e3d6000fd5b60203d106115675761016090505180156115675780820490509050610120525b608051156110ad5761012051670de0b6b3a7640000810281670de0b6b3a764000082041861156757905060605163687276536101405260805160018103818111611567579050610160526020610140602461015c845afa61108d573d600060003e3d6000fd5b60203d106115675761014090505180156115675780820490509050610120525b61012051608051600281116115675760051b60a0015163313ce567610140526020610140600461015c845afa6110e8573d600060003e3d6000fd5b60203d10611567576101409050518060120360128111611567579050604d81116115675780600a0a9050801561156757808204905090506101205261012051815250565b610240516102805260036102405160205260005260406000205415611197576102405163075461726102a05260206102a060046102bc845afa611174573d600060003e3d6000fd5b60203d10611567576102a0518060a01c611567576102e0526102e0905051610280525b6102805163c6610657610300526000610320526020610300602461031c845afa6111c6573d600060003e3d6000fd5b60203d1061156757610300518060a01c61156757610340526103409050516102a0526102805163c6610657610360526001610380526020610360602461037c845afa611217573d600060003e3d6000fd5b60203d1061156757610360518060a01c611567576103a0526103a09050516102c0526102805163c66106576103c05260026103e05260206103c060246103dc845afa611268573d600060003e3d6000fd5b60203d10611567576103c0518060a01c61156757610400526104009050516102e05260016102a0516020526000526040600020546103005260016102c0516020526000526040600020546103205260016102e0516020526000526040600020546103405261030051156112dc5760016112f3565b61032051156112ec5760016112f3565b6103405115155b156115675760006103605261036051600281116115675760051b6103000151610320511115611323576001610360525b61036051600281116115675760051b6103000151610340511115611348576002610360525b60046102405160205260005260406000205461038052610260516102405160405261028051606052610360516080526102a05160a0526102c05160c0526102e05160e052610380516101005261139f6103c0610d74565b6103c0518082028115838383041417156115675790509050670de0b6b3a7640000810490506103a0526000610280516020526000526040600020546103c0526103c0516113ee576006546103c0525b6103a0516103a0516103c05180820281158383830414171561156757905090506127108104905080820382811161156757905090506103a052600261036051600281116115675760051b6102a001516020526000526040600020546103e0526103e05161145d576007546103e0525b610380516114c857610280516307329bcd61040052610260516104205261036051610440526103a051610460526001610480526103e0516104a052602061040060a461041c6000855af16114b6573d600060003e3d6000fd5b60203d10611567576104005050611565565b63f82c50f161040052600060006103a05161042052602060040161041c6a636f6e736f6c652e6c6f675afa506102805163f1dc3cc961040052610260516104205261036051610440526103a05161046052803b15611567576000610400606461041c6000855af161153e573d600060003e3d6000fd5b5061036051600281116115675760051b6102a001516040526103e051606052611565610c89565b565b600080fda165767970657283000307000b

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

000000000000000000000000774d1dba98cfbd1f2bc3a1f59c494125e07c48f9

-----Decoded View---------------
Arg [0] : _pool_proxy (address): 0x774D1Dba98cfBD1F2Bc3A1F59c494125e07C48F9

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000774d1dba98cfbd1f2bc3a1f59c494125e07c48f9


Block Transaction 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
[ 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.