Sepolia Testnet

Contract

0x817038b15b86c08b318c6E9C3b17B0Eb16D2D682

Overview

ETH Balance

0 ETH

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Suspend System67142982024-09-18 8:55:0083 days ago1726649700IN
0x817038b1...b16D2D682
0 ETH0.0008480918.00023052
Update Access Co...67142712024-09-18 8:48:3683 days ago1726649316IN
0x817038b1...b16D2D682
0 ETH0.0010337920.99126286
Resume System60185012024-06-01 12:08:36192 days ago1717243716IN
0x817038b1...b16D2D682
0 ETH0.0005481321.81210164
Suspend System60125712024-05-31 12:34:48193 days ago1717158888IN
0x817038b1...b16D2D682
0 ETH0.0027728258.85107549
Accept Ownership59471512024-05-21 9:42:36203 days ago1716284556IN
0x817038b1...b16D2D682
0 ETH0.00295372104.36462923
Nominate New Own...59471502024-05-21 9:42:24203 days ago1716284544IN
0x817038b1...b16D2D682
0 ETH0.0044512394.17206234
Resume System56893832024-04-13 13:27:12241 days ago1713014832IN
0x817038b1...b16D2D682
0 ETH0.00003771.50054311
Suspend System56886582024-04-13 11:02:12241 days ago1713006132IN
0x817038b1...b16D2D682
0 ETH0.000070691.50047645
Resume System55395222024-03-22 18:29:00262 days ago1711132140IN
0x817038b1...b16D2D682
0 ETH0.000052842.1027608
Suspend System55392892024-03-22 17:38:48262 days ago1711129128IN
0x817038b1...b16D2D682
0 ETH0.000200584.25734119
Resume System55370342024-03-22 9:40:00263 days ago1711100400IN
0x817038b1...b16D2D682
0 ETH0.0024412197.14356776
Suspend System55364082024-03-22 7:26:24263 days ago1711092384IN
0x817038b1...b16D2D682
0 ETH0.0013560328.78072934
Resume System54765962024-03-13 9:53:48272 days ago1710323628IN
0x817038b1...b16D2D682
0 ETH0.0009209336.6467197
Suspend System54761442024-03-13 8:19:12272 days ago1710317952IN
0x817038b1...b16D2D682
0 ETH0.0043101291.47890519
Resume System54361602024-03-07 15:54:24278 days ago1709826864IN
0x817038b1...b16D2D682
0 ETH0.000040781.62294229
Suspend System54356732024-03-07 14:11:00278 days ago1709820660IN
0x817038b1...b16D2D682
0 ETH0.000076511.62387466
Resume System54038262024-03-02 22:03:12282 days ago1709416992IN
0x817038b1...b16D2D682
0 ETH0.000039221.56107122
Suspend System53999242024-03-02 8:18:00283 days ago1709367480IN
0x817038b1...b16D2D682
0 ETH0.000070671.50002148
Resume System53940712024-03-01 11:37:48284 days ago1709293068IN
0x817038b1...b16D2D682
0 ETH0.000040541.61355061
Suspend System53937682024-03-01 10:33:12284 days ago1709289192IN
0x817038b1...b16D2D682
0 ETH0.000133332.82988256
Resume System53921782024-03-01 4:56:48284 days ago1709269008IN
0x817038b1...b16D2D682
0 ETH0.000037691.50000001
Suspend System53919772024-03-01 4:15:24284 days ago1709266524IN
0x817038b1...b16D2D682
0 ETH0.000070671.50000004
Resume System53817842024-02-28 16:21:12286 days ago1709137272IN
0x817038b1...b16D2D682
0 ETH0.000183867.3165951
Suspend System53803532024-02-28 11:17:24286 days ago1709119044IN
0x817038b1...b16D2D682
0 ETH0.000074851.58882293
Resume System53745462024-02-27 14:47:24287 days ago1709045244IN
0x817038b1...b16D2D682
0 ETH0.0016869867.13040989
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SystemStatusLightChain

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
london EvmVersion, MIT license

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 3 : SystemStatusLightChain.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// Inheritance
import "./Owned.sol";
import "../interfaces/ISystemStatus.sol";

