ETH Price: $2,541.39 (-1.30%)

Contract

0xFdFF462845953D90719A78Fd12a2d103541d2103
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw To210262952024-10-23 5:48:3526 hrs ago1729662515IN
Kroma: Validator Pool
0 ETH0.000439725.3852297
Withdraw To210262932024-10-23 5:48:1126 hrs ago1729662491IN
Kroma: Validator Pool
0 ETH0.000444895.44774546
Withdraw To210262912024-10-23 5:47:4726 hrs ago1729662467IN
Kroma: Validator Pool
0 ETH0.000445855.45949194
Withdraw To210262892024-10-23 5:47:2326 hrs ago1729662443IN
Kroma: Validator Pool
0 ETH0.000313665.30795977
Withdraw To210262872024-10-23 5:46:5926 hrs ago1729662419IN
Kroma: Validator Pool
0 ETH0.000413645.06506372
Withdraw To210262792024-10-23 5:45:2326 hrs ago1729662323IN
Kroma: Validator Pool
0 ETH0.000423475.18621243
Withdraw To210262752024-10-23 5:44:3526 hrs ago1729662275IN
Kroma: Validator Pool
0 ETH0.000450455.51582814
Withdraw210207822024-10-22 11:20:5945 hrs ago1729596059IN
Kroma: Validator Pool
0 ETH0.000416678.51277058
Withdraw210169452024-10-21 22:28:472 days ago1729549727IN
Kroma: Validator Pool
0 ETH0.000358896.32887119
Withdraw210169442024-10-21 22:28:352 days ago1729549715IN
Kroma: Validator Pool
0 ETH0.000369856.52216386
Withdraw210169422024-10-21 22:28:112 days ago1729549691IN
Kroma: Validator Pool
0 ETH0.000324355.71982672
Withdraw210169402024-10-21 22:27:472 days ago1729549667IN
Kroma: Validator Pool
0 ETH0.000370886.54032966
Withdraw210169392024-10-21 22:27:352 days ago1729549655IN
Kroma: Validator Pool
0 ETH0.000355016.26053042
Withdraw210169382024-10-21 22:27:232 days ago1729549643IN
Kroma: Validator Pool
0 ETH0.000353536.23441041
Withdraw210169362024-10-21 22:26:592 days ago1729549619IN
Kroma: Validator Pool
0 ETH0.00035166.20033758
Withdraw210169352024-10-21 22:26:472 days ago1729549607IN
Kroma: Validator Pool
0 ETH0.000360986.36572279
Withdraw210169342024-10-21 22:26:352 days ago1729549595IN
Kroma: Validator Pool
0 ETH0.000370856.53986765
Withdraw210169322024-10-21 22:26:112 days ago1729549571IN
Kroma: Validator Pool
0 ETH0.000328355.79029736
Withdraw210169312024-10-21 22:25:592 days ago1729549559IN
Kroma: Validator Pool
0 ETH0.000350886.18773014
Withdraw210169302024-10-21 22:25:472 days ago1729549547IN
Kroma: Validator Pool
0 ETH0.000341136.01571523
Withdraw210169282024-10-21 22:25:232 days ago1729549523IN
Kroma: Validator Pool
0 ETH0.000349316.15998963
Withdraw210169272024-10-21 22:25:112 days ago1729549511IN
Kroma: Validator Pool
0 ETH0.000345046.08462828
Withdraw210169252024-10-21 22:24:472 days ago1729549487IN
Kroma: Validator Pool
0 ETH0.000353616.23574541
Withdraw210169242024-10-21 22:24:352 days ago1729549475IN
Kroma: Validator Pool
0 ETH0.000365686.44870122
Withdraw210169152024-10-21 22:22:472 days ago1729549367IN
Kroma: Validator Pool
0 ETH0.000354526.25195838
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
210340752024-10-24 7:50:4736 mins ago1729756247
0xFdFF4628...3541d2103
0 ETH
210340752024-10-24 7:50:4736 mins ago1729756247
0xFdFF4628...3541d2103
0 ETH
210340752024-10-24 7:50:4736 mins ago1729756247
0xFdFF4628...3541d2103
0 ETH
210340752024-10-24 7:50:4736 mins ago1729756247
0xFdFF4628...3541d2103
0 ETH
210340752024-10-24 7:50:4736 mins ago1729756247
0xFdFF4628...3541d2103
0 ETH
210340752024-10-24 7:50:4736 mins ago1729756247
0xFdFF4628...3541d2103
0 ETH
210340752024-10-24 7:50:4736 mins ago1729756247
0xFdFF4628...3541d2103
0 ETH
210340752024-10-24 7:50:4736 mins ago1729756247
0xFdFF4628...3541d2103
0 ETH
210340752024-10-24 7:50:4736 mins ago1729756247
0xFdFF4628...3541d2103
0 ETH
210337822024-10-24 6:51:471 hr ago1729752707
0xFdFF4628...3541d2103
0 ETH
210337822024-10-24 6:51:471 hr ago1729752707
0xFdFF4628...3541d2103
0 ETH
210337822024-10-24 6:51:471 hr ago1729752707
0xFdFF4628...3541d2103
0 ETH
210337822024-10-24 6:51:471 hr ago1729752707
0xFdFF4628...3541d2103
0 ETH
210337822024-10-24 6:51:471 hr ago1729752707
0xFdFF4628...3541d2103
0 ETH
210337822024-10-24 6:51:471 hr ago1729752707
0xFdFF4628...3541d2103
0 ETH
210337822024-10-24 6:51:471 hr ago1729752707
0xFdFF4628...3541d2103
0 ETH
210337822024-10-24 6:51:471 hr ago1729752707
0xFdFF4628...3541d2103
0 ETH
210337822024-10-24 6:51:471 hr ago1729752707
0xFdFF4628...3541d2103
0 ETH
210337822024-10-24 6:51:471 hr ago1729752707
0xFdFF4628...3541d2103
0 ETH
210337822024-10-24 6:51:471 hr ago1729752707
0xFdFF4628...3541d2103
0 ETH
210337822024-10-24 6:51:471 hr ago1729752707
0xFdFF4628...3541d2103
0 ETH
210337822024-10-24 6:51:471 hr ago1729752707
0xFdFF4628...3541d2103
0 ETH
210337822024-10-24 6:51:471 hr ago1729752707
0xFdFF4628...3541d2103
0 ETH
210334902024-10-24 5:53:112 hrs ago1729749191
0xFdFF4628...3541d2103
0 ETH
210334902024-10-24 5:53:112 hrs ago1729749191
0xFdFF4628...3541d2103
0 ETH
View All Internal Transactions
Loading...
Loading

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

