ETH Price: $2,523.73 (+0.20%)

Contract

0x71258Ee726644f1D52d6A9F5E11C21d1E38c2bF1
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set_governor199045392024-05-19 14:20:23103 days ago1716128423IN
0x71258Ee7...1E38c2bF1
0 ETH0.000124864.81145341
Set_management199045182024-05-19 14:16:11103 days ago1716128171IN
0x71258Ee7...1E38c2bF1
0 ETH0.00023224.94565191
Set_governor195837062024-04-04 16:52:11148 days ago1712249531IN
0x71258Ee7...1E38c2bF1
0 ETH0.002876160.09040225
Execute_single195837052024-04-04 16:51:59148 days ago1712249519IN
0x71258Ee7...1E38c2bF1
0 ETH0.0030806761.65162538
Execute_single195837032024-04-04 16:51:35148 days ago1712249495IN
0x71258Ee7...1E38c2bF1
0 ETH0.0041828662.38884796
Execute193680142024-03-05 9:17:23178 days ago1709630243IN
0x71258Ee7...1E38c2bF1
0 ETH0.0041642461.81345513
Set_governor192267762024-02-14 14:24:47198 days ago1707920687IN
0x71258Ee7...1E38c2bF1
0 ETH0.0030156763.00640794
0x610db451192263402024-02-14 12:54:35198 days ago1707915275IN
 Create: Executor
0 ETH0.020540823.78231004

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Executor

Compiler Version
vyper:0.3.10

Optimization Enabled:
N/A

Other Settings:
GNU AGPLv3 license

Contract Source Code (Vyper language format)

# @version 0.3.10
"""
@title Executor
@author 0xkorin, Yearn Finance
@license GNU AGPLv3
@notice
    Responsible for executing governance decisions through a proxy.
    Only appointed governors are allowed to execute calls, subject to access control based on 
    the governor, the calling contract and the selector.
    Management has the power to enable and set/unset whitelists and blacklists.
    The management role is intended to be transferred to the proxy, making the system self-governing.
"""

interface Proxy:
    def execute(_to: address, _data: Bytes[2048]): nonpayable

enum Access:
    WHITELIST
    BLACKLIST

proxy: public(immutable(Proxy))
management: public(address)
pending_management: public(address)
governors: public(HashMap[address, bool])
access: public(HashMap[uint256, Access]) # target => access control setting
whitelisted: HashMap[uint256, HashMap[address, bool]] # target => governor => whitelisted
blacklisted: HashMap[uint256, HashMap[address, bool]] # target => governor => blacklisted

event Execute:
    by: indexed(address)
    contract: indexed(address)
    data: Bytes[2048]

event SetGovernor:
    by: indexed(address)
    governor: indexed(address)
    flag: bool

event SetAccess:
    by: indexed(address)
    contract: indexed(address)
    identifier: indexed(bytes4)
    access: Access

event Whitelist:
    contract: indexed(address)
    identifier: indexed(bytes4)
    by: indexed(address)
    whitelisted: bool

event Blacklist:
    contract: indexed(address)
    identifier: indexed(bytes4)
    by: indexed(address)
    blacklisted: bool

event PendingManagement:
    management: indexed(address)

event SetManagement:
    management: indexed(address)

TARGET_MASK: public(constant(uint256)) = shift(1, 192) - 1
IDENTIFIER_MASK: constant(uint256) = shift(1, 32) - 1

@external
def __init__(_proxy: address):
    """
    @notice Constructor
    @param _proxy The ownership proxy
    """
    proxy = Proxy(_proxy)
    self.management = msg.sender
    self.governors[msg.sender] = True

@external
def execute_single(_to: address, _data: Bytes[2048]):
    """
    @notice Execute a single call
    @param _to The contract to call
    @param _data Calldata
    """
    assert self.governors[msg.sender]
    assert len(_data) >= 4
    identifier: bytes4 = convert(slice(_data, 0, 4), bytes4)
    target: uint256 = self._pack_target(_to, identifier)

    # check access control
    access: Access = self.access[target]
    if access == Access.BLACKLIST:
        assert not self.blacklisted[target][msg.sender]
    elif access == Access.WHITELIST:
        assert self.whitelisted[target][msg.sender]

    proxy.execute(_to, _data)
    log Execute(msg.sender, _to, _data)

