Contract

0xf46335dD880EaC9f06d07a1dD15882b9874e9FB6

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

-

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

1 Internal Transaction found.

Latest 1 internal transaction

Parent Transaction Hash Block From To
5918682024-12-18 17:15:195 days ago1734542119  Contract Creation0 S
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Pauser

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
shanghai EvmVersion
File 1 of 3 : Pauser.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.21;

import {Auth, Authority} from "@solmate/auth/Auth.sol";
import {IPausable} from "src/interfaces/IPausable.sol";

contract Pauser is Auth {
    // ========================================= STATE =========================================

    /**
     * @notice List of contracts that can be paused and unpaused using:
     * - `pauseAll`
     * - `unpauseAll`
     */
    IPausable[] internal pausables;

    /**
     * @notice Used to pause calls to `deposit` and `depositWithPermit`.
     */
    bool public isPaused;

    /**
     * @notice Maps a sender to a pausable contract.
     * @dev Used to pause and unpause using `senderPause` and `senderUnpause`.
     */
    mapping(address => IPausable) public senderToPausable;

    //============================== ERRORS ===============================

    error Pauser__IndexOutOfBounds();

    //============================== EVENTS ===============================

    event PausablePaused(address indexed pausable);
    event PausableUnpaused(address indexed pausable);
    event PausableAdded(address indexed pausable);
    event PausableRemoved(address indexed pausable);
    event SenderToPausableUpdated(address indexed sender, address indexed pausable);

    //============================== IMMUTABLES ===============================

    constructor(address _owner, Authority _authority, IPausable[] memory _pausables) Auth(_owner, _authority) {
        for (uint256 i = 0; i < _pausables.length; ++i) {
            pausables.push(_pausables[i]);
        }
    }

    // ========================================= ADMIN FUNCTIONS =========================================

    /**
     * @notice Adds a contract to the list of pausables.
     * @dev Callable by PAUSER_ADMIN_ROLE.
     */
    function addPausable(IPausable _pausable) external requiresAuth {
        pausables.push(_pausable);

        emit PausableAdded(address(_pausable));
    }

    /**
     * @notice Removes a contract from the list of pausables.
     * @dev Callable by PAUSER_ADMIN_ROLE.
     */
    function removePausable(uint256 index) external requiresAuth {
        uint256 pausablesLength = pausables.length;
        if (index >= pausablesLength) {
            revert Pauser__IndexOutOfBounds();
        }
        address removed = address(pausables[index]);
        pausables[index] = pausables[pausablesLength - 1];
        pausables.pop();

        emit PausableRemoved(removed);
    }

    /**
     * @notice Updates the index of the pausable contract that the sender can pause and unpause.
     * @dev Callable by PAUSER_ADMIN_ROLE.
     */
    function updateSenderToPausable(address sender, IPausable pausable) external requiresAuth {
        senderToPausable[sender] = pausable;

        emit SenderToPausableUpdated(sender, address(pausable));
    }

    // ========================================= GENERIC PAUSER FUNCTIONS =========================================

    /**
     * @notice Pauses a single pausable contract.
     * @dev Callable by GENERIC_PAUSER_ROLE.
     */
    function pauseSingle(IPausable pausable) external requiresAuth {
        pausable.pause();
        emit PausablePaused(address(pausable));
    }

    /**
     * @notice Unpauses a single pausable contract.
     * @dev Callable by GENERIC_UNPAUSER_ROLE.
     */
    function unpauseSingle(IPausable pausable) external requiresAuth {
        pausable.unpause();
        emit PausableUnpaused(address(pausable));
    }

    /**
     * @notice Pauses multiple pausable contracts.
     * @dev Callable by GENERIC_PAUSER_ROLE.
     */
    function pauseMultiple(IPausable[] calldata _pausables) external requiresAuth {
        for (uint256 i = 0; i < _pausables.length; ++i) {
            _pausables[i].pause();
            emit PausablePaused(address(_pausables[i]));
        }
    }

    /**
     * @notice Unpauses multiple pausable contracts.
     * @dev Callable by GENERIC_UNPAUSER_ROLE.
     */
    function unpauseMultiple(IPausable[] calldata _pausables) external requiresAuth {
        for (uint256 i = 0; i < _pausables.length; ++i) {
            _pausables[i].unpause();
            emit PausableUnpaused(address(_pausables[i]));
        }
    }

    // ========================================= PAUSABLES ALL FUNCTIONS =========================================

    /**
     * @notice Pauses all pausable contracts.
     * @dev Callable by PAUSE_ALL_ROLE.
     */
    function pauseAll() external requiresAuth {
        for (uint256 i = 0; i < pausables.length; ++i) {
            pausables[i].pause();
            emit PausablePaused(address(pausables[i]));
        }
    }

    /**
     * @notice Unpauses all pausable contracts.
     * @dev Callable by UNPAUSE_ALL_ROLE.
     */
    function unpauseAll() external requiresAuth {
        for (uint256 i = 0; i < pausables.length; ++i) {
            pausables[i].unpause();
            emit PausableUnpaused(address(pausables[i]));
        }
    }

    // ========================================= SENDER FUNCTIONS =========================================
    /**
     * @notice The below functions can be marked as publically callable, as the `senderToPausable` mapping
     *         must be updated by an admin in order for the call to succeed. The main advantage of this
     *         is needing less overhead to explicilty grant a role to pausing bots.
     *         However if security is of upmost importance, then seperate roles can be created for each function.
     */

    /**
     * @notice Pauses senders pausable contract.
     * @dev Callable by PUBLIC or SENDER_PAUSER_ROLE.
     */
    function senderPause() external requiresAuth {
        IPausable pausable = senderToPausable[msg.sender];
        pausable.pause();

        emit PausablePaused(address(pausable));
    }

    /**
     * @notice Unpauses senders pausable contract.
     * @dev Callable by PUBLIC or SENDER_UNPAUSER_ROLE.
     */
    function senderUnpause() external requiresAuth {
        IPausable pausable = senderToPausable[msg.sender];
        pausable.unpause();

        emit PausableUnpaused(address(pausable));
    }

    // ========================================= VIEW FUNCTIONS =========================================
    /**
     * @notice Returns the list of pausable contracts.
     */
    function getPausables() external view returns (IPausable[] memory) {
        return pausables;
    }
}

