ETH Price: $3,157.25 (+0.56%)
Gas: 2 Gwei

Contract

0xaa42C0CD9645A58dfeB699cCAeFBD30f19B1ff81
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Commit_transfer_...112789422020-11-18 1:24:321333 days ago1605662672IN
Curve.fi: LP Burner
0 ETH0.0032331976.00000145
Set_swap_data112789382020-11-18 1:23:311333 days ago1605662611IN
Curve.fi: LP Burner
0 ETH0.0152422480
0x6060610e112789342020-11-18 1:21:511333 days ago1605662511IN
 Create: Vyper_contract
0 ETH0.0501373455

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.2.7

Optimization Enabled:
N/A

Other Settings:
MIT license

Contract Source Code (Vyper language format)

# @version 0.2.7
"""
@title LP Burner
@notice Converts Curve LP tokens to a single asset and forwards to another burner
"""

from vyper.interfaces import ERC20


interface AddressProvider:
    def get_registry() -> address: view

interface Registry:
    def get_pool_from_lp_token(_lp_token: address) -> address: view
    def get_coins(_pool: address) -> address[8]: view

interface StableSwap:
    def remove_liquidity_one_coin(_amount: uint256, i: int128, _min_amount: uint256): nonpayable


struct SwapData:
    pool: address
    coin: address
    burner: address
    i: int128


ADDRESS_PROVIDER: constant(address) = 0x0000000022D53366457F9d5E68Ec105046FC4383


swap_data: public(HashMap[address, SwapData])
recovery: public(address)
is_killed: public(bool)

owner: public(address)
emergency_owner: public(address)
future_owner: public(address)
future_emergency_owner: public(address)


@external
def __init__(_recovery: address, _owner: address, _emergency_owner: address):
    """
    @notice Contract constructor
    @dev Unlike other burners, this contract may transfer tokens to
         multiple addresses after the swap. Receiver addresses are
         set by calling `set_swap_data` instead of setting it
         within the constructor.
    @param _recovery Address that tokens are transferred to during an
                     emergency token recovery.
    @param _owner Owner address. Can kill the contract, recover tokens
                  and modify the recovery address.
    @param _emergency_owner Emergency owner address. Can kill the contract
                            and recover tokens.
    """
    self.recovery = _recovery
    self.owner = _owner
    self.emergency_owner = _emergency_owner



@external
def burn(_coin: address) -> bool:
    """
    @notice Convert `_coin` by removing liquidity and transfer to another burner
    @param _coin Address of the coin being converted
    @return bool success
    """
    assert not self.is_killed  # dev: is killed

    # 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 transfer fee or pre-existing balance
    amount = ERC20(_coin).balanceOf(self)

    if amount != 0:
        # remove liquidity and pass to the next burner
        swap_data: SwapData = self.swap_data[_coin]
        StableSwap(swap_data.pool).remove_liquidity_one_coin(amount, swap_data.i, 0)

        amount = ERC20(swap_data.coin).balanceOf(self)
        response: Bytes[32] = raw_call(
            swap_data.coin,
            concat(
                method_id("transfer(address,uint256)"),
                convert(swap_data.burner, bytes32),
                convert(amount, bytes32),
            ),
            max_outsize=32,
        )
        if len(response) != 0:
            assert convert(response, bool)

    return True


