IERC 1820 Registry
Interface of the global ERC1820 Registry, as defined in the https://eips.ethereum.org/EIPS/eip-1820[EIP]. Accounts may register implementers for interfaces in this registry, as well as query support. Implementers may be shared by multiple accounts, and can also implement more than a single interface for each account. Contracts can implement interfaces for themselves, but externally-owned accounts (EOA) must delegate this to a contract. {IERC165} interfaces can also be queried via the registry. For an in-depth explanation and source code analysis, see the EIP text.
Methods
getInterfaceImplementer
function getInterfaceImplementer(address account, bytes32 _interfaceHash) external view returns (address)Returns the implementer of interfaceHash for account. If no such implementer is registered, returns the zero address. If interfaceHash is an {IERC165} interface id (i.e. it ends with 28 zeroes), account will be queried for support of it. account being the zero address is an alias for the caller's address.
Parameters
account
address
undefined
_interfaceHash
bytes32
undefined
Returns
_0
address
undefined
getManager
function getManager(address account) external view returns (address)Returns the manager for account. See {setManager}.
Parameters
account
address
undefined
Returns
_0
address
undefined
implementsERC165Interface
function implementsERC165Interface(address account, bytes4 interfaceId) external view returns (bool)Checks whether a contract implements an ERC165 interface or not. If the result is not cached a direct lookup on the contract address is performed. If the result is not cached or the cached value is out-of-date, the cache MUST be updated manually by calling {updateERC165Cache} with the contract address.
Parameters
account
address
Address of the contract to check.
interfaceId
bytes4
ERC165 interface to check.
Returns
_0
bool
True if account implements interfaceId, false otherwise.
implementsERC165InterfaceNoCache
function implementsERC165InterfaceNoCache(address account, bytes4 interfaceId) external view returns (bool)Checks whether a contract implements an ERC165 interface or not without using nor updating the cache.
Parameters
account
address
Address of the contract to check.
interfaceId
bytes4
ERC165 interface to check.
Returns
_0
bool
True if account implements interfaceId, false otherwise.
interfaceHash
function interfaceHash(string interfaceName) external pure returns (bytes32)Returns the interface hash for an interfaceName, as defined in the corresponding https://eips.ethereum.org/EIPS/eip-1820#interface-name[section of the EIP].
Parameters
interfaceName
string
undefined
Returns
_0
bytes32
undefined
setInterfaceImplementer
function setInterfaceImplementer(address account, bytes32 _interfaceHash, address implementer) external nonpayableSets the implementer contract as account's implementer for interfaceHash. account being the zero address is an alias for the caller's address. The zero address can also be used in implementer to remove an old one. See {interfaceHash} to learn how these are created. Emits an {InterfaceImplementerSet} event. Requirements: - the caller must be the current manager for account. - interfaceHash must not be an {IERC165} interface id (i.e. it must not end in 28 zeroes). - implementer must implement {IERC1820Implementer} and return true when queried for support, unless implementer is the caller. See {IERC1820Implementer-canImplementInterfaceForAddress}.
Parameters
account
address
undefined
_interfaceHash
bytes32
undefined
implementer
address
undefined
setManager
function setManager(address account, address newManager) external nonpayableSets newManager as the manager for account. A manager of an account is able to set interface implementers for it. By default, each account is its own manager. Passing a value of 0x0 in newManager will reset the manager to this initial state. Emits a {ManagerChanged} event. Requirements: - the caller must be the current manager for account.
Parameters
account
address
undefined
newManager
address
undefined
updateERC165Cache
function updateERC165Cache(address account, bytes4 interfaceId) external nonpayableUpdates the cache with whether the contract implements an ERC165 interface or not.
Parameters
account
address
Address of the contract for which to update the cache.
interfaceId
bytes4
ERC165 interface for which to update the cache.
Events
InterfaceImplementerSet
event InterfaceImplementerSet(address indexed account, bytes32 indexed interfaceHash, address indexed implementer)Parameters
account indexed
address
undefined
interfaceHash indexed
bytes32
undefined
implementer indexed
address
undefined
ManagerChanged
event ManagerChanged(address indexed account, address indexed newManager)Parameters
account indexed
address
undefined
newManager indexed
address
undefined
Last updated