Overview
BERA Balance
BERA Value
$0.00More Info
Private Name Tags
ContractCreator
Multichain Info
No addresses found
Latest 25 from a total of 235 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Name | 2595096 | 4 hrs ago | IN | 0 BERA | 0 | ||||
Set Name | 2572124 | 17 hrs ago | IN | 0 BERA | 0 | ||||
Set Name | 2472493 | 2 days ago | IN | 0 BERA | 0 | ||||
Set Name | 2465255 | 3 days ago | IN | 0 BERA | 0 | ||||
Set Name | 2419275 | 4 days ago | IN | 0 BERA | 0 | ||||
Set Name For Add... | 2333359 | 6 days ago | IN | 0 BERA | 0 | ||||
Set Name | 2318350 | 6 days ago | IN | 0 BERA | 0 | ||||
Set Name | 2286454 | 7 days ago | IN | 0 BERA | 0.00000157 | ||||
Set Name | 2193434 | 9 days ago | IN | 0 BERA | 0 | ||||
Set Name | 2151507 | 10 days ago | IN | 0 BERA | 0 | ||||
Set Name | 2106162 | 11 days ago | IN | 0 BERA | 0 | ||||
Set Name | 2065159 | 12 days ago | IN | 0 BERA | 0 | ||||
Set Name | 1930180 | 15 days ago | IN | 0 BERA | 0 | ||||
Set Name | 1926561 | 15 days ago | IN | 0 BERA | 0 | ||||
Claim | 1923515 | 15 days ago | IN | 0 BERA | 0.00000503 | ||||
Claim With Resol... | 1923139 | 15 days ago | IN | 0 BERA | 0.00000484 | ||||
Set Name | 1923120 | 15 days ago | IN | 0 BERA | 0 | ||||
Claim | 1923066 | 15 days ago | IN | 0 BERA | 0.0000091 | ||||
Set Name | 1912540 | 15 days ago | IN | 0 BERA | 0 | ||||
Set Name | 1911815 | 15 days ago | IN | 0 BERA | 0 | ||||
Set Name | 1871968 | 16 days ago | IN | 0 BERA | 0.00000008 | ||||
Set Name | 1871049 | 16 days ago | IN | 0 BERA | 0.0002976 | ||||
Set Name | 1843676 | 17 days ago | IN | 0 BERA | 0 | ||||
Set Name | 1808177 | 18 days ago | IN | 0 BERA | 0 | ||||
Set Name | 1797491 | 18 days ago | IN | 0 BERA | 0 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ReverseRegistrar
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity >=0.8.4; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import {BNS} from "src/registry/interfaces/BNS.sol"; import {IReverseRegistrar} from "src/registrar/interfaces/IReverseRegistrar.sol"; import {Controllable} from "src/registrar/types/Controllable.sol"; import {AbstractNameResolver} from "src/resolver/interfaces/INameResolver.sol"; import {ADDR_REVERSE_NODE} from "src/utils/Constants.sol"; contract ReverseRegistrar is Controllable, IReverseRegistrar { BNS public immutable registry; AbstractNameResolver public defaultResolver; event ReverseClaimed(address indexed addr, bytes32 indexed node); event DefaultResolverChanged(AbstractNameResolver indexed resolver); /** * @dev Constructor * @param registry_ The address of the BNS registry. */ constructor(BNS registry_) Controllable(msg.sender) { if (address(registry_) == address(0)) revert InvalidRegistry(); registry = registry_; // Note: caller needs to assign ownership of the reverse record to the registrar } modifier authorised(address addr) { require( addr == msg.sender || controllers[msg.sender] || registry.isApprovedForAll(addr, msg.sender) || ownsContract(addr), "ReverseRegistrar: Caller is not a controller or authorised by address or the address itself" ); _; } function setDefaultResolver(address resolver) public onlyOwner { require(address(resolver) != address(0), "ReverseRegistrar: Resolver address must not be 0"); defaultResolver = AbstractNameResolver(resolver); emit DefaultResolverChanged(AbstractNameResolver(resolver)); } /** * @dev Transfers ownership of the reverse BNS record associated with the * calling account. * @param owner The address to set as the owner of the reverse record in BNS. * @return The BNS node hash of the reverse record. */ function claim(address owner) public returns (bytes32) { return claimForAddr(msg.sender, owner, address(defaultResolver)); } /** * @dev Transfers ownership of the reverse BNS record associated with the * calling account. * @param addr The reverse record to set * @param owner The address to set as the owner of the reverse record in BNS. * @param resolver The resolver of the reverse node * @return The BNS node hash of the reverse record. */ function claimForAddr(address addr, address owner, address resolver) public authorised(addr) returns (bytes32) { bytes32 labelHash = sha3HexAddress(addr); bytes32 reverseNode = keccak256(abi.encodePacked(ADDR_REVERSE_NODE, labelHash)); registry.setSubnodeRecord(ADDR_REVERSE_NODE, labelHash, owner, resolver, 0); emit ReverseClaimed(addr, reverseNode); return reverseNode; } /** * @dev Transfers ownership of the reverse BNS record associated with the * calling account. * @param owner The address to set as the owner of the reverse record in BNS. * @param resolver The address of the resolver to set; 0 to leave unchanged. * @return The BNS node hash of the reverse record. */ function claimWithResolver(address owner, address resolver) public returns (bytes32) { return claimForAddr(msg.sender, owner, resolver); } /** * @dev Sets the `name()` record for the reverse BNS 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 BNS node hash of the reverse record. */ function setName(string memory name) public returns (bytes32) { return setNameForAddr(msg.sender, msg.sender, address(defaultResolver), name); } /** * @dev Sets the `name()` record for the reverse BNS record associated with * the account provided. Updates the resolver to a designated resolver * Only callable by controllers and authorised users * @param addr The reverse record to set * @param owner The owner of the reverse node * @param resolver The resolver of the reverse node * @param name The name to set for this address. * @return The BNS node hash of the reverse record. */ function setNameForAddr(address addr, address owner, address resolver, string memory name) public override returns (bytes32) { bytes32 node_ = claimForAddr(addr, owner, resolver); AbstractNameResolver(resolver).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 BNS 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) { bytes16 lookup = "0123456789abcdef"; assembly { 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) } } function ownsContract(address addr) internal view returns (bool) { try Ownable(addr).owner() returns (address owner) { return owner == msg.sender; } catch { return false; } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; import {Context} from "../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. * * The initial owner is set to the address provided by the deployer. 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; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(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 { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.8.4; interface BNS { // 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; function setSubnodeRecord(bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl) external; function setSubnodeOwner(bytes32 node, bytes32 label, address owner) external returns (bytes32); function setResolver(bytes32 node, address resolver) external; function setOwner(bytes32 node, address owner) external; function setTTL(bytes32 node, uint64 ttl) external; function setApprovalForAll(address operator, bool approved) 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); function recordExists(bytes32 node) external view returns (bool); function isApprovedForAll(address owner, address operator) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.23; interface IReverseRegistrar { /// @notice Thrown when the registry is invalid. error InvalidRegistry(); function claim(address claimant) external returns (bytes32); function setNameForAddr(address addr, address owner, address resolver, string memory name) external returns (bytes32); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; contract Controllable is Ownable { mapping(address => bool) public controllers; event ControllerChanged(address indexed controller, bool enabled); modifier onlyController() { require(controllers[msg.sender], "Controllable: Caller is not a controller"); _; } constructor(address owner_) Ownable(owner_) {} function setController(address controller, bool enabled) public onlyOwner { controllers[controller] = enabled; emit ControllerChanged(controller, enabled); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.8.4; interface INameResolver { event NameChanged(bytes32 indexed node, string name); /** * Returns the name associated with an BNS node, for reverse records. * Defined in EIP181. * @param node The BNS node to query. * @return The associated name. */ function name(bytes32 node) external view returns (string memory); } abstract contract AbstractNameResolver { function setName(bytes32 node, string memory name) public virtual; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.23; // @param BERA_NODE The node hash of "bera" bytes32 constant BERA_NODE = 0xcac7291742cc038df280cfdc67517aa5d83fe6f4716c336481273a83a877997b; // @param REVERSE_NODE The node hash of "reverse" bytes32 constant REVERSE_NODE = 0xa097f6721ce401e757d1223a763fef49b8b5f90bb18567ddb86fd205dff71d34; // @param ADDR_REVERSE_NODE The node hash of "addr.reverse" bytes32 constant ADDR_REVERSE_NODE = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2; // @param GRACE_PERIOD the grace period for expired names uint256 constant GRACE_PERIOD = 30 days; // @param RECLAIM_ID InterfaceId for the Reclaim interface bytes4 constant RECLAIM_ID = bytes4(keccak256("reclaim(uint256,address)")); uint64 constant DEFAULT_TTL = 3600;
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @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) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
{ "remappings": [ "@pythnetwork/pyth-sdk-solidity/=node_modules/@pythnetwork/pyth-sdk-solidity/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "forge-std/=lib/forge-std/src/", "ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "openzeppelin-contracts/=lib/openzeppelin-contracts/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "evmVersion": "cancun", "viaIR": false, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract BNS","name":"registry_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidRegistry","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"controller","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ControllerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract AbstractNameResolver","name":"resolver","type":"address"}],"name":"DefaultResolverChanged","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"ReverseClaimed","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"claim","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"resolver","type":"address"}],"name":"claimForAddr","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"resolver","type":"address"}],"name":"claimWithResolver","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"controllers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultResolver","outputs":[{"internalType":"contract AbstractNameResolver","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"node","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract BNS","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"controller","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"resolver","type":"address"}],"name":"setDefaultResolver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"setName","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"string","name":"name","type":"string"}],"name":"setNameForAddr","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561000f575f5ffd5b50604051610ce3380380610ce383398101604081905261002e916100e6565b33808061005457604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61005d81610097565b50506001600160a01b038116610086576040516311a1e69760e01b815260040160405180910390fd5b6001600160a01b0316608052610113565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100f6575f5ffd5b81516001600160a01b038116811461010c575f5ffd5b9392505050565b608051610baa6101395f395f8181610157015281816102cb01526104950152610baa5ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80638da5cb5b11610088578063c66485b211610063578063c66485b2146101da578063da8c229e146101ed578063e0dba60f1461021f578063f2fde38b14610232575f5ffd5b80638da5cb5b146101a4578063bffbe61c146101b4578063c47f0027146101c7575f5ffd5b8063715018a6116100c3578063715018a6146101355780637a806d6b1461013f5780637b10399914610152578063828eab0e14610191575f5ffd5b80630f5a5466146100e95780631e83409a1461010f5780636566963114610122575b5f5ffd5b6100fc6100f73660046108e5565b610245565b6040519081526020015b60405180910390f35b6100fc61011d36600461091c565b610258565b6100fc610130366004610937565b610279565b61013d61052b565b005b6100fc61014d366004610a1e565b61053e565b6101797f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610106565b600254610179906001600160a01b031681565b5f546001600160a01b0316610179565b6100fc6101c236600461091c565b6105b3565b6100fc6101d5366004610a8f565b61060d565b61013d6101e836600461091c565b610629565b61020f6101fb36600461091c565b60016020525f908152604090205460ff1681565b6040519015158152602001610106565b61013d61022d366004610ad6565b6106e9565b61013d61024036600461091c565b61074f565b5f610251338484610279565b9392505050565b6002545f9061027390339084906001600160a01b0316610279565b92915050565b5f836001600160a01b0381163314806102a05750335f9081526001602052604090205460ff165b80610334575060405163e985e9c560e01b81526001600160a01b0382811660048301523360248301527f0000000000000000000000000000000000000000000000000000000000000000169063e985e9c590604401602060405180830381865afa158015610310573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103349190610b02565b8061034357506103438161078c565b6103e05760405162461bcd60e51b815260206004820152605b60248201527f526576657273655265676973747261723a2043616c6c6572206973206e6f742060448201527f6120636f6e74726f6c6c6572206f7220617574686f726973656420627920616460648201527f6472657373206f7220746865206164647265737320697473656c660000000000608482015260a4015b60405180910390fd5b5f6103ea86610803565b604080517f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260208201529081018290529091505f9060600160408051808303601f190181529082905280516020909101206305ef2c7f60e41b82527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e26004830152602482018490526001600160a01b03888116604484015287811660648401525f60848401529092507f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a4015f604051808303815f87803b1580156104d6575f5ffd5b505af11580156104e8573d5f5f3e3d5ffd5b50506040518392506001600160a01b038a1691507f6ada868dd3058cf77a48a74489fd7963688e5464b2b0fa957ace976243270e92905f90a39695505050505050565b610533610856565b61053c5f610882565b565b5f5f61054b868686610279565b604051637737221360e01b81529091506001600160a01b0385169063773722139061057c9084908790600401610b1d565b5f604051808303815f87803b158015610593575f5ffd5b505af11580156105a5573d5f5f3e3d5ffd5b509298975050505050505050565b5f7f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e26105de83610803565b604080516020810193909352820152606001604051602081830303815290604052805190602001209050919050565b6002545f9061027390339081906001600160a01b03168561053e565b610631610856565b6001600160a01b0381166106a05760405162461bcd60e51b815260206004820152603060248201527f526576657273655265676973747261723a205265736f6c76657220616464726560448201526f07373206d757374206e6f7420626520360841b60648201526084016103d7565b600280546001600160a01b0319166001600160a01b0383169081179091556040517feae17a84d9eb83d8c8eb317f9e7d64857bc363fa51674d996c023f4340c577cf905f90a250565b6106f1610856565b6001600160a01b0382165f81815260016020908152604091829020805460ff191685151590811790915591519182527f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf87910160405180910390a25050565b610757610856565b6001600160a01b03811661078057604051631e4fbdf760e01b81525f60048201526024016103d7565b61078981610882565b50565b5f816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156107e7575060408051601f3d908101601f191682019092526107e491810190610b59565b60015b6107f257505f919050565b6001600160a01b0316331492915050565b5f6f181899199a1a9b1b9c1cb0b131b232b360811b60285b801561084a575f1901600f841682901a81536010909304925f1901600f841682901a815360108404935061081b565b505060285f2092915050565b5f546001600160a01b0316331461053c5760405163118cdaa760e01b81523360048201526024016103d7565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610789575f5ffd5b5f5f604083850312156108f6575f5ffd5b8235610901816108d1565b91506020830135610911816108d1565b809150509250929050565b5f6020828403121561092c575f5ffd5b8135610251816108d1565b5f5f5f60608486031215610949575f5ffd5b8335610954816108d1565b92506020840135610964816108d1565b91506040840135610974816108d1565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126109a2575f5ffd5b813567ffffffffffffffff8111156109bc576109bc61097f565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156109eb576109eb61097f565b604052818152838201602001851015610a02575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f60808587031215610a31575f5ffd5b8435610a3c816108d1565b93506020850135610a4c816108d1565b92506040850135610a5c816108d1565b9150606085013567ffffffffffffffff811115610a77575f5ffd5b610a8387828801610993565b91505092959194509250565b5f60208284031215610a9f575f5ffd5b813567ffffffffffffffff811115610ab5575f5ffd5b610ac184828501610993565b949350505050565b8015158114610789575f5ffd5b5f5f60408385031215610ae7575f5ffd5b8235610af2816108d1565b9150602083013561091181610ac9565b5f60208284031215610b12575f5ffd5b815161025181610ac9565b828152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f60208284031215610b69575f5ffd5b8151610251816108d156fea264697066735822122076b9e2b594bdb9428dd80d284ea2babcd959a3ca715d071ef274a662b2cda71b64736f6c634300081c00330000000000000000000000005b22280886a2f5e09a49bea7e320eab0e5320e28
Deployed Bytecode
0x608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80638da5cb5b11610088578063c66485b211610063578063c66485b2146101da578063da8c229e146101ed578063e0dba60f1461021f578063f2fde38b14610232575f5ffd5b80638da5cb5b146101a4578063bffbe61c146101b4578063c47f0027146101c7575f5ffd5b8063715018a6116100c3578063715018a6146101355780637a806d6b1461013f5780637b10399914610152578063828eab0e14610191575f5ffd5b80630f5a5466146100e95780631e83409a1461010f5780636566963114610122575b5f5ffd5b6100fc6100f73660046108e5565b610245565b6040519081526020015b60405180910390f35b6100fc61011d36600461091c565b610258565b6100fc610130366004610937565b610279565b61013d61052b565b005b6100fc61014d366004610a1e565b61053e565b6101797f0000000000000000000000005b22280886a2f5e09a49bea7e320eab0e5320e2881565b6040516001600160a01b039091168152602001610106565b600254610179906001600160a01b031681565b5f546001600160a01b0316610179565b6100fc6101c236600461091c565b6105b3565b6100fc6101d5366004610a8f565b61060d565b61013d6101e836600461091c565b610629565b61020f6101fb36600461091c565b60016020525f908152604090205460ff1681565b6040519015158152602001610106565b61013d61022d366004610ad6565b6106e9565b61013d61024036600461091c565b61074f565b5f610251338484610279565b9392505050565b6002545f9061027390339084906001600160a01b0316610279565b92915050565b5f836001600160a01b0381163314806102a05750335f9081526001602052604090205460ff165b80610334575060405163e985e9c560e01b81526001600160a01b0382811660048301523360248301527f0000000000000000000000005b22280886a2f5e09a49bea7e320eab0e5320e28169063e985e9c590604401602060405180830381865afa158015610310573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103349190610b02565b8061034357506103438161078c565b6103e05760405162461bcd60e51b815260206004820152605b60248201527f526576657273655265676973747261723a2043616c6c6572206973206e6f742060448201527f6120636f6e74726f6c6c6572206f7220617574686f726973656420627920616460648201527f6472657373206f7220746865206164647265737320697473656c660000000000608482015260a4015b60405180910390fd5b5f6103ea86610803565b604080517f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260208201529081018290529091505f9060600160408051808303601f190181529082905280516020909101206305ef2c7f60e41b82527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e26004830152602482018490526001600160a01b03888116604484015287811660648401525f60848401529092507f0000000000000000000000005b22280886a2f5e09a49bea7e320eab0e5320e281690635ef2c7f09060a4015f604051808303815f87803b1580156104d6575f5ffd5b505af11580156104e8573d5f5f3e3d5ffd5b50506040518392506001600160a01b038a1691507f6ada868dd3058cf77a48a74489fd7963688e5464b2b0fa957ace976243270e92905f90a39695505050505050565b610533610856565b61053c5f610882565b565b5f5f61054b868686610279565b604051637737221360e01b81529091506001600160a01b0385169063773722139061057c9084908790600401610b1d565b5f604051808303815f87803b158015610593575f5ffd5b505af11580156105a5573d5f5f3e3d5ffd5b509298975050505050505050565b5f7f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e26105de83610803565b604080516020810193909352820152606001604051602081830303815290604052805190602001209050919050565b6002545f9061027390339081906001600160a01b03168561053e565b610631610856565b6001600160a01b0381166106a05760405162461bcd60e51b815260206004820152603060248201527f526576657273655265676973747261723a205265736f6c76657220616464726560448201526f07373206d757374206e6f7420626520360841b60648201526084016103d7565b600280546001600160a01b0319166001600160a01b0383169081179091556040517feae17a84d9eb83d8c8eb317f9e7d64857bc363fa51674d996c023f4340c577cf905f90a250565b6106f1610856565b6001600160a01b0382165f81815260016020908152604091829020805460ff191685151590811790915591519182527f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf87910160405180910390a25050565b610757610856565b6001600160a01b03811661078057604051631e4fbdf760e01b81525f60048201526024016103d7565b61078981610882565b50565b5f816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156107e7575060408051601f3d908101601f191682019092526107e491810190610b59565b60015b6107f257505f919050565b6001600160a01b0316331492915050565b5f6f181899199a1a9b1b9c1cb0b131b232b360811b60285b801561084a575f1901600f841682901a81536010909304925f1901600f841682901a815360108404935061081b565b505060285f2092915050565b5f546001600160a01b0316331461053c5760405163118cdaa760e01b81523360048201526024016103d7565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610789575f5ffd5b5f5f604083850312156108f6575f5ffd5b8235610901816108d1565b91506020830135610911816108d1565b809150509250929050565b5f6020828403121561092c575f5ffd5b8135610251816108d1565b5f5f5f60608486031215610949575f5ffd5b8335610954816108d1565b92506020840135610964816108d1565b91506040840135610974816108d1565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126109a2575f5ffd5b813567ffffffffffffffff8111156109bc576109bc61097f565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156109eb576109eb61097f565b604052818152838201602001851015610a02575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f60808587031215610a31575f5ffd5b8435610a3c816108d1565b93506020850135610a4c816108d1565b92506040850135610a5c816108d1565b9150606085013567ffffffffffffffff811115610a77575f5ffd5b610a8387828801610993565b91505092959194509250565b5f60208284031215610a9f575f5ffd5b813567ffffffffffffffff811115610ab5575f5ffd5b610ac184828501610993565b949350505050565b8015158114610789575f5ffd5b5f5f60408385031215610ae7575f5ffd5b8235610af2816108d1565b9150602083013561091181610ac9565b5f60208284031215610b12575f5ffd5b815161025181610ac9565b828152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f60208284031215610b69575f5ffd5b8151610251816108d156fea264697066735822122076b9e2b594bdb9428dd80d284ea2babcd959a3ca715d071ef274a662b2cda71b64736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005b22280886a2f5e09a49bea7e320eab0e5320e28
-----Decoded View---------------
Arg [0] : registry_ (address): 0x5B22280886a2F5e09A49bEa7E320eAB0e5320e28
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005b22280886a2f5e09a49bea7e320eab0e5320e28
Deployed Bytecode Sourcemap
470:5609:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3292:150;;;;;;:::i;:::-;;:::i;:::-;;;689:25:8;;;677:2;662:18;3292:150:2;;;;;;;;2022:136;;;;;;:::i;:::-;;:::i;2526:418::-;;;;;;:::i;:::-;;:::i;2293:101:0:-;;;:::i;:::-;;4411:304:2;;;;;;:::i;:::-;;:::i;537:29::-;;;;;;;;-1:-1:-1;;;;;3294:32:8;;;3276:51;;3264:2;3249:18;537:29:2;3119:214:8;572:43:2;;;;;-1:-1:-1;;;;;572:43:2;;;1638:85:0;1684:7;1710:6;-1:-1:-1;;;;;1710:6:0;1638:85;;4883:150:2;;;;;;:::i;:::-;;:::i;3761:156::-;;;;;;:::i;:::-;;:::i;1456:299::-;;;;;;:::i;:::-;;:::i;165:43:4:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4274:14:8;;4267:22;4249:41;;4237:2;4222:18;165:43:4;4109:187:8;475:177:4;;;;;;:::i;:::-;;:::i;2543:215:0:-;;;;;;:::i;:::-;;:::i;3292:150:2:-;3368:7;3394:41;3407:10;3419:5;3426:8;3394:12;:41::i;:::-;3387:48;3292:150;-1:-1:-1;;;3292:150:2:o;2022:136::-;2134:15;;2068:7;;2094:57;;2107:10;;2119:5;;-1:-1:-1;;;;;2134:15:2;2094:12;:57::i;:::-;2087:64;2022:136;-1:-1:-1;;2022:136:2:o;2526:418::-;2628:7;2613:4;-1:-1:-1;;;;;1185:18:2;;1193:10;1185:18;;:45;;-1:-1:-1;1219:10:2;1207:23;;;;:11;:23;;;;;;;;1185:45;:92;;;-1:-1:-1;1234:43:2;;-1:-1:-1;;;1234:43:2;;-1:-1:-1;;;;;5003:32:8;;;1234:43:2;;;4985:51:8;1266:10:2;5052:18:8;;;5045:60;1234:8:2;:25;;;;4958:18:8;;1234:43:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1185:130;;;;1297:18;1310:4;1297:12;:18::i;:::-;1164:268;;;;-1:-1:-1;;;1164:268:2;;5568:2:8;1164:268:2;;;5550:21:8;5607:2;5587:18;;;5580:30;5646:34;5626:18;;;5619:62;5717:34;5697:18;;;5690:62;5789:29;5768:19;;;5761:58;5836:19;;1164:268:2;;;;;;;;;2647:17:::1;2667:20;2682:4;2667:14;:20::i;:::-;2729:46;::::0;;448:66:7::1;2729:46:2;::::0;::::1;6023:19:8::0;6058:12;;;6051:28;;;2647:40:2;;-1:-1:-1;2697:19:2::1;::::0;6095:12:8;;2729:46:2::1;::::0;;;;::::1;-1:-1:-1::0;;2729:46:2;;;;;;;2719:57;;2729:46:::1;2719:57:::0;;::::1;::::0;-1:-1:-1;;;2786:75:2;;448:66:7::1;2786:75:2;::::0;::::1;6384:25:8::0;6425:18;;;6418:34;;;-1:-1:-1;;;;;6488:32:8;;;6468:18;;;6461:60;6557:32;;;6537:18;;;6530:60;2812:17:2::1;6606:19:8::0;;;6599:60;2719:57:2;;-1:-1:-1;2786:8:2::1;:25;::::0;::::1;::::0;6356:19:8;;2786:75:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;2876:33:2::1;::::0;2897:11;;-1:-1:-1;;;;;;2876:33:2;::::1;::::0;-1:-1:-1;2876:33:2::1;::::0;;;::::1;2926:11:::0;2526:418;-1:-1:-1;;;;;;2526:418:2:o;2293:101:0:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;4411:304:2:-;4551:7;4574:13;4590:35;4603:4;4609:5;4616:8;4590:12;:35::i;:::-;4635:51;;-1:-1:-1;;;4635:51:2;;4574;;-1:-1:-1;;;;;;4635:38:2;;;;;:51;;4574;;4681:4;;4635:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4703:5:2;;4411:304;-1:-1:-1;;;;;;;;4411:304:2:o;4883:150::-;4932:7;448:66:7;5004:20:2;5019:4;5004:14;:20::i;:::-;4968:57;;;;;;6023:19:8;;;;6058:12;;6051:28;6095:12;;4968:57:2;;;;;;;;;;;;4958:68;;;;;;4951:75;;4883:150;;;:::o;3761:156::-;3887:15;;3814:7;;3840:70;;3855:10;;;;-1:-1:-1;;;;;3887:15:2;3905:4;3840:14;:70::i;1456:299::-;1531:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;1537:31:2;::::1;1529:92;;;::::0;-1:-1:-1;;;1529:92:2;;7366:2:8;1529:92:2::1;::::0;::::1;7348:21:8::0;7405:2;7385:18;;;7378:30;7444:34;7424:18;;;7417:62;-1:-1:-1;;;7495:18:8;;;7488:46;7551:19;;1529:92:2::1;7164:412:8::0;1529:92:2::1;1631:15;:48:::0;;-1:-1:-1;;;;;;1631:48:2::1;-1:-1:-1::0;;;;;1631:48:2;::::1;::::0;;::::1;::::0;;;1694:54:::1;::::0;::::1;::::0;-1:-1:-1;;1694:54:2::1;1456:299:::0;:::o;475:177:4:-;1531:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;559:23:4;::::1;;::::0;;;:11:::1;:23;::::0;;;;;;;;:33;;-1:-1:-1;;559:33:4::1;::::0;::::1;;::::0;;::::1;::::0;;;607:38;;4249:41:8;;;607:38:4::1;::::0;4222:18:8;607:38:4::1;;;;;;;475:177:::0;;:::o;2543:215:0:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:0;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:0;;2700:1:::1;2672:31;::::0;::::1;3276:51:8::0;3249:18;;2672:31:0::1;3119:214:8::0;2623:91:0::1;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;5851:226:2:-;5910:4;5938;-1:-1:-1;;;;;5930:19:2;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5930:21:2;;;;;;;;-1:-1:-1;;5930:21:2;;;;;;;;;;;;:::i;:::-;;;5926:145;;-1:-1:-1;6055:5:2;;5851:226;-1:-1:-1;5851:226:2:o;5926:145::-;-1:-1:-1;;;;;5997:19:2;6006:10;5997:19;;5851:226;-1:-1:-1;;5851:226:2:o;5338:507::-;5398:11;-1:-1:-1;;;5504:2:2;5489:303;5509:8;;5489:303;;-1:-1:-1;;5544:9:2;5596:3;5586:14;;5581:28;;;5544:9;5570:40;5645:4;5635:15;;;;-1:-1:-1;;5672:9:2;5724:3;5714:14;;5709:28;;;5672:9;5698:40;5773:4;5767;5763:15;5755:23;;5489:303;;;-1:-1:-1;;5826:2:2;5823:1;5813:16;;5338:507;-1:-1:-1;;5338:507:2:o;1796:162:0:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:0;735:10:1;1855:23:0;1851:101;;1901:40;;-1:-1:-1;;;1901:40:0;;735:10:1;1901:40:0;;;3276:51:8;3249:18;;1901:40:0;3119:214:8;2912:187:0;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:0;;;-1:-1:-1;;;;;;3020:17:0;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:131:8:-;-1:-1:-1;;;;;89:31:8;;79:42;;69:70;;135:1;132;125:12;150:388;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;-1:-1:-1;460:2:8;445:18;;432:32;473:33;432:32;473:33;:::i;:::-;525:7;515:17;;;150:388;;;;;:::o;725:247::-;784:6;837:2;825:9;816:7;812:23;808:32;805:52;;;853:1;850;843:12;805:52;892:9;879:23;911:31;936:5;911:31;:::i;977:529::-;1054:6;1062;1070;1123:2;1111:9;1102:7;1098:23;1094:32;1091:52;;;1139:1;1136;1129:12;1091:52;1178:9;1165:23;1197:31;1222:5;1197:31;:::i;:::-;1247:5;-1:-1:-1;1304:2:8;1289:18;;1276:32;1317:33;1276:32;1317:33;:::i;:::-;1369:7;-1:-1:-1;1428:2:8;1413:18;;1400:32;1441:33;1400:32;1441:33;:::i;:::-;1493:7;1483:17;;;977:529;;;;;:::o;1511:127::-;1572:10;1567:3;1563:20;1560:1;1553:31;1603:4;1600:1;1593:15;1627:4;1624:1;1617:15;1643:726;1686:5;1739:3;1732:4;1724:6;1720:17;1716:27;1706:55;;1757:1;1754;1747:12;1706:55;1797:6;1784:20;1827:18;1819:6;1816:30;1813:56;;;1849:18;;:::i;:::-;1898:2;1892:9;1990:2;1952:17;;-1:-1:-1;;1948:31:8;;;1981:2;1944:40;1940:54;1928:67;;2025:18;2010:34;;2046:22;;;2007:62;2004:88;;;2072:18;;:::i;:::-;2108:2;2101:22;2132;;;2173:19;;;2194:4;2169:30;2166:39;-1:-1:-1;2163:59:8;;;2218:1;2215;2208:12;2163:59;2282:6;2275:4;2267:6;2263:17;2256:4;2248:6;2244:17;2231:58;2337:1;2309:19;;;2330:4;2305:30;2298:41;;;;2313:6;1643:726;-1:-1:-1;;;1643:726:8:o;2374:740::-;2470:6;2478;2486;2494;2547:3;2535:9;2526:7;2522:23;2518:33;2515:53;;;2564:1;2561;2554:12;2515:53;2603:9;2590:23;2622:31;2647:5;2622:31;:::i;:::-;2672:5;-1:-1:-1;2729:2:8;2714:18;;2701:32;2742:33;2701:32;2742:33;:::i;:::-;2794:7;-1:-1:-1;2853:2:8;2838:18;;2825:32;2866:33;2825:32;2866:33;:::i;:::-;2918:7;-1:-1:-1;2976:2:8;2961:18;;2948:32;3003:18;2992:30;;2989:50;;;3035:1;3032;3025:12;2989:50;3058;3100:7;3091:6;3080:9;3076:22;3058:50;:::i;:::-;3048:60;;;2374:740;;;;;;;:::o;3782:322::-;3851:6;3904:2;3892:9;3883:7;3879:23;3875:32;3872:52;;;3920:1;3917;3910:12;3872:52;3960:9;3947:23;3993:18;3985:6;3982:30;3979:50;;;4025:1;4022;4015:12;3979:50;4048;4090:7;4081:6;4070:9;4066:22;4048:50;:::i;:::-;4038:60;3782:322;-1:-1:-1;;;;3782:322:8:o;4301:118::-;4387:5;4380:13;4373:21;4366:5;4363:32;4353:60;;4409:1;4406;4399:12;4424:382;4489:6;4497;4550:2;4538:9;4529:7;4525:23;4521:32;4518:52;;;4566:1;4563;4556:12;4518:52;4605:9;4592:23;4624:31;4649:5;4624:31;:::i;:::-;4674:5;-1:-1:-1;4731:2:8;4716:18;;4703:32;4744:30;4703:32;4744:30;:::i;5116:245::-;5183:6;5236:2;5224:9;5215:7;5211:23;5207:32;5204:52;;;5252:1;5249;5242:12;5204:52;5284:9;5278:16;5303:28;5325:5;5303:28;:::i;6670:489::-;6847:6;6836:9;6829:25;6890:2;6885;6874:9;6870:18;6863:30;6810:4;6922:6;6916:13;6965:6;6960:2;6949:9;6945:18;6938:34;7024:6;7019:2;7011:6;7007:15;7002:2;6991:9;6987:18;6981:50;7080:1;7075:2;7066:6;7055:9;7051:22;7047:31;7040:42;7150:2;7143;7139:7;7134:2;7126:6;7122:15;7118:29;7107:9;7103:45;7099:54;7091:62;;;6670:489;;;;;:::o;7581:251::-;7651:6;7704:2;7692:9;7683:7;7679:23;7675:32;7672:52;;;7720:1;7717;7710:12;7672:52;7752:9;7746:16;7771:31;7796:5;7771:31;:::i
Swarm Source
ipfs://76b9e2b594bdb9428dd80d284ea2babcd959a3ca715d071ef274a662b2cda71b
Loading...
Loading
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.