@external
def set_swap_data(_lp_token: address, _coin: address, _burner: address) -> bool:
    """
    @notice Set conversion and transfer data for `_lp_token`
    @param _lp_token LP token address
    @param _coin Underlying coin to remove liquidity in
    @param _burner Burner to transfer `_coin` to
    @return bool success
    """
    assert msg.sender in [self.owner, self.emergency_owner]  # dev: only owner

    # if another burner was previous set, revoke approvals
    pool: address = self.swap_data[_lp_token].pool
    if pool != ZERO_ADDRESS:
        # we trust that LP tokens always return True, so no need for `raw_call`
        ERC20(_lp_token).approve(pool, 0)
    coin: address = self.swap_data[_lp_token].coin
    if coin != ZERO_ADDRESS:
        response: Bytes[32] = raw_call(
            _coin,
            concat(
                method_id("approve(address,uint256)"),
                convert(self.swap_data[_lp_token].burner, bytes32),
                convert(0, bytes32),
            ),
            max_outsize=32,
        )
        if len(response) != 0:
            assert convert(response, bool)

    # find `i` for `_coin` within the pool, approve transfers and save to storage
    registry: address = AddressProvider(ADDRESS_PROVIDER).get_registry()
    pool = Registry(registry).get_pool_from_lp_token(_lp_token)
    coins: address[8] = Registry(registry).get_coins(pool)
    for i in range(8):
        if coins[i] == ZERO_ADDRESS:
            raise
        if coins[i] == _coin:
            self.swap_data[_lp_token] = SwapData({
                pool: pool,
                coin: _coin,
                burner: _burner,
                i: i
            })
            ERC20(_lp_token).approve(pool, MAX_UINT256)
            response: Bytes[32] = raw_call(
                _coin,
                concat(
                    method_id("approve(address,uint256)"),
                    convert(_burner, bytes32),
                    convert(MAX_UINT256, bytes32),
                ),
                max_outsize=32,
            )
            if len(response) != 0:
                assert convert(response, bool)
            return True
    raise


@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 in [self.owner, self.emergency_owner]  # dev: only owner

    amount: uint256 = ERC20(_coin).balanceOf(self)
    response: Bytes[32] = raw_call(
        _coin,
        concat(
            method_id("transfer(address,uint256)"),
            convert(self.recovery, bytes32),
            convert(amount, bytes32),
        ),
        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 set_killed(_is_killed: bool) -> bool:
    """
    @notice Set killed status for this contract
    @dev When killed, the `burn` function cannot be called
    @param _is_killed Killed status
    @return bool success
    """
    assert msg.sender in [self.owner, self.emergency_owner]  # dev: only owner
    self.is_killed = _is_killed

    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


@external
def commit_transfer_emergency_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.emergency_owner  # dev: only owner
    self.future_emergency_owner = _future_owner

    return True


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

    return True

Contract Security Audit

Contract ABI

[{"outputs":[],"inputs":[{"type":"address","name":"_recovery"},{"type":"address","name":"_owner"},{"type":"address","name":"_emergency_owner"}],"stateMutability":"nonpayable","type":"constructor"},{"name":"burn","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_coin"}],"stateMutability":"nonpayable","type":"function","gas":12815},{"name":"set_swap_data","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_lp_token"},{"type":"address","name":"_coin"},{"type":"address","name":"_burner"}],"stateMutability":"nonpayable","type":"function","gas":1176690},{"name":"recover_balance","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_coin"}],"stateMutability":"nonpayable","type":"function","gas":7709},{"name":"set_recovery","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_recovery"}],"stateMutability":"nonpayable","type":"function","gas":36353},{"name":"set_killed","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"bool","name":"_is_killed"}],"stateMutability":"nonpayable","type":"function","gas":37610},{"name":"commit_transfer_ownership","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_future_owner"}],"stateMutability":"nonpayable","type":"function","gas":36413},{"name":"accept_transfer_ownership","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":36339},{"name":"commit_transfer_emergency_ownership","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_future_owner"}],"stateMutability":"nonpayable","type":"function","gas":36473},{"name":"accept_transfer_emergency_ownership","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":36399},{"name":"swap_data","outputs":[{"type":"address","name":"pool"},{"type":"address","name":"coin"},{"type":"address","name":"burner"},{"type":"int128","name":"i"}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":4744},{"name":"recovery","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1361},{"name":"is_killed","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1391},{"name":"owner","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1421},{"name":"emergency_owner","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1451},{"name":"future_owner","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1481},{"name":"future_emergency_owner","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1511}]

