Overview
ETH Balance
0 ETH
Eth Value
$0.00| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
Latest 20 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| 0x60806040 | 15213830 | 1307 days ago | Contract Creation | 0 ETH | |||
| 0x60806040 | 15186794 | 1311 days ago | Contract Creation | 0 ETH | |||
| 0x60806040 | 15135691 | 1319 days ago | Contract Creation | 0 ETH | |||
| - | 14024479 | 1496 days ago | Contract Creation | 0 ETH | |||
| - | 14003084 | 1499 days ago | Contract Creation | 0 ETH | |||
| - | 13997173 | 1500 days ago | Contract Creation | 0 ETH | |||
| - | 13993486 | 1501 days ago | Contract Creation | 0 ETH | |||
| - | 13893194 | 1516 days ago | Contract Creation | 0 ETH | |||
| - | 13893156 | 1516 days ago | Contract Creation | 0 ETH | |||
| - | 13816000 | 1528 days ago | Contract Creation | 0 ETH | |||
| - | 13802938 | 1530 days ago | Contract Creation | 0 ETH | |||
| - | 13761914 | 1537 days ago | Contract Creation | 0 ETH | |||
| - | 13467637 | 1583 days ago | Contract Creation | 0 ETH | |||
| - | 13346999 | 1602 days ago | Contract Creation | 0 ETH | |||
| - | 13245733 | 1618 days ago | Contract Creation | 0 ETH | |||
| - | 13185314 | 1627 days ago | Contract Creation | 0 ETH | |||
| - | 12991613 | 1657 days ago | Contract Creation | 0 ETH | |||
| - | 12991336 | 1657 days ago | Contract Creation | 0 ETH | |||
| - | 12692799 | 1704 days ago | Contract Creation | 0 ETH | |||
| - | 11881242 | 1829 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
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
Contract ABI
API[{"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
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.