ETH Price: $3,139.18 (-2.02%)

Contract

0xB055EbbAcc8Eefc166c169e9Ce2886D0406aB49b

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute2541042902024-09-16 11:51:59424 days ago1726487519IN
0xB055EbbA...0406aB49b
0 ETH0.000003360.01
Execute1837293762024-02-23 17:12:13630 days ago1708708333IN
0xB055EbbA...0406aB49b
0 ETH0.000186280.1
Execute1720086562024-01-19 12:33:10665 days ago1705667590IN
0xB055EbbA...0406aB49b
0 ETH0.000094440.1
Execute919348112023-05-18 11:49:57911 days ago1684410597IN
0xB055EbbA...0406aB49b
0 ETH0.000176480.1
Execute919347892023-05-18 11:49:52911 days ago1684410592IN
0xB055EbbA...0406aB49b
0 ETH0.00018110.1
Execute919347572023-05-18 11:49:44911 days ago1684410584IN
0xB055EbbA...0406aB49b
0 ETH0.000188450.1
Execute919346902023-05-18 11:49:27911 days ago1684410567IN
0xB055EbbA...0406aB49b
0 ETH0.000113720.1
Execute919346432023-05-18 11:49:15911 days ago1684410555IN
0xB055EbbA...0406aB49b
0 ETH0.000115270.1
Accept_admin_cha...919025352023-05-18 9:34:35911 days ago1684402475IN
0xB055EbbA...0406aB49b
0 ETH0.000041230.1
Approve_admin_ch...917428542023-05-17 21:53:38912 days ago1684360418IN
0xB055EbbA...0406aB49b
0 ETH0.000069270.1
Request_admin_ch...917384452023-05-17 21:32:29912 days ago1684359149IN
0xB055EbbA...0406aB49b
0 ETH0.000075320.1
Execute460142552022-12-14 6:58:511067 days ago1671001131IN
0xB055EbbA...0406aB49b
0 ETH0.00004550.1
Execute287636172022-10-06 21:22:211135 days ago1665091341IN
0xB055EbbA...0406aB49b
0 ETH0.0001180.1
Execute282309772022-10-03 22:51:391138 days ago1664837499IN
0xB055EbbA...0406aB49b
0 ETH0.000053880.1
Execute192946252022-08-03 15:42:071199 days ago1659541327IN
0xB055EbbA...0406aB49b
0 ETH0.000138758101 ETH0.0999835
Execute192946232022-08-03 15:42:071199 days ago1659541327IN
0xB055EbbA...0406aB49b
0 ETH0.000062705252 ETH0.0999835
Execute192946122022-08-03 15:41:121199 days ago1659541272IN
0xB055EbbA...0406aB49b
0 ETH0.000203899851 ETH0.0999835

Latest 12 internal transactions

Parent Transaction Hash Block From To
460142552022-12-14 6:58:511067 days ago1671001131
0xB055EbbA...0406aB49b
0 ETH
460142552022-12-14 6:58:511067 days ago1671001131
0xB055EbbA...0406aB49b
0 ETH
460142552022-12-14 6:58:511067 days ago1671001131
0xB055EbbA...0406aB49b
0 ETH
287636172022-10-06 21:22:211135 days ago1665091341
0xB055EbbA...0406aB49b
0 ETH
287636172022-10-06 21:22:211135 days ago1665091341
0xB055EbbA...0406aB49b
0 ETH
287636172022-10-06 21:22:211135 days ago1665091341
0xB055EbbA...0406aB49b
0 ETH
282309772022-10-03 22:51:391138 days ago1664837499
0xB055EbbA...0406aB49b
0 ETH
282309772022-10-03 22:51:391138 days ago1664837499
0xB055EbbA...0406aB49b
0 ETH
282309772022-10-03 22:51:391138 days ago1664837499
0xB055EbbA...0406aB49b
0 ETH
192946252022-08-03 15:42:071199 days ago1659541327
0xB055EbbA...0406aB49b
0 ETH
192946232022-08-03 15:42:071199 days ago1659541327
0xB055EbbA...0406aB49b
0 ETH
192946122022-08-03 15:41:121199 days ago1659541272
0xB055EbbA...0406aB49b
0 ETH

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.2.11

Optimization Enabled:
N/A

Other Settings:
default evmVersion, MIT license

Contract Source Code (Vyper language format)

# @version 0.2.11
"""
@title ProxyAdmin
@notice Thin proxy allowing shared ownership of contracts
@author Ben Hauser
@license MIT
"""


event TransactionExecuted:
    admin: indexed(address)
    target: indexed(address)
    calldata: Bytes[100000]
    value: uint256