File 2 of 3 : Auth.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Provides a flexible and updatable auth pattern which is completely separate from application logic.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Auth.sol)
/// @author Modified from Dappsys (https://github.com/dapphub/ds-auth/blob/master/src/auth.sol)
abstract contract Auth {
    event OwnershipTransferred(address indexed user, address indexed newOwner);

    event AuthorityUpdated(address indexed user, Authority indexed newAuthority);

    address public owner;

    Authority public authority;

    constructor(address _owner, Authority _authority) {
        owner = _owner;
        authority = _authority;

        emit OwnershipTransferred(msg.sender, _owner);
        emit AuthorityUpdated(msg.sender, _authority);
    }

    modifier requiresAuth() virtual {
        require(isAuthorized(msg.sender, msg.sig), "UNAUTHORIZED");

        _;
    }

    function isAuthorized(address user, bytes4 functionSig) internal view virtual returns (bool) {
        Authority auth = authority; // Memoizing authority saves us a warm SLOAD, around 100 gas.

        // Checking if the caller is the owner only after calling the authority saves gas in most cases, but be
        // aware that this makes protected functions uncallable even to the owner if the authority is out of order.
        return (address(auth) != address(0) && auth.canCall(user, address(this), functionSig)) || user == owner;
    }

    function setAuthority(Authority newAuthority) public virtual {
        // We check if the caller is the owner first because we want to ensure they can
        // always swap out the authority even if it's reverting or using up a lot of gas.
        require(msg.sender == owner || authority.canCall(msg.sender, address(this), msg.sig));

        authority = newAuthority;

        emit AuthorityUpdated(msg.sender, newAuthority);
    }

    function transferOwnership(address newOwner) public virtual requiresAuth {
        owner = newOwner;

        emit OwnershipTransferred(msg.sender, newOwner);
    }
}

