ETH Price: $2,979.69 (-0.47%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Age:24H
Reset Filter

Transaction Hash
Method
Block
From
To

There are no matching entries

Update your filters to view other transactions

Age:24H
Reset Filter

Advanced mode:
Parent Transaction Hash Method Block
From
To

There are no matching entries

Update your filters to view other transactions

View All Internal Transactions
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ProxyPausable

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.6;

import "./Proxy.sol";

contract ProxyPausable is Proxy {

    bytes32 constant PAUSED_SLOT = keccak256(abi.encodePacked("PAUSED_SLOT"));
    bytes32 constant PAUZER_SLOT = keccak256(abi.encodePacked("PAUZER_SLOT"));


    constructor() Proxy() {
        setAddress(PAUZER_SLOT, msg.sender);
    }


    modifier onlyPauzer() {
        require(msg.sender == readAddress(PAUZER_SLOT), "ProxyPausable.onlyPauzer: msg sender not pauzer");
        _;
    }

    modifier notPaused() {
        require(!readBool(PAUSED_SLOT), "ProxyPausable.notPaused: contract is paused");
        _;
    }

    function getPauzer() public view returns (address) {
        return readAddress(PAUZER_SLOT);
    }

    function setPauzer(address _newPauzer) public onlyProxyOwner{
        setAddress(PAUZER_SLOT, _newPauzer);
    }

    function renouncePauzer() public onlyPauzer {
        setAddress(PAUZER_SLOT, address(0));
    }

    function getPaused() public view returns (bool) {
        return readBool(PAUSED_SLOT);
    }

    function setPaused(bool _value) public onlyPauzer {
        setBool(PAUSED_SLOT, _value);
    }

    function internalFallback() internal virtual override notPaused {
        super.internalFallback();
    }

}

// SPDX-License-Identifier: MIT
pragma solidity ^0.7.6;

import "./ProxyStorage.sol";

contract Proxy is ProxyStorage {

    bytes32 constant IMPLEMENTATION_SLOT = keccak256(abi.encodePacked("IMPLEMENTATION_SLOT"));
    bytes32 constant OWNER_SLOT = keccak256(abi.encodePacked("OWNER_SLOT"));

    modifier onlyProxyOwner() {
        require(msg.sender == readAddress(OWNER_SLOT), "Proxy.onlyProxyOwner: msg sender not owner");
        _;
    }

    constructor () {
        setAddress(OWNER_SLOT, msg.sender);
    }

    function getProxyOwner() public view returns (address) {
       return readAddress(OWNER_SLOT);
    }

    function setProxyOwner(address _newOwner) onlyProxyOwner public {
        setAddress(OWNER_SLOT, _newOwner);
    }

    function getImplementation() public view returns (address) {
        return readAddress(IMPLEMENTATION_SLOT);
    }

    function setImplementation(address _newImplementation) onlyProxyOwner public {
        setAddress(IMPLEMENTATION_SLOT, _newImplementation);
    }


    fallback () external payable {
       return internalFallback();
    }

    receive () payable external {
        return internalFallback();
    }
    function internalFallback() internal virtual {
        address contractAddr = readAddress(IMPLEMENTATION_SLOT);
        assembly {
            let ptr := mload(0x40)
            calldatacopy(ptr, 0, calldatasize())
            let result := delegatecall(gas(), contractAddr, ptr, calldatasize(), 0, 0)
            let size := returndatasize()
            returndatacopy(ptr, 0, size)

            switch result
            case 0 { revert(ptr, size) }
            default { return(ptr, size) }
        }
    }

}

// SPDX-License-Identifier: MIT
pragma solidity ^0.7.6;
contract ProxyStorage {

    function readBool(bytes32 _key) public view returns(bool) {
        return storageRead(_key) == bytes32(uint256(1));
    }

    function setBool(bytes32 _key, bool _value) internal {
        if(_value) {
            storageSet(_key, bytes32(uint256(1)));
        } else {
            storageSet(_key, bytes32(uint256(0)));
        }
    }

    function readAddress(bytes32 _key) public view returns(address) {
        return bytes32ToAddress(storageRead(_key));
    }

    function setAddress(bytes32 _key, address _value) internal {
        storageSet(_key, addressToBytes32(_value));
    }

    function storageRead(bytes32 _key) public view returns(bytes32) {
        bytes32 value;
        //solium-disable-next-line security/no-inline-assembly
        assembly {
            value := sload(_key)
        }
        return value;
    }

    function storageSet(bytes32 _key, bytes32 _value) internal {
        // targetAddress = _address;  // No!
        bytes32 implAddressStorageKey = _key;
        //solium-disable-next-line security/no-inline-assembly
        assembly {
            sstore(implAddressStorageKey, _value)
        }
    }

    function bytes32ToAddress(bytes32 _value) public pure returns(address) {
        return address(uint160(uint256(_value)));
    }

    function addressToBytes32(address _value) public pure returns(bytes32) {
        return bytes32(uint256(uint160(_value)));
    }

}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"_value","type":"address"}],"name":"addressToBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_value","type":"bytes32"}],"name":"bytes32ToAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPauzer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProxyOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"readAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"readBool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renouncePauzer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newImplementation","type":"address"}],"name":"setImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newPauzer","type":"address"}],"name":"setPauzer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"setProxyOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"storageRead","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b5061005460405160200180806913d5d3915497d4d313d560b21b815250600a019050604051602081830303815290604052805190602001203361009d60201b60201c565b61009860405160200180806a14105556915497d4d313d560aa1b815250600b019050604051602081830303815290604052805190602001203361009d60201b60201c565b6100c3565b6100af826100aa836100b3565b6100bf565b5050565b6001600160a01b031690565b9055565b610a66806100d26000396000f3fe6080604052600436106100e15760003560e01c806382c947b71161007f578063aaf10f4211610059578063aaf10f421461029e578063bb15ac8e146102b3578063caaee91c146102dd578063d784d42614610310576100f0565b806382c947b71461020e5780638f4edfe2146102415780639d84ae6914610274576100f0565b806337a440e6116100bb57806337a440e61461016a5780634bde4b2e146101a65780635ced058e146101bb5780636805b84b146101e5576100f0565b806316c38b3c146100f857806317b857dd146101245780631ab7710d14610139576100f0565b366100f0576100ee610343565b005b6100ee610343565b34801561010457600080fd5b506100ee6004803603602081101561011b57600080fd5b503515156103c6565b34801561013057600080fd5b506100ee610493565b34801561014557600080fd5b5061014e61055e565b604080516001600160a01b039092168252519081900360200190f35b34801561017657600080fd5b506101946004803603602081101561018d57600080fd5b50356105a1565b60408051918252519081900360200190f35b3480156101b257600080fd5b5061014e6105a5565b3480156101c757600080fd5b5061014e600480360360208110156101de57600080fd5b50356105e4565b3480156101f157600080fd5b506101fa6105e7565b604080519115158252519081900360200190f35b34801561021a57600080fd5b506101946004803603602081101561023157600080fd5b50356001600160a01b0316610626565b34801561024d57600080fd5b506100ee6004803603602081101561026457600080fd5b50356001600160a01b0316610632565b34801561028057600080fd5b5061014e6004803603602081101561029757600080fd5b50356106fb565b3480156102aa57600080fd5b5061014e610714565b3480156102bf57600080fd5b506101fa600480360360208110156102d657600080fd5b503561075b565b3480156102e957600080fd5b506100ee6004803603602081101561030057600080fd5b50356001600160a01b031661076f565b34801561031c57600080fd5b506100ee6004803603602081101561033357600080fd5b50356001600160a01b0316610837565b61038060405160200180806a14105554d15117d4d313d560aa1b815250600b0190506040516020818303038152906040528051906020012061075b565b156103bc5760405162461bcd60e51b815260040180806020018281038252602b815260200180610a06602b913960400191505060405180910390fd5b6103c4610908565b565b61040360405160200180806a14105556915497d4d313d560aa1b815250600b019050604051602081830303815290604052805190602001206106fb565b6001600160a01b0316336001600160a01b0316146104525760405162461bcd60e51b815260040180806020018281038252602f8152602001806109d7602f913960400191505060405180910390fd5b61049060405160200180806a14105554d15117d4d313d560aa1b815250600b0190506040516020818303038152906040528051906020012082610976565b50565b6104d060405160200180806a14105556915497d4d313d560aa1b815250600b019050604051602081830303815290604052805190602001206106fb565b6001600160a01b0316336001600160a01b03161461051f5760405162461bcd60e51b815260040180806020018281038252602f8152602001806109d7602f913960400191505060405180910390fd5b6103c460405160200180806a14105556915497d4d313d560aa1b815250600b01905060405160208183030381529060405280519060200120600061099b565b600061059c60405160200180806913d5d3915497d4d313d560b21b815250600a019050604051602081830303815290604052805190602001206106fb565b905090565b5490565b600061059c60405160200180806a14105556915497d4d313d560aa1b815250600b019050604051602081830303815290604052805190602001206106fb565b90565b600061059c60405160200180806a14105554d15117d4d313d560aa1b815250600b0190506040516020818303038152906040528051906020012061075b565b6001600160a01b031690565b61066e60405160200180806913d5d3915497d4d313d560b21b815250600a019050604051602081830303815290604052805190602001206106fb565b6001600160a01b0316336001600160a01b0316146106bd5760405162461bcd60e51b815260040180806020018281038252602a8152602001806109ad602a913960400191505060405180910390fd5b61049060405160200180806a14105556915497d4d313d560aa1b815250600b019050604051602081830303815290604052805190602001208261099b565b600061070e610709836105a1565b6105e4565b92915050565b600061059c60405160200180807212535413115351539510551253d397d4d313d5606a1b8152506013019050604051602081830303815290604052805190602001206106fb565b60006001610768836105a1565b1492915050565b6107ab60405160200180806913d5d3915497d4d313d560b21b815250600a019050604051602081830303815290604052805190602001206106fb565b6001600160a01b0316336001600160a01b0316146107fa5760405162461bcd60e51b815260040180806020018281038252602a8152602001806109ad602a913960400191505060405180910390fd5b61049060405160200180806913d5d3915497d4d313d560b21b815250600a019050604051602081830303815290604052805190602001208261099b565b61087360405160200180806913d5d3915497d4d313d560b21b815250600a019050604051602081830303815290604052805190602001206106fb565b6001600160a01b0316336001600160a01b0316146108c25760405162461bcd60e51b815260040180806020018281038252602a8152602001806109ad602a913960400191505060405180910390fd5b61049060405160200180807212535413115351539510551253d397d4d313d5606a1b8152506013019050604051602081830303815290604052805190602001208261099b565b600061094f60405160200180807212535413115351539510551253d397d4d313d5606a1b8152506013019050604051602081830303815290604052805190602001206106fb565b905060405136600082376000803683855af43d806000843e818015610972578184f35b8184fd5b801561098c576109878260016109a8565b610997565b6109978260006109a8565b5050565b610997826109a883610626565b905556fe50726f78792e6f6e6c7950726f78794f776e65723a206d73672073656e646572206e6f74206f776e657250726f78795061757361626c652e6f6e6c795061757a65723a206d73672073656e646572206e6f74207061757a657250726f78795061757361626c652e6e6f745061757365643a20636f6e747261637420697320706175736564a2646970667358221220093f940d7b68e3e359fad777a31b4af6914c80224527c1b6000d9577bf4e504f64736f6c63430007060033

