Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 13130867 | 1197 days ago | IN | 0 ETH | 0.00217312 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Members
Compiler Version
v0.8.3+commit.8d00100c
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-08-29 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.3; // Part: MembersInterface interface MembersInterface { function setCustodian(address _custodian) external returns (bool); function addBroker(address broker) external returns (bool); function removeBroker(address broker) external returns (bool); function isCustodian(address addr) external view returns (bool); function isBroker(address addr) external view returns (bool); } // Part: OpenZeppelin/[email protected]/Context /* * @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 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) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // Part: OpenZeppelin/[email protected]/EnumerableSet /** * @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] = valueIndex; // Replace lastvalue's index to valueIndex // 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)); } } // Part: OpenZeppelin/[email protected]/Ownable /** * @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; } } // File: Members.sol contract Members is MembersInterface, Ownable { address public custodian; using EnumerableSet for EnumerableSet.AddressSet; EnumerableSet.AddressSet internal brokers; constructor(address _owner) public { require(_owner != address(0), "invalid _owner address"); transferOwnership(_owner); } event CustodianSet(address indexed custodian); function setCustodian(address _custodian) external override onlyOwner returns (bool) { require(_custodian != address(0), "invalid custodian address"); custodian = _custodian; emit CustodianSet(_custodian); return true; } event BrokerAdd(address indexed broker); function addBroker(address broker) external override onlyOwner returns (bool) { require(broker != address(0), "invalid broker address"); require(brokers.add(broker), "broker add failed"); emit BrokerAdd(broker); return true; } event BrokerRemove(address indexed broker); function removeBroker(address broker) external override onlyOwner returns (bool) { require(broker != address(0), "invalid broker address"); require(brokers.remove(broker), "broker remove failed"); emit BrokerRemove(broker); return true; } function isCustodian(address addr) external override view returns (bool) { return (addr == custodian); } function isBroker(address addr) external override view returns (bool) { return brokers.contains(addr); } function getBroker(uint index) external view returns (address) { return brokers.at(index); } function getBrokersCount() external view returns (uint) { return brokers.length(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"broker","type":"address"}],"name":"BrokerAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"broker","type":"address"}],"name":"BrokerRemove","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"custodian","type":"address"}],"name":"CustodianSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"broker","type":"address"}],"name":"addBroker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"custodian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getBroker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBrokersCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isBroker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isCustodian","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"broker","type":"address"}],"name":"removeBroker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_custodian","type":"address"}],"name":"setCustodian","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051610b7d380380610b7d83398101604081905261002f916101d0565b600080546001600160a01b03191633908117825560405190918291600080516020610b5d833981519152908290a3506001600160a01b0381166100b95760405162461bcd60e51b815260206004820152601660248201527f696e76616c6964205f6f776e657220616464726573730000000000000000000060448201526064015b60405180910390fd5b6100c2816100c8565b506101fe565b6000546001600160a01b031633146101225760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016100b0565b6001600160a01b0381166101875760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100b0565b600080546040516001600160a01b0380851693921691600080516020610b5d83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000602082840312156101e1578081fd5b81516001600160a01b03811681146101f7578182fd5b9392505050565b6109508061020d6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063416a5d8111610071578063416a5d8114610149578063715018a61461015f578063836cae65146101695780638da5cb5b1461017c578063d99d6f9a1461018d578063f2fde38b146101a0576100a9565b80630257f38d146100ae57806322b31d9f146100de57806335c80c8c14610101578063375b74c314610123578063403f373114610136575b600080fd5b6100c16100bc3660046108aa565b6101b3565b6040516001600160a01b0390911681526020015b60405180910390f35b6100f16100ec366004610883565b6101c6565b60405190151581526020016100d5565b6100f161010f366004610883565b6001546001600160a01b0390811691161490565b6001546100c1906001600160a01b031681565b6100f1610144366004610883565b6101d3565b6101516102ac565b6040519081526020016100d5565b6101676102bd565b005b6100f1610177366004610883565b610331565b6000546001600160a01b03166100c1565b6100f161019b366004610883565b610432565b6101676101ae366004610883565b610536565b60006101c0600283610620565b92915050565b60006101c0600283610633565b600080546001600160a01b031633146102075760405162461bcd60e51b81526004016101fe906108c2565b60405180910390fd5b6001600160a01b03821661025d5760405162461bcd60e51b815260206004820152601960248201527f696e76616c696420637573746f6469616e20616464726573730000000000000060448201526064016101fe565b600180546001600160a01b0319166001600160a01b0384169081179091556040517fb88c20a211c5d7677ba2a26c317d8ae6b25aa492016dc8ceca2469761d063d8090600090a2506001919050565b60006102b86002610655565b905090565b6000546001600160a01b031633146102e75760405162461bcd60e51b81526004016101fe906108c2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600080546001600160a01b0316331461035c5760405162461bcd60e51b81526004016101fe906108c2565b6001600160a01b0382166103ab5760405162461bcd60e51b8152602060048201526016602482015275696e76616c69642062726f6b6572206164647265737360501b60448201526064016101fe565b6103b660028361065f565b6103f65760405162461bcd60e51b8152602060048201526011602482015270189c9bdad95c881859190819985a5b1959607a1b60448201526064016101fe565b6040516001600160a01b038316907f596fedda579f1f112db492a84dd35c6770886843b38385b17af2e007af1e04fb90600090a2506001919050565b600080546001600160a01b0316331461045d5760405162461bcd60e51b81526004016101fe906108c2565b6001600160a01b0382166104ac5760405162461bcd60e51b8152602060048201526016602482015275696e76616c69642062726f6b6572206164647265737360501b60448201526064016101fe565b6104b7600283610674565b6104fa5760405162461bcd60e51b8152602060048201526014602482015273189c9bdad95c881c995b5bdd994819985a5b195960621b60448201526064016101fe565b6040516001600160a01b038316907f43c8cbfc72fcbcb9893729c9fc93a10e975730f59577494485111df43ff0f57490600090a2506001919050565b6000546001600160a01b031633146105605760405162461bcd60e51b81526004016101fe906108c2565b6001600160a01b0381166105c55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101fe565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600061062c8383610689565b9392505050565b6001600160a01b0381166000908152600183016020526040812054151561062c565b60006101c0825490565b600061062c836001600160a01b03841661071d565b600061062c836001600160a01b03841661076c565b815460009082106106e75760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604482015261647360f01b60648201526084016101fe565b82600001828154811061070a57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b6000818152600183016020526040812054610764575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556101c0565b5060006101c0565b600081815260018301602052604081205480156108795760006107906001836108f7565b85549091506000906107a4906001906108f7565b905060008660000182815481106107cb57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050808760000184815481106107fc57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101929092558281526001890190915260409020849055865487908061083d57634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506101c0565b60009150506101c0565b600060208284031215610894578081fd5b81356001600160a01b038116811461062c578182fd5b6000602082840312156108bb578081fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008282101561091557634e487b7160e01b81526011600452602481fd5b50039056fea2646970667358221220b00998544b3515759f42ef144fff3c5bb7c796f8a62cff956864b7fc8f85e4ce64736f6c634300080300338be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000000000000000000000a8a97abb6abad0c04321bf2afa1a2e2639b371e7
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063416a5d8111610071578063416a5d8114610149578063715018a61461015f578063836cae65146101695780638da5cb5b1461017c578063d99d6f9a1461018d578063f2fde38b146101a0576100a9565b80630257f38d146100ae57806322b31d9f146100de57806335c80c8c14610101578063375b74c314610123578063403f373114610136575b600080fd5b6100c16100bc3660046108aa565b6101b3565b6040516001600160a01b0390911681526020015b60405180910390f35b6100f16100ec366004610883565b6101c6565b60405190151581526020016100d5565b6100f161010f366004610883565b6001546001600160a01b0390811691161490565b6001546100c1906001600160a01b031681565b6100f1610144366004610883565b6101d3565b6101516102ac565b6040519081526020016100d5565b6101676102bd565b005b6100f1610177366004610883565b610331565b6000546001600160a01b03166100c1565b6100f161019b366004610883565b610432565b6101676101ae366004610883565b610536565b60006101c0600283610620565b92915050565b60006101c0600283610633565b600080546001600160a01b031633146102075760405162461bcd60e51b81526004016101fe906108c2565b60405180910390fd5b6001600160a01b03821661025d5760405162461bcd60e51b815260206004820152601960248201527f696e76616c696420637573746f6469616e20616464726573730000000000000060448201526064016101fe565b600180546001600160a01b0319166001600160a01b0384169081179091556040517fb88c20a211c5d7677ba2a26c317d8ae6b25aa492016dc8ceca2469761d063d8090600090a2506001919050565b60006102b86002610655565b905090565b6000546001600160a01b031633146102e75760405162461bcd60e51b81526004016101fe906108c2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600080546001600160a01b0316331461035c5760405162461bcd60e51b81526004016101fe906108c2565b6001600160a01b0382166103ab5760405162461bcd60e51b8152602060048201526016602482015275696e76616c69642062726f6b6572206164647265737360501b60448201526064016101fe565b6103b660028361065f565b6103f65760405162461bcd60e51b8152602060048201526011602482015270189c9bdad95c881859190819985a5b1959607a1b60448201526064016101fe565b6040516001600160a01b038316907f596fedda579f1f112db492a84dd35c6770886843b38385b17af2e007af1e04fb90600090a2506001919050565b600080546001600160a01b0316331461045d5760405162461bcd60e51b81526004016101fe906108c2565b6001600160a01b0382166104ac5760405162461bcd60e51b8152602060048201526016602482015275696e76616c69642062726f6b6572206164647265737360501b60448201526064016101fe565b6104b7600283610674565b6104fa5760405162461bcd60e51b8152602060048201526014602482015273189c9bdad95c881c995b5bdd994819985a5b195960621b60448201526064016101fe565b6040516001600160a01b038316907f43c8cbfc72fcbcb9893729c9fc93a10e975730f59577494485111df43ff0f57490600090a2506001919050565b6000546001600160a01b031633146105605760405162461bcd60e51b81526004016101fe906108c2565b6001600160a01b0381166105c55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101fe565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600061062c8383610689565b9392505050565b6001600160a01b0381166000908152600183016020526040812054151561062c565b60006101c0825490565b600061062c836001600160a01b03841661071d565b600061062c836001600160a01b03841661076c565b815460009082106106e75760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604482015261647360f01b60648201526084016101fe565b82600001828154811061070a57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b6000818152600183016020526040812054610764575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556101c0565b5060006101c0565b600081815260018301602052604081205480156108795760006107906001836108f7565b85549091506000906107a4906001906108f7565b905060008660000182815481106107cb57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050808760000184815481106107fc57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101929092558281526001890190915260409020849055865487908061083d57634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506101c0565b60009150506101c0565b600060208284031215610894578081fd5b81356001600160a01b038116811461062c578182fd5b6000602082840312156108bb578081fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008282101561091557634e487b7160e01b81526011600452602481fd5b50039056fea2646970667358221220b00998544b3515759f42ef144fff3c5bb7c796f8a62cff956864b7fc8f85e4ce64736f6c63430008030033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a8a97abb6abad0c04321bf2afa1a2e2639b371e7
-----Decoded View---------------
Arg [0] : _owner (address): 0xA8A97aBb6ABaD0c04321bF2afA1a2E2639b371e7
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a8a97abb6abad0c04321bf2afa1a2e2639b371e7
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.