ETH Price: $3,068.34 (+0.50%)

Contract

0xac6705BC7f6a35eb194bdB89066049D6f1B0B1b5
 
Transaction Hash
Method
Block
From
To
Value
Approve1188425372024-04-16 16:10:5120 hrs ago1713283851IN
0xac6705BC...6f1B0B1b5
0 ETH0.000003270.0638213
Approve1188423712024-04-16 16:05:1920 hrs ago1713283519IN
0xac6705BC...6f1B0B1b5
0 ETH0.000003470.0676875
Approve1188153982024-04-16 1:06:1335 hrs ago1713229573IN
0xac6705BC...6f1B0B1b5
0 ETH0.000003280.06405963
Approve1188147382024-04-16 0:44:1335 hrs ago1713228253IN
0xac6705BC...6f1B0B1b5
0 ETH0.000003170.0620012
Approve1187790582024-04-15 4:54:532 days ago1713156893IN
0xac6705BC...6f1B0B1b5
0 ETH0.000003140.06125054
Approve1186986052024-04-13 8:13:074 days ago1712995987IN
0xac6705BC...6f1B0B1b5
0 ETH0.00000310.06054495
Approve1186406472024-04-12 0:01:115 days ago1712880071IN
0xac6705BC...6f1B0B1b5
0 ETH0.000001810.0618946
Approve1186142782024-04-11 9:22:136 days ago1712827333IN
0xac6705BC...6f1B0B1b5
0 ETH0.000003340.0652208
Approve1185780282024-04-10 13:13:536 days ago1712754833IN
0xac6705BC...6f1B0B1b5
0 ETH0.000003130.061197
Approve1185142272024-04-09 1:47:118 days ago1712627231IN
0xac6705BC...6f1B0B1b5
0 ETH0.000003090.06041091
Approve1184619892024-04-07 20:45:559 days ago1712522755IN
0xac6705BC...6f1B0B1b5
0 ETH0.00000020.00696258
Approve1184234232024-04-06 23:20:2310 days ago1712445623IN
0xac6705BC...6f1B0B1b5
0 ETH0.000000520.01014895
Approve1183260432024-04-04 17:14:2312 days ago1712250863IN
0xac6705BC...6f1B0B1b5
0 ETH0.000003060.05980025
Approve1182930392024-04-03 22:54:1513 days ago1712184855IN
0xac6705BC...6f1B0B1b5
0 ETH0.000003080.0602394
Approve1182265332024-04-02 9:57:2315 days ago1712051843IN
0xac6705BC...6f1B0B1b5
0 ETH0.000003070.05991185
Approve1181813042024-04-01 8:49:4516 days ago1711961385IN
0xac6705BC...6f1B0B1b5
0 ETH0.000002650.05183767
Approve1181665972024-04-01 0:39:3116 days ago1711931971IN
0xac6705BC...6f1B0B1b5
0 ETH0.000002650.05173614
Approve1180490762024-03-29 7:22:0919 days ago1711696929IN
0xac6705BC...6f1B0B1b5
0 ETH0.000001560.03051699
Approve1180465752024-03-29 5:58:4719 days ago1711691927IN
0xac6705BC...6f1B0B1b5
0 ETH0.000000880.03020043
Approve1180437892024-03-29 4:25:5519 days ago1711686355IN
0xac6705BC...6f1B0B1b5
0 ETH0.000001460.02855501
Approve1180388782024-03-29 1:42:1319 days ago1711676533IN
0xac6705BC...6f1B0B1b5
0 ETH0.000001630.03197307
Approve1179802212024-03-27 17:06:5920 days ago1711559219IN
0xac6705BC...6f1B0B1b5
0 ETH0.000001490.02920078
Approve1179559822024-03-27 3:39:0121 days ago1711510741IN
0xac6705BC...6f1B0B1b5
0 ETH0.000000720.01415197
Approve1179539812024-03-27 2:32:1921 days ago1711506739IN
0xac6705BC...6f1B0B1b5
0 ETH0.000000470.0139953
Approve1179537492024-03-27 2:24:3521 days ago1711506275IN
0xac6705BC...6f1B0B1b5
0 ETH0.000077531.51364612
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Txn Hash Block From To Value
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
1075562052023-07-30 9:59:47262 days ago1690711187
0xac6705BC...6f1B0B1b5
0 ETH
View All Internal Transactions

Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x2845c692...37e616F09
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
EIP173Proxy

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 1 runs

