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

NameTypeDescription

account

address

undefined

_interfaceHash

bytes32

undefined

Returns

NameTypeDescription

_0

address

undefined

getManager

function getManager(address account) external view returns (address)

Returns the manager for account. See {setManager}.

Parameters

NameTypeDescription

account

address

undefined

Returns

NameTypeDescription

_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

NameTypeDescription

account

address

Address of the contract to check.

interfaceId

bytes4

ERC165 interface to check.

Returns

NameTypeDescription

_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

NameTypeDescription

account

address

Address of the contract to check.

interfaceId

bytes4

ERC165 interface to check.

Returns

NameTypeDescription

_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

NameTypeDescription

interfaceName

string

undefined

Returns

NameTypeDescription

_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

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

account indexed

address

undefined

interfaceHash indexed

bytes32

undefined

implementer indexed

address

undefined

ManagerChanged

event ManagerChanged(address indexed account, address indexed newManager)

Parameters

NameTypeDescription

account indexed

address

undefined

newManager indexed

address

undefined

Last updated