Contract Name:
Proxy

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion
File 1 of 1 : Proxy.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.15;

/**
 * @title Proxy
 * @notice Proxy is a transparent proxy that passes through the call if the caller is the owner or
 *         if the caller is address(0), meaning that the call originated from an off-chain
 *         simulation.
 */
contract Proxy {
    /**
     * @notice The storage slot that holds the address of the implementation.
     *         bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1)
     */
    bytes32 internal constant IMPLEMENTATION_KEY =
        0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    /**
     * @notice The storage slot that holds the address of the owner.
     *         bytes32(uint256(keccak256('eip1967.proxy.admin')) - 1)
     */
    bytes32 internal constant OWNER_KEY =
        0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

    /**
     * @notice An event that is emitted each time the implementation is changed. This event is part
     *         of the EIP-1967 specification.
     *
     * @param implementation The address of the implementation contract
     */
    event Upgraded(address indexed implementation);

    /**
     * @notice An event that is emitted each time the owner is upgraded. This event is part of the
     *         EIP-1967 specification.
     *
     * @param previousAdmin The previous owner of the contract
     * @param newAdmin      The new owner of the contract
     */
    event AdminChanged(address previousAdmin, address newAdmin);

    /**
     * @notice A modifier that reverts if not called by the owner or by address(0) to allow
     *         eth_call to interact with this proxy without needing to use low-level storage
     *         inspection. We assume that nobody is able to trigger calls from address(0) during
     *         normal EVM execution.
     */
    modifier proxyCallIfNotAdmin() {
        if (msg.sender == _getAdmin() || msg.sender == address(0)) {
            _;
        } else {
            // This WILL halt the call frame on completion.
            _doProxyCall();
        }
    }

    /**
     * @notice Sets the initial admin during contract deployment. Admin address is stored at the
     *         EIP-1967 admin storage slot so that accidental storage collision with the
     *         implementation is not possible.
     *
     * @param _admin Address of the initial contract admin. Admin as the ability to access the
     *               transparent proxy interface.
     */
    constructor(address _admin) {
        _changeAdmin(_admin);
    }

    // slither-disable-next-line locked-ether
    receive() external payable {
        // Proxy call by default.
        _doProxyCall();
    }

    // slither-disable-next-line locked-ether
    fallback() external payable {
        // Proxy call by default.
        _doProxyCall();
    }

    /**
     * @notice Set the implementation contract address. The code at the given address will execute
     *         when this contract is called.
     *
     * @param _implementation Address of the implementation contract.
     */
    function upgradeTo(address _implementation) public virtual proxyCallIfNotAdmin {
        _setImplementation(_implementation);
    }

    /**
     * @notice Set the implementation and call a function in a single transaction. Useful to ensure
     *         atomic execution of initialization-based upgrades.
     *
     * @param _implementation Address of the implementation contract.
     * @param _data           Calldata to delegatecall the new implementation with.
     */
    function upgradeToAndCall(address _implementation, bytes calldata _data)
        public
        payable
        virtual
        proxyCallIfNotAdmin
        returns (bytes memory)
    {
        _setImplementation(_implementation);
        (bool success, bytes memory returndata) = _implementation.delegatecall(_data);
        require(success, "Proxy: delegatecall to new implementation contract failed");
        return returndata;
    }

    /**
     * @notice Changes the owner of the proxy contract. Only callable by the owner.
     *
     * @param _admin New owner of the proxy contract.
     */
    function changeAdmin(address _admin) public virtual proxyCallIfNotAdmin {
        _changeAdmin(_admin);
    }

    /**
     * @notice Gets the owner of the proxy contract.
     *
     * @return Owner address.
     */
    function admin() public virtual proxyCallIfNotAdmin returns (address) {
        return _getAdmin();
    }

    /**
     * @notice Queries the implementation address.
     *
     * @return Implementation address.
     */
    function implementation() public virtual proxyCallIfNotAdmin returns (address) {
        return _getImplementation();
    }

    /**
     * @notice Sets the implementation address.
     *
     * @param _implementation New implementation address.
     */
    function _setImplementation(address _implementation) internal {
        assembly {
            sstore(IMPLEMENTATION_KEY, _implementation)
        }
        emit Upgraded(_implementation);
    }

    /**
     * @notice Changes the owner of the proxy contract.
     *
     * @param _admin New owner of the proxy contract.
     */
    function _changeAdmin(address _admin) internal {
        address previous = _getAdmin();
        assembly {
            sstore(OWNER_KEY, _admin)
        }
        emit AdminChanged(previous, _admin);
    }

    /**
     * @notice Performs the proxy call via a delegatecall.
     */
    function _doProxyCall() internal {
        address impl = _getImplementation();
        require(impl != address(0), "Proxy: implementation not initialized");

        assembly {
            // Copy calldata into memory at 0x0....calldatasize.
            calldatacopy(0x0, 0x0, calldatasize())

            // Perform the delegatecall, make sure to pass all available gas.
            let success := delegatecall(gas(), impl, 0x0, calldatasize(), 0x0, 0x0)

            // Copy returndata into memory at 0x0....returndatasize. Note that this *will*
            // overwrite the calldata that we just copied into memory but that doesn't really
            // matter because we'll be returning in a second anyway.
            returndatacopy(0x0, 0x0, returndatasize())

            // Success == 0 means a revert. We'll revert too and pass the data up.
            if iszero(success) {
                revert(0x0, returndatasize())
            }

            // Otherwise we'll just return and pass the data up.
            return(0x0, returndatasize())
        }
    }

    /**
     * @notice Queries the implementation address.
     *
     * @return Implementation address.
     */
    function _getImplementation() internal view returns (address) {
        address impl;
        assembly {
            impl := sload(IMPLEMENTATION_KEY)
        }
        return impl;
    }

    /**
     * @notice Queries the owner of the proxy contract.
     *
     * @return Owner address.
     */
    function _getAdmin() internal view returns (address) {
        address owner;
        assembly {
            owner := sload(OWNER_KEY)
        }
        return owner;
    }
}

Settings
{
  "remappings": [
    "@openzeppelin/=node_modules/@openzeppelin/",
    "@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/",
    "@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/",
    "@rari-capital/=node_modules/@rari-capital/",
    "@rari-capital/solmate/=node_modules/@rari-capital/solmate/",
    "ds-test/=node_modules/ds-test/src/",
    "forge-std/=node_modules/forge-std/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 999999
  },
  "metadata": {
    "bytecodeHash": "none"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_implementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_implementation","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a

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.