contract SystemStatusLightChain is Owned {
    mapping(bytes32 => mapping(address => ISystemStatus.Status)) public accessControl;

    uint248 public constant SUSPENSION_REASON_UPGRADE = 1;

    bytes32 public constant SECTION_SYSTEM = "System";
    bytes32 public constant SECTION_ISSUANCE = "Issuance";
    bytes32 public constant SECTION_EXCHANGE = "Exchange";
    bytes32 public constant SECTION_SYNTH_EXCHANGE = "SynthExchange";
    bytes32 public constant SECTION_SYNTH = "Synth";

    bytes32 public constant CONTRACT_NAME = "SystemStatus";

    ISystemStatus.Suspension public systemSuspension;

    ISystemStatus.Suspension public issuanceSuspension;

    ISystemStatus.Suspension public exchangeSuspension;

    mapping(bytes32 => ISystemStatus.Suspension) public synthExchangeSuspension;

    mapping(bytes32 => ISystemStatus.Suspension) public synthSuspension;

    constructor(address _owner) Owned(_owner) {}

    /* ========== VIEWS ========== */
    function requireSystemActive() external view {
        _internalRequireSystemActive();
    }

    function systemSuspended() external view returns (bool) {
        return systemSuspension.suspended;
    }

    function requireIssuanceActive() external view {
        // Issuance requires the system be active
        _internalRequireSystemActive();

        // and issuance itself of course
        _internalRequireIssuanceActive();
    }

    function requireExchangeActive() external view {
        // Exchanging requires the system be active
        _internalRequireSystemActive();

        // and exchanging itself of course
        _internalRequireExchangeActive();
    }

    function requireSynthExchangeActive(bytes32 currencyKey) external view {
        // Synth exchange and transfer requires the system be active
        _internalRequireSystemActive();
        _internalRequireSynthExchangeActive(currencyKey);
    }

    function synthSuspended(bytes32 currencyKey) external view returns (bool) {
        return systemSuspension.suspended || synthSuspension[currencyKey].suspended;
    }

    function requireSynthActive(bytes32 currencyKey) external view {
        // Synth exchange and transfer requires the system be active
        _internalRequireSystemActive();
        _internalRequireSynthActive(currencyKey);
    }

    function requireSynthsActive(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey) external view {
        // Synth exchange and transfer requires the system be active
        _internalRequireSystemActive();
        _internalRequireSynthActive(sourceCurrencyKey);
        _internalRequireSynthActive(destinationCurrencyKey);
    }

    function requireExchangeBetweenSynthsAllowed(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey) external view {
        // Synth exchange and transfer requires the system be active
        _internalRequireSystemActive();

        // and exchanging must be active
        _internalRequireExchangeActive();

        // and the synth exchanging between the synths must be active
        _internalRequireSynthExchangeActive(sourceCurrencyKey);
        _internalRequireSynthExchangeActive(destinationCurrencyKey);

        // and finally, the synths cannot be suspended
        _internalRequireSynthActive(sourceCurrencyKey);
        _internalRequireSynthActive(destinationCurrencyKey);
    }

    function isSystemUpgrading() external view returns (bool) {
        return systemSuspension.suspended && systemSuspension.reason == SUSPENSION_REASON_UPGRADE;
    }

    function getSynthExchangeSuspensions(
        bytes32[] calldata synths
    ) external view returns (bool[] memory exchangeSuspensions, uint256[] memory reasons) {
        exchangeSuspensions = new bool[](synths.length);
        reasons = new uint256[](synths.length);

        for (uint256 i = 0; i < synths.length; i++) {
            exchangeSuspensions[i] = synthExchangeSuspension[synths[i]].suspended;
            reasons[i] = synthExchangeSuspension[synths[i]].reason;
        }
    }

    function getSynthSuspensions(
        bytes32[] calldata synths
    ) external view returns (bool[] memory suspensions, uint256[] memory reasons) {
        suspensions = new bool[](synths.length);
        reasons = new uint256[](synths.length);

        for (uint256 i = 0; i < synths.length; i++) {
            suspensions[i] = synthSuspension[synths[i]].suspended;
            reasons[i] = synthSuspension[synths[i]].reason;
        }
    }

    /* ========== MUTATIVE FUNCTIONS ========== */
    function updateAccessControl(bytes32 section, address account, bool canSuspend, bool canResume) external onlyOwner {
        _internalUpdateAccessControl(section, account, canSuspend, canResume);
    }

    function updateAccessControls(
        bytes32[] calldata sections,
        address[] calldata accounts,
        bool[] calldata canSuspends,
        bool[] calldata canResumes
    ) external onlyOwner {
        require(
            sections.length == accounts.length &&
                accounts.length == canSuspends.length &&
                canSuspends.length == canResumes.length,
            "Input array lengths must match"
        );
        for (uint256 i = 0; i < sections.length; i++) {
            _internalUpdateAccessControl(sections[i], accounts[i], canSuspends[i], canResumes[i]);
        }
    }

    function suspendSystem(uint256 reason) external {
        _requireAccessToSuspend(SECTION_SYSTEM);
        systemSuspension.suspended = true;
        systemSuspension.reason = uint248(reason);
        emit SystemSuspended(systemSuspension.reason);
    }

    function resumeSystem() external {
        _requireAccessToResume(SECTION_SYSTEM);
        systemSuspension.suspended = false;
        emit SystemResumed(uint256(systemSuspension.reason));
        systemSuspension.reason = 0;
    }

    function suspendIssuance(uint256 reason) external {
        _requireAccessToSuspend(SECTION_ISSUANCE);
        issuanceSuspension.suspended = true;
        issuanceSuspension.reason = uint248(reason);
        emit IssuanceSuspended(reason);
    }

    function resumeIssuance() external {
        _requireAccessToResume(SECTION_ISSUANCE);
        issuanceSuspension.suspended = false;
        emit IssuanceResumed(uint256(issuanceSuspension.reason));
        issuanceSuspension.reason = 0;
    }

    function suspendExchange(uint256 reason) external {
        _requireAccessToSuspend(SECTION_EXCHANGE);
        exchangeSuspension.suspended = true;
        exchangeSuspension.reason = uint248(reason);
        emit ExchangeSuspended(reason);
    }

    function resumeExchange() external {
        _requireAccessToResume(SECTION_EXCHANGE);
        exchangeSuspension.suspended = false;
        emit ExchangeResumed(uint256(exchangeSuspension.reason));
        exchangeSuspension.reason = 0;
    }

    function suspendSynthExchange(bytes32 currencyKey, uint256 reason) external {
        bytes32[] memory currencyKeys = new bytes32[](1);
        currencyKeys[0] = currencyKey;
        _internalSuspendSynthExchange(currencyKeys, reason);
    }

    function suspendSynthsExchange(bytes32[] calldata currencyKeys, uint256 reason) external {
        _internalSuspendSynthExchange(currencyKeys, reason);
    }

    function resumeSynthExchange(bytes32 currencyKey) external {
        bytes32[] memory currencyKeys = new bytes32[](1);
        currencyKeys[0] = currencyKey;
        _internalResumeSynthsExchange(currencyKeys);
    }

    function resumeSynthsExchange(bytes32[] calldata currencyKeys) external {
        _internalResumeSynthsExchange(currencyKeys);
    }

    function suspendSynth(bytes32 currencyKey, uint256 reason) external {
        bytes32[] memory currencyKeys = new bytes32[](1);
        currencyKeys[0] = currencyKey;
        _internalSuspendSynths(currencyKeys, reason);
    }

    function suspendSynths(bytes32[] calldata currencyKeys, uint256 reason) external {
        _internalSuspendSynths(currencyKeys, reason);
    }

    function resumeSynth(bytes32 currencyKey) external {
        bytes32[] memory currencyKeys = new bytes32[](1);
        currencyKeys[0] = currencyKey;
        _internalResumeSynths(currencyKeys);
    }

    function resumeSynths(bytes32[] calldata currencyKeys) external {
        _internalResumeSynths(currencyKeys);
    }

    /* ========== INTERNAL FUNCTIONS ========== */

    function _requireAccessToSuspend(bytes32 section) internal view {
        require(accessControl[section][msg.sender].canSuspend, "Restricted to access control list");
    }

    function _requireAccessToResume(bytes32 section) internal view {
        require(accessControl[section][msg.sender].canResume, "Restricted to access control list");
    }

    function _internalRequireSystemActive() internal view {
        require(
            !systemSuspension.suspended,
            systemSuspension.reason == SUSPENSION_REASON_UPGRADE
                ? "System is suspended, upgrade in progress... please stand by"
                : "System is suspended. Operation prohibited"
        );
    }

    function _internalRequireIssuanceActive() internal view {
        require(!issuanceSuspension.suspended, "Issuance is suspended. Operation prohibited");
    }

    function _internalRequireExchangeActive() internal view {
        require(!exchangeSuspension.suspended, "Exchange is suspended. Operation prohibited");
    }

    function _internalRequireSynthExchangeActive(bytes32 currencyKey) internal view {
        require(!synthExchangeSuspension[currencyKey].suspended, "Synth exchange suspended. Operation prohibited");
    }

    function _internalRequireSynthActive(bytes32 currencyKey) internal view {
        require(!synthSuspension[currencyKey].suspended, "Synth is suspended. Operation prohibited");
    }

    function _internalSuspendSynths(bytes32[] memory currencyKeys, uint256 reason) internal {
        _requireAccessToSuspend(SECTION_SYNTH);
        for (uint256 i = 0; i < currencyKeys.length; i++) {
            bytes32 currencyKey = currencyKeys[i];
            synthSuspension[currencyKey].suspended = true;
            synthSuspension[currencyKey].reason = uint248(reason);
            emit SynthSuspended(currencyKey, reason);
        }
    }

    function _internalResumeSynths(bytes32[] memory currencyKeys) internal {
        _requireAccessToResume(SECTION_SYNTH);
        for (uint256 i = 0; i < currencyKeys.length; i++) {
            bytes32 currencyKey = currencyKeys[i];
            emit SynthResumed(currencyKey, uint256(synthSuspension[currencyKey].reason));
            delete synthSuspension[currencyKey];
        }
    }

    function _internalSuspendSynthExchange(bytes32[] memory currencyKeys, uint256 reason) internal {
        _requireAccessToSuspend(SECTION_SYNTH_EXCHANGE);
        for (uint256 i = 0; i < currencyKeys.length; i++) {
            bytes32 currencyKey = currencyKeys[i];
            synthExchangeSuspension[currencyKey].suspended = true;
            synthExchangeSuspension[currencyKey].reason = uint248(reason);
            emit SynthExchangeSuspended(currencyKey, reason);
        }
    }

    function _internalResumeSynthsExchange(bytes32[] memory currencyKeys) internal {
        _requireAccessToResume(SECTION_SYNTH_EXCHANGE);
        for (uint256 i = 0; i < currencyKeys.length; i++) {
            bytes32 currencyKey = currencyKeys[i];
            emit SynthExchangeResumed(currencyKey, uint256(synthExchangeSuspension[currencyKey].reason));
            delete synthExchangeSuspension[currencyKey];
        }
    }

    function _internalUpdateAccessControl(bytes32 section, address account, bool canSuspend, bool canResume) internal {
        require(
            section == SECTION_SYSTEM ||
                section == SECTION_ISSUANCE ||
                section == SECTION_EXCHANGE ||
                section == SECTION_SYNTH_EXCHANGE ||
                section == SECTION_SYNTH,
            "Invalid section supplied"
        );
        accessControl[section][account].canSuspend = canSuspend;
        accessControl[section][account].canResume = canResume;
        emit AccessControlUpdated(section, account, canSuspend, canResume);
    }

    /* ========== EVENTS ========== */

    event SystemSuspended(uint256 reason);
    event SystemResumed(uint256 reason);

    event IssuanceSuspended(uint256 reason);
    event IssuanceResumed(uint256 reason);

    event ExchangeSuspended(uint256 reason);
    event ExchangeResumed(uint256 reason);

    event SynthExchangeSuspended(bytes32 currencyKey, uint256 reason);
    event SynthExchangeResumed(bytes32 currencyKey, uint256 reason);

    event SynthSuspended(bytes32 currencyKey, uint256 reason);
    event SynthResumed(bytes32 currencyKey, uint256 reason);

    event AccessControlUpdated(bytes32 indexed section, address indexed account, bool canSuspend, bool canResume);
}

