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 4 from a total of 4 transactions
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
BaseENSResolver
Compiler Version
v0.6.6+commit.6c089d02
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-06-01 */ /** Author: Loopring Foundation (Loopring Project Ltd) */ pragma solidity ^0.6.6; /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /// @title Ownable /// @author Brecht Devos - <[email protected]> /// @dev The Ownable contract has an owner address, and provides basic /// authorization control functions, this simplifies the implementation of /// "user permissions". contract Ownable { address public owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /// @dev The Ownable constructor sets the original `owner` of the contract /// to the sender. constructor() public { owner = msg.sender; } /// @dev Throws if called by any account other than the owner. modifier onlyOwner() { require(msg.sender == owner, "UNAUTHORIZED"); _; } /// @dev Allows the current owner to transfer control of the contract to a /// new owner. /// @param newOwner The address to transfer ownership to. function transferOwnership( address newOwner ) public virtual onlyOwner { require(newOwner != address(0), "ZERO_ADDRESS"); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(owner, address(0)); owner = address(0); } } /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /// @title Claimable /// @author Brecht Devos - <[email protected]> /// @dev Extension for the Ownable contract, where the ownership needs /// to be claimed. This allows the new owner to accept the transfer. contract Claimable is Ownable { address public pendingOwner; /// @dev Modifier throws if called by any account other than the pendingOwner. modifier onlyPendingOwner() { require(msg.sender == pendingOwner, "UNAUTHORIZED"); _; } /// @dev Allows the current owner to set the pendingOwner address. /// @param newOwner The address to transfer ownership to. function transferOwnership( address newOwner ) public override onlyOwner { require(newOwner != address(0) && newOwner != owner, "INVALID_ADDRESS"); pendingOwner = newOwner; } /// @dev Allows the pendingOwner address to finalize the transfer. function claimOwnership() public onlyPendingOwner { emit OwnershipTransferred(owner, pendingOwner); owner = pendingOwner; pendingOwner = address(0); } } /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /// @title AddressSet /// @author Daniel Wang - <[email protected]> contract AddressSet { struct Set { address[] addresses; mapping (address => uint) positions; uint count; } mapping (bytes32 => Set) private sets; function addAddressToSet( bytes32 key, address addr, bool maintainList ) internal { Set storage set = sets[key]; require(set.positions[addr] == 0, "ALREADY_IN_SET"); if (maintainList) { require(set.addresses.length == set.count, "PREVIOUSLY_NOT_MAINTAILED"); set.addresses.push(addr); } else { require(set.addresses.length == 0, "MUST_MAINTAIN"); } set.count += 1; set.positions[addr] = set.count; } function removeAddressFromSet( bytes32 key, address addr ) internal { Set storage set = sets[key]; uint pos = set.positions[addr]; require(pos != 0, "NOT_IN_SET"); delete set.positions[addr]; set.count -= 1; if (set.addresses.length > 0) { address lastAddr = set.addresses[set.count]; if (lastAddr != addr) { set.addresses[pos - 1] = lastAddr; set.positions[lastAddr] = pos; } set.addresses.pop(); } } function removeSet(bytes32 key) internal { delete sets[key]; } function isAddressInSet( bytes32 key, address addr ) internal view returns (bool) { return sets[key].positions[addr] != 0; } function numAddressesInSet(bytes32 key) internal view returns (uint) { Set storage set = sets[key]; return set.count; } function addressesInSet(bytes32 key) internal view returns (address[] memory) { Set storage set = sets[key]; require(set.count == set.addresses.length, "NOT_MAINTAINED"); return sets[key].addresses; } } /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ contract OwnerManagable is Claimable, AddressSet { bytes32 internal constant MANAGER = keccak256("__MANAGED__"); event ManagerAdded (address indexed manager); event ManagerRemoved(address indexed manager); modifier onlyManager { require(isManager(msg.sender), "NOT_MANAGER"); _; } modifier onlyOwnerOrManager { require(msg.sender == owner || isManager(msg.sender), "NOT_OWNER_OR_MANAGER"); _; } constructor() public Claimable() {} /// @dev Gets the managers. /// @return The list of managers. function managers() public view returns (address[] memory) { return addressesInSet(MANAGER); } /// @dev Gets the number of managers. /// @return The numer of managers. function numManagers() public view returns (uint) { return numAddressesInSet(MANAGER); } /// @dev Checks if an address is a manger. /// @param addr The address to check. /// @return True if the address is a manager, False otherwise. function isManager(address addr) public view returns (bool) { return isAddressInSet(MANAGER, addr); } /// @dev Adds a new manager. /// @param manager The new address to add. function addManager(address manager) public onlyOwner { addManagerInternal(manager); } /// @dev Removes a manager. /// @param manager The manager to remove. function removeManager(address manager) public onlyOwner { removeAddressFromSet(MANAGER, manager); emit ManagerRemoved(manager); } function addManagerInternal(address manager) internal { addAddressToSet(MANAGER, manager, true); emit ManagerAdded(manager); } } // Taken from Argent's code base - https://github.com/argentlabs/argent-contracts/blob/develop/contracts/ens/ENS.sol // with few modifications. /** * ENS Registry interface. */ interface ENSRegistry { // Logged when the owner of a node assigns a new owner to a subnode. event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner); // Logged when the owner of a node transfers ownership to a new account. event Transfer(bytes32 indexed node, address owner); // Logged when the resolver for a node changes. event NewResolver(bytes32 indexed node, address resolver); // Logged when the TTL of a node changes event NewTTL(bytes32 indexed node, uint64 ttl); function setSubnodeOwner(bytes32 node, bytes32 label, address owner) external; function setResolver(bytes32 node, address resolver) external; function setOwner(bytes32 node, address owner) external; function setTTL(bytes32 node, uint64 ttl) external; function owner(bytes32 node) external view returns (address); function resolver(bytes32 node) external view returns (address); function ttl(bytes32 node) external view returns (uint64); } /** * ENS Resolver interface. */ abstract contract ENSResolver { function addr(bytes32 _node) public view virtual returns (address); function setAddr(bytes32 _node, address _addr) public virtual; function name(bytes32 _node) public view virtual returns (string memory); function setName(bytes32 _node, string memory _name) public virtual; } /** * ENS Reverse Registrar interface. */ abstract contract ENSReverseRegistrar { function claim(address _owner) public virtual returns (bytes32 _node); function claimWithResolver(address _owner, address _resolver) public virtual returns (bytes32); function setName(string memory _name) public virtual returns (bytes32); function node(address _addr) public view virtual returns (bytes32); } // Taken from Argent's code base - https://github.com/argentlabs/argent-contracts/blob/develop/contracts/ens/ArgentENSResolver.sol // with few modifications. /** * @title BaseENSResolver * @dev Basic implementation of a Resolver. * The contract defines a manager role who is the only role that can add a new name * to the list of resolved names. * @author Julien Niset - <[email protected]> */ //contract BaseENSResolver is Owned, Managed, ENSResolver { contract BaseENSResolver is OwnerManagable, ENSResolver { bytes4 constant SUPPORT_INTERFACE_ID = 0x01ffc9a7; bytes4 constant ADDR_INTERFACE_ID = 0x3b3b57de; bytes4 constant NAME_INTERFACE_ID = 0x691f3431; // mapping between namehash and resolved records mapping (bytes32 => Record) records; struct Record { address addr; string name; } // *************** Events *************************** // event AddrChanged(bytes32 indexed _node, address _addr); event NameChanged(bytes32 indexed _node, string _name); // *************** Public Functions ********************* // /** * @dev Lets the manager set the address associated with an ENS node. * @param _node The node to update. * @param _addr The address to set. */ function setAddr(bytes32 _node, address _addr) public override onlyManager { records[_node].addr = _addr; emit AddrChanged(_node, _addr); } /** * @dev Lets the manager set the name associated with an ENS node. * @param _node The node to update. * @param _name The name to set. */ function setName(bytes32 _node, string memory _name) public override onlyManager { records[_node].name = _name; emit NameChanged(_node, _name); } /** * @dev Gets the address associated to an ENS node. * @param _node The target node. * @return the address of the target node. */ function addr(bytes32 _node) public view override returns (address) { return records[_node].addr; } /** * @dev Gets the name associated to an ENS node. * @param _node The target ENS node. * @return the name of the target ENS node. */ function name(bytes32 _node) public view override returns (string memory) { return records[_node].name; } /** * @dev Returns true if the resolver implements the interface specified by the provided hash. * @param _interfaceID The ID of the interface to check for. * @return True if the contract implements the requested interface. */ function supportsInterface(bytes4 _interfaceID) public pure returns (bool) { return _interfaceID == SUPPORT_INTERFACE_ID || _interfaceID == ADDR_INTERFACE_ID || _interfaceID == NAME_INTERFACE_ID; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_node","type":"bytes32"},{"indexed":false,"internalType":"address","name":"_addr","type":"address"}],"name":"AddrChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"manager","type":"address"}],"name":"ManagerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"manager","type":"address"}],"name":"ManagerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_node","type":"bytes32"},{"indexed":false,"internalType":"string","name":"_name","type":"string"}],"name":"NameChanged","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":"manager","type":"address"}],"name":"addManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_node","type":"bytes32"}],"name":"addr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"managers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_node","type":"bytes32"}],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numManagers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"name":"removeManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_node","type":"bytes32"},{"internalType":"address","name":"_addr","type":"address"}],"name":"setAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_node","type":"bytes32"},{"internalType":"string","name":"_name","type":"string"}],"name":"setName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600080546001600160a01b03191633179055610fb3806100256000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80637737221311610097578063e30c397811610066578063e30c397814610397578063e68777d71461039f578063f2fde38b146103b9578063f3ae2415146103df576100f5565b806377372213146102905780638da5cb5b1461033d578063ac18de4314610345578063d5fa2b001461036b576100f5565b80634e71e0c8116100d35780634e71e0c814610196578063691f34311461019e578063715018a6146102305780637231170514610238576100f5565b806301ffc9a7146100fa5780632d06177a146101355780633b3b57de1461015d575b600080fd5b6101216004803603602081101561011057600080fd5b50356001600160e01b031916610405565b604080519115158252519081900360200190f35b61015b6004803603602081101561014b57600080fd5b50356001600160a01b0316610457565b005b61017a6004803603602081101561017357600080fd5b50356104b1565b604080516001600160a01b039092168252519081900360200190f35b61015b6104cc565b6101bb600480360360208110156101b457600080fd5b503561057e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f55781810151838201526020016101dd565b50505050905090810190601f1680156102225780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61015b610636565b6102406106ce565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561027c578181015183820152602001610264565b505050509050019250505060405180910390f35b61015b600480360360408110156102a657600080fd5b813591908101906040810160208201356401000000008111156102c857600080fd5b8201836020820111156102da57600080fd5b803590602001918460018302840111640100000000831117156102fc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610700945050505050565b61017a61080c565b61015b6004803603602081101561035b57600080fd5b50356001600160a01b031661081b565b61015b6004803603604081101561038157600080fd5b50803590602001356001600160a01b03166108ca565b61017a610976565b6103a7610985565b60408051918252519081900360200190f35b61015b600480360360208110156103cf57600080fd5b50356001600160a01b03166109b1565b610121600480360360208110156103f557600080fd5b50356001600160a01b0316610a8a565b60006001600160e01b031982166301ffc9a760e01b148061043657506001600160e01b03198216631d9dabef60e11b145b8061045157506001600160e01b0319821663691f343160e01b145b92915050565b6000546001600160a01b031633146104a5576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b6104ae81610ab7565b50565b6000908152600360205260409020546001600160a01b031690565b6001546001600160a01b0316331461051a576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6060600360008381526020019081526020016000206001018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561062a5780601f106105ff5761010080835404028352916020019161062a565b820191906000526020600020905b81548152906001019060200180831161060d57829003601f168201915b50505050509050919050565b6000546001600160a01b03163314610684576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b604080516a5f5f4d414e414745445f5f60a81b8152905190819003600b0190206060906106fa90610b1a565b90505b90565b61070933610a8a565b610748576040805162461bcd60e51b815260206004820152600b60248201526a2727aa2fa6a0a720a3a2a960a91b604482015290519081900360640190fd5b6000828152600360209081526040909120825161076d92600190920191840190610ee5565b50817fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7826040518080602001828103825283818151815260200191508051906020019080838360005b838110156107ce5781810151838201526020016107b6565b50505050905090810190601f1680156107fb5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b6000546001600160a01b031681565b6000546001600160a01b03163314610869576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b604080516a5f5f4d414e414745445f5f60a81b8152905190819003600b0190206108939082610be2565b6040516001600160a01b038216907fef69f7d97228658c92417be1b16b19058315de71fecb435d07b7d23728b6bd3190600090a250565b6108d333610a8a565b610912576040805162461bcd60e51b815260206004820152600b60248201526a2727aa2fa6a0a720a3a2a960a91b604482015290519081900360640190fd5b60008281526003602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251908152915184927f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd292908290030190a25050565b6001546001600160a01b031681565b604080516a5f5f4d414e414745445f5f60a81b8152905190819003600b0190206000906106fa90610d31565b6000546001600160a01b031633146109ff576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b6001600160a01b03811615801590610a2557506000546001600160a01b03828116911614155b610a68576040805162461bcd60e51b815260206004820152600f60248201526e494e56414c49445f4144445245535360881b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b604080516a5f5f4d414e414745445f5f60a81b8152905190819003600b0190206000906104519083610d47565b604080516a5f5f4d414e414745445f5f60a81b8152905190819003600b019020610ae390826001610d75565b6040516001600160a01b038216907f3b4a40cccf2058c593542587329dd385be4f0b588db5471fbd9598e56dd7093a90600090a250565b600081815260026020819052604090912080549181015460609214610b77576040805162461bcd60e51b815260206004820152600e60248201526d1393d517d350525395105253915160921b604482015290519081900360640190fd5b60008381526002602090815260409182902080548351818402810184019094528084529091830182828015610bd557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bb7575b5050505050915050919050565b60008281526002602090815260408083206001600160a01b0385168452600181019092529091205480610c49576040805162461bcd60e51b815260206004820152600a6024820152691393d517d25397d4d15560b21b604482015290519081900360640190fd5b6001600160a01b0383166000908152600183016020526040812055600282018054600019019055815415610d2b57600082600001836002015481548110610c8c57fe5b6000918252602090912001546001600160a01b03908116915084168114610cfc5780836000016001840381548110610cc057fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260018501909152604090208290555b8254839080610d0757fe5b600082815260209020810160001990810180546001600160a01b0319169055019055505b50505050565b6000908152600260208190526040909120015490565b60008281526002602090815260408083206001600160a01b0385168452600101909152902054151592915050565b60008381526002602090815260408083206001600160a01b0386168452600181019092529091205415610de0576040805162461bcd60e51b815260206004820152600e60248201526d1053149150511657d25397d4d15560921b604482015290519081900360640190fd5b8115610e6f576002810154815414610e3f576040805162461bcd60e51b815260206004820152601960248201527f50524556494f55534c595f4e4f545f4d41494e5441494c454400000000000000604482015290519081900360640190fd5b80546001810182556000828152602090200180546001600160a01b0319166001600160a01b038516179055610eb3565b805415610eb3576040805162461bcd60e51b815260206004820152600d60248201526c26aaa9aa2fa6a0a4a72a20a4a760991b604482015290519081900360640190fd5b6002810180546001908101918290556001600160a01b0390941660009081529190930160205260409020919091555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610f2657805160ff1916838001178555610f53565b82800160010185558215610f53579182015b82811115610f53578251825591602001919060010190610f38565b50610f5f929150610f63565b5090565b6106fd91905b80821115610f5f5760008155600101610f6956fea264697066735822122042db698049d68baee759eb9945ff2d8f6ee67deed4ee554211e22b338f58a79564736f6c63430006060033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80637737221311610097578063e30c397811610066578063e30c397814610397578063e68777d71461039f578063f2fde38b146103b9578063f3ae2415146103df576100f5565b806377372213146102905780638da5cb5b1461033d578063ac18de4314610345578063d5fa2b001461036b576100f5565b80634e71e0c8116100d35780634e71e0c814610196578063691f34311461019e578063715018a6146102305780637231170514610238576100f5565b806301ffc9a7146100fa5780632d06177a146101355780633b3b57de1461015d575b600080fd5b6101216004803603602081101561011057600080fd5b50356001600160e01b031916610405565b604080519115158252519081900360200190f35b61015b6004803603602081101561014b57600080fd5b50356001600160a01b0316610457565b005b61017a6004803603602081101561017357600080fd5b50356104b1565b604080516001600160a01b039092168252519081900360200190f35b61015b6104cc565b6101bb600480360360208110156101b457600080fd5b503561057e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f55781810151838201526020016101dd565b50505050905090810190601f1680156102225780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61015b610636565b6102406106ce565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561027c578181015183820152602001610264565b505050509050019250505060405180910390f35b61015b600480360360408110156102a657600080fd5b813591908101906040810160208201356401000000008111156102c857600080fd5b8201836020820111156102da57600080fd5b803590602001918460018302840111640100000000831117156102fc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610700945050505050565b61017a61080c565b61015b6004803603602081101561035b57600080fd5b50356001600160a01b031661081b565b61015b6004803603604081101561038157600080fd5b50803590602001356001600160a01b03166108ca565b61017a610976565b6103a7610985565b60408051918252519081900360200190f35b61015b600480360360208110156103cf57600080fd5b50356001600160a01b03166109b1565b610121600480360360208110156103f557600080fd5b50356001600160a01b0316610a8a565b60006001600160e01b031982166301ffc9a760e01b148061043657506001600160e01b03198216631d9dabef60e11b145b8061045157506001600160e01b0319821663691f343160e01b145b92915050565b6000546001600160a01b031633146104a5576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b6104ae81610ab7565b50565b6000908152600360205260409020546001600160a01b031690565b6001546001600160a01b0316331461051a576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6060600360008381526020019081526020016000206001018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561062a5780601f106105ff5761010080835404028352916020019161062a565b820191906000526020600020905b81548152906001019060200180831161060d57829003601f168201915b50505050509050919050565b6000546001600160a01b03163314610684576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b604080516a5f5f4d414e414745445f5f60a81b8152905190819003600b0190206060906106fa90610b1a565b90505b90565b61070933610a8a565b610748576040805162461bcd60e51b815260206004820152600b60248201526a2727aa2fa6a0a720a3a2a960a91b604482015290519081900360640190fd5b6000828152600360209081526040909120825161076d92600190920191840190610ee5565b50817fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7826040518080602001828103825283818151815260200191508051906020019080838360005b838110156107ce5781810151838201526020016107b6565b50505050905090810190601f1680156107fb5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b6000546001600160a01b031681565b6000546001600160a01b03163314610869576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b604080516a5f5f4d414e414745445f5f60a81b8152905190819003600b0190206108939082610be2565b6040516001600160a01b038216907fef69f7d97228658c92417be1b16b19058315de71fecb435d07b7d23728b6bd3190600090a250565b6108d333610a8a565b610912576040805162461bcd60e51b815260206004820152600b60248201526a2727aa2fa6a0a720a3a2a960a91b604482015290519081900360640190fd5b60008281526003602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251908152915184927f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd292908290030190a25050565b6001546001600160a01b031681565b604080516a5f5f4d414e414745445f5f60a81b8152905190819003600b0190206000906106fa90610d31565b6000546001600160a01b031633146109ff576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b6001600160a01b03811615801590610a2557506000546001600160a01b03828116911614155b610a68576040805162461bcd60e51b815260206004820152600f60248201526e494e56414c49445f4144445245535360881b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b604080516a5f5f4d414e414745445f5f60a81b8152905190819003600b0190206000906104519083610d47565b604080516a5f5f4d414e414745445f5f60a81b8152905190819003600b019020610ae390826001610d75565b6040516001600160a01b038216907f3b4a40cccf2058c593542587329dd385be4f0b588db5471fbd9598e56dd7093a90600090a250565b600081815260026020819052604090912080549181015460609214610b77576040805162461bcd60e51b815260206004820152600e60248201526d1393d517d350525395105253915160921b604482015290519081900360640190fd5b60008381526002602090815260409182902080548351818402810184019094528084529091830182828015610bd557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bb7575b5050505050915050919050565b60008281526002602090815260408083206001600160a01b0385168452600181019092529091205480610c49576040805162461bcd60e51b815260206004820152600a6024820152691393d517d25397d4d15560b21b604482015290519081900360640190fd5b6001600160a01b0383166000908152600183016020526040812055600282018054600019019055815415610d2b57600082600001836002015481548110610c8c57fe5b6000918252602090912001546001600160a01b03908116915084168114610cfc5780836000016001840381548110610cc057fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260018501909152604090208290555b8254839080610d0757fe5b600082815260209020810160001990810180546001600160a01b0319169055019055505b50505050565b6000908152600260208190526040909120015490565b60008281526002602090815260408083206001600160a01b0385168452600101909152902054151592915050565b60008381526002602090815260408083206001600160a01b0386168452600181019092529091205415610de0576040805162461bcd60e51b815260206004820152600e60248201526d1053149150511657d25397d4d15560921b604482015290519081900360640190fd5b8115610e6f576002810154815414610e3f576040805162461bcd60e51b815260206004820152601960248201527f50524556494f55534c595f4e4f545f4d41494e5441494c454400000000000000604482015290519081900360640190fd5b80546001810182556000828152602090200180546001600160a01b0319166001600160a01b038516179055610eb3565b805415610eb3576040805162461bcd60e51b815260206004820152600d60248201526c26aaa9aa2fa6a0a4a72a20a4a760991b604482015290519081900360640190fd5b6002810180546001908101918290556001600160a01b0390941660009081529190930160205260409020919091555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610f2657805160ff1916838001178555610f53565b82800160010185558215610f53579182015b82811115610f53578251825591602001919060010190610f38565b50610f5f929150610f63565b5090565b6106fd91905b80821115610f5f5760008155600101610f6956fea264697066735822122042db698049d68baee759eb9945ff2d8f6ee67deed4ee554211e22b338f58a79564736f6c63430006060033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 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.