/// @notice A generic interface for a contract which provides authorization data to an Auth instance.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Auth.sol)
/// @author Modified from Dappsys (https://github.com/dapphub/ds-auth/blob/master/src/auth.sol)
interface Authority {
    function canCall(
        address user,
        address target,
        bytes4 functionSig
    ) external view returns (bool);
}

File 3 of 3 : IPausable.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.21;

interface IPausable {
    function pause() external;
    function unpause() external;
}

Settings
{
  "remappings": [
    "@solmate/=lib/solmate/src/",
    "@forge-std/=lib/forge-std/src/",
    "@ds-test/=lib/forge-std/lib/ds-test/src/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "@openzeppelin/=lib/openzeppelin-contracts/",
    "@ccip/=lib/ccip/",
    "@oapp-auth/=lib/OAppAuth/src/",
    "@devtools-oapp-evm/=lib/OAppAuth/lib/devtools/packages/oapp-evm/contracts/oapp/",
    "@layerzerolabs/lz-evm-messagelib-v2/=lib/OAppAuth/node_modules/@layerzerolabs/lz-evm-messagelib-v2/",
    "@layerzerolabs/lz-evm-protocol-v2/=lib/OAppAuth/lib/LayerZero-V2/packages/layerzero-v2/evm/protocol/",
    "@layerzerolabs/oapp-evm/=lib/OAppAuth/lib/devtools/packages/oapp-evm/",
    "@lz-oapp-evm/=lib/OAppAuth/lib/LayerZero-V2/packages/layerzero-v2/evm/oapp/contracts/oapp/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "@sbu/=lib/OAppAuth/lib/solidity-bytes-utils/",
    "LayerZero-V2/=lib/OAppAuth/lib/",
    "OAppAuth/=lib/OAppAuth/",
    "ccip/=lib/ccip/contracts/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "halmos-cheatcodes/=lib/OAppAuth/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "solidity-bytes-utils/=lib/OAppAuth/node_modules/solidity-bytes-utils/",
    "solmate/=lib/solmate/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "shanghai",
  "viaIR": false,
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"contract Authority","name":"_authority","type":"address"},{"internalType":"contract IPausable[]","name":"_pausables","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Pauser__IndexOutOfBounds","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"AuthorityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pausable","type":"address"}],"name":"PausableAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pausable","type":"address"}],"name":"PausablePaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pausable","type":"address"}],"name":"PausableRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pausable","type":"address"}],"name":"PausableUnpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"pausable","type":"address"}],"name":"SenderToPausableUpdated","type":"event"},{"inputs":[{"internalType":"contract IPausable","name":"_pausable","type":"address"}],"name":"addPausable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"authority","outputs":[{"internalType":"contract Authority","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPausables","outputs":[{"internalType":"contract IPausable[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IPausable[]","name":"_pausables","type":"address[]"}],"name":"pauseMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IPausable","name":"pausable","type":"address"}],"name":"pauseSingle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"removePausable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"senderPause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"senderToPausable","outputs":[{"internalType":"contract IPausable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"senderUnpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"setAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IPausable[]","name":"_pausables","type":"address[]"}],"name":"unpauseMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IPausable","name":"pausable","type":"address"}],"name":"unpauseSingle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"contract IPausable","name":"pausable","type":"address"}],"name":"updateSenderToPausable","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801562000010575f80fd5b50604051620013423803806200134283398101604081905262000033916200017c565b5f80546001600160a01b03199081166001600160a01b0386811691821784556001805490931690861617909155604051859285929133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36040516001600160a01b0382169033907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350505f5b815181101562000134576002828281518110620000e757620000e762000276565b60209081029190910181015182546001810184555f938452919092200180546001600160a01b0319166001600160a01b039092169190911790556200012c816200028a565b9050620000c6565b50505050620002af565b6001600160a01b038116811462000153575f80fd5b50565b634e487b7160e01b5f52604160045260245ffd5b805162000177816200013e565b919050565b5f805f606084860312156200018f575f80fd5b83516200019c816200013e565b80935050602080850151620001b1816200013e565b60408601519093506001600160401b0380821115620001ce575f80fd5b818701915087601f830112620001e2575f80fd5b815181811115620001f757620001f762000156565b8060051b604051601f19603f830116810181811085821117156200021f576200021f62000156565b60405291825284820192508381018501918a8311156200023d575f80fd5b938501935b82851015620002665762000256856200016a565b8452938501939285019262000242565b8096505050505050509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f60018201620002a857634e487b7160e01b5f52601160045260245ffd5b5060010190565b61108580620002bd5f395ff3fe608060405234801561000f575f80fd5b5060043610610111575f3560e01c806382c6321f1161009e578063a6bb38331161006e578063a6bb383314610224578063b187bd2614610237578063ba2cd4f914610254578063bf7e214f1461025c578063f2fde38b1461026f575f80fd5b806382c6321f146101c25780638a2ddd03146101ca5780638da5cb5b146101d25780639c260dc1146101fc575f80fd5b806354720ecd116100e457806354720ecd14610163578063595c6a67146101815780636e0db687146101895780636fa020121461019c5780637a9e5e4b146101af575f80fd5b80631414a7371461011557806325fdd89a1461012a5780632a578b951461013d5780634ed1a7ed14610150575b5f80fd5b610128610123366004610e37565b610282565b005b610128610138366004610ea6565b6103ab565b61012861014b366004610e37565b610506565b61012861015e366004610ed1565b610621565b61016b6106d6565b6040516101789190610ef3565b60405180910390f35b610128610736565b610128610197366004610f3f565b610844565b6101286101aa366004610ed1565b6108ca565b6101286101bd366004610ed1565b61097f565b610128610a63565b610128610ae2565b5f546101e4906001600160a01b031681565b6040516001600160a01b039091168152602001610178565b6101e461020a366004610ed1565b60046020525f90815260409020546001600160a01b031681565b610128610232366004610ed1565b610bed565b6003546102449060ff1681565b6040519015158152602001610178565b610128610c95565b6001546101e4906001600160a01b031681565b61012861027d366004610ed1565b610d14565b610297335f356001600160e01b031916610d8f565b6102bc5760405162461bcd60e51b81526004016102b390610f76565b60405180910390fd5b5f5b818110156103a6578282828181106102d8576102d8610f9c565b90506020020160208101906102ed9190610ed1565b6001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610324575f80fd5b505af1158015610336573d5f803e3d5ffd5b5050505082828281811061034c5761034c610f9c565b90506020020160208101906103619190610ed1565b6001600160a01b03167fc67793348a9acacd2336821be434b55e750d7eaceb75a7d98cddf25c4abd25fe60405160405180910390a261039f81610fc4565b90506102be565b505050565b6103c0335f356001600160e01b031916610d8f565b6103dc5760405162461bcd60e51b81526004016102b390610f76565b6002548082106103ff57604051631788aed960e01b815260040160405180910390fd5b5f6002838154811061041357610413610f9c565b5f918252602090912001546001600160a01b031690506002610436600184610fdc565b8154811061044657610446610f9c565b5f91825260209091200154600280546001600160a01b03909216918590811061047157610471610f9c565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060028054806104ad576104ad610fef565b5f8281526020812082015f1990810180546001600160a01b03191690559091019091556040516001600160a01b038316917fb0a48303f5301707a7bd5b756b686984a62fbc23474e950e06b9e580afe86ce791a2505050565b61051b335f356001600160e01b031916610d8f565b6105375760405162461bcd60e51b81526004016102b390610f76565b5f5b818110156103a65782828281811061055357610553610f9c565b90506020020160208101906105689190610ed1565b6001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561059f575f80fd5b505af11580156105b1573d5f803e3d5ffd5b505050508282828181106105c7576105c7610f9c565b90506020020160208101906105dc9190610ed1565b6001600160a01b03167f2e11755ce1f86691f0c706962af2ec7c16a3ee55627a262caa6136ab538ab48260405160405180910390a261061a81610fc4565b9050610539565b610636335f356001600160e01b031916610d8f565b6106525760405162461bcd60e51b81526004016102b390610f76565b806001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561068a575f80fd5b505af115801561069c573d5f803e3d5ffd5b50506040516001600160a01b03841692507f2e11755ce1f86691f0c706962af2ec7c16a3ee55627a262caa6136ab538ab48291505f90a250565b6060600280548060200260200160405190810160405280929190818152602001828054801561072c57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161070e575b5050505050905090565b61074b335f356001600160e01b031916610d8f565b6107675760405162461bcd60e51b81526004016102b390610f76565b5f5b600254811015610841576002818154811061078657610786610f9c565b5f91825260208220015460408051638456cb5960e01b815290516001600160a01b0390921692638456cb599260048084019382900301818387803b1580156107cc575f80fd5b505af11580156107de573d5f803e3d5ffd5b50505050600281815481106107f5576107f5610f9c565b5f9182526020822001546040516001600160a01b03909116917fc67793348a9acacd2336821be434b55e750d7eaceb75a7d98cddf25c4abd25fe91a261083a81610fc4565b9050610769565b50565b610859335f356001600160e01b031916610d8f565b6108755760405162461bcd60e51b81526004016102b390610f76565b6001600160a01b038281165f8181526004602052604080822080546001600160a01b0319169486169485179055517e69ba6739aefe8c5da62d189e7531045ee8346f32f97499a4c33a8ac63d70db9190a35050565b6108df335f356001600160e01b031916610d8f565b6108fb5760405162461bcd60e51b81526004016102b390610f76565b806001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610933575f80fd5b505af1158015610945573d5f803e3d5ffd5b50506040516001600160a01b03841692507fc67793348a9acacd2336821be434b55e750d7eaceb75a7d98cddf25c4abd25fe91505f90a250565b5f546001600160a01b0316331480610a10575060015460405163b700961360e01b81526001600160a01b039091169063b7009613906109d190339030906001600160e01b03195f351690600401611003565b602060405180830381865afa1580156109ec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a109190611030565b610a18575f80fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b610a78335f356001600160e01b031916610d8f565b610a945760405162461bcd60e51b81526004016102b390610f76565b335f908152600460208190526040808320548151638456cb5960e01b815291516001600160a01b03909116938493638456cb599380820193919082900301818387803b158015610933575f80fd5b610af7335f356001600160e01b031916610d8f565b610b135760405162461bcd60e51b81526004016102b390610f76565b5f5b6002548110156108415760028181548110610b3257610b32610f9c565b5f91825260208220015460408051631fa5d41d60e11b815290516001600160a01b0390921692633f4ba83a9260048084019382900301818387803b158015610b78575f80fd5b505af1158015610b8a573d5f803e3d5ffd5b5050505060028181548110610ba157610ba1610f9c565b5f9182526020822001546040516001600160a01b03909116917f2e11755ce1f86691f0c706962af2ec7c16a3ee55627a262caa6136ab538ab48291a2610be681610fc4565b9050610b15565b610c02335f356001600160e01b031916610d8f565b610c1e5760405162461bcd60e51b81526004016102b390610f76565b600280546001810182555f9182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b03841690811790915560405190917fad0f29a9103b372244dd2efa706fe423b3e4db36d6cc3dd1fa195add738aea1c91a250565b610caa335f356001600160e01b031916610d8f565b610cc65760405162461bcd60e51b81526004016102b390610f76565b335f908152600460208190526040808320548151631fa5d41d60e11b815291516001600160a01b03909116938493633f4ba83a9380820193919082900301818387803b15801561068a575f80fd5b610d29335f356001600160e01b031916610d8f565b610d455760405162461bcd60e51b81526004016102b390610f76565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001545f906001600160a01b03168015801590610e16575060405163b700961360e01b81526001600160a01b0382169063b700961390610dd790879030908890600401611003565b602060405180830381865afa158015610df2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e169190611030565b80610e2d57505f546001600160a01b038581169116145b9150505b92915050565b5f8060208385031215610e48575f80fd5b823567ffffffffffffffff80821115610e5f575f80fd5b818501915085601f830112610e72575f80fd5b813581811115610e80575f80fd5b8660208260051b8501011115610e94575f80fd5b60209290920196919550909350505050565b5f60208284031215610eb6575f80fd5b5035919050565b6001600160a01b0381168114610841575f80fd5b5f60208284031215610ee1575f80fd5b8135610eec81610ebd565b9392505050565b602080825282518282018190525f9190848201906040850190845b81811015610f335783516001600160a01b031683529284019291840191600101610f0e565b50909695505050505050565b5f8060408385031215610f50575f80fd5b8235610f5b81610ebd565b91506020830135610f6b81610ebd565b809150509250929050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201610fd557610fd5610fb0565b5060010190565b81810381811115610e3157610e31610fb0565b634e487b7160e01b5f52603160045260245ffd5b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b5f60208284031215611040575f80fd5b81518015158114610eec575f80fdfea2646970667358221220b31564cb06d9b8cb28754b231b3d7283df995c87b038b0dea622c647887c4fcd64736f6c634300081500330000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000400000000000000000000000031a5a9f60dc3d62fa5168352caf0ee05aa18f5b8000000000000000000000000555f4df2180df6257860f23b29d653c1aafb79570000000000000000000000003a592f9ea2463379c4154d03461a73c4849936680000000000000000000000006830046d872604e92f9f95f225ff63f2300bc1e9

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610111575f3560e01c806382c6321f1161009e578063a6bb38331161006e578063a6bb383314610224578063b187bd2614610237578063ba2cd4f914610254578063bf7e214f1461025c578063f2fde38b1461026f575f80fd5b806382c6321f146101c25780638a2ddd03146101ca5780638da5cb5b146101d25780639c260dc1146101fc575f80fd5b806354720ecd116100e457806354720ecd14610163578063595c6a67146101815780636e0db687146101895780636fa020121461019c5780637a9e5e4b146101af575f80fd5b80631414a7371461011557806325fdd89a1461012a5780632a578b951461013d5780634ed1a7ed14610150575b5f80fd5b610128610123366004610e37565b610282565b005b610128610138366004610ea6565b6103ab565b61012861014b366004610e37565b610506565b61012861015e366004610ed1565b610621565b61016b6106d6565b6040516101789190610ef3565b60405180910390f35b610128610736565b610128610197366004610f3f565b610844565b6101286101aa366004610ed1565b6108ca565b6101286101bd366004610ed1565b61097f565b610128610a63565b610128610ae2565b5f546101e4906001600160a01b031681565b6040516001600160a01b039091168152602001610178565b6101e461020a366004610ed1565b60046020525f90815260409020546001600160a01b031681565b610128610232366004610ed1565b610bed565b6003546102449060ff1681565b6040519015158152602001610178565b610128610c95565b6001546101e4906001600160a01b031681565b61012861027d366004610ed1565b610d14565b610297335f356001600160e01b031916610d8f565b6102bc5760405162461bcd60e51b81526004016102b390610f76565b60405180910390fd5b5f5b818110156103a6578282828181106102d8576102d8610f9c565b90506020020160208101906102ed9190610ed1565b6001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610324575f80fd5b505af1158015610336573d5f803e3d5ffd5b5050505082828281811061034c5761034c610f9c565b90506020020160208101906103619190610ed1565b6001600160a01b03167fc67793348a9acacd2336821be434b55e750d7eaceb75a7d98cddf25c4abd25fe60405160405180910390a261039f81610fc4565b90506102be565b505050565b6103c0335f356001600160e01b031916610d8f565b6103dc5760405162461bcd60e51b81526004016102b390610f76565b6002548082106103ff57604051631788aed960e01b815260040160405180910390fd5b5f6002838154811061041357610413610f9c565b5f918252602090912001546001600160a01b031690506002610436600184610fdc565b8154811061044657610446610f9c565b5f91825260209091200154600280546001600160a01b03909216918590811061047157610471610f9c565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060028054806104ad576104ad610fef565b5f8281526020812082015f1990810180546001600160a01b03191690559091019091556040516001600160a01b038316917fb0a48303f5301707a7bd5b756b686984a62fbc23474e950e06b9e580afe86ce791a2505050565b61051b335f356001600160e01b031916610d8f565b6105375760405162461bcd60e51b81526004016102b390610f76565b5f5b818110156103a65782828281811061055357610553610f9c565b90506020020160208101906105689190610ed1565b6001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561059f575f80fd5b505af11580156105b1573d5f803e3d5ffd5b505050508282828181106105c7576105c7610f9c565b90506020020160208101906105dc9190610ed1565b6001600160a01b03167f2e11755ce1f86691f0c706962af2ec7c16a3ee55627a262caa6136ab538ab48260405160405180910390a261061a81610fc4565b9050610539565b610636335f356001600160e01b031916610d8f565b6106525760405162461bcd60e51b81526004016102b390610f76565b806001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561068a575f80fd5b505af115801561069c573d5f803e3d5ffd5b50506040516001600160a01b03841692507f2e11755ce1f86691f0c706962af2ec7c16a3ee55627a262caa6136ab538ab48291505f90a250565b6060600280548060200260200160405190810160405280929190818152602001828054801561072c57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161070e575b5050505050905090565b61074b335f356001600160e01b031916610d8f565b6107675760405162461bcd60e51b81526004016102b390610f76565b5f5b600254811015610841576002818154811061078657610786610f9c565b5f91825260208220015460408051638456cb5960e01b815290516001600160a01b0390921692638456cb599260048084019382900301818387803b1580156107cc575f80fd5b505af11580156107de573d5f803e3d5ffd5b50505050600281815481106107f5576107f5610f9c565b5f9182526020822001546040516001600160a01b03909116917fc67793348a9acacd2336821be434b55e750d7eaceb75a7d98cddf25c4abd25fe91a261083a81610fc4565b9050610769565b50565b610859335f356001600160e01b031916610d8f565b6108755760405162461bcd60e51b81526004016102b390610f76565b6001600160a01b038281165f8181526004602052604080822080546001600160a01b0319169486169485179055517e69ba6739aefe8c5da62d189e7531045ee8346f32f97499a4c33a8ac63d70db9190a35050565b6108df335f356001600160e01b031916610d8f565b6108fb5760405162461bcd60e51b81526004016102b390610f76565b806001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610933575f80fd5b505af1158015610945573d5f803e3d5ffd5b50506040516001600160a01b03841692507fc67793348a9acacd2336821be434b55e750d7eaceb75a7d98cddf25c4abd25fe91505f90a250565b5f546001600160a01b0316331480610a10575060015460405163b700961360e01b81526001600160a01b039091169063b7009613906109d190339030906001600160e01b03195f351690600401611003565b602060405180830381865afa1580156109ec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a109190611030565b610a18575f80fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b610a78335f356001600160e01b031916610d8f565b610a945760405162461bcd60e51b81526004016102b390610f76565b335f908152600460208190526040808320548151638456cb5960e01b815291516001600160a01b03909116938493638456cb599380820193919082900301818387803b158015610933575f80fd5b610af7335f356001600160e01b031916610d8f565b610b135760405162461bcd60e51b81526004016102b390610f76565b5f5b6002548110156108415760028181548110610b3257610b32610f9c565b5f91825260208220015460408051631fa5d41d60e11b815290516001600160a01b0390921692633f4ba83a9260048084019382900301818387803b158015610b78575f80fd5b505af1158015610b8a573d5f803e3d5ffd5b5050505060028181548110610ba157610ba1610f9c565b5f9182526020822001546040516001600160a01b03909116917f2e11755ce1f86691f0c706962af2ec7c16a3ee55627a262caa6136ab538ab48291a2610be681610fc4565b9050610b15565b610c02335f356001600160e01b031916610d8f565b610c1e5760405162461bcd60e51b81526004016102b390610f76565b600280546001810182555f9182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b03841690811790915560405190917fad0f29a9103b372244dd2efa706fe423b3e4db36d6cc3dd1fa195add738aea1c91a250565b610caa335f356001600160e01b031916610d8f565b610cc65760405162461bcd60e51b81526004016102b390610f76565b335f908152600460208190526040808320548151631fa5d41d60e11b815291516001600160a01b03909116938493633f4ba83a9380820193919082900301818387803b15801561068a575f80fd5b610d29335f356001600160e01b031916610d8f565b610d455760405162461bcd60e51b81526004016102b390610f76565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001545f906001600160a01b03168015801590610e16575060405163b700961360e01b81526001600160a01b0382169063b700961390610dd790879030908890600401611003565b602060405180830381865afa158015610df2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e169190611030565b80610e2d57505f546001600160a01b038581169116145b9150505b92915050565b5f8060208385031215610e48575f80fd5b823567ffffffffffffffff80821115610e5f575f80fd5b818501915085601f830112610e72575f80fd5b813581811115610e80575f80fd5b8660208260051b8501011115610e94575f80fd5b60209290920196919550909350505050565b5f60208284031215610eb6575f80fd5b5035919050565b6001600160a01b0381168114610841575f80fd5b5f60208284031215610ee1575f80fd5b8135610eec81610ebd565b9392505050565b602080825282518282018190525f9190848201906040850190845b81811015610f335783516001600160a01b031683529284019291840191600101610f0e565b50909695505050505050565b5f8060408385031215610f50575f80fd5b8235610f5b81610ebd565b91506020830135610f6b81610ebd565b809150509250929050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201610fd557610fd5610fb0565b5060010190565b81810381811115610e3157610e31610fb0565b634e487b7160e01b5f52603160045260245ffd5b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b5f60208284031215611040575f80fd5b81518015158114610eec575f80fdfea2646970667358221220b31564cb06d9b8cb28754b231b3d7283df995c87b038b0dea622c647887c4fcd64736f6c63430008150033

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

