Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 20 internal transactions
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
15213830 | 915 days ago | Contract Creation | 0 ETH | |||
15186794 | 920 days ago | Contract Creation | 0 ETH | |||
15135691 | 927 days ago | Contract Creation | 0 ETH | |||
14024479 | 1104 days ago | Contract Creation | 0 ETH | |||
14003084 | 1108 days ago | Contract Creation | 0 ETH | |||
13997173 | 1109 days ago | Contract Creation | 0 ETH | |||
13993486 | 1109 days ago | Contract Creation | 0 ETH | |||
13893194 | 1125 days ago | Contract Creation | 0 ETH | |||
13893156 | 1125 days ago | Contract Creation | 0 ETH | |||
13816000 | 1137 days ago | Contract Creation | 0 ETH | |||
13802938 | 1139 days ago | Contract Creation | 0 ETH | |||
13761914 | 1145 days ago | Contract Creation | 0 ETH | |||
13467637 | 1192 days ago | Contract Creation | 0 ETH | |||
13346999 | 1211 days ago | Contract Creation | 0 ETH | |||
13245733 | 1226 days ago | Contract Creation | 0 ETH | |||
13185314 | 1236 days ago | Contract Creation | 0 ETH | |||
12991613 | 1266 days ago | Contract Creation | 0 ETH | |||
12991336 | 1266 days ago | Contract Creation | 0 ETH | |||
12692799 | 1312 days ago | Contract Creation | 0 ETH | |||
11881242 | 1438 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
PowerSwitchFactory
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.7.6; import {EnumerableSet} from "@openzeppelin/contracts/utils/EnumerableSet.sol"; import {IFactory} from "../factory/IFactory.sol"; import {InstanceRegistry} from "../factory/InstanceRegistry.sol"; import {PowerSwitch} from "./PowerSwitch.sol"; /// @title Power Switch Factory contract PowerSwitchFactory is IFactory, InstanceRegistry { function create(bytes calldata args) external override returns (address) { address owner = abi.decode(args, (address)); PowerSwitch powerSwitch = new PowerSwitch(owner); InstanceRegistry._register(address(powerSwitch)); return address(powerSwitch); } function create2(bytes calldata, bytes32) external pure override returns (address) { revert("PowerSwitchFactory: unused function"); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.7.0; /** * @dev Library for managing * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive * types. * * Sets have the following properties: * * - Elements are added, removed, and checked for existence in constant time * (O(1)). * - Elements are enumerated in O(n). No guarantees are made on the ordering. * * ``` * contract Example { * // Add the library methods * using EnumerableSet for EnumerableSet.AddressSet; * * // Declare a set state variable * EnumerableSet.AddressSet private mySet; * } * ``` * * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) * and `uint256` (`UintSet`) are supported. */ library EnumerableSet { // To implement this library for multiple types with as little code // repetition as possible, we write it in terms of a generic Set type with // bytes32 values. // The Set implementation uses private functions, and user-facing // implementations (such as AddressSet) are just wrappers around the // underlying Set. // This means that we can only create new EnumerableSets for types that fit // in bytes32. struct Set { // Storage of set values bytes32[] _values; // Position of the value in the `values` array, plus 1 because index 0 // means a value is not in the set. mapping (bytes32 => uint256) _indexes; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); // The value is stored at length-1, but we add 1 to all indexes // and use 0 as a sentinel value set._indexes[value] = set._values.length; return true; } else { return false; } } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function _remove(Set storage set, bytes32 value) private returns (bool) { // We read and store the value's index to prevent multiple reads from the same storage slot uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { // Equivalent to contains(set, value) // To delete an element from the _values array in O(1), we swap the element to delete with the last one in // the array, and then remove the last element (sometimes called as 'swap and pop'). // This modifies the order of the array, as noted in {at}. uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement. bytes32 lastvalue = set._values[lastIndex]; // Move the last value to the index where the value to delete is set._values[toDeleteIndex] = lastvalue; // Update the index for the moved value set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based // Delete the slot where the moved value was stored set._values.pop(); // Delete the index for the deleted slot delete set._indexes[value]; return true; } else { return false; } } /** * @dev Returns true if the value is in the set. O(1). */ function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._indexes[value] != 0; } /** * @dev Returns the number of values on the set. O(1). */ function _length(Set storage set) private view returns (uint256) { return set._values.length; } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function _at(Set storage set, uint256 index) private view returns (bytes32) { require(set._values.length > index, "EnumerableSet: index out of bounds"); return set._values[index]; } // Bytes32Set struct Bytes32Set { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _add(set._inner, value); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _remove(set._inner, value); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { return _contains(set._inner, value); } /** * @dev Returns the number of values in the set. O(1). */ function length(Bytes32Set storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { return _at(set._inner, index); } // AddressSet struct AddressSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Returns the number of values in the set. O(1). */ function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint160(uint256(_at(set._inner, index)))); } // UintSet struct UintSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } /** * @dev Returns the number of values on the set. O(1). */ function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } }
// SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.7.6; interface IFactory { function create(bytes calldata args) external returns (address instance); function create2(bytes calldata args, bytes32 salt) external returns (address instance); }
// SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.7.6; import {EnumerableSet} from "@openzeppelin/contracts/utils/EnumerableSet.sol"; interface IInstanceRegistry { /* events */ event InstanceAdded(address instance); event InstanceRemoved(address instance); /* view functions */ function isInstance(address instance) external view returns (bool validity); function instanceCount() external view returns (uint256 count); function instanceAt(uint256 index) external view returns (address instance); } /// @title InstanceRegistry contract InstanceRegistry is IInstanceRegistry { using EnumerableSet for EnumerableSet.AddressSet; /* storage */ EnumerableSet.AddressSet private _instanceSet; /* view functions */ function isInstance(address instance) external view override returns (bool validity) { return _instanceSet.contains(instance); } function instanceCount() external view override returns (uint256 count) { return _instanceSet.length(); } function instanceAt(uint256 index) external view override returns (address instance) { return _instanceSet.at(index); } /* admin functions */ function _register(address instance) internal { require(_instanceSet.add(instance), "InstanceRegistry: already registered"); emit InstanceAdded(instance); } }
// SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.7.6; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; interface IPowerSwitch { /* admin events */ event PowerOn(); event PowerOff(); event EmergencyShutdown(); /* data types */ enum State {Online, Offline, Shutdown} /* admin functions */ function powerOn() external; function powerOff() external; function emergencyShutdown() external; /* view functions */ function isOnline() external view returns (bool status); function isOffline() external view returns (bool status); function isShutdown() external view returns (bool status); function getStatus() external view returns (State status); function getPowerController() external view returns (address controller); } /// @title PowerSwitch /// @notice Standalone pausing and emergency stop functionality contract PowerSwitch is IPowerSwitch, Ownable { /* storage */ IPowerSwitch.State private _status; /* initializer */ constructor(address owner) { // sanity check owner require(owner != address(0), "PowerSwitch: invalid owner"); // transfer ownership Ownable.transferOwnership(owner); } /* admin functions */ /// @notice Turn Power On /// access control: only admin /// state machine: only when offline /// state scope: only modify _status /// token transfer: none function powerOn() external override onlyOwner { require(_status == IPowerSwitch.State.Offline, "PowerSwitch: cannot power on"); _status = IPowerSwitch.State.Online; emit PowerOn(); } /// @notice Turn Power Off /// access control: only admin /// state machine: only when online /// state scope: only modify _status /// token transfer: none function powerOff() external override onlyOwner { require(_status == IPowerSwitch.State.Online, "PowerSwitch: cannot power off"); _status = IPowerSwitch.State.Offline; emit PowerOff(); } /// @notice Shutdown Permanently /// access control: only admin /// state machine: /// - when online or offline /// - can only be called once /// state scope: only modify _status /// token transfer: none function emergencyShutdown() external override onlyOwner { require(_status != IPowerSwitch.State.Shutdown, "PowerSwitch: cannot shutdown"); _status = IPowerSwitch.State.Shutdown; emit EmergencyShutdown(); } /* getter functions */ function isOnline() external view override returns (bool status) { return _status == State.Online; } function isOffline() external view override returns (bool status) { return _status == State.Offline; } function isShutdown() external view override returns (bool status) { return _status == State.Shutdown; } function getStatus() external view override returns (IPowerSwitch.State status) { return _status; } function getPowerController() external view override returns (address controller) { return Ownable.owner(); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.7.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
{ "optimizer": { "enabled": true, "runs": 1000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"instance","type":"address"}],"name":"InstanceAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"instance","type":"address"}],"name":"InstanceRemoved","type":"event"},{"inputs":[{"internalType":"bytes","name":"args","type":"bytes"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"create2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"instanceAt","outputs":[{"internalType":"address","name":"instance","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"instanceCount","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"instance","type":"address"}],"name":"isInstance","outputs":[{"internalType":"bool","name":"validity","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50610ef0806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80638c0b8db2116100505780638c0b8db2146100df578063cf5ba53f1461014f578063ec56c716146101bf57610067565b806311d8293e1461006c5780636b44e6be146100a5575b600080fd5b6100896004803603602081101561008257600080fd5b50356101d9565b604080516001600160a01b039092168252519081900360200190f35b6100cb600480360360208110156100bb57600080fd5b50356001600160a01b03166101eb565b604080519115158252519081900360200190f35b610089600480360360408110156100f557600080fd5b81019060208101813564010000000081111561011057600080fd5b82018360208201111561012257600080fd5b8035906020019184600183028401116401000000008311171561014457600080fd5b9193509150356101f7565b6100896004803603602081101561016557600080fd5b81019060208101813564010000000081111561018057600080fd5b82018360208201111561019257600080fd5b803590602001918460018302840111640100000000831117156101b457600080fd5b509092509050610230565b6101c76102a3565b60408051918252519081900360200190f35b60006101e581836102b4565b92915050565b60006101e581836102c7565b600060405162461bcd60e51b8152600401808060200182810382526023815260200180610e986023913960400191505060405180910390fd5b6000808383602081101561024357600080fd5b5060405190356001600160a01b0316915060009082906102629061044b565b6001600160a01b03909116815260405190819003602001906000f08015801561028f573d6000803e3d6000fd5b50905061029b816102dc565b949350505050565b60006102af6000610361565b905090565b60006102c0838361036c565b9392505050565b60006102c0836001600160a01b0384166103d0565b6102e76000826103e8565b6103225760405162461bcd60e51b8152600401808060200182810382526024815260200180610e746024913960400191505060405180910390fd5b604080516001600160a01b038316815290517fee3a98e49d5a27452a99d57c90a7f73d4b2e44de88c6ded02e69c4ed964edd5a9181900360200190a150565b60006101e5826103fd565b815460009082106103ae5760405162461bcd60e51b8152600401808060200182810382526022815260200180610e526022913960400191505060405180910390fd5b8260000182815481106103bd57fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b60006102c0836001600160a01b038416610401565b5490565b600061040d83836103d0565b610443575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556101e5565b5060006101e5565b6109f9806104598339019056fe608060405234801561001057600080fd5b506040516109f93803806109f98339818101604052602081101561003357600080fd5b5051600061003f6100eb565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350916000805160206109d9833981519152908290a3506001600160a01b0381166100d2576040805162461bcd60e51b815260206004820152601a60248201527f506f7765725377697463683a20696e76616c6964206f776e6572000000000000604482015290519081900360640190fd5b6100e5816100ef60201b6106231760201c565b50610200565b3390565b6100f76100eb565b6001600160a01b03166101086101f1565b6001600160a01b031614610163576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166101a85760405162461bcd60e51b81526004018080602001828103825260268152602001806109b36026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216916000805160206109d983398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6107a48061020f6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c8063715018a611610081578063bf86d6901161005b578063bf86d69014610161578063efe6898214610169578063f2fde38b14610171576100c9565b8063715018a61461012d578063766f13bc146101355780638da5cb5b14610159576100c9565b8063438cae7e116100b2578063438cae7e146100e05780634e69d560146100fc578063664ab18e14610125576100c9565b806314fbf5cc146100ce5780633403c2fc146100d8575b600080fd5b6100d6610197565b005b6100d66102b2565b6100e86103e0565b604080519115158252519081900360200190f35b610104610403565b6040518082600281111561011457fe5b815260200191505060405180910390f35b6100e8610413565b6100d661041b565b61013d6104e6565b604080516001600160a01b039092168252519081900360200190f35b61013d6104f5565b6100e8610504565b6100d661050d565b6100d66004803603602081101561018757600080fd5b50356001600160a01b0316610623565b61019f610744565b6001600160a01b03166101b06104f5565b6001600160a01b03161461020b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60008054600160a01b900460ff16600281111561022457fe5b14610276576040805162461bcd60e51b815260206004820152601d60248201527f506f7765725377697463683a2063616e6e6f7420706f776572206f6666000000604482015290519081900360640190fd5b6000805460ff60a01b1916600160a01b1781556040517f3f10cc673bb08c6ec06120804bfd562bd9edeaeff24a1eb7da3db0147de8ea019190a1565b6102ba610744565b6001600160a01b03166102cb6104f5565b6001600160a01b031614610326576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6002600054600160a01b900460ff16600281111561034057fe5b1415610393576040805162461bcd60e51b815260206004820152601c60248201527f506f7765725377697463683a2063616e6e6f742073687574646f776e00000000604482015290519081900360640190fd5b6000805460ff60a01b1916740200000000000000000000000000000000000000001781556040517ff443ecad8d837e188abcabbbd02f1057b0d94896a09d5b97b2eb4bb445b94de89190a1565b600060015b600054600160a01b900460ff1660028111156103fd57fe5b14905090565b600054600160a01b900460ff1690565b6000806103e5565b610423610744565b6001600160a01b03166104346104f5565b6001600160a01b03161461048f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60006104f06104f5565b905090565b6000546001600160a01b031690565b600060026103e5565b610515610744565b6001600160a01b03166105266104f5565b6001600160a01b031614610581576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600054600160a01b900460ff16600281111561059b57fe5b146105ed576040805162461bcd60e51b815260206004820152601c60248201527f506f7765725377697463683a2063616e6e6f7420706f776572206f6e00000000604482015290519081900360640190fd5b6000805460ff60a01b191681556040517fd2ccdbf8763990e0fcff9e0d5c5867bcc73af876f85f1a8a65e868db95bf074c9190a1565b61062b610744565b6001600160a01b031661063c6104f5565b6001600160a01b031614610697576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166106dc5760405162461bcd60e51b81526004018080602001828103825260268152602001806107496026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220f2c3844630250c7ec38fd7b40e11812251ced700a78e86640c554198f06aef7064736f6c634300070600334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573738be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473496e7374616e636552656769737472793a20616c72656164792072656769737465726564506f776572537769746368466163746f72793a20756e757365642066756e6374696f6ea26469706673582212203137069c28dd5bf4640484ec4d438df497ec74fb54d1bf0f8ee2daaeaf86583e64736f6c63430007060033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100675760003560e01c80638c0b8db2116100505780638c0b8db2146100df578063cf5ba53f1461014f578063ec56c716146101bf57610067565b806311d8293e1461006c5780636b44e6be146100a5575b600080fd5b6100896004803603602081101561008257600080fd5b50356101d9565b604080516001600160a01b039092168252519081900360200190f35b6100cb600480360360208110156100bb57600080fd5b50356001600160a01b03166101eb565b604080519115158252519081900360200190f35b610089600480360360408110156100f557600080fd5b81019060208101813564010000000081111561011057600080fd5b82018360208201111561012257600080fd5b8035906020019184600183028401116401000000008311171561014457600080fd5b9193509150356101f7565b6100896004803603602081101561016557600080fd5b81019060208101813564010000000081111561018057600080fd5b82018360208201111561019257600080fd5b803590602001918460018302840111640100000000831117156101b457600080fd5b509092509050610230565b6101c76102a3565b60408051918252519081900360200190f35b60006101e581836102b4565b92915050565b60006101e581836102c7565b600060405162461bcd60e51b8152600401808060200182810382526023815260200180610e986023913960400191505060405180910390fd5b6000808383602081101561024357600080fd5b5060405190356001600160a01b0316915060009082906102629061044b565b6001600160a01b03909116815260405190819003602001906000f08015801561028f573d6000803e3d6000fd5b50905061029b816102dc565b949350505050565b60006102af6000610361565b905090565b60006102c0838361036c565b9392505050565b60006102c0836001600160a01b0384166103d0565b6102e76000826103e8565b6103225760405162461bcd60e51b8152600401808060200182810382526024815260200180610e746024913960400191505060405180910390fd5b604080516001600160a01b038316815290517fee3a98e49d5a27452a99d57c90a7f73d4b2e44de88c6ded02e69c4ed964edd5a9181900360200190a150565b60006101e5826103fd565b815460009082106103ae5760405162461bcd60e51b8152600401808060200182810382526022815260200180610e526022913960400191505060405180910390fd5b8260000182815481106103bd57fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b60006102c0836001600160a01b038416610401565b5490565b600061040d83836103d0565b610443575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556101e5565b5060006101e5565b6109f9806104598339019056fe608060405234801561001057600080fd5b506040516109f93803806109f98339818101604052602081101561003357600080fd5b5051600061003f6100eb565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350916000805160206109d9833981519152908290a3506001600160a01b0381166100d2576040805162461bcd60e51b815260206004820152601a60248201527f506f7765725377697463683a20696e76616c6964206f776e6572000000000000604482015290519081900360640190fd5b6100e5816100ef60201b6106231760201c565b50610200565b3390565b6100f76100eb565b6001600160a01b03166101086101f1565b6001600160a01b031614610163576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166101a85760405162461bcd60e51b81526004018080602001828103825260268152602001806109b36026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216916000805160206109d983398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6107a48061020f6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c8063715018a611610081578063bf86d6901161005b578063bf86d69014610161578063efe6898214610169578063f2fde38b14610171576100c9565b8063715018a61461012d578063766f13bc146101355780638da5cb5b14610159576100c9565b8063438cae7e116100b2578063438cae7e146100e05780634e69d560146100fc578063664ab18e14610125576100c9565b806314fbf5cc146100ce5780633403c2fc146100d8575b600080fd5b6100d6610197565b005b6100d66102b2565b6100e86103e0565b604080519115158252519081900360200190f35b610104610403565b6040518082600281111561011457fe5b815260200191505060405180910390f35b6100e8610413565b6100d661041b565b61013d6104e6565b604080516001600160a01b039092168252519081900360200190f35b61013d6104f5565b6100e8610504565b6100d661050d565b6100d66004803603602081101561018757600080fd5b50356001600160a01b0316610623565b61019f610744565b6001600160a01b03166101b06104f5565b6001600160a01b03161461020b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60008054600160a01b900460ff16600281111561022457fe5b14610276576040805162461bcd60e51b815260206004820152601d60248201527f506f7765725377697463683a2063616e6e6f7420706f776572206f6666000000604482015290519081900360640190fd5b6000805460ff60a01b1916600160a01b1781556040517f3f10cc673bb08c6ec06120804bfd562bd9edeaeff24a1eb7da3db0147de8ea019190a1565b6102ba610744565b6001600160a01b03166102cb6104f5565b6001600160a01b031614610326576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6002600054600160a01b900460ff16600281111561034057fe5b1415610393576040805162461bcd60e51b815260206004820152601c60248201527f506f7765725377697463683a2063616e6e6f742073687574646f776e00000000604482015290519081900360640190fd5b6000805460ff60a01b1916740200000000000000000000000000000000000000001781556040517ff443ecad8d837e188abcabbbd02f1057b0d94896a09d5b97b2eb4bb445b94de89190a1565b600060015b600054600160a01b900460ff1660028111156103fd57fe5b14905090565b600054600160a01b900460ff1690565b6000806103e5565b610423610744565b6001600160a01b03166104346104f5565b6001600160a01b03161461048f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60006104f06104f5565b905090565b6000546001600160a01b031690565b600060026103e5565b610515610744565b6001600160a01b03166105266104f5565b6001600160a01b031614610581576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600054600160a01b900460ff16600281111561059b57fe5b146105ed576040805162461bcd60e51b815260206004820152601c60248201527f506f7765725377697463683a2063616e6e6f7420706f776572206f6e00000000604482015290519081900360640190fd5b6000805460ff60a01b191681556040517fd2ccdbf8763990e0fcff9e0d5c5867bcc73af876f85f1a8a65e868db95bf074c9190a1565b61062b610744565b6001600160a01b031661063c6104f5565b6001600160a01b031614610697576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166106dc5760405162461bcd60e51b81526004018080602001828103825260268152602001806107496026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220f2c3844630250c7ec38fd7b40e11812251ced700a78e86640c554198f06aef7064736f6c634300070600334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573738be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473496e7374616e636552656769737472793a20616c72656164792072656769737465726564506f776572537769746368466163746f72793a20756e757365642066756e6374696f6ea26469706673582212203137069c28dd5bf4640484ec4d438df497ec74fb54d1bf0f8ee2daaeaf86583e64736f6c63430007060033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.