event RequestAdminChange:
    current_admin: address
    future_admin: address

event RevokeAdminChange:
    current_admin: address
    future_admin: address
    calling_admin: address

event ApproveAdminChange:
    current_admin: address
    future_admin: address
    calling_admin: address

event AcceptAdminChange:
    previous_admin: address
    current_admin: address


admins: public(address[2])

pending_current_admin: uint256
pending_new_admin: address
change_approved: bool


@external
def __init__(_authorized: address[2]):
    """
    @notice Contract constructor
    @param _authorized Admin accounts for this contract
    """
    self.admins = _authorized


@payable
@external
def execute(_target: address, _calldata: Bytes[100000]):
    """
    @notice Execute a contract call
    @dev Ether sent when calling this function is forwarded onward
    @param _target Address of the contract to call
    @param _calldata Calldata to use in the call
    """
    assert msg.sender in self.admins  # dev: only admin

    raw_call(_target, _calldata, value=msg.value)
    log TransactionExecuted(msg.sender, _target, _calldata, msg.value)


@view
@external
def get_admin_change_status() -> (address, address, bool):
    """
    @notice Get information about a pending admin change
    @return Admin address to be replaced,
            admin address to be added,
            has change been approved?
    """
    idx: uint256 = self.pending_current_admin
    if idx == 0:
        return ZERO_ADDRESS, ZERO_ADDRESS, False
    else:
        return self.admins[idx - 1], self.pending_new_admin, self.change_approved


@external
def request_admin_change(_new_admin: address):
    """
    @notice Initiate changing an admin address
    @param _new_admin New admin address (replaces msg.sender)
    """
    assert self.pending_current_admin == 0  # dev: already an active request

    admin_list: address[2] = self.admins
    assert _new_admin not in admin_list  # dev: new admin is already admin

    for i in range(2):
        if admin_list[i] == msg.sender:
            self.pending_current_admin = i + 1
            self.pending_new_admin = _new_admin
            log RequestAdminChange(msg.sender, _new_admin)
            return

    raise  # dev: only admin


@external
def approve_admin_change():
    """
    @notice Approve changing an admin address
    @dev Only callable by the 2nd admin address (the one that will not change)
    """
    idx: uint256 = self.pending_current_admin

    assert idx > 0  # dev: no active request
    assert msg.sender == self.admins[idx % 2]  # dev: caller is not 2nd admin

    self.change_approved = True
    log ApproveAdminChange(self.admins[idx - 1], self.pending_new_admin, msg.sender)


@external
def revoke_admin_change():
    """
    @notice Revoke changing an admin address
    @dev May be called by either admin at any time to reset the process,
         even if approval has previous been given
    """
    assert msg.sender in self.admins  # dev: only admin

    idx: uint256 = self.pending_current_admin
    pending_admin: address = ZERO_ADDRESS
    if idx > 0:
        pending_admin = self.admins[idx - 1]

    log RevokeAdminChange(pending_admin, self.pending_new_admin, msg.sender)

    self.pending_current_admin = 0
    self.pending_new_admin = ZERO_ADDRESS
    self.change_approved = False



@external
def accept_admin_change():
    """
    @notice Accept a changed admin address
    @dev Only callable by the new admin address, after approval has been given
    """
    assert self.change_approved == True  # dev: change not approved
    assert msg.sender == self.pending_new_admin  # dev: only new admin

    idx: uint256 = self.pending_current_admin - 1
    log AcceptAdminChange(self.admins[idx], msg.sender)
    self.admins[idx] = msg.sender

    self.pending_current_admin = 0
    self.pending_new_admin = ZERO_ADDRESS
    self.change_approved = False

Contract Security Audit

Contract ABI