Other Settings:
default evmVersion, GNU GPLv3 license
File 1 of 2 : EIP173Proxy.sol
// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.4;

import "./Proxy.sol";

interface ERC165 {
    function supportsInterface(bytes4 id) external view returns (bool);
}

///@notice Proxy implementing EIP173 for ownership management
contract EIP173Proxy is Proxy {
    // ////////////////////////// EVENTS ///////////////////////////////////////////////////////////////////////

    event ProxyAdminTransferred(
        address indexed previousAdmin,
        address indexed newAdmin
    );

    // /////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////////////

    constructor(
        address implementationAddress,
        address adminAddress,
        bytes memory data
    ) payable {
        _setImplementation(implementationAddress, data);
        _setProxyAdmin(adminAddress);
    }

    // ///////////////////// EXTERNAL ///////////////////////////////////////////////////////////////////////////

    function proxyAdmin() external view returns (address) {
        return _proxyAdmin();
    }

    function supportsInterface(bytes4 id) external view returns (bool) {
        if (id == 0x01ffc9a7 || id == 0x7f5828d0) {
            return true;
        }
        if (id == 0xFFFFFFFF) {
            return false;
        }

        ERC165 implementation;
        // solhint-disable-next-line security/no-inline-assembly
        assembly {
            implementation := sload(
                0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
            )
        }

        // Technically this is not standard compliant as ERC-165 require 30,000 gas which that call cannot ensure
        // because it is itself inside `supportsInterface` that might only get 30,000 gas.
        // In practise this is unlikely to be an issue.
        try implementation.supportsInterface(id) returns (bool support) {
            return support;
        } catch {
            return false;
        }
    }

    function transferProxyAdmin(address newAdmin) external onlyProxyAdmin {
        _setProxyAdmin(newAdmin);
    }

    function upgradeTo(address newImplementation) external onlyProxyAdmin {
        _setImplementation(newImplementation, "");
    }

    function upgradeToAndCall(address newImplementation, bytes calldata data)
        external
        payable
        onlyProxyAdmin
    {
        _setImplementation(newImplementation, data);
    }

    // /////////////////////// MODIFIERS ////////////////////////////////////////////////////////////////////////

    modifier onlyProxyAdmin() {
        require(msg.sender == _proxyAdmin(), "NOT_AUTHORIZED");
        _;
    }

    // ///////////////////////// INTERNAL //////////////////////////////////////////////////////////////////////

    function _proxyAdmin() internal view returns (address adminAddress) {
        // solhint-disable-next-line security/no-inline-assembly
        assembly {
            adminAddress := sload(
                0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103
            )
        }
    }

    function _setProxyAdmin(address newAdmin) internal {
        address previousAdmin = _proxyAdmin();
        // solhint-disable-next-line security/no-inline-assembly
        assembly {
            sstore(
                0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103,
                newAdmin
            )
        }
        emit ProxyAdminTransferred(previousAdmin, newAdmin);
    }
}

File 2 of 2 : Proxy.sol
// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.4;

// EIP-1967
abstract contract Proxy {
    // /////////////////////// EVENTS ///////////////////////////////////////////////////////////////////////////

    event ProxyImplementationUpdated(
        address indexed previousImplementation,
        address indexed newImplementation
    );

    // ///////////////////// EXTERNAL ///////////////////////////////////////////////////////////////////////////

    // prettier-ignore
    receive() external payable virtual {
        revert("ETHER_REJECTED"); // explicit reject by default
    }

    fallback() external payable {
        _fallback();
    }

    // ///////////////////////// INTERNAL //////////////////////////////////////////////////////////////////////

    function _fallback() internal {
        // solhint-disable-next-line security/no-inline-assembly
        assembly {
            let implementationAddress := sload(
                0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
            )
            calldatacopy(0x0, 0x0, calldatasize())
            let success := delegatecall(
                gas(),
                implementationAddress,
                0x0,
                calldatasize(),
                0,
                0
            )
            let retSz := returndatasize()
            returndatacopy(0, 0, retSz)
            switch success
                case 0 {
                    revert(0, retSz)
                }
                default {
                    return(0, retSz)
                }
        }
    }

    function _setImplementation(address newImplementation, bytes memory data)
        internal
    {
        address previousImplementation;
        // solhint-disable-next-line security/no-inline-assembly
        assembly {
            previousImplementation := sload(
                0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
            )
        }

        // solhint-disable-next-line security/no-inline-assembly
        assembly {
            sstore(
                0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc,
                newImplementation
            )
        }

        emit ProxyImplementationUpdated(
            previousImplementation,
            newImplementation
        );

        if (data.length > 0) {
            (bool success, ) = newImplementation.delegatecall(data);
            if (!success) {
                assembly {
                    // This assembly ensure the revert contains the exact string data
                    let returnDataSize := returndatasize()
                    returndatacopy(0, 0, returnDataSize)
                    revert(0, returnDataSize)
                }
            }
        }
    }
}