File 2 of 3 : ISystemStatus.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface ISystemStatus {
    struct Status {
        bool canSuspend;
        bool canResume;
    }

    struct Suspension {
        bool suspended;
        // reason is an integer code,
        // 0 => no reason, 1 => upgrading, 2+ => defined by system usage
        uint248 reason;
    }

    // Views
    function accessControl(bytes32 section, address account) external view returns (bool canSuspend, bool canResume);

    function requireSystemActive() external view;

    function systemSuspended() external view returns (bool);

    function requireIssuanceActive() external view;

    function requireExchangeActive() external view;

    function requireFuturesActive() external view;

    function requireFuturesMarketActive(bytes32 marketKey) external view;

    function requireExchangeBetweenSynthsAllowed(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey) external view;

    function requireSynthActive(bytes32 currencyKey) external view;

    function synthSuspended(bytes32 currencyKey) external view returns (bool);

    function requireSynthsActive(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey) external view;

    function systemSuspension() external view returns (bool suspended, uint248 reason);

    function issuanceSuspension() external view returns (bool suspended, uint248 reason);

    function exchangeSuspension() external view returns (bool suspended, uint248 reason);

    function futuresSuspension() external view returns (bool suspended, uint248 reason);

    function synthExchangeSuspension(bytes32 currencyKey) external view returns (bool suspended, uint248 reason);

    function synthSuspension(bytes32 currencyKey) external view returns (bool suspended, uint248 reason);

    function futuresMarketSuspension(bytes32 marketKey) external view returns (bool suspended, uint248 reason);

    function getSynthExchangeSuspensions(
        bytes32[] calldata synths
    ) external view returns (bool[] memory exchangeSuspensions, uint256[] memory reasons);

    function getSynthSuspensions(
        bytes32[] calldata synths
    ) external view returns (bool[] memory suspensions, uint256[] memory reasons);

    function getFuturesMarketSuspensions(
        bytes32[] calldata marketKeys
    ) external view returns (bool[] memory suspensions, uint256[] memory reasons);

    // Restricted functions
    function suspendIssuance(uint256 reason) external;

    function suspendSynth(bytes32 currencyKey, uint256 reason) external;

    function suspendFuturesMarket(bytes32 marketKey, uint256 reason) external;

    function updateAccessControl(bytes32 section, address account, bool canSuspend, bool canResume) external;
}