API
[{"name":"TransactionExecuted","inputs":[{"name":"admin","type":"address","indexed":true},{"name":"target","type":"address","indexed":true},{"name":"calldata","type":"bytes","indexed":false},{"name":"value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"RequestAdminChange","inputs":[{"name":"current_admin","type":"address","indexed":false},{"name":"future_admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"RevokeAdminChange","inputs":[{"name":"current_admin","type":"address","indexed":false},{"name":"future_admin","type":"address","indexed":false},{"name":"calling_admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApproveAdminChange","inputs":[{"name":"current_admin","type":"address","indexed":false},{"name":"future_admin","type":"address","indexed":false},{"name":"calling_admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"AcceptAdminChange","inputs":[{"name":"previous_admin","type":"address","indexed":false},{"name":"current_admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_authorized","type":"address[2]"}],"outputs":[]},{"stateMutability":"payable","type":"function","name":"execute","inputs":[{"name":"_target","type":"address"},{"name":"_calldata","type":"bytes"}],"outputs":[],"gas":1168658},{"stateMutability":"view","type":"function","name":"get_admin_change_status","inputs":[],"outputs":[{"name":"","type":"address"},{"name":"","type":"address"},{"name":"","type":"bool"}],"gas":4202},{"stateMutability":"nonpayable","type":"function","name":"request_admin_change","inputs":[{"name":"_new_admin","type":"address"}],"outputs":[],"gas":148342},{"stateMutability":"nonpayable","type":"function","name":"approve_admin_change","inputs":[],"outputs":[],"gas":41716},{"stateMutability":"nonpayable","type":"function","name":"revoke_admin_change","inputs":[],"outputs":[],"gas":67885},{"stateMutability":"nonpayable","type":"function","name":"accept_admin_change","inputs":[],"outputs":[],"gas":101134},{"stateMutability":"view","type":"function","name":"admins","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}],"gas":1377}]

60406106f36101403960206106f360c03960c05160a01c1561002057600080fd5b602060206106f30160c03960c05160a01c1561003b57600080fd5b600060c052602060c020610140518155610160516001820155506106db56600436101561000d5761067b565b600035601c52600051631cff79cd8114156101af5760043560a01c1561003257600080fd5b620186c060243560040161014037620186a060243560040135111561005657600080fd5b600062018820526201882061012060006002818352015b61012051600060c052602060c020015433141561008d576001835261009d565b815160010180835281141561006d575b50505062018820516100ae57600080fd5b610140805160200180620188208284600060045af16100cc57600080fd5b505060006000620188205162018840346004355af16100ea57600080fd5b3462018880526040620188205262018820516201886052610140805160200180620188205162018860018284600060045af161012557600080fd5b50506201882051620188600151806020620188205162018860010101818260206001820306601f82010390500336823750506020620188205162018860015160206001820306601f8201039050620188205101016201882052600435337fcaac11c45e5fdb5c513e20ac229a3f9f99143580b5eb08d0fecbdd5ae8c81ef5620188205162018860a3005b34156101ba57600080fd5b6364bcd7308114156102825760015461014052610140511515610214576101c08080806000815250506020810190508080600081525050602081019050808060008152505060609050905060c05260c0516101c0f3610280565b6101608080806101405160018082101561022d57600080fd5b808203905090506002811061024157600080fd5b600060c052602060c02001548152505060208101905080806002548152505060208101905080806003548152505060609050905060c05260c051610160f35b005b63a52e73698114156103c35760043560a01c1561029e57600080fd5b600154156102ab57600080fd5b60008060c052602060c020546101405260018160c052602060c0200154610160525060006101805261018061012060006002818352015b61012051602002610140015160043514156103005760018352610310565b81516001018083528114156102e2575b505050610180511561032157600080fd5b61018060006002818352015b33610140610180516002811061034257600080fd5b602002015114156103ab5761018051600181818301101561036257600080fd5b80820190509050600155600435600255336101a0526004356101c0527f3dbc538770ecfcda0a15ac4731d922045333e3f55a9dbff4923d5ae950fd4b6860406101a0a160006000f35b815160010180835281141561032d575b505060006000fd5b63d1266a128114156104885760015461014052600061014051116103e657600080fd5b610140516002808206905090506002811061040057600080fd5b600060c052602060c0200154331461041757600080fd5b60016003556101405160018082101561042f57600080fd5b808203905090506002811061044357600080fd5b600060c052602060c02001546101605260025461018052336101a0527fb4a2afe1602258539e7638f32a9c55473646a5b004d1a2f76ed802bdd6b3c6116060610160a1005b631d43f5398114156105865760006101405261014061012060006002818352015b61012051600060c052602060c02001543314156104c957600183526104d9565b81516001018083528114156104a9575b505050610140516104e957600080fd5b60015461014052600061016052600061014051111561053a576101405160018082101561051557600080fd5b808203905090506002811061052957600080fd5b600060c052602060c0200154610160525b61016051610180526002546101a052336101c0527f65d4d3bd6f71ee062f64e7b4a0b8f2a379c599a6844765e697f10236058002966060610180a1600060015560006002556000600355005b63980cbc14811415610648576001600354146105a157600080fd5b60025433146105af57600080fd5b6001546001808210156105c157600080fd5b808203905090506101405261014051600281106105dd57600080fd5b600060c052602060c02001546101605233610180527f3f26d618a9f0bbc232d4e0814ca8f1b77fec61eff610a967d549270accd437fc6040610160a133610140516002811061062b57600080fd5b600060c052602060c0200155600060015560006002556000600355005b6314bfd6d0811415610679576004356002811061066457600080fd5b600060c052602060c020015460005260206000f35b505b60006000fd5b61005a6106db0361005a60003961005a6106db036000f30000000000000000000000007eeac6cddbd1d0b8af061742d41877d7f707289a000000000000000000000000babe61887f1de2713c6f97e567623453d3c79f67

Deployed Bytecode

0x600436101561000d5761067b565b600035601c52600051631cff79cd8114156101af5760043560a01c1561003257600080fd5b620186c060243560040161014037620186a060243560040135111561005657600080fd5b600062018820526201882061012060006002818352015b61012051600060c052602060c020015433141561008d576001835261009d565b815160010180835281141561006d575b50505062018820516100ae57600080fd5b610140805160200180620188208284600060045af16100cc57600080fd5b505060006000620188205162018840346004355af16100ea57600080fd5b3462018880526040620188205262018820516201886052610140805160200180620188205162018860018284600060045af161012557600080fd5b50506201882051620188600151806020620188205162018860010101818260206001820306601f82010390500336823750506020620188205162018860015160206001820306601f8201039050620188205101016201882052600435337fcaac11c45e5fdb5c513e20ac229a3f9f99143580b5eb08d0fecbdd5ae8c81ef5620188205162018860a3005b34156101ba57600080fd5b6364bcd7308114156102825760015461014052610140511515610214576101c08080806000815250506020810190508080600081525050602081019050808060008152505060609050905060c05260c0516101c0f3610280565b6101608080806101405160018082101561022d57600080fd5b808203905090506002811061024157600080fd5b600060c052602060c02001548152505060208101905080806002548152505060208101905080806003548152505060609050905060c05260c051610160f35b005b63a52e73698114156103c35760043560a01c1561029e57600080fd5b600154156102ab57600080fd5b60008060c052602060c020546101405260018160c052602060c0200154610160525060006101805261018061012060006002818352015b61012051602002610140015160043514156103005760018352610310565b81516001018083528114156102e2575b505050610180511561032157600080fd5b61018060006002818352015b33610140610180516002811061034257600080fd5b602002015114156103ab5761018051600181818301101561036257600080fd5b80820190509050600155600435600255336101a0526004356101c0527f3dbc538770ecfcda0a15ac4731d922045333e3f55a9dbff4923d5ae950fd4b6860406101a0a160006000f35b815160010180835281141561032d575b505060006000fd5b63d1266a128114156104885760015461014052600061014051116103e657600080fd5b610140516002808206905090506002811061040057600080fd5b600060c052602060c0200154331461041757600080fd5b60016003556101405160018082101561042f57600080fd5b808203905090506002811061044357600080fd5b600060c052602060c02001546101605260025461018052336101a0527fb4a2afe1602258539e7638f32a9c55473646a5b004d1a2f76ed802bdd6b3c6116060610160a1005b631d43f5398114156105865760006101405261014061012060006002818352015b61012051600060c052602060c02001543314156104c957600183526104d9565b81516001018083528114156104a9575b505050610140516104e957600080fd5b60015461014052600061016052600061014051111561053a576101405160018082101561051557600080fd5b808203905090506002811061052957600080fd5b600060c052602060c0200154610160525b61016051610180526002546101a052336101c0527f65d4d3bd6f71ee062f64e7b4a0b8f2a379c599a6844765e697f10236058002966060610180a1600060015560006002556000600355005b63980cbc14811415610648576001600354146105a157600080fd5b60025433146105af57600080fd5b6001546001808210156105c157600080fd5b808203905090506101405261014051600281106105dd57600080fd5b600060c052602060c02001546101605233610180527f3f26d618a9f0bbc232d4e0814ca8f1b77fec61eff610a967d549270accd437fc6040610160a133610140516002811061062b57600080fd5b600060c052602060c0200155600060015560006002556000600355005b6314bfd6d0811415610679576004356002811061066457600080fd5b600060c052602060c020015460005260206000f35b505b60006000fd

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

0000000000000000000000007eeac6cddbd1d0b8af061742d41877d7f707289a000000000000000000000000babe61887f1de2713c6f97e567623453d3c79f67

-----Decoded View---------------
Arg [0] : _authorized (address[2]): 0x7EeAC6CDdbd1D0B8aF061742D41877D7F707289a,0xbabe61887f1de2713c6f97e567623453d3C79f67

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007eeac6cddbd1d0b8af061742d41877d7f707289a
Arg [1] : 000000000000000000000000babe61887f1de2713c6f97e567623453d3c79f67


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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