Contract Overview
Balance:
0 Ether
More Info
My Name Tag:
Not Available
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
SystemStatus
Compiler Version
v0.5.16+commit.9c3226ce
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-16 */ /* ____ __ __ __ _ / __/__ __ ___ / /_ / / ___ / /_ (_)__ __ _\ \ / // // _ \/ __// _ \/ -_)/ __// / \ \ / /___/ \_, //_//_/\__//_//_/\__/ \__//_/ /_\_\ /___/ * Synthetix: SystemStatus.sol * * Latest source (may be newer): https://github.com/Synthetixio/synthetix/blob/master/contracts/SystemStatus.sol * Docs: https://docs.synthetix.io/contracts/SystemStatus * * Contract Dependencies: * - ISystemStatus * - Owned * Libraries: (none) * * MIT License * =========== * * Copyright (c) 2022 Synthetix * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE */ pragma solidity ^0.5.16; // https://docs.synthetix.io/contracts/source/contracts/owned contract Owned { address public owner; address public nominatedOwner; constructor(address _owner) public { 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); } // https://docs.synthetix.io/contracts/source/interfaces/isystemstatus 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; } // Inheritance // https://docs.synthetix.io/contracts/source/contracts/systemstatus contract SystemStatus is Owned, ISystemStatus { mapping(bytes32 => mapping(address => 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_FUTURES = "Futures"; bytes32 public constant SECTION_SYNTH_EXCHANGE = "SynthExchange"; bytes32 public constant SECTION_SYNTH = "Synth"; Suspension public systemSuspension; Suspension public issuanceSuspension; Suspension public exchangeSuspension; Suspension public futuresSuspension; mapping(bytes32 => Suspension) public synthExchangeSuspension; mapping(bytes32 => Suspension) public synthSuspension; mapping(bytes32 => Suspension) public futuresMarketSuspension; constructor(address _owner) public 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 requireFuturesActive() external view { _internalRequireSystemActive(); _internalRequireExchangeActive(); _internalRequireFuturesActive(); } /// @notice marketKey doesn't necessarily correspond to asset key function requireFuturesMarketActive(bytes32 marketKey) external view { _internalRequireSystemActive(); _internalRequireExchangeActive(); // exchanging implicitely used _internalRequireFuturesActive(); // futures global flag _internalRequireFuturesMarketActive(marketKey); // specific futures market flag } 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 (uint 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 (uint i = 0; i < synths.length; i++) { suspensions[i] = synthSuspension[synths[i]].suspended; reasons[i] = synthSuspension[synths[i]].reason; } } /// @notice marketKey doesn't necessarily correspond to asset key function getFuturesMarketSuspensions(bytes32[] calldata marketKeys) external view returns (bool[] memory suspensions, uint256[] memory reasons) { suspensions = new bool[](marketKeys.length); reasons = new uint256[](marketKeys.length); for (uint i = 0; i < marketKeys.length; i++) { suspensions[i] = futuresMarketSuspension[marketKeys[i]].suspended; reasons[i] = futuresMarketSuspension[marketKeys[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 (uint 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 suspendFutures(uint256 reason) external { _requireAccessToSuspend(SECTION_FUTURES); futuresSuspension.suspended = true; futuresSuspension.reason = uint248(reason); emit FuturesSuspended(reason); } function resumeFutures() external { _requireAccessToResume(SECTION_FUTURES); futuresSuspension.suspended = false; emit FuturesResumed(uint256(futuresSuspension.reason)); futuresSuspension.reason = 0; } /// @notice marketKey doesn't necessarily correspond to asset key function suspendFuturesMarket(bytes32 marketKey, uint256 reason) external { bytes32[] memory marketKeys = new bytes32[](1); marketKeys[0] = marketKey; _internalSuspendFuturesMarkets(marketKeys, reason); } /// @notice marketKey doesn't necessarily correspond to asset key function suspendFuturesMarkets(bytes32[] calldata marketKeys, uint256 reason) external { _internalSuspendFuturesMarkets(marketKeys, reason); } /// @notice marketKey doesn't necessarily correspond to asset key function resumeFuturesMarket(bytes32 marketKey) external { bytes32[] memory marketKeys = new bytes32[](1); marketKeys[0] = marketKey; _internalResumeFuturesMarkets(marketKeys); } /// @notice marketKey doesn't necessarily correspond to asset key function resumeFuturesMarkets(bytes32[] calldata marketKeys) external { _internalResumeFuturesMarkets(marketKeys); } 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 ? "Synthetix is suspended, upgrade in progress... please stand by" : "Synthetix 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 _internalRequireFuturesActive() internal view { require(!futuresSuspension.suspended, "Futures markets are 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 _internalRequireFuturesMarketActive(bytes32 marketKey) internal view { require(!futuresMarketSuspension[marketKey].suspended, "Market suspended"); } function _internalSuspendSynths(bytes32[] memory currencyKeys, uint256 reason) internal { _requireAccessToSuspend(SECTION_SYNTH); for (uint 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 (uint 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 (uint 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 (uint i = 0; i < currencyKeys.length; i++) { bytes32 currencyKey = currencyKeys[i]; emit SynthExchangeResumed(currencyKey, uint256(synthExchangeSuspension[currencyKey].reason)); delete synthExchangeSuspension[currencyKey]; } } function _internalSuspendFuturesMarkets(bytes32[] memory marketKeys, uint256 reason) internal { _requireAccessToSuspend(SECTION_FUTURES); for (uint i = 0; i < marketKeys.length; i++) { bytes32 marketKey = marketKeys[i]; futuresMarketSuspension[marketKey].suspended = true; futuresMarketSuspension[marketKey].reason = uint248(reason); emit FuturesMarketSuspended(marketKey, reason); } } function _internalResumeFuturesMarkets(bytes32[] memory marketKeys) internal { _requireAccessToResume(SECTION_FUTURES); for (uint i = 0; i < marketKeys.length; i++) { bytes32 marketKey = marketKeys[i]; emit FuturesMarketResumed(marketKey, uint256(futuresMarketSuspension[marketKey].reason)); delete futuresMarketSuspension[marketKey]; } } function _internalUpdateAccessControl( bytes32 section, address account, bool canSuspend, bool canResume ) internal { require( section == SECTION_SYSTEM || section == SECTION_ISSUANCE || section == SECTION_EXCHANGE || section == SECTION_FUTURES || 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 FuturesSuspended(uint256 reason); event FuturesResumed(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 FuturesMarketSuspended(bytes32 marketKey, uint256 reason); event FuturesMarketResumed(bytes32 marketKey, uint256 reason); event AccessControlUpdated(bytes32 indexed section, address indexed account, bool canSuspend, bool canResume); }
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"payable":false,"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":"bytes32","name":"marketKey","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"FuturesMarketResumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"marketKey","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"FuturesMarketSuspended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"FuturesResumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"FuturesSuspended","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"},{"constant":true,"inputs":[],"name":"SECTION_EXCHANGE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SECTION_FUTURES","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SECTION_ISSUANCE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SECTION_SYNTH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SECTION_SYNTH_EXCHANGE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SECTION_SYSTEM","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SUSPENSION_REASON_UPGRADE","outputs":[{"internalType":"uint248","name":"","type":"uint248"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"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"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"exchangeSuspension","outputs":[{"internalType":"bool","name":"suspended","type":"bool"},{"internalType":"uint248","name":"reason","type":"uint248"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"futuresMarketSuspension","outputs":[{"internalType":"bool","name":"suspended","type":"bool"},{"internalType":"uint248","name":"reason","type":"uint248"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"futuresSuspension","outputs":[{"internalType":"bool","name":"suspended","type":"bool"},{"internalType":"uint248","name":"reason","type":"uint248"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32[]","name":"marketKeys","type":"bytes32[]"}],"name":"getFuturesMarketSuspensions","outputs":[{"internalType":"bool[]","name":"suspensions","type":"bool[]"},{"internalType":"uint256[]","name":"reasons","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32[]","name":"synths","type":"bytes32[]"}],"name":"getSynthExchangeSuspensions","outputs":[{"internalType":"bool[]","name":"exchangeSuspensions","type":"bool[]"},{"internalType":"uint256[]","name":"reasons","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32[]","name":"synths","type":"bytes32[]"}],"name":"getSynthSuspensions","outputs":[{"internalType":"bool[]","name":"suspensions","type":"bool[]"},{"internalType":"uint256[]","name":"reasons","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isSystemUpgrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"issuanceSuspension","outputs":[{"internalType":"bool","name":"suspended","type":"bool"},{"internalType":"uint248","name":"reason","type":"uint248"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"requireExchangeActive","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"sourceCurrencyKey","type":"bytes32"},{"internalType":"bytes32","name":"destinationCurrencyKey","type":"bytes32"}],"name":"requireExchangeBetweenSynthsAllowed","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"requireFuturesActive","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"marketKey","type":"bytes32"}],"name":"requireFuturesMarketActive","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"requireIssuanceActive","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"}],"name":"requireSynthActive","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"}],"name":"requireSynthExchangeActive","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"sourceCurrencyKey","type":"bytes32"},{"internalType":"bytes32","name":"destinationCurrencyKey","type":"bytes32"}],"name":"requireSynthsActive","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"requireSystemActive","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"resumeExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeFutures","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"marketKey","type":"bytes32"}],"name":"resumeFuturesMarket","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32[]","name":"marketKeys","type":"bytes32[]"}],"name":"resumeFuturesMarkets","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeIssuance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"}],"name":"resumeSynth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"}],"name":"resumeSynthExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32[]","name":"currencyKeys","type":"bytes32[]"}],"name":"resumeSynths","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32[]","name":"currencyKeys","type":"bytes32[]"}],"name":"resumeSynthsExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendFutures","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"marketKey","type":"bytes32"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendFuturesMarket","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32[]","name":"marketKeys","type":"bytes32[]"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendFuturesMarkets","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendIssuance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendSynth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendSynthExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32[]","name":"currencyKeys","type":"bytes32[]"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendSynths","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32[]","name":"currencyKeys","type":"bytes32[]"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendSynthsExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"synthExchangeSuspension","outputs":[{"internalType":"bool","name":"suspended","type":"bool"},{"internalType":"uint248","name":"reason","type":"uint248"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"}],"name":"synthSuspended","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"synthSuspension","outputs":[{"internalType":"bool","name":"suspended","type":"bool"},{"internalType":"uint248","name":"reason","type":"uint248"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"systemSuspended","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"systemSuspension","outputs":[{"internalType":"bool","name":"suspended","type":"bool"},{"internalType":"uint248","name":"reason","type":"uint248"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"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":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516127f33803806127f38339818101604052602081101561003357600080fd5b5051806001600160a01b038116610091576040805162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825560408051928352602083019190915280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a150506126f9806100fa6000396000f3fe608060405234801561001057600080fd5b50600436106103785760003560e01c806367a280b2116101d3578063abc0bb6e11610104578063e665edf0116100a2578063f405f65a1161007c578063f405f65a14610d4e578063f44d1e0b14610d56578063f4c80f5e14610d5e578063f8b4b08414610d7b57610378565b8063e665edf014610cbb578063e91e691814610d29578063f161620714610d4657610378565b8063c0eee443116100de578063c0eee44314610c0b578063da5917ae14610c13578063de1b885114610c30578063e470df5814610c9e57610378565b8063abc0bb6e14610b5d578063b431c0ea14610b80578063b9a4986914610b9d57610378565b80637fe9b23d1161017157806394c79f741161014b57806394c79f7414610b0c5780639f8a95ba14610b29578063a0aad31c14610b4d578063a55ce9c514610b5557610378565b80637fe9b23d14610a79578063856aae6c14610ae75780638da5cb5b14610b0457610378565b80637118d431116101ad5780637118d43114610a445780637243bc2c14610a4c57806379ba509714610a695780637c31254114610a7157610378565b806367a280b2146108c757806369eaced2146108cf5780636ef5d8411461093d57610378565b80632dd8afdb116102ad5780634abdb44d1161024b57806355585bce1161022557806355585bce1461087757806356c3da451461087f5780636132eba4146108875780636309a10c146108aa57610378565b80634abdb44d146106ed578063517d60c6146106f557806353a47bb71461085357610378565b8063396e258e11610287578063396e258e1461065457806342a28e211461067157806348bf19711461068e5780634a661850146106ca57610378565b80632dd8afdb146106285780632e8d0b9e14610630578063346cde511461064c57610378565b80631ce00ba21161031a57806322264567116102f457806322264567146105725780632366245e146105955780632a647ab71461059d5780632be470901461060b57610378565b80631ce00ba21461049a5780631f4b3401146104bd57806320f2bf001461052b57610378565b80631588e817116103565780631588e817146103a95780631627540c146103c6578063180113bc146103ec5780631cba727c1461042c57610378565b8063086dabd11461037d57806312bde51414610387578063157c51d3146103a1575b600080fd5b610385610d83565b005b61038f610d8d565b60408051918252519081900360200190f35b610385610d9a565b610385600480360360208110156103bf57600080fd5b5035610e04565b610385600480360360208110156103dc57600080fd5b50356001600160a01b0316610e6f565b6104096004803603602081101561040257600080fd5b5035610ecb565b6040805192151583526001600160f81b0390911660208301528051918290030190f35b6103856004803603604081101561044257600080fd5b810190602081018135600160201b81111561045c57600080fd5b82018360208201111561046e57600080fd5b803590602001918460208302840111600160201b8311171561048f57600080fd5b919350915035610ef0565b610385600480360360408110156104b057600080fd5b5080359060200135610f33565b610385600480360360208110156104d357600080fd5b810190602081018135600160201b8111156104ed57600080fd5b8201836020820111156104ff57600080fd5b803590602001918460208302840111600160201b8311171561052057600080fd5b509092509050610f6b565b6105576004803603604081101561054157600080fd5b50803590602001356001600160a01b0316610fa7565b60408051921515835290151560208301528051918290030190f35b6103856004803603604081101561058857600080fd5b5080359060200135610fd0565b610409611016565b610385600480360360408110156105b357600080fd5b810190602081018135600160201b8111156105cd57600080fd5b8201836020820111156105df57600080fd5b803590602001918460208302840111600160201b8311171561060057600080fd5b91935091503561102f565b6103856004803603602081101561062157600080fd5b503561106d565b6104096110d7565b6106386110f0565b604080519115158252519081900360200190f35b61040961111a565b6103856004803603602081101561066a57600080fd5b5035611133565b6103856004803603602081101561068757600080fd5b503561119e565b610385600480360360808110156106a457600080fd5b508035906001600160a01b036020820135169060408101351515906060013515156111b2565b610385600480360360408110156106e057600080fd5b50803590602001356111cc565b61038f611212565b6103856004803603608081101561070b57600080fd5b810190602081018135600160201b81111561072557600080fd5b82018360208201111561073757600080fd5b803590602001918460208302840111600160201b8311171561075857600080fd5b919390929091602081019035600160201b81111561077557600080fd5b82018360208201111561078757600080fd5b803590602001918460208302840111600160201b831117156107a857600080fd5b919390929091602081019035600160201b8111156107c557600080fd5b8201836020820111156107d757600080fd5b803590602001918460208302840111600160201b831117156107f857600080fd5b919390929091602081019035600160201b81111561081557600080fd5b82018360208201111561082757600080fd5b803590602001918460208302840111600160201b8311171561084857600080fd5b509092509050611221565b61085b611312565b604080516001600160a01b039092168252519081900360200190f35b610385611321565b61038f61138c565b6103856004803603604081101561089d57600080fd5b508035906020013561139a565b610385600480360360208110156108c057600080fd5b50356113a2565b6103856113e7565b610385600480360360208110156108e557600080fd5b810190602081018135600160201b8111156108ff57600080fd5b82018360208201111561091157600080fd5b803590602001918460208302840111600160201b8311171561093257600080fd5b509092509050611453565b6109ab6004803603602081101561095357600080fd5b810190602081018135600160201b81111561096d57600080fd5b82018360208201111561097f57600080fd5b803590602001918460208302840111600160201b831117156109a057600080fd5b50909250905061148f565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156109ef5781810151838201526020016109d7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610a2e578181015183820152602001610a16565b5050505090500194505050505060405180910390f35b6103856115b8565b61040960048036036020811015610a6257600080fd5b50356115c8565b6103856115ed565b6103856116a9565b61038560048036036040811015610a8f57600080fd5b810190602081018135600160201b811115610aa957600080fd5b820183602082011115610abb57600080fd5b803590602001918460208302840111600160201b83111715610adc57600080fd5b9193509150356116b9565b61038560048036036020811015610afd57600080fd5b50356116f7565b61085b611718565b61038560048036036020811015610b2257600080fd5b5035611727565b610b3161176c565b604080516001600160f81b039092168252519081900360200190f35b610385611771565b61038f611789565b61038560048036036040811015610b7357600080fd5b508035906020013561179d565b61063860048036036020811015610b9657600080fd5b50356117e3565b6109ab60048036036020811015610bb357600080fd5b810190602081018135600160201b811115610bcd57600080fd5b820183602082011115610bdf57600080fd5b803590602001918460208302840111600160201b83111715610c0057600080fd5b50909250905061180b565b61063861192c565b61038560048036036020811015610c2957600080fd5b5035611935565b61038560048036036020811015610c4657600080fd5b810190602081018135600160201b811115610c6057600080fd5b820183602082011115610c7257600080fd5b803590602001918460208302840111600160201b83111715610c9357600080fd5b509092509050611946565b61038560048036036020811015610cb457600080fd5b5035611982565b6109ab60048036036020811015610cd157600080fd5b810190602081018135600160201b811115610ceb57600080fd5b820183602082011115610cfd57600080fd5b803590602001918460208302840111600160201b83111715610d1e57600080fd5b5090925090506119f7565b61040960048036036020811015610d3f57600080fd5b5035611b18565b61038f611b3d565b610385611b4c565b61038f611bb8565b61038560048036036020811015610d7457600080fd5b5035611bc4565b610409611c09565b610d8b611c22565b565b6553797374656d60d01b81565b610dac6553797374656d60d01b611d01565b6003805460ff191690819055604080516101009092046001600160f81b03168252517fb392a95118344e8edff8eff56183afb4bb0240310c406a0fc1217d2755c66d8f916020908290030190a16003805460ff169055565b610e186745786368616e676560c01b611d5e565b600580546001600160f81b0383166101000260ff1990911660011760ff161790556040805182815290517f078773069a9216cdb6acaa7b184785f12f62048c7ce8b7ede1bad6785de16b229181900360200190a150565b610e77611db6565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b60096020526000908152604090205460ff81169061010090046001600160f81b031682565b610f2e838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250859250611dff915050565b505050565b610f3b611c22565b610f43611ead565b610f4c82611eef565b610f5581611eef565b610f5e82611f3d565b610f6781611f3d565b5050565b610f67828280806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611f8b92505050565b600260209081526000928352604080842090915290825290205460ff8082169161010090041682565b60408051600180825281830190925260609160208083019080388339019050509050828160008151811061100057fe5b602002602001018181525050610f2e8183612033565b60045460ff81169061010090046001600160f81b031682565b610f2e838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250859250612033915050565b611080664675747572657360c81b611d5e565b600680546001600160f81b0383166101000260ff1990911660011760ff161790556040805182815290517fbb77bf6af5bb933d0fb912130167ce25b6debb9c728f232ee4e7c181f16c8e0c9181900360200190a150565b60035460ff81169061010090046001600160f81b031682565b60035460009060ff168015611115575060035461010090046001600160f81b03166001145b905090565b60065460ff81169061010090046001600160f81b031682565b6111476749737375616e636560c01b611d5e565b600480546001600160f81b0383166101000260ff1990911660011760ff161790556040805182815290517fee8bf45d6e3141aa521ae4f0d05dfefe0327a3f23a9fbae6a64680458b34ebb89181900360200190a150565b6111a6611c22565b6111af81611f3d565b50565b6111ba611db6565b6111c6848484846120db565b50505050565b6040805160018082528183019092526060916020808301908038833901905050905082816000815181106111fc57fe5b602002602001018181525050610f2e8183611dff565b6749737375616e636560c01b81565b611229611db6565b868514801561123757508483145b801561124257508281145b611293576040805162461bcd60e51b815260206004820152601e60248201527f496e707574206172726179206c656e67746873206d757374206d617463680000604482015290519081900360640190fd5b60005b87811015611307576112ff8989838181106112ad57fe5b905060200201358888848181106112c057fe5b905060200201356001600160a01b03168787858181106112dc57fe5b9050602002013515158686868181106112f157fe5b9050602002013515156120db565b600101611296565b505050505050505050565b6001546001600160a01b031681565b611334664675747572657360c81b611d01565b6006805460ff191690819055604080516101009092046001600160f81b03168252517fcbdc17547b5be7fb4a78666d4253509496561d5b1088a019865bd70d7e248fa6916020908290030190a16006805460ff169055565b664675747572657360c81b81565b610f55611c22565b6040805160018082528183019092526060916020808301908038833901905050905081816000815181106113d257fe5b602002602001018181525050610f6781612221565b6113fb6749737375616e636560c01b611d01565b6004805460ff191690819055604080516101009092046001600160f81b03168252517f0f1a80395faba9a11017f830db5f90ad6525a1621dbfb2cbc2b6679ba5716837916020908290030190a16004805460ff169055565b610f6782828080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061222192505050565b606080838390506040519080825280602002602001820160405280156114bf578160200160208202803883390190505b506040805185815260208087028201019091529092508380156114ec578160200160208202803883390190505b50905060005b838110156115b0576009600086868481811061150a57fe5b90506020020135815260200190815260200160002060000160009054906101000a900460ff1683828151811061153c57fe5b911515602092830291909101909101526009600086868481811061155c57fe5b90506020020135815260200190815260200160002060000160019054906101000a90046001600160f81b03166001600160f81b031682828151811061159d57fe5b60209081029190910101526001016114f2565b509250929050565b6115c0611c22565b610d8b611ead565b60086020526000908152604090205460ff81169061010090046001600160f81b031682565b6001546001600160a01b031633146116365760405162461bcd60e51b81526004018080602001828103825260358152602001806124f76035913960400191505060405180910390fd5b600054600154604080516001600160a01b03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6116b1611c22565b610d8b6122cf565b610f2e838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250859250612311915050565b6116ff611c22565b611707611ead565b61170f6123b7565b6111af816123f9565b6000546001600160a01b031681565b60408051600180825281830190925260609160208083019080388339019050509050818160008151811061175757fe5b602002602001018181525050610f6781612450565b600181565b611779611c22565b611781611ead565b610d8b6123b7565b6c53796e746845786368616e676560981b81565b6040805160018082528183019092526060916020808301908038833901905050905082816000815181106117cd57fe5b602002602001018181525050610f2e8183612311565b60035460009060ff1680611805575060008281526008602052604090205460ff165b92915050565b6060808383905060405190808252806020026020018201604052801561183b578160200160208202803883390190505b50604080518581526020808702820101909152909250838015611868578160200160208202803883390190505b50905060005b838110156115b0576008600086868481811061188657fe5b90506020020135815260200190815260200160002060000160009054906101000a900460ff168382815181106118b857fe5b91151560209283029190910190910152600860008686848181106118d857fe5b90506020020135815260200190815260200160002060000160019054906101000a90046001600160f81b03166001600160f81b031682828151811061191957fe5b602090810291909101015260010161186e565b60035460ff1690565b61193d611c22565b6111af81611eef565b610f6782828080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061245092505050565b6119946553797374656d60d01b611d5e565b600380546001600160f81b0380841661010090810260ff1990931660011760ff169290921792839055604080519290930416815290517f86b7ed06c3a2c3763514d475ced33f9ac8b1bb8f028ded18de0100b7678f3c4f9181900360200190a150565b60608083839050604051908082528060200260200182016040528015611a27578160200160208202803883390190505b50604080518581526020808702820101909152909250838015611a54578160200160208202803883390190505b50905060005b838110156115b05760076000868684818110611a7257fe5b90506020020135815260200190815260200160002060000160009054906101000a900460ff16838281518110611aa457fe5b9115156020928302919091019091015260076000868684818110611ac457fe5b90506020020135815260200190815260200160002060000160019054906101000a90046001600160f81b03166001600160f81b0316828281518110611b0557fe5b6020908102919091010152600101611a5a565b60076020526000908152604090205460ff81169061010090046001600160f81b031682565b6745786368616e676560c01b81565b611b606745786368616e676560c01b611d01565b6005805460ff191690819055604080516101009092046001600160f81b03168252517f07966fe79d35c7abf1f3b2ad9970ea24cae0f11406e283e848e3e6608ae3c214916020908290030190a16005805460ff169055565b640a6f2dce8d60db1b81565b604080516001808252818301909252606091602080830190803883390190505090508181600081518110611bf457fe5b602002602001018181525050610f6781611f8b565b60055460ff81169061010090046001600160f81b031682565b60035460ff8116159061010090046001600160f81b0316600114611c5e576040518060600160405280602c8152602001612633602c9139611c78565b6040518060600160405280603e815260200161265f603e91395b906111af5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611cc6578181015183820152602001611cae565b50505050905090810190601f168015611cf35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000818152600260209081526040808320338452909152902054610100900460ff166111af5760405162461bcd60e51b81526004018080602001828103825260218152602001806126126021913960400191505060405180910390fd5b600081815260026020908152604080832033845290915290205460ff166111af5760405162461bcd60e51b81526004018080602001828103825260218152602001806126126021913960400191505060405180910390fd5b6000546001600160a01b03163314610d8b5760405162461bcd60e51b815260040180806020018281038252602f8152602001806125b8602f913960400191505060405180910390fd5b611e186c53796e746845786368616e676560981b611d5e565b60005b8251811015610f2e576000838281518110611e3257fe5b60209081029190910181015160008181526007835260409081902080546001600160f81b0388166101000260ff1990911660011760ff16179055805182815292830186905280519193507fcea0da706e9f2a6a1cb56cdab42ac548791339f1710deadf814f15fc0a6a7114928290030190a150600101611e1b565b60055460ff1615610d8b5760405162461bcd60e51b815260040180806020018281038252602b8152602001806125e7602b913960400191505060405180910390fd5b60008181526007602052604090205460ff16156111af5760405162461bcd60e51b815260040180806020018281038252602e815260200180612557602e913960400191505060405180910390fd5b60008181526008602052604090205460ff16156111af5760405162461bcd60e51b815260040180806020018281038252602881526020018061269d6028913960400191505060405180910390fd5b611f9e664675747572657360c81b611d01565b60005b8151811015610f67576000828281518110611fb857fe5b6020908102919091018101516000818152600983526040908190205481518381526101009091046001600160f81b03169381019390935280519193507f250fcb5d34afaf9bc18ec9ca0bf709e0f2ecb8ae4d4a3a616c0bf54b2ddf53e6928290030190a1600090815260096020526040812055600101611fa1565b612046664675747572657360c81b611d5e565b60005b8251811015610f2e57600083828151811061206057fe5b60209081029190910181015160008181526009835260409081902080546001600160f81b0388166101000260ff1990911660011760ff16179055805182815292830186905280519193507fcaa561b71353382b62092c429c14613b5db8f9c5f3a27cb51df16e51f350f8ca928290030190a150600101612049565b6553797374656d60d01b8414806120fc57506749737375616e636560c01b84145b8061211157506745786368616e676560c01b84145b806121255750664675747572657360c81b84145b8061213f57506c53796e746845786368616e676560981b84145b806121515750640a6f2dce8d60db1b84145b6121a2576040805162461bcd60e51b815260206004820152601860248201527f496e76616c69642073656374696f6e20737570706c6965640000000000000000604482015290519081900360640190fd5b60008481526002602090815260408083206001600160a01b038716808552908352928190208054851515610100810261ff001989151560ff1990941684171617909255825190815292830152805187927f95bad30f8fe717e4a02906d7b05a6f90698c7135cd053e5b6d5239146b4c40d192908290030190a350505050565b61223a6c53796e746845786368616e676560981b611d01565b60005b8151811015610f6757600082828151811061225457fe5b6020908102919091018101516000818152600783526040908190205481518381526101009091046001600160f81b03169381019390935280519193507f91037f810fbf9c3c6d5573650d27de6b5e8d2187698822700d4524102472bc08928290030190a160009081526007602052604081205560010161223d565b60045460ff1615610d8b5760405162461bcd60e51b815260040180806020018281038252602b81526020018061252c602b913960400191505060405180910390fd5b612322640a6f2dce8d60db1b611d5e565b60005b8251811015610f2e57600083828151811061233c57fe5b60209081029190910181015160008181526008835260409081902080546001600160f81b0388166101000260ff1990911660011760ff16179055805182815292830186905280519193507f9cca506f9028bbcc0d976db0eaf80dfe6a6d7cadd99024edd88f690e1eda5541928290030190a150600101612325565b60065460ff1615610d8b5760405162461bcd60e51b81526004018080602001828103825260338152602001806125856033913960400191505060405180910390fd5b60008181526009602052604090205460ff16156111af576040805162461bcd60e51b815260206004820152601060248201526f13585c9ad95d081cdd5cdc195b99195960821b604482015290519081900360640190fd5b612461640a6f2dce8d60db1b611d01565b60005b8151811015610f6757600082828151811061247b57fe5b6020908102919091018101516000818152600883526040908190205481518381526101009091046001600160f81b03169381019390935280519193507f691b6c9654fa1f01847f7e98a061557ca10378bb9670782b60ed13891703d220928290030190a160009081526008602052604081205560010161246456fe596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e65727368697049737375616e63652069732073757370656e6465642e204f7065726174696f6e2070726f6869626974656453796e74682065786368616e67652073757370656e6465642e204f7065726174696f6e2070726f6869626974656446757475726573206d61726b657473206172652073757370656e6465642e204f7065726174696f6e2070726f686962697465644f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e45786368616e67652069732073757370656e6465642e204f7065726174696f6e2070726f686962697465645265737472696374656420746f2061636365737320636f6e74726f6c206c69737453796e7468657469782069732073757370656e6465642e204f7065726174696f6e2070726f6869626974656453796e7468657469782069732073757370656e6465642c207570677261646520696e2070726f67726573732e2e2e20706c65617365207374616e6420627953796e74682069732073757370656e6465642e204f7065726174696f6e2070726f68696269746564a265627a7a723158204686188d9754cca204e2d4dcbb6a49d013e5c6095dd8644a1fd4b01347aa056c64736f6c6343000510003200000000000000000000000073570075092502472e4b61a7058df1a4a1db12f2
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000073570075092502472e4b61a7058df1a4a1db12f2
-----Decoded View---------------
Arg [0] : _owner (address): 0x73570075092502472e4b61a7058df1a4a1db12f2
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000073570075092502472e4b61a7058df1a4a1db12f2
Libraries Used
SafeDecimalMath : 0x1a60e2e2a8be0bc2b6381dd31fd3fd5f9a28de4cSystemSettingsLib : 0x34305b62550e0c652e697736e0bc93e67ab9b67bSignedSafeDecimalMath : 0xcefd89a03bd594287316da4b4f060104c8b271e0
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.