6060610ef9610140396020610ef960c03960c05160a01c1561002057600080fd5b60206020610ef90160c03960c05160a01c1561003b57600080fd5b60206040610ef90160c03960c05160a01c1561005657600080fd5b610140516001556101605160035561018051600455610ee156341561000a57600080fd5b600436101561001857610e6b565b600035601c526389afcb4460005114156103555760043560a01c1561003c57600080fd5b6002541561004957600080fd5b60206101e060246370a0823161016052336101805261017c6004355afa61006f57600080fd5b601f3d1161007c57600080fd5b6000506101e0516101405260006101405118156100dd57602061022060646323b872dd610160523361018052306101a052610140516101c05261017c60006004355af16100c857600080fd5b601f3d116100d557600080fd5b600050610220505b60206101e060246370a0823161016052306101805261017c6004355afa61010357600080fd5b601f3d1161011057600080fd5b6000506101e05161014052600061014051181561034857610160600060043560e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c020015482606001525050610160513b61018c57600080fd5b600060006064631a4d01d26101e05261014051610200526101c051610220526000610240526101fc6000610160515af16101c557600080fd5b602061026060246370a082316101e05230610200526101fc610180515afa6101ec57600080fd5b601f3d116101f957600080fd5b600050610260516101405260006004610240527fa9059cbb00000000000000000000000000000000000000000000000000000000610260526102406004806020846102a001018260208501600060045af15050805182019150506101a0516020826102a0010152602081019050610140516020826102a0010152602081019050806102a0526102a090508051602001806103408284600060045af161029d57600080fd5b50506020610400610340516103606000610180515af16102bc57600080fd5b60203d808211156102cd57806102cf565b815b905090506103e0526103e08051602001806101e08284600060045af16102f457600080fd5b505060006101e0511815610347576101e080602001516000825180602090131561031d57600080fd5b809190121561032b57600080fd5b806020036101000a8204905090509050151561034657600080fd5b5b5b600160005260206000f350005b63294a859e60005114156109695760043560a01c1561037357600080fd5b60243560a01c1561038357600080fd5b60443560a01c1561039357600080fd5b600354610160526004546101805260006101405261014061012060006002818352015b6101205160200261016001513314156103d257600183526103e3565b5b81516001018083528114156103b6575b505050610140516001146103f657600080fd5b600060043560e05260c052604060c02060c052602060c02054610140526000610140511815610465576020610200604463095ea7b361016052610140516101805260006101a05261017c60006004355af161045057600080fd5b601f3d1161045d57600080fd5b600050610200505b6001600060043560e05260c052604060c02060c052602060c02001546101605260006101605118156105ea57600060046101e0527f095ea7b300000000000000000000000000000000000000000000000000000000610200526101e060048060208461024001018260208501600060045af15050805182019150506002600060043560e05260c052604060c02060c052602060c02001546020826102400101526020810190506000602082610240010152602081019050806102405261024090508051602001806102e08284600060045af161054057600080fd5b505060206103a06102e05161030060006024355af161055e57600080fd5b60203d8082111561056f5780610571565b815b90509050610380526103808051602001806101808284600060045af161059657600080fd5b505060006101805118156105e9576101808060200151600082518060209013156105bf57600080fd5b80919012156105cd57600080fd5b806020036101000a820490509050905015156105e857600080fd5b5b5b6020610200600463a262904b6101a0526101bc6f22d53366457f9d5e68ec105046fc43835afa61061957600080fd5b601f3d1161062657600080fd5b60005061020051610180526020610220602463bdf475c36101a0526004356101c0526101bc610180515afa61065a57600080fd5b601f3d1161066757600080fd5b60005061022051610140526101006103206024639ac90d3d6102a052610140516102c0526102bc610180515afa61069d57600080fd5b60ff3d116106aa57600080fd5b60005061032080516101a05280602001516101c05280604001516101e0528060600151610200528060800151610220528060a00151610240528060c00151610260528060e0015161028052506102a060006008818352015b6101a06102a0516008811061071657600080fd5b602002015115156107275760006000fd5b6024356101a06102a0516008811061073e57600080fd5b6020020151141561094f57600060043560e05260c052604060c02060c052602060c020610140518155602435600182015560443560028201556102a0516003820155506020610360604463095ea7b36102c052610140516102e0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610300526102dc60006004355af16107d157600080fd5b601f3d116107de57600080fd5b6000506103605060006004610320527f095ea7b3000000000000000000000000000000000000000000000000000000006103405261032060048060208461038001018260208501600060045af15050805182019150506044356020826103800101526020810190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602082610380010152602081019050806103805261038090508051602001806104208284600060045af161089a57600080fd5b505060206104e06104205161044060006024355af16108b857600080fd5b60203d808211156108c957806108cb565b815b905090506104c0526104c08051602001806102c08284600060045af16108f057600080fd5b505060006102c0511815610943576102c080602001516000825180602090131561091957600080fd5b809190121561092757600080fd5b806020036101000a8204905090509050151561094257600080fd5b5b600160005260206000f3505b5b8151600101808352811415610702575b505060006000fd005b63db2f5f796000511415610b765760043560a01c1561098757600080fd5b600354610160526004546101805260006101405261014061012060006002818352015b6101205160200261016001513314156109c657600183526109d7565b5b81516001018083528114156109aa575b505050610140516001146109ea57600080fd5b60206101e060246370a0823161016052306101805261017c6004355afa610a1057600080fd5b601f3d11610a1d57600080fd5b6000506101e05161014052600060046101c0527fa9059cbb000000000000000000000000000000000000000000000000000000006101e0526101c060048060208461022001018260208501600060045af150508051820191505060015460208261022001015260208101905061014051602082610220010152602081019050806102205261022090508051602001806102c08284600060045af1610ac057600080fd5b505060206103806102c0516102e060006004355af1610ade57600080fd5b60203d80821115610aef5780610af1565b815b90509050610360526103608051602001806101608284600060045af1610b1657600080fd5b50506000610160511815610b6957610160806020015160008251806020901315610b3f57600080fd5b8091901215610b4d57600080fd5b806020036101000a82049050905090501515610b6857600080fd5b5b600160005260206000f350005b635dc659b06000511415610bb55760043560a01c15610b9457600080fd5b6003543314610ba257600080fd5b600435600155600160005260206000f350005b6390b229976000511415610c495760043560011c15610bd357600080fd5b600354610160526004546101805260006101405261014061012060006002818352015b610120516020026101600151331415610c125760018352610c23565b5b8151600101808352811415610bf6575b50505061014051600114610c3657600080fd5b600435600255600160005260206000f350005b636b441a406000511415610c885760043560a01c15610c6757600080fd5b6003543314610c7557600080fd5b600435600555600160005260206000f350005b63e5ea47b86000511415610cb5576005543314610ca457600080fd5b33600355600160005260206000f350005b6395c899156000511415610cf45760043560a01c15610cd357600080fd5b6004543314610ce157600080fd5b600435600655600160005260206000f350005b632d2cb6756000511415610d21576006543314610d1057600080fd5b33600455600160005260206000f350005b6312946aae6000511415610dc25760043560a01c15610d3f57600080fd5b600060043560e05260c052604060c0206101408080808460c052602060c0205481525050602081019050808060018560c052602060c020015481525050602081019050808060028560c052602060c020015481525050602081019050808060038560c052602060c02001548152505060809050905060c05260c051610140f39050005b63ddceafa96000511415610dde5760015460005260206000f350005b639c868ac06000511415610dfa5760025460005260206000f350005b638da5cb5b6000511415610e165760035460005260206000f350005b6363a4042a6000511415610e325760045460005260206000f350005b631ec0cdc16000511415610e4e5760055460005260206000f350005b63e19f994c6000511415610e6a5760065460005260206000f350005b5b60006000fd5b610070610ee103610070600039610070610ee1036000f3000000000000000000000000ae9c8320a6394120ecb7b2b2678d9b4ac848d1060000000000000000000000007eeac6cddbd1d0b8af061742d41877d7f707289a00000000000000000000000000669df67e4827fcc0e48a1838a8d5ab79281909