File 3 of 3 : Owned.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Owned {
    address public owner;
    address public nominatedOwner;

    constructor(address _owner) {
        require(_owner != address(0), "Owner address cannot be 0");
        owner = _owner;
        emit OwnerChanged(address(0), _owner);
    }

    function nominateNewOwner(address _owner) external onlyOwner {
        nominatedOwner = _owner;
        emit OwnerNominated(_owner);
    }

    function acceptOwnership() external {
        require(msg.sender == nominatedOwner, "You must be nominated before you can accept ownership");
        emit OwnerChanged(owner, nominatedOwner);
        owner = nominatedOwner;
        nominatedOwner = address(0);
    }

    modifier onlyOwner() {
        _onlyOwner();
        _;
    }

    function _onlyOwner() private view {
        require(msg.sender == owner, "Only the contract owner may perform this action");
    }

    event OwnerNominated(address newOwner);
    event OwnerChanged(address oldOwner, address newOwner);
}

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

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"section","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"canSuspend","type":"bool"},{"indexed":false,"internalType":"bool","name":"canResume","type":"bool"}],"name":"AccessControlUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"ExchangeResumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"ExchangeSuspended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"IssuanceResumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"IssuanceSuspended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"SynthExchangeResumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"SynthExchangeSuspended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"SynthResumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"SynthSuspended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"SystemResumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"SystemSuspended","type":"event"},{"inputs":[],"name":"CONTRACT_NAME","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SECTION_EXCHANGE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SECTION_ISSUANCE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SECTION_SYNTH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SECTION_SYNTH_EXCHANGE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SECTION_SYSTEM","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SUSPENSION_REASON_UPGRADE","outputs":[{"internalType":"uint248","name":"","type":"uint248"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"name":"accessControl","outputs":[{"internalType":"bool","name":"canSuspend","type":"bool"},{"internalType":"bool","name":"canResume","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exchangeSuspension","outputs":[{"internalType":"bool","name":"suspended","type":"bool"},{"internalType":"uint248","name":"reason","type":"uint248"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"synths","type":"bytes32[]"}],"name":"getSynthExchangeSuspensions","outputs":[{"internalType":"bool[]","name":"exchangeSuspensions","type":"bool[]"},{"internalType":"uint256[]","name":"reasons","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"synths","type":"bytes32[]"}],"name":"getSynthSuspensions","outputs":[{"internalType":"bool[]","name":"suspensions","type":"bool[]"},{"internalType":"uint256[]","name":"reasons","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSystemUpgrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"issuanceSuspension","outputs":[{"internalType":"bool","name":"suspended","type":"bool"},{"internalType":"uint248","name":"reason","type":"uint248"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"requireExchangeActive","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"sourceCurrencyKey","type":"bytes32"},{"internalType":"bytes32","name":"destinationCurrencyKey","type":"bytes32"}],"name":"requireExchangeBetweenSynthsAllowed","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"requireIssuanceActive","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"}],"name":"requireSynthActive","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"}],"name":"requireSynthExchangeActive","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"sourceCurrencyKey","type":"bytes32"},{"internalType":"bytes32","name":"destinationCurrencyKey","type":"bytes32"}],"name":"requireSynthsActive","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"requireSystemActive","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"resumeExchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resumeIssuance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"}],"name":"resumeSynth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"}],"name":"resumeSynthExchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"currencyKeys","type":"bytes32[]"}],"name":"resumeSynths","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"currencyKeys","type":"bytes32[]"}],"name":"resumeSynthsExchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resumeSystem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendExchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendIssuance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendSynth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendSynthExchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"currencyKeys","type":"bytes32[]"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendSynths","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"currencyKeys","type":"bytes32[]"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendSynthsExchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendSystem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"synthExchangeSuspension","outputs":[{"internalType":"bool","name":"suspended","type":"bool"},{"internalType":"uint248","name":"reason","type":"uint248"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"}],"name":"synthSuspended","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"synthSuspension","outputs":[{"internalType":"bool","name":"suspended","type":"bool"},{"internalType":"uint248","name":"reason","type":"uint248"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"systemSuspended","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"systemSuspension","outputs":[{"internalType":"bool","name":"suspended","type":"bool"},{"internalType":"uint248","name":"reason","type":"uint248"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"section","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"canSuspend","type":"bool"},{"internalType":"bool","name":"canResume","type":"bool"}],"name":"updateAccessControl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"sections","type":"bytes32[]"},{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool[]","name":"canSuspends","type":"bool[]"},{"internalType":"bool[]","name":"canResumes","type":"bool[]"}],"name":"updateAccessControls","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5060405162001e5a38038062001e5a833981016040819052610031916100ea565b806001600160a01b03811661008c5760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b03831690811782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a1505061011a565b6000602082840312156100fc57600080fd5b81516001600160a01b038116811461011357600080fd5b9392505050565b611d30806200012a6000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c806369eaced21161015c578063b431c0ea116100ce578063e665edf011610087578063e665edf0146105fd578063e91e691814610610578063f161620714610643578063f405f65a14610655578063f44d1e0b1461065d578063f8b4b0841461066c57600080fd5b8063b431c0ea14610585578063b9a4986914610598578063c0eee443146105b9578063da5917ae146105c4578063de1b8851146105d7578063e470df58146105ea57600080fd5b80637fe9b23d116101205780637fe9b23d146105025780638da5cb5b1461051557806394c79f74146105285780639f8a95ba1461053b578063a55ce9c51461055b578063abc0bb6e1461057257600080fd5b806369eaced2146104a45780637118d431146104b75780637243bc2c146104bf57806379ba5097146104f25780637c312541146104fa57600080fd5b8063396e258e116101f5578063517d60c6116101b9578063517d60c61461042257806353a47bb7146104355780636132eba414610460578063614d08f8146104735780636309a10c1461048957806367a280b21461049c57600080fd5b8063396e258e146103c457806342a28e21146103d757806348bf1971146103ea5780634a661850146103fd5780634abdb44d1461041057600080fd5b80631cba727c116102475780631cba727c146102df5780631ce00ba2146102f257806320f2bf00146103055780632366245e146103535780632dd8afdb1461038f5780632e8d0b9e146103ac57600080fd5b8063086dabd11461028457806312bde5141461028e578063157c51d3146102b15780631588e817146102b95780631627540c146102cc575b600080fd5b61028c610689565b005b61029e6553797374656d60d01b81565b6040519081526020015b60405180910390f35b61028c610693565b61028c6102c7366004611873565b6106fd565b61028c6102da3660046118a8565b61075c565b61028c6102ed366004611916565b6107b2565b61028c610300366004611962565b6107f5565b61033c610313366004611984565b600260209081526000928352604080842090915290825290205460ff8082169161010090041682565b6040805192151583529015156020830152016102a8565b6004546103709060ff81169061010090046001600160f81b031682565b6040805192151583526001600160f81b039091166020830152016102a8565b6003546103709060ff81169061010090046001600160f81b031682565b6103b461082d565b60405190151581526020016102a8565b61028c6103d2366004611873565b610857565b61028c6103e5366004611873565b6108af565b61028c6103f83660046119c0565b6108c3565b61028c61040b366004611962565b6108dd565b61029e6749737375616e636560c01b81565b61028c610430366004611a0d565b610929565b600154610448906001600160a01b031681565b6040516001600160a01b0390911681526020016102a8565b61028c61046e366004611962565b610a59565b61029e6b53797374656d53746174757360a01b81565b61028c610497366004611873565b610a61565b61028c610aac565b61028c6104b2366004611ad1565b610b18565b61028c610b54565b6103706104cd366004611873565b60076020526000908152604090205460ff81169061010090046001600160f81b031682565b61028c610b64565b61028c610c4e565b61028c610510366004611916565b610c5e565b600054610448906001600160a01b031681565b61028c610536366004611873565b610c9c565b610543600181565b6040516001600160f81b0390911681526020016102a8565b61029e6c53796e746845786368616e676560981b81565b61028c610580366004611962565b610ce7565b6103b4610593366004611873565b610d33565b6105ab6105a6366004611ad1565b610d5b565b6040516102a8929190611b13565b60035460ff166103b4565b61028c6105d2366004611873565b610ed3565b61028c6105e5366004611ad1565b610ee4565b61028c6105f8366004611873565b610f20565b6105ab61060b366004611ad1565b610f80565b61037061061e366004611873565b60066020526000908152604090205460ff81169061010090046001600160f81b031682565b61029e6745786368616e676560c01b81565b61028c6110f0565b61029e640a6f2dce8d60db1b81565b6005546103709060ff81169061010090046001600160f81b031682565b61069161115c565b565b6106a56553797374656d60d01b6111d0565b6003805460ff1916908190556040516101009091046001600160f81b031681527fb392a95118344e8edff8eff56183afb4bb0240310c406a0fc1217d2755c66d8f9060200160405180910390a16003805460ff169055565b6107116745786368616e676560c01b61120e565b60016101006001600160f81b03831602176005556040518181527f078773069a9216cdb6acaa7b184785f12f62048c7ce8b7ede1bad6785de16b22906020015b60405180910390a150565b610764611247565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290602001610751565b6107f08383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508592506112b9915050565b505050565b6107fd61115c565b61080561136c565b61080e826113d3565b610817816113d3565b61082082611449565b61082981611449565b5050565b60035460009060ff168015610852575060035461010090046001600160f81b03166001145b905090565b61086b6749737375616e636560c01b61120e565b60016101006001600160f81b03831602176004556040518181527fee8bf45d6e3141aa521ae4f0d05dfefe0327a3f23a9fbae6a64680458b34ebb890602001610751565b6108b761115c565b6108c081611449565b50565b6108cb611247565b6108d7848484846114b9565b50505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061091357610913611ba6565b6020026020010181815250506107f081836112b9565b610931611247565b868514801561093f57508483145b801561094a57508281145b61099b5760405162461bcd60e51b815260206004820152601e60248201527f496e707574206172726179206c656e67746873206d757374206d61746368000060448201526064015b60405180910390fd5b60005b87811015610a4e57610a3c8989838181106109bb576109bb611ba6565b905060200201358888848181106109d4576109d4611ba6565b90506020020160208101906109e991906118a8565b8787858181106109fb576109fb611ba6565b9050602002016020810190610a109190611bbc565b868686818110610a2257610a22611ba6565b9050602002016020810190610a379190611bbc565b6114b9565b80610a4681611bd7565b91505061099e565b505050505050505050565b61081761115c565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110610a9757610a97611ba6565b602002602001018181525050610829816115eb565b610ac06749737375616e636560c01b6111d0565b6004805460ff1916908190556040516101009091046001600160f81b031681527f0f1a80395faba9a11017f830db5f90ad6525a1621dbfb2cbc2b6679ba57168379060200160405180910390a16004805460ff169055565b6108298282808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506115eb92505050565b610b5c61115c565b61069161136c565b6001546001600160a01b03163314610bdc5760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b6064820152608401610992565b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b610c5661115c565b6106916116aa565b6107f0838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250859250611711915050565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110610cd257610cd2611ba6565b602002602001018181525050610829816117bc565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110610d1d57610d1d611ba6565b6020026020010181815250506107f08183611711565b60035460009060ff1680610d55575060008281526007602052604090205460ff165b92915050565b6060808267ffffffffffffffff811115610d7757610d77611b90565b604051908082528060200260200182016040528015610da0578160200160208202803683370190505b5091508267ffffffffffffffff811115610dbc57610dbc611b90565b604051908082528060200260200182016040528015610de5578160200160208202803683370190505b50905060005b83811015610ecb5760076000868684818110610e0957610e09611ba6565b90506020020135815260200190815260200160002060000160009054906101000a900460ff16838281518110610e4157610e41611ba6565b9115156020928302919091019091015260076000868684818110610e6757610e67611ba6565b90506020020135815260200190815260200160002060000160019054906101000a90046001600160f81b03166001600160f81b0316828281518110610eae57610eae611ba6565b602090810291909101015280610ec381611bd7565b915050610deb565b509250929050565b610edb61115c565b6108c0816113d3565b6108298282808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506117bc92505050565b610f326553797374656d60d01b61120e565b6001600160f81b03818116610100908102600117600381905560405191900490911681527f86b7ed06c3a2c3763514d475ced33f9ac8b1bb8f028ded18de0100b7678f3c4f90602001610751565b6060808267ffffffffffffffff811115610f9c57610f9c611b90565b604051908082528060200260200182016040528015610fc5578160200160208202803683370190505b5091508267ffffffffffffffff811115610fe157610fe1611b90565b60405190808252806020026020018201604052801561100a578160200160208202803683370190505b50905060005b83811015610ecb576006600086868481811061102e5761102e611ba6565b90506020020135815260200190815260200160002060000160009054906101000a900460ff1683828151811061106657611066611ba6565b911515602092830291909101909101526006600086868481811061108c5761108c611ba6565b90506020020135815260200190815260200160002060000160019054906101000a90046001600160f81b03166001600160f81b03168282815181106110d3576110d3611ba6565b6020908102919091010152806110e881611bd7565b915050611010565b6111046745786368616e676560c01b6111d0565b6005805460ff1916908190556040516101009091046001600160f81b031681527f07966fe79d35c7abf1f3b2ad9970ea24cae0f11406e283e848e3e6608ae3c2149060200160405180910390a16005805460ff169055565b60035460ff8116159061010090046001600160f81b031660011461119857604051806060016040528060298152602001611cd2602991396111b2565b6040518060600160405280603b8152602001611c97603b91395b906108c05760405162461bcd60e51b81526004016109929190611c00565b6000818152600260209081526040808320338452909152902054610100900460ff166108c05760405162461bcd60e51b815260040161099290611c55565b600081815260026020908152604080832033845290915290205460ff166108c05760405162461bcd60e51b815260040161099290611c55565b6000546001600160a01b031633146106915760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610992565b6112d26c53796e746845786368616e676560981b61120e565b60005b82518110156107f05760008382815181106112f2576112f2611ba6565b60209081029190910181015160008181526006835260409081902060016101006001600160f81b0389160217905580518281529283018690529092507fcea0da706e9f2a6a1cb56cdab42ac548791339f1710deadf814f15fc0a6a7114910160405180910390a1508061136481611bd7565b9150506112d5565b60055460ff16156106915760405162461bcd60e51b815260206004820152602b60248201527f45786368616e67652069732073757370656e6465642e204f7065726174696f6e60448201526a081c1c9bda1a589a5d195960aa1b6064820152608401610992565b60008181526006602052604090205460ff16156108c05760405162461bcd60e51b815260206004820152602e60248201527f53796e74682065786368616e67652073757370656e6465642e204f706572617460448201526d1a5bdb881c1c9bda1a589a5d195960921b6064820152608401610992565b60008181526007602052604090205460ff16156108c05760405162461bcd60e51b815260206004820152602860248201527f53796e74682069732073757370656e6465642e204f7065726174696f6e2070726044820152671bda1a589a5d195960c21b6064820152608401610992565b6553797374656d60d01b8414806114da57506749737375616e636560c01b84145b806114ef57506745786368616e676560c01b84145b8061150957506c53796e746845786368616e676560981b84145b8061151b5750640a6f2dce8d60db1b84145b6115675760405162461bcd60e51b815260206004820152601860248201527f496e76616c69642073656374696f6e20737570706c69656400000000000000006044820152606401610992565b60008481526002602090815260408083206001600160a01b038716808552908352928190208054851515610100810261ff001989151590811661ffff19909416939093171790925582519081529283015286917f95bad30f8fe717e4a02906d7b05a6f90698c7135cd053e5b6d5239146b4c40d1910160405180910390a350505050565b6116046c53796e746845786368616e676560981b6111d0565b60005b815181101561082957600082828151811061162457611624611ba6565b6020908102919091018101516000818152600683526040908190205481518381526101009091046001600160f81b0316938101939093529092507f91037f810fbf9c3c6d5573650d27de6b5e8d2187698822700d4524102472bc08910160405180910390a1600090815260066020526040812055806116a281611bd7565b915050611607565b60045460ff16156106915760405162461bcd60e51b815260206004820152602b60248201527f49737375616e63652069732073757370656e6465642e204f7065726174696f6e60448201526a081c1c9bda1a589a5d195960aa1b6064820152608401610992565b611722640a6f2dce8d60db1b61120e565b60005b82518110156107f057600083828151811061174257611742611ba6565b60209081029190910181015160008181526007835260409081902060016101006001600160f81b0389160217905580518281529283018690529092507f9cca506f9028bbcc0d976db0eaf80dfe6a6d7cadd99024edd88f690e1eda5541910160405180910390a150806117b481611bd7565b915050611725565b6117cd640a6f2dce8d60db1b6111d0565b60005b81518110156108295760008282815181106117ed576117ed611ba6565b6020908102919091018101516000818152600783526040908190205481518381526101009091046001600160f81b0316938101939093529092507f691b6c9654fa1f01847f7e98a061557ca10378bb9670782b60ed13891703d220910160405180910390a16000908152600760205260408120558061186b81611bd7565b9150506117d0565b60006020828403121561188557600080fd5b5035919050565b80356001600160a01b03811681146118a357600080fd5b919050565b6000602082840312156118ba57600080fd5b6118c38261188c565b9392505050565b60008083601f8401126118dc57600080fd5b50813567ffffffffffffffff8111156118f457600080fd5b6020830191508360208260051b850101111561190f57600080fd5b9250929050565b60008060006040848603121561192b57600080fd5b833567ffffffffffffffff81111561194257600080fd5b61194e868287016118ca565b909790965060209590950135949350505050565b6000806040838503121561197557600080fd5b50508035926020909101359150565b6000806040838503121561199757600080fd5b823591506119a76020840161188c565b90509250929050565b803580151581146118a357600080fd5b600080600080608085870312156119d657600080fd5b843593506119e66020860161188c565b92506119f4604086016119b0565b9150611a02606086016119b0565b905092959194509250565b6000806000806000806000806080898b031215611a2957600080fd5b883567ffffffffffffffff80821115611a4157600080fd5b611a4d8c838d016118ca565b909a50985060208b0135915080821115611a6657600080fd5b611a728c838d016118ca565b909850965060408b0135915080821115611a8b57600080fd5b611a978c838d016118ca565b909650945060608b0135915080821115611ab057600080fd5b50611abd8b828c016118ca565b999c989b5096995094979396929594505050565b60008060208385031215611ae457600080fd5b823567ffffffffffffffff811115611afb57600080fd5b611b07858286016118ca565b90969095509350505050565b604080825283519082018190526000906020906060840190828701845b82811015611b4e578151151584529284019290840190600101611b30565b5050508381038285015284518082528583019183019060005b81811015611b8357835183529284019291840191600101611b67565b5090979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215611bce57600080fd5b6118c3826119b0565b6000600019821415611bf957634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208083528351808285015260005b81811015611c2d57858101830151858201604001528201611c11565b81811115611c3f576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526021908201527f5265737472696374656420746f2061636365737320636f6e74726f6c206c69736040820152601d60fa1b60608201526080019056fe53797374656d2069732073757370656e6465642c207570677261646520696e2070726f67726573732e2e2e20706c65617365207374616e6420627953797374656d2069732073757370656e6465642e204f7065726174696f6e2070726f68696269746564a26469706673582212208210aa16c757a52a60de52a5a2e10016326ad5d7ca098f172b7f097b1888c19164736f6c634300080900330000000000000000000000006f808ae3445a711ecaa4da5c8330b051541a4de0

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061027f5760003560e01c806369eaced21161015c578063b431c0ea116100ce578063e665edf011610087578063e665edf0146105fd578063e91e691814610610578063f161620714610643578063f405f65a14610655578063f44d1e0b1461065d578063f8b4b0841461066c57600080fd5b8063b431c0ea14610585578063b9a4986914610598578063c0eee443146105b9578063da5917ae146105c4578063de1b8851146105d7578063e470df58146105ea57600080fd5b80637fe9b23d116101205780637fe9b23d146105025780638da5cb5b1461051557806394c79f74146105285780639f8a95ba1461053b578063a55ce9c51461055b578063abc0bb6e1461057257600080fd5b806369eaced2146104a45780637118d431146104b75780637243bc2c146104bf57806379ba5097146104f25780637c312541146104fa57600080fd5b8063396e258e116101f5578063517d60c6116101b9578063517d60c61461042257806353a47bb7146104355780636132eba414610460578063614d08f8146104735780636309a10c1461048957806367a280b21461049c57600080fd5b8063396e258e146103c457806342a28e21146103d757806348bf1971146103ea5780634a661850146103fd5780634abdb44d1461041057600080fd5b80631cba727c116102475780631cba727c146102df5780631ce00ba2146102f257806320f2bf00146103055780632366245e146103535780632dd8afdb1461038f5780632e8d0b9e146103ac57600080fd5b8063086dabd11461028457806312bde5141461028e578063157c51d3146102b15780631588e817146102b95780631627540c146102cc575b600080fd5b61028c610689565b005b61029e6553797374656d60d01b81565b6040519081526020015b60405180910390f35b61028c610693565b61028c6102c7366004611873565b6106fd565b61028c6102da3660046118a8565b61075c565b61028c6102ed366004611916565b6107b2565b61028c610300366004611962565b6107f5565b61033c610313366004611984565b600260209081526000928352604080842090915290825290205460ff8082169161010090041682565b6040805192151583529015156020830152016102a8565b6004546103709060ff81169061010090046001600160f81b031682565b6040805192151583526001600160f81b039091166020830152016102a8565b6003546103709060ff81169061010090046001600160f81b031682565b6103b461082d565b60405190151581526020016102a8565b61028c6103d2366004611873565b610857565b61028c6103e5366004611873565b6108af565b61028c6103f83660046119c0565b6108c3565b61028c61040b366004611962565b6108dd565b61029e6749737375616e636560c01b81565b61028c610430366004611a0d565b610929565b600154610448906001600160a01b031681565b6040516001600160a01b0390911681526020016102a8565b61028c61046e366004611962565b610a59565b61029e6b53797374656d53746174757360a01b81565b61028c610497366004611873565b610a61565b61028c610aac565b61028c6104b2366004611ad1565b610b18565b61028c610b54565b6103706104cd366004611873565b60076020526000908152604090205460ff81169061010090046001600160f81b031682565b61028c610b64565b61028c610c4e565b61028c610510366004611916565b610c5e565b600054610448906001600160a01b031681565b61028c610536366004611873565b610c9c565b610543600181565b6040516001600160f81b0390911681526020016102a8565b61029e6c53796e746845786368616e676560981b81565b61028c610580366004611962565b610ce7565b6103b4610593366004611873565b610d33565b6105ab6105a6366004611ad1565b610d5b565b6040516102a8929190611b13565b60035460ff166103b4565b61028c6105d2366004611873565b610ed3565b61028c6105e5366004611ad1565b610ee4565b61028c6105f8366004611873565b610f20565b6105ab61060b366004611ad1565b610f80565b61037061061e366004611873565b60066020526000908152604090205460ff81169061010090046001600160f81b031682565b61029e6745786368616e676560c01b81565b61028c6110f0565b61029e640a6f2dce8d60db1b81565b6005546103709060ff81169061010090046001600160f81b031682565b61069161115c565b565b6106a56553797374656d60d01b6111d0565b6003805460ff1916908190556040516101009091046001600160f81b031681527fb392a95118344e8edff8eff56183afb4bb0240310c406a0fc1217d2755c66d8f9060200160405180910390a16003805460ff169055565b6107116745786368616e676560c01b61120e565b60016101006001600160f81b03831602176005556040518181527f078773069a9216cdb6acaa7b184785f12f62048c7ce8b7ede1bad6785de16b22906020015b60405180910390a150565b610764611247565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290602001610751565b6107f08383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508592506112b9915050565b505050565b6107fd61115c565b61080561136c565b61080e826113d3565b610817816113d3565b61082082611449565b61082981611449565b5050565b60035460009060ff168015610852575060035461010090046001600160f81b03166001145b905090565b61086b6749737375616e636560c01b61120e565b60016101006001600160f81b03831602176004556040518181527fee8bf45d6e3141aa521ae4f0d05dfefe0327a3f23a9fbae6a64680458b34ebb890602001610751565b6108b761115c565b6108c081611449565b50565b6108cb611247565b6108d7848484846114b9565b50505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061091357610913611ba6565b6020026020010181815250506107f081836112b9565b610931611247565b868514801561093f57508483145b801561094a57508281145b61099b5760405162461bcd60e51b815260206004820152601e60248201527f496e707574206172726179206c656e67746873206d757374206d61746368000060448201526064015b60405180910390fd5b60005b87811015610a4e57610a3c8989838181106109bb576109bb611ba6565b905060200201358888848181106109d4576109d4611ba6565b90506020020160208101906109e991906118a8565b8787858181106109fb576109fb611ba6565b9050602002016020810190610a109190611bbc565b868686818110610a2257610a22611ba6565b9050602002016020810190610a379190611bbc565b6114b9565b80610a4681611bd7565b91505061099e565b505050505050505050565b61081761115c565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110610a9757610a97611ba6565b602002602001018181525050610829816115eb565b610ac06749737375616e636560c01b6111d0565b6004805460ff1916908190556040516101009091046001600160f81b031681527f0f1a80395faba9a11017f830db5f90ad6525a1621dbfb2cbc2b6679ba57168379060200160405180910390a16004805460ff169055565b6108298282808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506115eb92505050565b610b5c61115c565b61069161136c565b6001546001600160a01b03163314610bdc5760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b6064820152608401610992565b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b610c5661115c565b6106916116aa565b6107f0838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250859250611711915050565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110610cd257610cd2611ba6565b602002602001018181525050610829816117bc565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110610d1d57610d1d611ba6565b6020026020010181815250506107f08183611711565b60035460009060ff1680610d55575060008281526007602052604090205460ff165b92915050565b6060808267ffffffffffffffff811115610d7757610d77611b90565b604051908082528060200260200182016040528015610da0578160200160208202803683370190505b5091508267ffffffffffffffff811115610dbc57610dbc611b90565b604051908082528060200260200182016040528015610de5578160200160208202803683370190505b50905060005b83811015610ecb5760076000868684818110610e0957610e09611ba6565b90506020020135815260200190815260200160002060000160009054906101000a900460ff16838281518110610e4157610e41611ba6565b9115156020928302919091019091015260076000868684818110610e6757610e67611ba6565b90506020020135815260200190815260200160002060000160019054906101000a90046001600160f81b03166001600160f81b0316828281518110610eae57610eae611ba6565b602090810291909101015280610ec381611bd7565b915050610deb565b509250929050565b610edb61115c565b6108c0816113d3565b6108298282808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506117bc92505050565b610f326553797374656d60d01b61120e565b6001600160f81b03818116610100908102600117600381905560405191900490911681527f86b7ed06c3a2c3763514d475ced33f9ac8b1bb8f028ded18de0100b7678f3c4f90602001610751565b6060808267ffffffffffffffff811115610f9c57610f9c611b90565b604051908082528060200260200182016040528015610fc5578160200160208202803683370190505b5091508267ffffffffffffffff811115610fe157610fe1611b90565b60405190808252806020026020018201604052801561100a578160200160208202803683370190505b50905060005b83811015610ecb576006600086868481811061102e5761102e611ba6565b90506020020135815260200190815260200160002060000160009054906101000a900460ff1683828151811061106657611066611ba6565b911515602092830291909101909101526006600086868481811061108c5761108c611ba6565b90506020020135815260200190815260200160002060000160019054906101000a90046001600160f81b03166001600160f81b03168282815181106110d3576110d3611ba6565b6020908102919091010152806110e881611bd7565b915050611010565b6111046745786368616e676560c01b6111d0565b6005805460ff1916908190556040516101009091046001600160f81b031681527f07966fe79d35c7abf1f3b2ad9970ea24cae0f11406e283e848e3e6608ae3c2149060200160405180910390a16005805460ff169055565b60035460ff8116159061010090046001600160f81b031660011461119857604051806060016040528060298152602001611cd2602991396111b2565b6040518060600160405280603b8152602001611c97603b91395b906108c05760405162461bcd60e51b81526004016109929190611c00565b6000818152600260209081526040808320338452909152902054610100900460ff166108c05760405162461bcd60e51b815260040161099290611c55565b600081815260026020908152604080832033845290915290205460ff166108c05760405162461bcd60e51b815260040161099290611c55565b6000546001600160a01b031633146106915760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610992565b6112d26c53796e746845786368616e676560981b61120e565b60005b82518110156107f05760008382815181106112f2576112f2611ba6565b60209081029190910181015160008181526006835260409081902060016101006001600160f81b0389160217905580518281529283018690529092507fcea0da706e9f2a6a1cb56cdab42ac548791339f1710deadf814f15fc0a6a7114910160405180910390a1508061136481611bd7565b9150506112d5565b60055460ff16156106915760405162461bcd60e51b815260206004820152602b60248201527f45786368616e67652069732073757370656e6465642e204f7065726174696f6e60448201526a081c1c9bda1a589a5d195960aa1b6064820152608401610992565b60008181526006602052604090205460ff16156108c05760405162461bcd60e51b815260206004820152602e60248201527f53796e74682065786368616e67652073757370656e6465642e204f706572617460448201526d1a5bdb881c1c9bda1a589a5d195960921b6064820152608401610992565b60008181526007602052604090205460ff16156108c05760405162461bcd60e51b815260206004820152602860248201527f53796e74682069732073757370656e6465642e204f7065726174696f6e2070726044820152671bda1a589a5d195960c21b6064820152608401610992565b6553797374656d60d01b8414806114da57506749737375616e636560c01b84145b806114ef57506745786368616e676560c01b84145b8061150957506c53796e746845786368616e676560981b84145b8061151b5750640a6f2dce8d60db1b84145b6115675760405162461bcd60e51b815260206004820152601860248201527f496e76616c69642073656374696f6e20737570706c69656400000000000000006044820152606401610992565b60008481526002602090815260408083206001600160a01b038716808552908352928190208054851515610100810261ff001989151590811661ffff19909416939093171790925582519081529283015286917f95bad30f8fe717e4a02906d7b05a6f90698c7135cd053e5b6d5239146b4c40d1910160405180910390a350505050565b6116046c53796e746845786368616e676560981b6111d0565b60005b815181101561082957600082828151811061162457611624611ba6565b6020908102919091018101516000818152600683526040908190205481518381526101009091046001600160f81b0316938101939093529092507f91037f810fbf9c3c6d5573650d27de6b5e8d2187698822700d4524102472bc08910160405180910390a1600090815260066020526040812055806116a281611bd7565b915050611607565b60045460ff16156106915760405162461bcd60e51b815260206004820152602b60248201527f49737375616e63652069732073757370656e6465642e204f7065726174696f6e60448201526a081c1c9bda1a589a5d195960aa1b6064820152608401610992565b611722640a6f2dce8d60db1b61120e565b60005b82518110156107f057600083828151811061174257611742611ba6565b60209081029190910181015160008181526007835260409081902060016101006001600160f81b0389160217905580518281529283018690529092507f9cca506f9028bbcc0d976db0eaf80dfe6a6d7cadd99024edd88f690e1eda5541910160405180910390a150806117b481611bd7565b915050611725565b6117cd640a6f2dce8d60db1b6111d0565b60005b81518110156108295760008282815181106117ed576117ed611ba6565b6020908102919091018101516000818152600783526040908190205481518381526101009091046001600160f81b0316938101939093529092507f691b6c9654fa1f01847f7e98a061557ca10378bb9670782b60ed13891703d220910160405180910390a16000908152600760205260408120558061186b81611bd7565b9150506117d0565b60006020828403121561188557600080fd5b5035919050565b80356001600160a01b03811681146118a357600080fd5b919050565b6000602082840312156118ba57600080fd5b6118c38261188c565b9392505050565b60008083601f8401126118dc57600080fd5b50813567ffffffffffffffff8111156118f457600080fd5b6020830191508360208260051b850101111561190f57600080fd5b9250929050565b60008060006040848603121561192b57600080fd5b833567ffffffffffffffff81111561194257600080fd5b61194e868287016118ca565b909790965060209590950135949350505050565b6000806040838503121561197557600080fd5b50508035926020909101359150565b6000806040838503121561199757600080fd5b823591506119a76020840161188c565b90509250929050565b803580151581146118a357600080fd5b600080600080608085870312156119d657600080fd5b843593506119e66020860161188c565b92506119f4604086016119b0565b9150611a02606086016119b0565b905092959194509250565b6000806000806000806000806080898b031215611a2957600080fd5b883567ffffffffffffffff80821115611a4157600080fd5b611a4d8c838d016118ca565b909a50985060208b0135915080821115611a6657600080fd5b611a728c838d016118ca565b909850965060408b0135915080821115611a8b57600080fd5b611a978c838d016118ca565b909650945060608b0135915080821115611ab057600080fd5b50611abd8b828c016118ca565b999c989b5096995094979396929594505050565b60008060208385031215611ae457600080fd5b823567ffffffffffffffff811115611afb57600080fd5b611b07858286016118ca565b90969095509350505050565b604080825283519082018190526000906020906060840190828701845b82811015611b4e578151151584529284019290840190600101611b30565b5050508381038285015284518082528583019183019060005b81811015611b8357835183529284019291840191600101611b67565b5090979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215611bce57600080fd5b6118c3826119b0565b6000600019821415611bf957634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208083528351808285015260005b81811015611c2d57858101830151858201604001528201611c11565b81811115611c3f576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526021908201527f5265737472696374656420746f2061636365737320636f6e74726f6c206c69736040820152601d60fa1b60608201526080019056fe53797374656d2069732073757370656e6465642c207570677261646520696e2070726f67726573732e2e2e20706c65617365207374616e6420627953797374656d2069732073757370656e6465642e204f7065726174696f6e2070726f68696269746564a26469706673582212208210aa16c757a52a60de52a5a2e10016326ad5d7ca098f172b7f097b1888c19164736f6c63430008090033

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

0000000000000000000000006f808ae3445a711ecaa4da5c8330b051541a4de0

-----Decoded View---------------
Arg [0] : _owner (address): 0x6F808aE3445A711ecAa4DA5c8330B051541A4dE0

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000006f808ae3445a711ecaa4da5c8330b051541a4de0


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.