IERC 1820 Registry Upgradeable
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 nonpayable
Sets 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 nonpayable
Sets 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 nonpayable
Updates 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