Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
ReverseRecords
Compiler Version
v0.7.4+commit.3f05b770
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.7.4;pragma experimental ABIEncoderV2; import "./Namehash.sol"; import '@ensdomains/ens/contracts/ENS.sol'; import '@ensdomains/ens/contracts/ReverseRegistrar.sol'; import '@ensdomains/resolver/contracts/Resolver.sol'; contract ReverseRecords { ENS ens; ReverseRegistrar registrar; bytes32 private constant ADDR_REVERSE_NODE = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2; /** * The `constructor` takes ENS registry address */ constructor(ENS _ens) { ens = _ens; registrar = ReverseRegistrar(ens.owner(ADDR_REVERSE_NODE)); } /** * Read only function to return ens name only if both forward and reverse resolution are set * */ function getNames(address[] calldata addresses) external view returns (string[] memory r) { r = new string[](addresses.length); for(uint i = 0; i < addresses.length; i++) { bytes32 node = node(addresses[i]); address resolverAddress = ens.resolver(node); if(resolverAddress != address(0x0)){ Resolver resolver = Resolver(resolverAddress); string memory name = resolver.name(node); if(bytes(name).length == 0 ){ continue; } bytes32 namehash = Namehash.namehash(name); address forwardResolverAddress = ens.resolver(namehash); if(forwardResolverAddress != address(0x0)){ Resolver forwardResolver = Resolver(forwardResolverAddress); address forwardAddress = forwardResolver.addr(namehash); if(forwardAddress == addresses[i]){ r[i] = name; } } } } return r; } function node(address addr) private pure returns (bytes32) { return keccak256(abi.encodePacked(ADDR_REVERSE_NODE, sha3HexAddress(addr))); } function sha3HexAddress(address addr) private pure returns (bytes32 ret) { addr; ret; // Stop warning us about unused variables assembly { let lookup := 0x3031323334353637383961626364656600000000000000000000000000000000 for { let i := 40 } gt(i, 0) { } { i := sub(i, 1) mstore8(i, byte(and(addr, 0xf), lookup)) addr := div(addr, 0x10) i := sub(i, 1) mstore8(i, byte(and(addr, 0xf), lookup)) addr := div(addr, 0x10) } ret := keccak256(0, 40) } } }
pragma solidity ^0.7.0; library Strings { struct slice { uint _len; uint _ptr; } /* * @dev Returns a slice containing the entire string. * @param self The string to make a slice from. * @return A newly allocated slice containing the entire string. */ function toSlice(string memory self) internal pure returns (slice memory) { uint ptr; assembly { ptr := add(self, 0x20) } return slice(bytes(self).length, ptr); } /* * @dev Returns the keccak-256 hash of the slice. * @param self The slice to hash. * @return The hash of the slice. */ function keccak(slice memory self) internal pure returns (bytes32 ret) { assembly { ret := keccak256(mload(add(self, 32)), mload(self)) } } /* * @dev Returns true if the slice is empty (has a length of 0). * @param self The slice to operate on. * @return True if the slice is empty, False otherwise. */ function empty(slice memory self) internal pure returns (bool) { return self._len == 0; } // Returns the memory address of the first byte after the last occurrence of // `needle` in `self`, or the address of `self` if not found. function rfindPtr(uint selflen, uint selfptr, uint needlelen, uint needleptr) private pure returns (uint) { uint ptr; if (needlelen <= selflen) { if (needlelen <= 32) { bytes32 mask = bytes32(~(2 ** (8 * (32 - needlelen)) - 1)); bytes32 needledata; assembly { needledata := and(mload(needleptr), mask) } ptr = selfptr + selflen - needlelen; bytes32 ptrdata; assembly { ptrdata := and(mload(ptr), mask) } while (ptrdata != needledata) { if (ptr <= selfptr) return selfptr; ptr--; assembly { ptrdata := and(mload(ptr), mask) } } return ptr + needlelen; } else { // For long needles, use hashing bytes32 hash; assembly { hash := keccak256(needleptr, needlelen) } ptr = selfptr + (selflen - needlelen); while (ptr >= selfptr) { bytes32 testHash; assembly { testHash := keccak256(ptr, needlelen) } if (hash == testHash) return ptr + needlelen; ptr -= 1; } } } return selfptr; } /* * @dev Splits the slice, setting `self` to everything before the last * occurrence of `needle`, and `token` to everything after it. If * `needle` does not occur in `self`, `self` is set to the empty slice, * and `token` is set to the entirety of `self`. * @param self The slice to split. * @param needle The text to search for in `self`. * @param token An output parameter to which the first token is written. * @return `token`. */ function rsplit(slice memory self, slice memory needle, slice memory token) internal pure returns (slice memory) { uint ptr = rfindPtr(self._len, self._ptr, needle._len, needle._ptr); token._ptr = ptr; token._len = self._len - (ptr - self._ptr); if (ptr == self._ptr) { // Not found self._len = 0; } else { self._len -= token._len + needle._len; } return token; } } library Namehash { using Strings for *; function namehash(string memory name) pure internal returns(bytes32 hash) { hash = bytes32(0); Strings.slice memory nameslice = name.toSlice(); Strings.slice memory delim = ".".toSlice(); Strings.slice memory token; for(nameslice.rsplit(delim, token); !token.empty(); nameslice.rsplit(delim, token)) { hash = keccak256(abi.encodePacked(hash, token.keccak())); } return hash; } }
pragma solidity ^0.7.0; interface ENS { // 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); // Logged when an operator is added or removed. event ApprovalForAll(address indexed owner, address indexed operator, bool approved); function setRecord(bytes32 node, address owner, address resolver, uint64 ttl) external virtual; function setSubnodeRecord(bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl) external virtual; function setSubnodeOwner(bytes32 node, bytes32 label, address owner) external virtual returns(bytes32); function setResolver(bytes32 node, address resolver) external virtual; function setOwner(bytes32 node, address owner) external virtual; function setTTL(bytes32 node, uint64 ttl) external virtual; function setApprovalForAll(address operator, bool approved) external virtual; function owner(bytes32 node) external virtual view returns (address); function resolver(bytes32 node) external virtual view returns (address); function ttl(bytes32 node) external virtual view returns (uint64); function recordExists(bytes32 node) external virtual view returns (bool); function isApprovedForAll(address owner, address operator) external virtual view returns (bool); }
pragma solidity ^0.7.0; import "./ENS.sol"; abstract contract NameResolver { function setName(bytes32 node, string memory name) public virtual; } contract ReverseRegistrar { // namehash('addr.reverse') bytes32 public constant ADDR_REVERSE_NODE = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2; ENS public ens; NameResolver public defaultResolver; /** * @dev Constructor * @param ensAddr The address of the ENS registry. * @param resolverAddr The address of the default reverse resolver. */ constructor(ENS ensAddr, NameResolver resolverAddr) public { ens = ensAddr; defaultResolver = resolverAddr; // Assign ownership of the reverse record to our deployer ReverseRegistrar oldRegistrar = ReverseRegistrar(ens.owner(ADDR_REVERSE_NODE)); if (address(oldRegistrar) != address(0x0)) { oldRegistrar.claim(msg.sender); } } /** * @dev Transfers ownership of the reverse ENS record associated with the * calling account. * @param owner The address to set as the owner of the reverse record in ENS. * @return The ENS node hash of the reverse record. */ function claim(address owner) public returns (bytes32) { return claimWithResolver(owner, address(0x0)); } /** * @dev Transfers ownership of the reverse ENS record associated with the * calling account. * @param owner The address to set as the owner of the reverse record in ENS. * @param resolver The address of the resolver to set; 0 to leave unchanged. * @return The ENS node hash of the reverse record. */ function claimWithResolver(address owner, address resolver) public returns (bytes32) { bytes32 label = sha3HexAddress(msg.sender); bytes32 node = keccak256(abi.encodePacked(ADDR_REVERSE_NODE, label)); address currentOwner = ens.owner(node); // Update the resolver if required if (resolver != address(0x0) && resolver != ens.resolver(node)) { // Transfer the name to us first if it's not already if (currentOwner != address(this)) { ens.setSubnodeOwner(ADDR_REVERSE_NODE, label, address(this)); currentOwner = address(this); } ens.setResolver(node, resolver); } // Update the owner if required if (currentOwner != owner) { ens.setSubnodeOwner(ADDR_REVERSE_NODE, label, owner); } return node; } /** * @dev Sets the `name()` record for the reverse ENS record associated with * the calling account. First updates the resolver to the default reverse * resolver if necessary. * @param name The name to set for this address. * @return The ENS node hash of the reverse record. */ function setName(string memory name) public returns (bytes32) { bytes32 node = claimWithResolver(address(this), address(defaultResolver)); defaultResolver.setName(node, name); return node; } /** * @dev Returns the node hash for a given account's reverse records. * @param addr The address to hash * @return The ENS node hash. */ function node(address addr) public pure returns (bytes32) { return keccak256(abi.encodePacked(ADDR_REVERSE_NODE, sha3HexAddress(addr))); } /** * @dev An optimised function to compute the sha3 of the lower-case * hexadecimal representation of an Ethereum address. * @param addr The address to hash * @return ret The SHA3 hash of the lower-case hexadecimal encoding of the * input address. */ function sha3HexAddress(address addr) private pure returns (bytes32 ret) { addr; ret; // Stop warning us about unused variables assembly { let lookup := 0x3031323334353637383961626364656600000000000000000000000000000000 for { let i := 40 } gt(i, 0) { } { i := sub(i, 1) mstore8(i, byte(and(addr, 0xf), lookup)) addr := div(addr, 0x10) i := sub(i, 1) mstore8(i, byte(and(addr, 0xf), lookup)) addr := div(addr, 0x10) } ret := keccak256(0, 40) } } }
pragma solidity >=0.4.25; pragma experimental ABIEncoderV2; /** * A generic resolver interface which includes all the functions including the ones deprecated */ interface Resolver{ event AddrChanged(bytes32 indexed node, address a); event AddressChanged(bytes32 indexed node, uint coinType, bytes newAddress); event NameChanged(bytes32 indexed node, string name); event ABIChanged(bytes32 indexed node, uint256 indexed contentType); event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y); event TextChanged(bytes32 indexed node, string indexed indexedKey, string key); event ContenthashChanged(bytes32 indexed node, bytes hash); /* Deprecated events */ event ContentChanged(bytes32 indexed node, bytes32 hash); function ABI(bytes32 node, uint256 contentTypes) external view returns (uint256, bytes memory); function addr(bytes32 node) external view returns (address); function addr(bytes32 node, uint coinType) external view returns(bytes memory); function contenthash(bytes32 node) external view returns (bytes memory); function dnsrr(bytes32 node) external view returns (bytes memory); function name(bytes32 node) external view returns (string memory); function pubkey(bytes32 node) external view returns (bytes32 x, bytes32 y); function text(bytes32 node, string calldata key) external view returns (string memory); function interfaceImplementer(bytes32 node, bytes4 interfaceID) external view returns (address); function setABI(bytes32 node, uint256 contentType, bytes calldata data) external; function setAddr(bytes32 node, address addr) external; function setAddr(bytes32 node, uint coinType, bytes calldata a) external; function setContenthash(bytes32 node, bytes calldata hash) external; function setDnsrr(bytes32 node, bytes calldata data) external; function setName(bytes32 node, string calldata _name) external; function setPubkey(bytes32 node, bytes32 x, bytes32 y) external; function setText(bytes32 node, string calldata key, string calldata value) external; function setInterface(bytes32 node, bytes4 interfaceID, address implementer) external; function supportsInterface(bytes4 interfaceID) external pure returns (bool); function multicall(bytes[] calldata data) external returns(bytes[] memory results); /* Deprecated functions */ function content(bytes32 node) external view returns (bytes32); function multihash(bytes32 node) external view returns (bytes memory); function setContent(bytes32 node, bytes32 hash) external; function setMultihash(bytes32 node, bytes calldata hash) external; }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract ENS","name":"_ens","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"getNames","outputs":[{"internalType":"string[]","name":"r","type":"string[]"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162000f4e38038062000f4e8339818101604052810190620000379190620001ea565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be37f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b6040518263ffffffff1660e01b8152600401620000f5919062000227565b60206040518083038186803b1580156200010e57600080fd5b505afa15801562000123573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001499190620001be565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620002ca565b600081519050620001a18162000296565b92915050565b600081519050620001b881620002b0565b92915050565b600060208284031215620001d157600080fd5b6000620001e18482850162000190565b91505092915050565b600060208284031215620001fd57600080fd5b60006200020d84828501620001a7565b91505092915050565b620002218162000258565b82525050565b60006020820190506200023e600083018462000216565b92915050565b6000620002518262000276565b9050919050565b6000819050919050565b60006200026f8262000244565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620002a18162000244565b8114620002ad57600080fd5b50565b620002bb8162000262565b8114620002c757600080fd5b50565b610c7480620002da6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063cbf8b66c14610030575b600080fd5b61004a6004803603810190610045919061090e565b610060565b6040516100579190610aa8565b60405180910390f35b60608282905067ffffffffffffffff8111801561007c57600080fd5b506040519080825280602002602001820160405280156100b057816020015b606081526020019060019003908161009b5790505b50905060005b838390508110156104805760006100ec8585848181106100d257fe5b90506020020160208101906100e791906108bc565b610487565b905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630178b8bf836040518263ffffffff1660e01b815260040161014a9190610aca565b60206040518083038186803b15801561016257600080fd5b505afa158015610176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019a91906108e5565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461047057600081905060608173ffffffffffffffffffffffffffffffffffffffff1663691f3431856040518263ffffffff1660e01b81526004016102109190610aca565b60006040518083038186803b15801561022857600080fd5b505afa15801561023c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906102659190610953565b905060008151141561027a5750505050610473565b6000610285826104e4565b905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630178b8bf836040518263ffffffff1660e01b81526004016102e39190610aca565b60206040518083038186803b1580156102fb57600080fd5b505afa15801561030f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033391906108e5565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461046b57600081905060008173ffffffffffffffffffffffffffffffffffffffff16633b3b57de856040518263ffffffff1660e01b81526004016103a99190610aca565b60206040518083038186803b1580156103c157600080fd5b505afa1580156103d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f991906108e5565b90508b8b8a81811061040757fe5b905060200201602081019061041c91906108bc565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561046857848a8a8151811061045c57fe5b60200260200101819052505b50505b505050505b50505b80806001019150506100b6565b5092915050565b60007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b6104b6836105cf565b6040516020016104c7929190610a7c565b604051602081830303815290604052805190602001209050919050565b60008060001b90506104f46107da565b6104fd83610639565b90506105076107da565b6105456040518060400160405280600181526020017f2e00000000000000000000000000000000000000000000000000000000000000815250610639565b905061054f6107da565b6105648282856106679092919063ffffffff16565b505b61056f816106f1565b6105c7578361057d82610701565b60405160200180838152602001828152602001925050506040516020818303038152906040528051906020012093506105c18282856106679092919063ffffffff16565b50610566565b505050919050565b60007f303132333435363738396162636465660000000000000000000000000000000060285b600081111561062b5760018103905081600f85161a815360108404935060018103905081600f85161a81536010840493506105f5565b506028600020915050919050565b6106416107da565b600060208301905060405180604001604052808451815260200182815250915050919050565b61066f6107da565b600061068d8560000151866020015186600001518760200151610712565b9050808360200181815250508460200151810385600001510383600001818152505084602001518114156106cb5760008560000181815250506106e6565b83600001518360000151018560000181815103915081815250505b829150509392505050565b6000808260000151149050919050565b600081516020830151209050919050565b6000808584116107cd576020841161078d57600060018560200360080260020a031960001b905060008185511690508588880103925060008284511690505b81811461077f5787841161076b57879450505050506107d2565b838060019003945050828451169050610751565b8684019450505050506107d2565b60008484209050848703860191505b8582106107cb5760008583209050808214156107bf5785830193505050506107d2565b6001830392505061079c565b505b849150505b949350505050565b604051806040016040528060008152602001600081525090565b60008135905061080381610c27565b92915050565b60008151905061081881610c27565b92915050565b60008083601f84011261083057600080fd5b8235905067ffffffffffffffff81111561084957600080fd5b60208301915083602082028301111561086157600080fd5b9250929050565b600082601f83011261087957600080fd5b815161088c61088782610b16565b610ae5565b915080825260208301602083018583830111156108a857600080fd5b6108b3838284610bd7565b50505092915050565b6000602082840312156108ce57600080fd5b60006108dc848285016107f4565b91505092915050565b6000602082840312156108f757600080fd5b600061090584828501610809565b91505092915050565b6000806020838503121561092157600080fd5b600083013567ffffffffffffffff81111561093b57600080fd5b6109478582860161081e565b92509250509250929050565b60006020828403121561096557600080fd5b600082015167ffffffffffffffff81111561097f57600080fd5b61098b84828501610868565b91505092915050565b60006109a08383610a43565b905092915050565b60006109b382610b56565b6109bd8185610b79565b9350836020820285016109cf85610b46565b8060005b85811015610a0b57848403895281516109ec8582610994565b94506109f783610b6c565b925060208a019950506001810190506109d3565b50829750879550505050505092915050565b610a2681610bad565b82525050565b610a3d610a3882610bad565b610c0a565b82525050565b6000610a4e82610b61565b610a588185610b8a565b9350610a68818560208601610bd7565b610a7181610c16565b840191505092915050565b6000610a888285610a2c565b602082019150610a988284610a2c565b6020820191508190509392505050565b60006020820190508181036000830152610ac281846109a8565b905092915050565b6000602082019050610adf6000830184610a1d565b92915050565b6000604051905081810181811067ffffffffffffffff82111715610b0c57610b0b610c14565b5b8060405250919050565b600067ffffffffffffffff821115610b3157610b30610c14565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610ba682610bb7565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b83811015610bf5578082015181840152602081019050610bda565b83811115610c04576000848401525b50505050565b6000819050919050565bfe5b6000601f19601f8301169050919050565b610c3081610b9b565b8114610c3b57600080fd5b5056fea2646970667358221220ddd50dc3d4f372ab2392b85edf01f0241c9fadb6f7926a5890e40fd6b0ed1dcf64736f6c6343000704003300000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063cbf8b66c14610030575b600080fd5b61004a6004803603810190610045919061090e565b610060565b6040516100579190610aa8565b60405180910390f35b60608282905067ffffffffffffffff8111801561007c57600080fd5b506040519080825280602002602001820160405280156100b057816020015b606081526020019060019003908161009b5790505b50905060005b838390508110156104805760006100ec8585848181106100d257fe5b90506020020160208101906100e791906108bc565b610487565b905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630178b8bf836040518263ffffffff1660e01b815260040161014a9190610aca565b60206040518083038186803b15801561016257600080fd5b505afa158015610176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019a91906108e5565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461047057600081905060608173ffffffffffffffffffffffffffffffffffffffff1663691f3431856040518263ffffffff1660e01b81526004016102109190610aca565b60006040518083038186803b15801561022857600080fd5b505afa15801561023c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906102659190610953565b905060008151141561027a5750505050610473565b6000610285826104e4565b905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630178b8bf836040518263ffffffff1660e01b81526004016102e39190610aca565b60206040518083038186803b1580156102fb57600080fd5b505afa15801561030f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033391906108e5565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461046b57600081905060008173ffffffffffffffffffffffffffffffffffffffff16633b3b57de856040518263ffffffff1660e01b81526004016103a99190610aca565b60206040518083038186803b1580156103c157600080fd5b505afa1580156103d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f991906108e5565b90508b8b8a81811061040757fe5b905060200201602081019061041c91906108bc565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561046857848a8a8151811061045c57fe5b60200260200101819052505b50505b505050505b50505b80806001019150506100b6565b5092915050565b60007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b6104b6836105cf565b6040516020016104c7929190610a7c565b604051602081830303815290604052805190602001209050919050565b60008060001b90506104f46107da565b6104fd83610639565b90506105076107da565b6105456040518060400160405280600181526020017f2e00000000000000000000000000000000000000000000000000000000000000815250610639565b905061054f6107da565b6105648282856106679092919063ffffffff16565b505b61056f816106f1565b6105c7578361057d82610701565b60405160200180838152602001828152602001925050506040516020818303038152906040528051906020012093506105c18282856106679092919063ffffffff16565b50610566565b505050919050565b60007f303132333435363738396162636465660000000000000000000000000000000060285b600081111561062b5760018103905081600f85161a815360108404935060018103905081600f85161a81536010840493506105f5565b506028600020915050919050565b6106416107da565b600060208301905060405180604001604052808451815260200182815250915050919050565b61066f6107da565b600061068d8560000151866020015186600001518760200151610712565b9050808360200181815250508460200151810385600001510383600001818152505084602001518114156106cb5760008560000181815250506106e6565b83600001518360000151018560000181815103915081815250505b829150509392505050565b6000808260000151149050919050565b600081516020830151209050919050565b6000808584116107cd576020841161078d57600060018560200360080260020a031960001b905060008185511690508588880103925060008284511690505b81811461077f5787841161076b57879450505050506107d2565b838060019003945050828451169050610751565b8684019450505050506107d2565b60008484209050848703860191505b8582106107cb5760008583209050808214156107bf5785830193505050506107d2565b6001830392505061079c565b505b849150505b949350505050565b604051806040016040528060008152602001600081525090565b60008135905061080381610c27565b92915050565b60008151905061081881610c27565b92915050565b60008083601f84011261083057600080fd5b8235905067ffffffffffffffff81111561084957600080fd5b60208301915083602082028301111561086157600080fd5b9250929050565b600082601f83011261087957600080fd5b815161088c61088782610b16565b610ae5565b915080825260208301602083018583830111156108a857600080fd5b6108b3838284610bd7565b50505092915050565b6000602082840312156108ce57600080fd5b60006108dc848285016107f4565b91505092915050565b6000602082840312156108f757600080fd5b600061090584828501610809565b91505092915050565b6000806020838503121561092157600080fd5b600083013567ffffffffffffffff81111561093b57600080fd5b6109478582860161081e565b92509250509250929050565b60006020828403121561096557600080fd5b600082015167ffffffffffffffff81111561097f57600080fd5b61098b84828501610868565b91505092915050565b60006109a08383610a43565b905092915050565b60006109b382610b56565b6109bd8185610b79565b9350836020820285016109cf85610b46565b8060005b85811015610a0b57848403895281516109ec8582610994565b94506109f783610b6c565b925060208a019950506001810190506109d3565b50829750879550505050505092915050565b610a2681610bad565b82525050565b610a3d610a3882610bad565b610c0a565b82525050565b6000610a4e82610b61565b610a588185610b8a565b9350610a68818560208601610bd7565b610a7181610c16565b840191505092915050565b6000610a888285610a2c565b602082019150610a988284610a2c565b6020820191508190509392505050565b60006020820190508181036000830152610ac281846109a8565b905092915050565b6000602082019050610adf6000830184610a1d565b92915050565b6000604051905081810181811067ffffffffffffffff82111715610b0c57610b0b610c14565b5b8060405250919050565b600067ffffffffffffffff821115610b3157610b30610c14565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610ba682610bb7565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b83811015610bf5578082015181840152602081019050610bda565b83811115610c04576000848401525b50505050565b6000819050919050565bfe5b6000601f19601f8301169050919050565b610c3081610b9b565b8114610c3b57600080fd5b5056fea2646970667358221220ddd50dc3d4f372ab2392b85edf01f0241c9fadb6f7926a5890e40fd6b0ed1dcf64736f6c63430007040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e
-----Decoded View---------------
Arg [0] : _ens (address): 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.