0000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000400000000000000000000000031a5a9f60dc3d62fa5168352caf0ee05aa18f5b8000000000000000000000000555f4df2180df6257860f23b29d653c1aafb79570000000000000000000000003a592f9ea2463379c4154d03461a73c4849936680000000000000000000000006830046d872604e92f9f95f225ff63f2300bc1e9

-----Decoded View---------------
Arg [0] : _owner (address): 0x5F2F11ad8656439d5C14d9B351f8b09cDaC2A02d
Arg [1] : _authority (address): 0x0000000000000000000000000000000000000000
Arg [2] : _pausables (address[]): 0x31A5A9F60Dc3d62fa5168352CaF0Ee05aA18f5B8,0x555f4dF2180df6257860F23b29d653c1AAFb7957,0x3a592F9Ea2463379c4154d03461A73c484993668,0x6830046d872604E92f9F95F225fF63f2300bc1e9

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02d
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [4] : 00000000000000000000000031a5a9f60dc3d62fa5168352caf0ee05aa18f5b8
Arg [5] : 000000000000000000000000555f4df2180df6257860f23b29d653c1aafb7957
Arg [6] : 0000000000000000000000003a592f9ea2463379c4154d03461a73c484993668
Arg [7] : 0000000000000000000000006830046d872604e92f9f95f225ff63f2300bc1e9


Block Transaction 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
[ 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.