@external
def execute(_script: Bytes[2048]):
    """
    @notice Execute a single script consisting of one or more calls
    @param _script Script to execute
    """
    assert self.governors[msg.sender]

    i: uint256 = 0
    for x in range(32):
        if i == len(_script):
            break
        assert i + 32 <= len(_script)
    
        # extract target and calldata size
        target: uint256 = extract32(_script, i, output_type=uint256) # calldata size (64) | address (160) | identifier (32)
        size: uint256 = shift(target, -192)
        target &= TARGET_MASK
        i += 28 # calldata size (8 bytes) + address (20 bytes)
        assert i + size <= len(_script)
        assert size >= 4 and size <= 2048

        # check access control
        access: Access = self.access[target]
        if access == Access.BLACKLIST:
            assert not self.blacklisted[target][msg.sender]
        elif access == Access.WHITELIST:
            assert self.whitelisted[target][msg.sender]

        contract: address = empty(address)
        identifier: bytes4 = empty(bytes4)
        contract, identifier = self._unpack_target(target)
        calldata: Bytes[2048] = slice(_script, i, size)

        i += size
        assert i <= len(_script)

        proxy.execute(contract, calldata)
        log Execute(msg.sender, contract, calldata)

    assert i == len(_script)

@external
@pure
def script(_to: address, _data: Bytes[2048]) -> Bytes[2080]:
    """
    @notice
        Generate script for a single call.
        Calls can be chained by concatenating their scripts
    @param _to The contract to call
    @param _data Calldata
    """
    assert len(_data) >= 4
    prefix: uint256 = shift(len(_data), 160) | convert(_to, uint256)
    return concat(convert(convert(prefix, uint224), bytes28), _data)

@external
def set_governor(_governor: address, _flag: bool):
    """
    @notice Set the governor role
    @param _governor The account to set the role for
    @param _flag True: set governor, False: unset governor
    """
    assert msg.sender == self.management
    assert _governor != empty(address)
    self.governors[_governor] = _flag
    log SetGovernor(msg.sender, _governor, _flag)

@external
def set_access(_contract: address, _identifier: bytes4, _access: Access):
    """
    @notice Set access control for a contract+identifier combination
    @param _contract Contract address
    @param _identifier Function identifier
    @param _access Whether to enable whitelist or blacklist. Zero to disable access control
    """
    assert msg.sender == self.management
    assert _contract != empty(address)
    assert convert(_access, uint256) < 3
    target: uint256 = self._pack_target(_contract, _identifier)
    self.access[target] = _access
    log SetAccess(msg.sender, _contract, _identifier, _access)

@external
def whitelist(_contract: address, _identifier: bytes4, _caller: address, _whitelisted: bool):
    """
    @notice Whitelist a governor for a contract+identifier combination
    @param _contract Contract address
    @param _identifier Function identifier
    @param _caller Governor to apply the whitelist to
    @param _whitelisted True: add to whitelist, False: remove from whitelist
    """
    assert msg.sender == self.management
    assert _contract != empty(address)
    target: uint256 = self._pack_target(_contract, _identifier)
    self.whitelisted[target][_caller] = _whitelisted
    log Whitelist(_contract, _identifier, _caller, _whitelisted)

@external
@view
def is_whitelisted(_contract: address, _identifier: bytes4, _caller: address) -> bool:
    """
    @notice Query if a governor is whitelisted to call a contract+identifier combination
    @param _contract Contract address
    @param _identifier Function identifier
    @param _caller Governor
    @return True: on whitelist, False: not on whitelist
    """
    target: uint256 = self._pack_target(_contract, _identifier)
    return self.whitelisted[target][_caller]

@external
@view
def has_whitelist(_contract: address, _identifier: bytes4) -> bool:
    """
    @notice Query if a contract+identifier combination has whitelist enabled
    @param _contract Contract address
    @param _identifier Function identifier
    @return True: whitelist enabled, False: whitelist disabled
    """
    target: uint256 = self._pack_target(_contract, _identifier)
    return self.access[target] == Access.WHITELIST

