Skip to main content

Interfaces IDs

Interfaces IDs help check if a contract supports a specific interface, e.g., its meta-interface. They are helpful if we want to interact with a contract but don't know if it supports an interface such as ERC725Y, LSP1UniversalReceiver, etc.

The supportsInterface function from the ERC165 standard returns true if the standard is supported, false otherwise.

note

Interface IDs are not the most secure way to ensure that a contract implements a specific set of functions, as they are manually set and can be set to any value.

Interface IDs can be easily accessed in your code using the LSP smart contract NPM package as follows. The accessible interface IDs can be found in the constants.js file

import { INTERFACE_IDS } from "@lukso/lsp-smart-contracts/constants.js"

const ERC725X_ID = INTERFACE_IDS.ERC725X
ContractInterfaceIdDescription
ERC12710x1626ba7eStandard Signature Validation Method for Contracts.
ERC725X0x44c028feGeneral executor.
ERC725Y0x714df77cGeneral Data key-value store.
LSP0ERC725Account0xeb6be62eAccount that represent an identity on-chain
LSP1UniversalReceiver0x6bb56a14Universal Receiver entry function.
LSP1UniversalReceiverDelegate0xa245bbdaUniversal Receiver delegated to an other smart contract.
LSP6KeyManager0xc403d48fController for the ERC725Account.
LSP7DigitalAsset0x5fcaac27Digital Assets either fungible or non-fungible. ERC20 A-like
LSP8IdentifiableDigitalAsset0x49399145Identifiable Digital Assets (NFT). ERC721 A-like
LSP9Vault0xfd4d5c50Vault that could interact with other smart contracts and hold assets.