Deployed Bytecode

0x6080604052600436106100e15760003560e01c806382c947b71161007f578063aaf10f4211610059578063aaf10f421461029e578063bb15ac8e146102b3578063caaee91c146102dd578063d784d42614610310576100f0565b806382c947b71461020e5780638f4edfe2146102415780639d84ae6914610274576100f0565b806337a440e6116100bb57806337a440e61461016a5780634bde4b2e146101a65780635ced058e146101bb5780636805b84b146101e5576100f0565b806316c38b3c146100f857806317b857dd146101245780631ab7710d14610139576100f0565b366100f0576100ee610343565b005b6100ee610343565b34801561010457600080fd5b506100ee6004803603602081101561011b57600080fd5b503515156103c6565b34801561013057600080fd5b506100ee610493565b34801561014557600080fd5b5061014e61055e565b604080516001600160a01b039092168252519081900360200190f35b34801561017657600080fd5b506101946004803603602081101561018d57600080fd5b50356105a1565b60408051918252519081900360200190f35b3480156101b257600080fd5b5061014e6105a5565b3480156101c757600080fd5b5061014e600480360360208110156101de57600080fd5b50356105e4565b3480156101f157600080fd5b506101fa6105e7565b604080519115158252519081900360200190f35b34801561021a57600080fd5b506101946004803603602081101561023157600080fd5b50356001600160a01b0316610626565b34801561024d57600080fd5b506100ee6004803603602081101561026457600080fd5b50356001600160a01b0316610632565b34801561028057600080fd5b5061014e6004803603602081101561029757600080fd5b50356106fb565b3480156102aa57600080fd5b5061014e610714565b3480156102bf57600080fd5b506101fa600480360360208110156102d657600080fd5b503561075b565b3480156102e957600080fd5b506100ee6004803603602081101561030057600080fd5b50356001600160a01b031661076f565b34801561031c57600080fd5b506100ee6004803603602081101561033357600080fd5b50356001600160a01b0316610837565b61038060405160200180806a14105554d15117d4d313d560aa1b815250600b0190506040516020818303038152906040528051906020012061075b565b156103bc5760405162461bcd60e51b815260040180806020018281038252602b815260200180610a06602b913960400191505060405180910390fd5b6103c4610908565b565b61040360405160200180806a14105556915497d4d313d560aa1b815250600b019050604051602081830303815290604052805190602001206106fb565b6001600160a01b0316336001600160a01b0316146104525760405162461bcd60e51b815260040180806020018281038252602f8152602001806109d7602f913960400191505060405180910390fd5b61049060405160200180806a14105554d15117d4d313d560aa1b815250600b0190506040516020818303038152906040528051906020012082610976565b50565b6104d060405160200180806a14105556915497d4d313d560aa1b815250600b019050604051602081830303815290604052805190602001206106fb565b6001600160a01b0316336001600160a01b03161461051f5760405162461bcd60e51b815260040180806020018281038252602f8152602001806109d7602f913960400191505060405180910390fd5b6103c460405160200180806a14105556915497d4d313d560aa1b815250600b01905060405160208183030381529060405280519060200120600061099b565b600061059c60405160200180806913d5d3915497d4d313d560b21b815250600a019050604051602081830303815290604052805190602001206106fb565b905090565b5490565b600061059c60405160200180806a14105556915497d4d313d560aa1b815250600b019050604051602081830303815290604052805190602001206106fb565b90565b600061059c60405160200180806a14105554d15117d4d313d560aa1b815250600b0190506040516020818303038152906040528051906020012061075b565b6001600160a01b031690565b61066e60405160200180806913d5d3915497d4d313d560b21b815250600a019050604051602081830303815290604052805190602001206106fb565b6001600160a01b0316336001600160a01b0316146106bd5760405162461bcd60e51b815260040180806020018281038252602a8152602001806109ad602a913960400191505060405180910390fd5b61049060405160200180806a14105556915497d4d313d560aa1b815250600b019050604051602081830303815290604052805190602001208261099b565b600061070e610709836105a1565b6105e4565b92915050565b600061059c60405160200180807212535413115351539510551253d397d4d313d5606a1b8152506013019050604051602081830303815290604052805190602001206106fb565b60006001610768836105a1565b1492915050565b6107ab60405160200180806913d5d3915497d4d313d560b21b815250600a019050604051602081830303815290604052805190602001206106fb565b6001600160a01b0316336001600160a01b0316146107fa5760405162461bcd60e51b815260040180806020018281038252602a8152602001806109ad602a913960400191505060405180910390fd5b61049060405160200180806913d5d3915497d4d313d560b21b815250600a019050604051602081830303815290604052805190602001208261099b565b61087360405160200180806913d5d3915497d4d313d560b21b815250600a019050604051602081830303815290604052805190602001206106fb565b6001600160a01b0316336001600160a01b0316146108c25760405162461bcd60e51b815260040180806020018281038252602a8152602001806109ad602a913960400191505060405180910390fd5b61049060405160200180807212535413115351539510551253d397d4d313d5606a1b8152506013019050604051602081830303815290604052805190602001208261099b565b600061094f60405160200180807212535413115351539510551253d397d4d313d5606a1b8152506013019050604051602081830303815290604052805190602001206106fb565b905060405136600082376000803683855af43d806000843e818015610972578184f35b8184fd5b801561098c576109878260016109a8565b610997565b6109978260006109a8565b5050565b610997826109a883610626565b905556fe50726f78792e6f6e6c7950726f78794f776e65723a206d73672073656e646572206e6f74206f776e657250726f78795061757361626c652e6f6e6c795061757a65723a206d73672073656e646572206e6f74207061757a657250726f78795061757361626c652e6e6f745061757365643a20636f6e747261637420697320706175736564a2646970667358221220093f940d7b68e3e359fad777a31b4af6914c80224527c1b6000d9577bf4e504f64736f6c63430007060033

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

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.