@external
def blacklist(_contract: address, _identifier: bytes4, _caller: address, _blacklisted: bool):
    """
    @notice Blacklist a governor for a contract+identifier combination
    @param _contract Contract address
    @param _identifier Function identifier
    @param _caller Governor to apply the blacklist to
    @param _blacklisted True: add to blacklist, False: remove from blacklist
    """
    assert msg.sender == self.management
    assert _contract != empty(address)
    target: uint256 = self._pack_target(_contract, _identifier)
    self.blacklisted[target][_caller] = _blacklisted
    log Blacklist(_contract, _identifier, _caller, _blacklisted)

@external
@view
def is_blacklisted(_contract: address, _identifier: bytes4, _caller: address) -> bool:
    """
    @notice Query if a governor is blacklisted to call a contract+identifier combination
    @param _contract Contract address
    @param _identifier Function identifier
    @param _caller Governor
    @return True: on blacklist, False: not on blacklist
    """
    target: uint256 = self._pack_target(_contract, _identifier)
    return self.blacklisted[target][_caller]

@external
@view
def has_blacklist(_contract: address, _identifier: bytes4) -> bool:
    """
    @notice Query if a contract+identifier combination has blacklist enabled
    @param _contract Contract address
    @param _identifier Function identifier
    @return True: blacklist enabled, False: blacklist disabled
    """
    target: uint256 = self._pack_target(_contract, _identifier)
    return self.access[target] == Access.BLACKLIST

@external
def set_management(_management: address):
    """
    @notice 
        Set the pending management address.
        Needs to be accepted by that account separately to transfer management over
    @param _management New pending management address
    """
    assert msg.sender == self.management
    self.pending_management = _management
    log PendingManagement(_management)

@external
def accept_management():
    """
    @notice 
        Accept management role.
        Can only be called by account previously marked as pending management by current management
    """
    assert msg.sender == self.pending_management
    self.pending_management = empty(address)
    self.management = msg.sender
    log SetManagement(msg.sender)

@internal
@pure
def _pack_target(_contract: address, _identifier: bytes4) -> uint256:
    """
    @notice Pack a contract+identifier into a single word
    """
    return shift(convert(_contract, uint256), 32) | convert(_identifier, uint256)

@internal
@pure
def _unpack_target(_target: uint256) -> (address, bytes4):
    """
    @notice Unpack a contract+identifier from a single word
    """
    return convert(shift(_target, -32), address), convert(convert(_target & IDENTIFIER_MASK, uint32), bytes4)

Contract Security Audit

Contract ABI