Settings
{
  "evmVersion": "istanbul",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 1
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"implementationAddress","type":"address"},{"internalType":"address","name":"adminAddress","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"ProxyAdminTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousImplementation","type":"address"},{"indexed":true,"internalType":"address","name":"newImplementation","type":"address"}],"name":"ProxyImplementationUpdated","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"proxyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"id","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"transferProxyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x60806040526004361061004e5760003560e01c806301ffc9a71461009b5780633659cfe6146100d05780633e47158c146100f05780634f1ef2861461011d5780638356ca4f1461013057610091565b366100915760405162461bcd60e51b815260206004820152600e60248201526d115512115497d491529150d5115160921b60448201526064015b60405180910390fd5b610099610150565b005b3480156100a757600080fd5b506100bb6100b63660046105a9565b610189565b60405190151581526020015b60405180910390f35b3480156100dc57600080fd5b506100996100eb3660046104f2565b61027e565b3480156100fc57600080fd5b506101056102d2565b6040516001600160a01b0390911681526020016100c7565b61009961012b36600461050c565b6102e1565b34801561013c57600080fd5b5061009961014b3660046104f2565b61035e565b6000805160206106538339815191525460003681823780813683855af491503d8082833e82801561017f578183f35b8183fd5b50505050565b60006301ffc9a760e01b6001600160e01b0319831614806101ba57506307f5828d60e41b6001600160e01b03198316145b156101c757506001919050565b6001600160e01b031980831614156101e157506000919050565b600080516020610653833981519152546040516301ffc9a760e01b81526001600160e01b0319841660048201526001600160a01b038216906301ffc9a79060240160206040518083038186803b15801561023a57600080fd5b505afa92505050801561026a575060408051601f3d908101601f1916820190925261026791810190610589565b60015b6102775750600092915050565b9392505050565b61028661039f565b6001600160a01b0316336001600160a01b0316146102b65760405162461bcd60e51b81526004016100889061060a565b6102cf81604051806020016040528060008152506103b2565b50565b60006102dc61039f565b905090565b6102e961039f565b6001600160a01b0316336001600160a01b0316146103195760405162461bcd60e51b81526004016100889061060a565b6103598383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103b292505050565b505050565b61036661039f565b6001600160a01b0316336001600160a01b0316146103965760405162461bcd60e51b81526004016100889061060a565b6102cf81610475565b6000805160206106338339815191525490565b6000805160206106538339815191528054908390556040516001600160a01b0380851691908316907f5570d70a002632a7b0b3c9304cc89efb62d8da9eca0dbd7752c83b737906829690600090a3815115610359576000836001600160a01b03168360405161042191906105d1565b600060405180830381855af49150503d806000811461045c576040519150601f19603f3d011682016040523d82523d6000602084013e610461565b606091505b5050905080610183573d806000803e806000fd5b600061047f61039f565b90508160008051602061063383398151915255816001600160a01b0316816001600160a01b03167fdf435d422321da6b195902d70fc417c06a32f88379c20dd8f2a8da07088cec2960405160405180910390a35050565b80356001600160a01b03811681146104ed57600080fd5b919050565b600060208284031215610503578081fd5b610277826104d6565b600080600060408486031215610520578182fd5b610529846104d6565b925060208401356001600160401b0380821115610544578384fd5b818601915086601f830112610557578384fd5b813581811115610565578485fd5b876020828501011115610576578485fd5b6020830194508093505050509250925092565b60006020828403121561059a578081fd5b81518015158114610277578182fd5b6000602082840312156105ba578081fd5b81356001600160e01b031981168114610277578182fd5b60008251815b818110156105f157602081860181015185830152016105d7565b818111156105ff5782828501525b509190910192915050565b6020808252600e908201526d1393d517d055551213d49256915160921b60408201526060019056feb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220730effc08e7ae1c19f69ae08dd52de483b649ded49db9428e4ced9875431474364736f6c63430008040033

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

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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