Deployed Bytecode

0x341561000a57600080fd5b600436101561001857610e6b565b600035601c526389afcb4460005114156103555760043560a01c1561003c57600080fd5b6002541561004957600080fd5b60206101e060246370a0823161016052336101805261017c6004355afa61006f57600080fd5b601f3d1161007c57600080fd5b6000506101e0516101405260006101405118156100dd57602061022060646323b872dd610160523361018052306101a052610140516101c05261017c60006004355af16100c857600080fd5b601f3d116100d557600080fd5b600050610220505b60206101e060246370a0823161016052306101805261017c6004355afa61010357600080fd5b601f3d1161011057600080fd5b6000506101e05161014052600061014051181561034857610160600060043560e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c020015482606001525050610160513b61018c57600080fd5b600060006064631a4d01d26101e05261014051610200526101c051610220526000610240526101fc6000610160515af16101c557600080fd5b602061026060246370a082316101e05230610200526101fc610180515afa6101ec57600080fd5b601f3d116101f957600080fd5b600050610260516101405260006004610240527fa9059cbb00000000000000000000000000000000000000000000000000000000610260526102406004806020846102a001018260208501600060045af15050805182019150506101a0516020826102a0010152602081019050610140516020826102a0010152602081019050806102a0526102a090508051602001806103408284600060045af161029d57600080fd5b50506020610400610340516103606000610180515af16102bc57600080fd5b60203d808211156102cd57806102cf565b815b905090506103e0526103e08051602001806101e08284600060045af16102f457600080fd5b505060006101e0511815610347576101e080602001516000825180602090131561031d57600080fd5b809190121561032b57600080fd5b806020036101000a8204905090509050151561034657600080fd5b5b5b600160005260206000f350005b63294a859e60005114156109695760043560a01c1561037357600080fd5b60243560a01c1561038357600080fd5b60443560a01c1561039357600080fd5b600354610160526004546101805260006101405261014061012060006002818352015b6101205160200261016001513314156103d257600183526103e3565b5b81516001018083528114156103b6575b505050610140516001146103f657600080fd5b600060043560e05260c052604060c02060c052602060c02054610140526000610140511815610465576020610200604463095ea7b361016052610140516101805260006101a05261017c60006004355af161045057600080fd5b601f3d1161045d57600080fd5b600050610200505b6001600060043560e05260c052604060c02060c052602060c02001546101605260006101605118156105ea57600060046101e0527f095ea7b300000000000000000000000000000000000000000000000000000000610200526101e060048060208461024001018260208501600060045af15050805182019150506002600060043560e05260c052604060c02060c052602060c02001546020826102400101526020810190506000602082610240010152602081019050806102405261024090508051602001806102e08284600060045af161054057600080fd5b505060206103a06102e05161030060006024355af161055e57600080fd5b60203d8082111561056f5780610571565b815b90509050610380526103808051602001806101808284600060045af161059657600080fd5b505060006101805118156105e9576101808060200151600082518060209013156105bf57600080fd5b80919012156105cd57600080fd5b806020036101000a820490509050905015156105e857600080fd5b5b5b6020610200600463a262904b6101a0526101bc6f22d53366457f9d5e68ec105046fc43835afa61061957600080fd5b601f3d1161062657600080fd5b60005061020051610180526020610220602463bdf475c36101a0526004356101c0526101bc610180515afa61065a57600080fd5b601f3d1161066757600080fd5b60005061022051610140526101006103206024639ac90d3d6102a052610140516102c0526102bc610180515afa61069d57600080fd5b60ff3d116106aa57600080fd5b60005061032080516101a05280602001516101c05280604001516101e0528060600151610200528060800151610220528060a00151610240528060c00151610260528060e0015161028052506102a060006008818352015b6101a06102a0516008811061071657600080fd5b602002015115156107275760006000fd5b6024356101a06102a0516008811061073e57600080fd5b6020020151141561094f57600060043560e05260c052604060c02060c052602060c020610140518155602435600182015560443560028201556102a0516003820155506020610360604463095ea7b36102c052610140516102e0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610300526102dc60006004355af16107d157600080fd5b601f3d116107de57600080fd5b6000506103605060006004610320527f095ea7b3000000000000000000000000000000000000000000000000000000006103405261032060048060208461038001018260208501600060045af15050805182019150506044356020826103800101526020810190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602082610380010152602081019050806103805261038090508051602001806104208284600060045af161089a57600080fd5b505060206104e06104205161044060006024355af16108b857600080fd5b60203d808211156108c957806108cb565b815b905090506104c0526104c08051602001806102c08284600060045af16108f057600080fd5b505060006102c0511815610943576102c080602001516000825180602090131561091957600080fd5b809190121561092757600080fd5b806020036101000a8204905090509050151561094257600080fd5b5b600160005260206000f3505b5b8151600101808352811415610702575b505060006000fd005b63db2f5f796000511415610b765760043560a01c1561098757600080fd5b600354610160526004546101805260006101405261014061012060006002818352015b6101205160200261016001513314156109c657600183526109d7565b5b81516001018083528114156109aa575b505050610140516001146109ea57600080fd5b60206101e060246370a0823161016052306101805261017c6004355afa610a1057600080fd5b601f3d11610a1d57600080fd5b6000506101e05161014052600060046101c0527fa9059cbb000000000000000000000000000000000000000000000000000000006101e0526101c060048060208461022001018260208501600060045af150508051820191505060015460208261022001015260208101905061014051602082610220010152602081019050806102205261022090508051602001806102c08284600060045af1610ac057600080fd5b505060206103806102c0516102e060006004355af1610ade57600080fd5b60203d80821115610aef5780610af1565b815b90509050610360526103608051602001806101608284600060045af1610b1657600080fd5b50506000610160511815610b6957610160806020015160008251806020901315610b3f57600080fd5b8091901215610b4d57600080fd5b806020036101000a82049050905090501515610b6857600080fd5b5b600160005260206000f350005b635dc659b06000511415610bb55760043560a01c15610b9457600080fd5b6003543314610ba257600080fd5b600435600155600160005260206000f350005b6390b229976000511415610c495760043560011c15610bd357600080fd5b600354610160526004546101805260006101405261014061012060006002818352015b610120516020026101600151331415610c125760018352610c23565b5b8151600101808352811415610bf6575b50505061014051600114610c3657600080fd5b600435600255600160005260206000f350005b636b441a406000511415610c885760043560a01c15610c6757600080fd5b6003543314610c7557600080fd5b600435600555600160005260206000f350005b63e5ea47b86000511415610cb5576005543314610ca457600080fd5b33600355600160005260206000f350005b6395c899156000511415610cf45760043560a01c15610cd357600080fd5b6004543314610ce157600080fd5b600435600655600160005260206000f350005b632d2cb6756000511415610d21576006543314610d1057600080fd5b33600455600160005260206000f350005b6312946aae6000511415610dc25760043560a01c15610d3f57600080fd5b600060043560e05260c052604060c0206101408080808460c052602060c0205481525050602081019050808060018560c052602060c020015481525050602081019050808060028560c052602060c020015481525050602081019050808060038560c052602060c02001548152505060809050905060c05260c051610140f39050005b63ddceafa96000511415610dde5760015460005260206000f350005b639c868ac06000511415610dfa5760025460005260206000f350005b638da5cb5b6000511415610e165760035460005260206000f350005b6363a4042a6000511415610e325760045460005260206000f350005b631ec0cdc16000511415610e4e5760055460005260206000f350005b63e19f994c6000511415610e6a5760065460005260206000f350005b5b60006000fd

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

000000000000000000000000ae9c8320a6394120ecb7b2b2678d9b4ac848d1060000000000000000000000007eeac6cddbd1d0b8af061742d41877d7f707289a00000000000000000000000000669df67e4827fcc0e48a1838a8d5ab79281909

-----Decoded View---------------
Arg [0] : _recovery (address): 0xAe9c8320A6394120ECb7B2B2678d9b4aC848d106
Arg [1] : _owner (address): 0x7EeAC6CDdbd1D0B8aF061742D41877D7F707289a
Arg [2] : _emergency_owner (address): 0x00669DF67E4827FCc0E48A1838a8d5AB79281909

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000ae9c8320a6394120ecb7b2b2678d9b4ac848d106
Arg [1] : 0000000000000000000000007eeac6cddbd1d0b8af061742d41877d7f707289a
Arg [2] : 00000000000000000000000000669df67e4827fcc0e48a1838a8d5ab79281909


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.