[{"name":"Execute","inputs":[{"name":"by","type":"address","indexed":true},{"name":"contract","type":"address","indexed":true},{"name":"data","type":"bytes","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetGovernor","inputs":[{"name":"by","type":"address","indexed":true},{"name":"governor","type":"address","indexed":true},{"name":"flag","type":"bool","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetAccess","inputs":[{"name":"by","type":"address","indexed":true},{"name":"contract","type":"address","indexed":true},{"name":"identifier","type":"bytes4","indexed":true},{"name":"access","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Whitelist","inputs":[{"name":"contract","type":"address","indexed":true},{"name":"identifier","type":"bytes4","indexed":true},{"name":"by","type":"address","indexed":true},{"name":"whitelisted","type":"bool","indexed":false}],"anonymous":false,"type":"event"},{"name":"Blacklist","inputs":[{"name":"contract","type":"address","indexed":true},{"name":"identifier","type":"bytes4","indexed":true},{"name":"by","type":"address","indexed":true},{"name":"blacklisted","type":"bool","indexed":false}],"anonymous":false,"type":"event"},{"name":"PendingManagement","inputs":[{"name":"management","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"name":"SetManagement","inputs":[{"name":"management","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_proxy","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"execute_single","inputs":[{"name":"_to","type":"address"},{"name":"_data","type":"bytes"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"execute","inputs":[{"name":"_script","type":"bytes"}],"outputs":[]},{"stateMutability":"pure","type":"function","name":"script","inputs":[{"name":"_to","type":"address"},{"name":"_data","type":"bytes"}],"outputs":[{"name":"","type":"bytes"}]},{"stateMutability":"nonpayable","type":"function","name":"set_governor","inputs":[{"name":"_governor","type":"address"},{"name":"_flag","type":"bool"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_access","inputs":[{"name":"_contract","type":"address"},{"name":"_identifier","type":"bytes4"},{"name":"_access","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"whitelist","inputs":[{"name":"_contract","type":"address"},{"name":"_identifier","type":"bytes4"},{"name":"_caller","type":"address"},{"name":"_whitelisted","type":"bool"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"is_whitelisted","inputs":[{"name":"_contract","type":"address"},{"name":"_identifier","type":"bytes4"},{"name":"_caller","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"has_whitelist","inputs":[{"name":"_contract","type":"address"},{"name":"_identifier","type":"bytes4"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"blacklist","inputs":[{"name":"_contract","type":"address"},{"name":"_identifier","type":"bytes4"},{"name":"_caller","type":"address"},{"name":"_blacklisted","type":"bool"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"is_blacklisted","inputs":[{"name":"_contract","type":"address"},{"name":"_identifier","type":"bytes4"},{"name":"_caller","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"has_blacklist","inputs":[{"name":"_contract","type":"address"},{"name":"_identifier","type":"bytes4"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"set_management","inputs":[{"name":"_management","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"accept_management","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"proxy","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"management","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"pending_management","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"governors","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"access","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"TARGET_MASK","inputs":[],"outputs":[{"name":"","type":"uint256"}]}]

610db4515034610048576020610e165f395f518060a01c61004857604052604051610db452335f5560016002336020525f5260405f2055610db461004c61000039610dd4610000f35b5f80fd5f3560e01c60026015820660011b610d8a01601e395f51565b63ec55688981186100365734610d86576020610db460403960206040f35b6388a8d6028118610d385734610d86575f5460405260206040f3610d38565b63770817ec8118610d385734610d865760015460405260206040f3610d38565b63e3eece268118610d3857602436103417610d86576004358060a01c610d865760405260026040516020525f5260405f205460605260206060f3610d38565b63803ad4de8118610d3857602436103417610d865760036004356020525f5260405f205460405260206040f3610d38565b63e4021f108118610d385734610d865777ffffffffffffffffffffffffffffffffffffffffffffffff60405260206040f3610d38565b63d7f79ead8118610d3857606436103417610d86576004358060a01c610d8657608052602435600401610800813511610d86576020813501808260a03750506002336020525f5260405f205415610d8657600460a05110610d865760a051600411610d865760c0516109005260046108e0526108e0805160200360031b6020820151811c811b905090506108c0526080516040526108c0516060526101c1610900610d3c565b610900516108e05260036108e0516020525f5260405f2054610900526002610900511861020e5760056108e0516020525f5260405f2080336020525f5260405f20905054610d865761023c565b6001610900511861023c5760046108e0516020525f5260405f2080336020525f5260405f2090505415610d86575b6020610db45f395f51631cff79cd6109205260406080516109405280610960528061094001602060a0510180828260a060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081015050803b15610d86575f61092061086461093c5f855af16102b8573d5f5f3e3d5ffd5b50608051337f426783e85afe763f71351e2490de9212fd7bdc36450445719f66d1b1d3fefa66602080610920528061092001602060a0510180828260a060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081019050610920a300610d38565b6309c5eabe81186106c357604436103417610d8657600435600401610800813511610d86576020813501808260603750506002336020525f5260405f205415610d86575f610880525f6020905b806108a052606051610880511861038d576106b3565b6060516108805160208101818110610d8657905011610d86576060805161088051602082038113157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82131615610d8657601f81168160051c816103fa578060051b602001850151610422565b816020036101000a6001820160051b60200186015104826101000a8260051b60200187015102015b905090509050905090506108c0526108c0518060c01c90506108e05277ffffffffffffffffffffffffffffffffffffffffffffffff6108c051166108c05261088051601c8101818110610d8657905061088052606051610880516108e051808201828110610d86579050905011610d865760046108e05110156104a5575f6104af565b6108006108e05111155b15610d865760036108c0516020525f5260405f205461090052600261090051186104f95760056108c0516020525f5260405f2080336020525f5260405f20905054610d8657610527565b600161090051186105275760046108c0516020525f5260405f2080336020525f5260405f2090505415610d86575b604036610920376108c051604052610540610960610d54565b61096080516109205260208101516109405250610880516108e05160605181830111610d865781608001816111a0838360045afa5050806111805261118090509050602081510180610960828460045afa505050610880516108e051808201828110610d865790509050610880526060516108805111610d86576020610db45f395f51631cff79cd611180526040610920516111a052806111c052806111a0016020610960510180828261096060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081015050803b15610d86575f61118061086461119c5f855af1610639573d5f5f3e3d5ffd5b5061092051337f426783e85afe763f71351e2490de9212fd7bdc36450445719f66d1b1d3fefa666020806111805280611180016020610960510180828261096060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081019050611180a3600101818118610377575b50506060516108805118610d8657005b63ba989b3e8118610d3857604436103417610d86576004358060a01c610d86576080526024358060201b610d865760a05260805160405260a05160605261070a60e0610d3c565b60e05160c0526001600360c0516020525f5260405f20541460e052602060e0f3610d38565b638e4553a48118610d3857606436103417610d86576004358060a01c610d8657604052602435600401610800813511610d8657602081350180826060375050600460605110610d86576040516060518060a01b905017610880526020806110e0525f610880518060e01c610d86578060201b9050816108c00152601c81019050606051816108c001818183608060045afa5050808201915050806108a0526108a09050816110e00160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506110e0f3610d38565b63ef3f27168118610d3857604436103417610d86576004358060a01c610d86576040526024358060011c610d86576060525f543318610d865760405115610d865760605160026040516020525f5260405f2055604051337f718a596dad53b04764791b590c66210545510e24d2d7e61b95facdedf3cac1e760605160805260206080a300610d38565b63f7cd16da811861095f57606436103417610d86576004358060a01c610d86576080526024358060201b610d865760a0526044358060021c610d865760c0525f543318610d865760805115610d8657600260c05111610d865760805160405260a05160605261090f610100610d3c565b6101005160e05260c051600360e0516020525f5260405f205560a051608051337f630db20a1b7788bf2b4789616772519434d81e71ffcbdef93658f6b6db2887eb60c051610100526020610100a4005b636e0ceac98118610d3857608436103417610d86576004358060a01c610d86576080526024358060201b610d865760a0526044358060a01c610d865760c0526064358060011c610d865760e0525f543318610d865760805115610d865760805160405260a0516060526109d3610120610d3c565b610120516101005260e0516004610100516020525f5260405f208060c0516020525f5260405f2090505560c05160a0516080517f32152d80d7adc464d693d6baca16c68f7b208f9544fd17633b905f0cc4e8a63160e051610120526020610120a400610d38565b63894a52478118610d3857606436103417610d86576004358060a01c610d86576080526024358060201b610d865760a0526044358060a01c610d865760c05260805160405260a051606052610a90610100610d3c565b6101005160e052600460e0516020525f5260405f208060c0516020525f5260405f20905054610100526020610100f3610d38565b631a5352b78118610d3857608436103417610d86576004358060a01c610d86576080526024358060201b610d865760a0526044358060a01c610d865760c0526064358060011c610d865760e0525f543318610d865760805115610d865760805160405260a051606052610b38610120610d3c565b610120516101005260e0516005610100516020525f5260405f208060c0516020525f5260405f2090505560c05160a0516080517f554026cb815dfff3f369068ca060f6ea8f10460bc89d9875513d5af794c9a0d660e051610120526020610120a400610d38565b63fc332e738118610c2557606436103417610d86576004358060a01c610d86576080526024358060201b610d865760a0526044358060a01c610d865760c05260805160405260a051606052610bf5610100610d3c565b6101005160e052600560e0516020525f5260405f208060c0516020525f5260405f20905054610100526020610100f35b63759be10c8118610d385734610d86576001543318610d86575f600155335f55337fafe23f9e1f603b288748a507d5a993957e9f14313a5889d5a070851299939d595f6040a200610d38565b63a37b386f8118610d3857604436103417610d86576004358060a01c610d86576080526024358060201b610d865760a05260805160405260a051606052610cb860e0610d3c565b60e05160c0526002600360c0516020525f5260405f20541460e052602060e0f3610d38565b63fd066ecc8118610d3857602436103417610d86576004358060a01c610d86576040525f543318610d86576040516001556040517fe7b5cc087e6e47e33e86bdfe4720b7e849891938b18ff6e0c3f92299de79e60c5f6060a2005b5f5ffd5b6060518060e01c90506040518060201b905017815250565b6040518060201c90508060a01c610d8657815263ffffffff604051168060201c610d86578060e01b9050602082015250565b5f80fd0d3800e50b9f032a007500b40cdd001800550c710d38089f0d380d380d380d38011b0ac408160a3a072f84190db481182a1820a16576797065728300030a001600000000000000000000000056af9c2780e0323810acfdaeab3f58ef6e76fafd

Deployed Bytecode

0x5f3560e01c60026015820660011b610d8a01601e395f51565b63ec55688981186100365734610d86576020610db460403960206040f35b6388a8d6028118610d385734610d86575f5460405260206040f3610d38565b63770817ec8118610d385734610d865760015460405260206040f3610d38565b63e3eece268118610d3857602436103417610d86576004358060a01c610d865760405260026040516020525f5260405f205460605260206060f3610d38565b63803ad4de8118610d3857602436103417610d865760036004356020525f5260405f205460405260206040f3610d38565b63e4021f108118610d385734610d865777ffffffffffffffffffffffffffffffffffffffffffffffff60405260206040f3610d38565b63d7f79ead8118610d3857606436103417610d86576004358060a01c610d8657608052602435600401610800813511610d86576020813501808260a03750506002336020525f5260405f205415610d8657600460a05110610d865760a051600411610d865760c0516109005260046108e0526108e0805160200360031b6020820151811c811b905090506108c0526080516040526108c0516060526101c1610900610d3c565b610900516108e05260036108e0516020525f5260405f2054610900526002610900511861020e5760056108e0516020525f5260405f2080336020525f5260405f20905054610d865761023c565b6001610900511861023c5760046108e0516020525f5260405f2080336020525f5260405f2090505415610d86575b6020610db45f395f51631cff79cd6109205260406080516109405280610960528061094001602060a0510180828260a060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081015050803b15610d86575f61092061086461093c5f855af16102b8573d5f5f3e3d5ffd5b50608051337f426783e85afe763f71351e2490de9212fd7bdc36450445719f66d1b1d3fefa66602080610920528061092001602060a0510180828260a060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081019050610920a300610d38565b6309c5eabe81186106c357604436103417610d8657600435600401610800813511610d86576020813501808260603750506002336020525f5260405f205415610d86575f610880525f6020905b806108a052606051610880511861038d576106b3565b6060516108805160208101818110610d8657905011610d86576060805161088051602082038113157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82131615610d8657601f81168160051c816103fa578060051b602001850151610422565b816020036101000a6001820160051b60200186015104826101000a8260051b60200187015102015b905090509050905090506108c0526108c0518060c01c90506108e05277ffffffffffffffffffffffffffffffffffffffffffffffff6108c051166108c05261088051601c8101818110610d8657905061088052606051610880516108e051808201828110610d86579050905011610d865760046108e05110156104a5575f6104af565b6108006108e05111155b15610d865760036108c0516020525f5260405f205461090052600261090051186104f95760056108c0516020525f5260405f2080336020525f5260405f20905054610d8657610527565b600161090051186105275760046108c0516020525f5260405f2080336020525f5260405f2090505415610d86575b604036610920376108c051604052610540610960610d54565b61096080516109205260208101516109405250610880516108e05160605181830111610d865781608001816111a0838360045afa5050806111805261118090509050602081510180610960828460045afa505050610880516108e051808201828110610d865790509050610880526060516108805111610d86576020610db45f395f51631cff79cd611180526040610920516111a052806111c052806111a0016020610960510180828261096060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081015050803b15610d86575f61118061086461119c5f855af1610639573d5f5f3e3d5ffd5b5061092051337f426783e85afe763f71351e2490de9212fd7bdc36450445719f66d1b1d3fefa666020806111805280611180016020610960510180828261096060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081019050611180a3600101818118610377575b50506060516108805118610d8657005b63ba989b3e8118610d3857604436103417610d86576004358060a01c610d86576080526024358060201b610d865760a05260805160405260a05160605261070a60e0610d3c565b60e05160c0526001600360c0516020525f5260405f20541460e052602060e0f3610d38565b638e4553a48118610d3857606436103417610d86576004358060a01c610d8657604052602435600401610800813511610d8657602081350180826060375050600460605110610d86576040516060518060a01b905017610880526020806110e0525f610880518060e01c610d86578060201b9050816108c00152601c81019050606051816108c001818183608060045afa5050808201915050806108a0526108a09050816110e00160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506110e0f3610d38565b63ef3f27168118610d3857604436103417610d86576004358060a01c610d86576040526024358060011c610d86576060525f543318610d865760405115610d865760605160026040516020525f5260405f2055604051337f718a596dad53b04764791b590c66210545510e24d2d7e61b95facdedf3cac1e760605160805260206080a300610d38565b63f7cd16da811861095f57606436103417610d86576004358060a01c610d86576080526024358060201b610d865760a0526044358060021c610d865760c0525f543318610d865760805115610d8657600260c05111610d865760805160405260a05160605261090f610100610d3c565b6101005160e05260c051600360e0516020525f5260405f205560a051608051337f630db20a1b7788bf2b4789616772519434d81e71ffcbdef93658f6b6db2887eb60c051610100526020610100a4005b636e0ceac98118610d3857608436103417610d86576004358060a01c610d86576080526024358060201b610d865760a0526044358060a01c610d865760c0526064358060011c610d865760e0525f543318610d865760805115610d865760805160405260a0516060526109d3610120610d3c565b610120516101005260e0516004610100516020525f5260405f208060c0516020525f5260405f2090505560c05160a0516080517f32152d80d7adc464d693d6baca16c68f7b208f9544fd17633b905f0cc4e8a63160e051610120526020610120a400610d38565b63894a52478118610d3857606436103417610d86576004358060a01c610d86576080526024358060201b610d865760a0526044358060a01c610d865760c05260805160405260a051606052610a90610100610d3c565b6101005160e052600460e0516020525f5260405f208060c0516020525f5260405f20905054610100526020610100f3610d38565b631a5352b78118610d3857608436103417610d86576004358060a01c610d86576080526024358060201b610d865760a0526044358060a01c610d865760c0526064358060011c610d865760e0525f543318610d865760805115610d865760805160405260a051606052610b38610120610d3c565b610120516101005260e0516005610100516020525f5260405f208060c0516020525f5260405f2090505560c05160a0516080517f554026cb815dfff3f369068ca060f6ea8f10460bc89d9875513d5af794c9a0d660e051610120526020610120a400610d38565b63fc332e738118610c2557606436103417610d86576004358060a01c610d86576080526024358060201b610d865760a0526044358060a01c610d865760c05260805160405260a051606052610bf5610100610d3c565b6101005160e052600560e0516020525f5260405f208060c0516020525f5260405f20905054610100526020610100f35b63759be10c8118610d385734610d86576001543318610d86575f600155335f55337fafe23f9e1f603b288748a507d5a993957e9f14313a5889d5a070851299939d595f6040a200610d38565b63a37b386f8118610d3857604436103417610d86576004358060a01c610d86576080526024358060201b610d865760a05260805160405260a051606052610cb860e0610d3c565b60e05160c0526002600360c0516020525f5260405f20541460e052602060e0f3610d38565b63fd066ecc8118610d3857602436103417610d86576004358060a01c610d86576040525f543318610d86576040516001556040517fe7b5cc087e6e47e33e86bdfe4720b7e849891938b18ff6e0c3f92299de79e60c5f6060a2005b5f5ffd5b6060518060e01c90506040518060201b905017815250565b6040518060201c90508060a01c610d8657815263ffffffff604051168060201c610d86578060e01b9050602082015250565b5f80fd0d3800e50b9f032a007500b40cdd001800550c710d38089f0d380d380d380d38011b0ac408160a3a072f00000000000000000000000056af9c2780e0323810acfdaeab3f58ef6e76fafd

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

00000000000000000000000056af9c2780e0323810acfdaeab3f58ef6e76fafd

-----Decoded View---------------
Arg [0] : _proxy (address): 0x56aF9C2780E0323810aCFdAeaB3F58ef6e76FaFd

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000056af9c2780e0323810acfdaeab3f58ef6e76fafd


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.