# LUKSO Tech Documentation ## Docs - [ERC725](contracts/contracts/@erc725/smart-contracts/contracts/ERC725): ERC-725 - [ERC725](contracts/contracts/ERC725/ERC725): ERC-725 - [LSP0ERC725Account](contracts/contracts/LSP0ERC725Account/LSP0ERC725Account): LSP-0-ERC725Account - [LSP11BasicSocialRecovery](contracts/contracts/LSP11BasicSocialRecovery/LSP11BasicSocialRecovery): LSP-11-BasicSocialRecovery - [LSP14Ownable2Step](contracts/contracts/LSP14Ownable2Step/LSP14Ownable2Step): LSP-14-Ownable2Step - [LSP16UniversalFactory](contracts/contracts/LSP16UniversalFactory/LSP16UniversalFactory): LSP-16-UniversalFactory - [LSP17Extendable](contracts/contracts/LSP17ContractExtension/LSP17Extendable): LSP-17-ContractExtension - [LSP17Extension](contracts/contracts/LSP17ContractExtension/LSP17Extension): LSP-17-ContractExtension - [Extension4337](contracts/contracts/LSP17Extensions/Extension4337): LSP-17-Extensions - [OnERC721ReceivedExtension](contracts/contracts/LSP17Extensions/OnERC721ReceivedExtension): LSP-17-Extensions - [LSP1UniversalReceiverDelegateUP](contracts/contracts/LSP1UniversalReceiver/LSP1UniversalReceiverDelegateUP): LSP-1-UniversalReceiver - [LSP1UniversalReceiverDelegateVault](contracts/contracts/LSP1UniversalReceiver/LSP1UniversalReceiverDelegateVault): LSP-1-UniversalReceiver - [LSP20CallVerification](contracts/contracts/LSP20CallVerification/LSP20CallVerification): LSP-20-CallVerification - [IPostDeploymentModule](contracts/contracts/LSP23LinkedContractsDeployment/IPostDeploymentModule): LSP-23-LinkedContractsDeployment - [LSP23LinkedContractsFactory](contracts/contracts/LSP23LinkedContractsDeployment/LSP23LinkedContractsFactory): LSP-23-LinkedContractsDeployment - [IPostDeploymentModule](contracts/contracts/LSP23LinkedContractsFactory/IPostDeploymentModule): LSP-23-LinkedContractsFactory - [LSP23LinkedContractsFactory](contracts/contracts/LSP23LinkedContractsFactory/LSP23LinkedContractsFactory): LSP-23-LinkedContractsFactory - [LSP25MultiChannelNonce](contracts/contracts/LSP25ExecuteRelayCall/LSP25MultiChannelNonce): LSP-25-ExecuteRelayCall - [LSP4DigitalAssetMetadata](contracts/contracts/LSP4DigitalAssetMetadata/LSP4DigitalAssetMetadata): LSP-4-DigitalAsset-Metadata - [LSP6KeyManager](contracts/contracts/LSP6KeyManager/LSP6KeyManager): LSP-6-KeyManager - [LSP7Burnable](contracts/contracts/LSP7DigitalAsset/extensions/LSP7Burnable): LSP-7-DigitalAsset - [LSP7CappedSupply](contracts/contracts/LSP7DigitalAsset/extensions/LSP7CappedSupply): LSP-7-DigitalAsset - [LSP7DigitalAsset](contracts/contracts/LSP7DigitalAsset/LSP7DigitalAsset): LSP-7-DigitalAsset - [LSP7Mintable](contracts/contracts/LSP7DigitalAsset/presets/LSP7Mintable): LSP-7-DigitalAsset - [LSP8Burnable](contracts/contracts/LSP8IdentifiableDigitalAsset/extensions/LSP8Burnable): LSP-8-IdentifiableDigitalAsset - [LSP8CappedSupply](contracts/contracts/LSP8IdentifiableDigitalAsset/extensions/LSP8CappedSupply): LSP-8-IdentifiableDigitalAsset - [LSP8Enumerable](contracts/contracts/LSP8IdentifiableDigitalAsset/extensions/LSP8Enumerable): LSP-8-IdentifiableDigitalAsset - [LSP8IdentifiableDigitalAsset](contracts/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAsset): LSP-8-IdentifiableDigitalAsset - [LSP8Mintable](contracts/contracts/LSP8IdentifiableDigitalAsset/presets/LSP8Mintable): LSP-8-IdentifiableDigitalAsset - [LSP9Vault](contracts/contracts/LSP9Vault/LSP9Vault): LSP-9-Vault - [UniversalProfile](contracts/contracts/UniversalProfile/UniversalProfile): UniversalProfile - [โ›“ Deployed Implementation Contracts](contracts/deployed-contracts): List of base implementation and factory contracts addresses deployed on LUKSO Mainnet. - [Interfaces IDs](contracts/interface-ids): 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. - [Introduction](contracts/introduction): Welcome to the LUKSO Smart Contracts documentation! - [LSP10Utils](contracts/libraries/LSP10Utils): LSP-10-ReceivedVaults - [LSP17Utils](contracts/libraries/LSP17Utils): LSP-17-ContractExtension - [LSP1Utils](contracts/libraries/LSP1Utils): LSP-1-UniversalReceiver - [LSP2Utils](contracts/libraries/LSP2Utils): LSP-2-ERC725YJSONSchema - [LSP5Utils](contracts/libraries/LSP5Utils): LSP-5-ReceivedAssets - [LSP6Utils](contracts/libraries/LSP6Utils): LSP-6-KeyManager - [โ›ฝ๏ธ Execute Relay Call (Meta Transactions)](contracts/overview/ExecuteRelayCall): Sequential relay calls in the same channel - [Follower System](contracts/overview/FollowerSystem): How to interact with and implement the LUKSO LSP26 Follower System in your dApps and smart contracts. - [๐Ÿ” Key Manager](contracts/overview/KeyManager): The Key Manager uses the concept of permissions to authorize any addresses (dApps, protocols, devices, etcโ€ฆ) to do certain specific actions on the contract it is linked to. But why should you give anybody access to your smart contract? What is the intention behind doing this? - [โš™๏ธ Extendable & Extension Contracts](contracts/overview/LSP17ContractExtension): Contracts that use the LSP17 standard are called Extendable Contracts. Meaning they can extend their functionalities by linking Extension Contracts to them for specific functionalities that they do not support natively. - [๐Ÿ”Š Universal Receiver](contracts/overview/LSP1Delegate): There are two default implementations of the LSP1 Delegate contracts available, each for different use cases. - [Create a Non Fungible Token](contracts/overview/NFT/create-nft-collection): LSP8 NFT extensions - [Customize transfer behaviour](contracts/overview/NFT/customise-transfer-behaviour): The LSP8IdenfitiableDigitalAsset contract implementation includes the beforeTokenTransfer and afterTokenTransfer functions that offer the ability to specify custom logic that can run before or after the token transfer has happen (= before or after the balances in the contract state have been updated). - [๐Ÿ–ผ๏ธ Identifiable Digital Asset (NFT)](contracts/overview/NFT/index): The LSP8CompatibleERC721 contracts have been deprecated and deleted from the @lukso/lsp-smart-contracts package since version 0.15.0, because of their unsafe nature and security considerations (See PR #845 for more details). - [Set NFT Metadata](contracts/overview/NFT/set-nft-metadata): The function setDataBatchForTokenIds(...) can be used to set multiple data key-value pairs at once for one or multiple tokenIds. - [Create a Fungible Token](contracts/overview/Token/create-token): LSP7 Tokens extensions - [Customize transfer behaviour](contracts/overview/Token/customise-transfer-behaviour): beforeTokenTransfer and afterTokenTransfer hooks - [๐Ÿช™ Digital Asset (Token)](contracts/overview/Token/index): The LSP7CompatibleERC20 contracts have been deprecated and deleted from the @lukso/lsp-smart-contracts package since version 0.15.0, because of their unsafe nature and security considerations. They are not recommended to be used. However, if you want to still use them, they remain available up to the version 0.14.0. - [๐Ÿ†™ Universal Profile](contracts/overview/UniversalProfile): The UniversalProfile.sol smart contract is a combination of two LSP standards: - [LSP1 Notification Type IDs](contracts/type-ids): The LSP1 Type IDs listed below are unique identifiers used across the LSP standards for the Universal Receiver notification mechanism. - [Feature Requests](faq/lukso/feature-requests): LUKSO ecosystem feature requests: developer events, hackathons, grants. - [General Information](faq/lukso/general-information): General information about the LUKSO ecosystem: LYXt, LYXe, and LYX, token supply, LUKSO as a Layer-1. - [Project Differentiation](faq/lukso/project-differentiation): How does LUKSO differentiate from other projects? - [Project Origins](faq/lukso/project-origins): The project origins of LUKSO, LUKSO Genesis Deposit Contract, and the LUKSO Reversible Initial Coin Offering (rICO). - [Project Timeline](faq/lukso/project-timeline): LUKSO project timeline: L14, L16, Testnet, LUKSO Mainnet. - [Blockchain Architecture](faq/network/blockchain-architecture): LUKSO blockchain architecture overview. - [Network Configuration](faq/network/network-configuration): LUKSO network configurations: ports, minimal network speed, data traffic. - [Node Security](faq/network/node-security): LUKSO node security considerations. - [Node Setup](faq/network/node-setup): LUKSO node setup and supported clients: Geth, Erigon, Nethermind, Besu, Prysm, Lighthouse, Teku, Nimbus - [Peer Connections](faq/network/peer-connection): LUKSO peer connections overview. - [Staking](faq/network/staking): Staking LYX on the LUKSO network. - [Validators](faq/network/validators): LUKSO validators overview: validator deposit key, validator mnemonic seed, validator fee recipient address. - [LUKSO Standard Proposals](faq/onboarding/lukso-standards): LUKSO Standard Proposals (LSPs) overview: main features of LSPs, the difference between ERC721, ERC1155, LSP7, LSP8, and LUKSO phygital assets. - [Tools and Services](faq/onboarding/tools-and-services): LUKSO tools and services overview. - [Universal Profiles](faq/onboarding/universal-profiles): Universal Profiles: Universal Profile Explorer, compatibility with regular wallets, and supported coins. - [Benefits of the LUKSO Standards](learn/benefits-lukso-standards): Overview of the benefits of using LUKSO Standard Proposals (LSPs) - [Glossary](learn/concepts): Most frequently used terminology related to the LUKSO Ecosystem: Universal Profiles, Controllers, Transaction Relay Service. - [Choose LSP7 or LSP8 for Tokens and NFTs](learn/digital-assets/choose-lsp7-vs-lsp8): Discover whether LSP7 or LSP8 is best for your token, NFT, collection, or ERC1155-style multi-asset project on LUKSO. - [Getting started building Tokens & NFTs](learn/digital-assets/getting-started): Create a Hardhat project and start building your smart contracts for LUKSO. - [Set LSP7 Token Metadata](learn/digital-assets/metadata-management/edit-token-metadata): Learn how to update LSP4 Metadata of digital assets on LUKSO using ethers.js, web3.js, or Hardhat. - [Metadata Preparation](learn/digital-assets/metadata-management/metadata-preparation): Learn how to prepare and use assets for LUKSO Universal Profiles and digital assets (LSP7 / LSP8). - [๐Ÿ“‘ Read Digital Asset Data](learn/digital-assets/metadata-management/read-asset-data): Learn how to read Digital Asset (LSP7) and Identifiable Digital Assets (NFT/LSP8) data from their smart contracts. - [Create an NFT Collection Using LSP7](learn/digital-assets/nft/create-nft-collection-lsp7): Learn how to create an NFT Collection on LUKSO using LSP7 Digital Asset standard. - [Create an NFT Collection Using LSP8](learn/digital-assets/nft/create-nft-collection-lsp8): Learn how to create an NFT Collection on LUKSO using LSP8 Identifiable Digital Asset standard. - [Create NFT Collection with a contract address as tokenId](learn/digital-assets/nft/create-nft-collection-with-lsp7-tokenId): Learn how to create a NFT collection where each NFT is a contract - [Read LSP8 NFT Metadata](learn/digital-assets/nft/read-nft-metadata): Learn how to read the metadata specific to a LSP8 NFT. - [Set LSP8 NFT Metadata](learn/digital-assets/nft/set-nft-metadata): Learn how to set the metadata of a NFT part of a LSP8 Identifiable Digital Asset Collection. - [๐Ÿ—ƒ๏ธ Retrieve Token Type](learn/digital-assets/retrieve-token-type): Retrieve LUKSO LSP token types and detect if an asset is a Token, an NFT, or a collection. - [๐Ÿช™ Create a LSP7 Token](learn/digital-assets/token/create-lsp7-token): Learn how to create your own basic fungible token on LUKSO using the LSP7 Digital Asset standard. - [Transfer Tokens / NFTs in Batch](learn/digital-assets/transfer-batch): This guide shows you how to transfer a token to multiple addresses or multiple NFTs from a collection to the same or different recipient addresses. - [Quick Start](learn/getting-started): Introduction to the LUKSO Ecosystem - why choose LUKSO? Who is LUKSO intended for? - [๐ŸŽ’ Migrate ERC1155 to LSP7 + LSP8](learn/migrate/migrate-erc1155-to-lsp7-lsp8): Step-by-step guide to migrating an ERC1155 multi-asset contract to LSP7 and LSP8 on LUKSO by splitting the collection along fungible vs identifiable shape. - [ERC20 vs LSP7: Migrate ERC20 Tokens to LUKSO](learn/migrate/migrate-erc20-to-lsp7): Learn how to migrate ERC20 tokens to LSP7 on LUKSO, including token metadata, transfer hooks, operator permissions, and ERC20 approval differences. - [ERC721 vs LSP8: Migrate NFT Collections to LUKSO](learn/migrate/migrate-erc721-to-lsp8): Learn how to migrate ERC721 NFT collections to LSP8 on LUKSO, including bytes32 token IDs, dynamic metadata, transfer hooks, and safe transfer behavior. - [๐Ÿ” Migrate from Safe to Universal Profile](learn/migrate/migrate-safe-to-universal-profile): Step-by-step guide to migrating custody from a Gnosis Safe multisig to a LUKSO Universal Profile: mapping signers to LSP6 controller permissions. - [Migrate to LUKSO](learn/migrate/migrate-to-lukso): What to consider when building on LUKSO with LSPs (LUKSO Standard Proposals)? - [Add Mini-App to a Grid](learn/mini-apps/add-mini-app-to-grid): Add a Mini-App to a Universal Profile Grid on universaleverything.io from an external website. - [Connect to a Mini-App](learn/mini-apps/connect-upprovider): How to connect your Mini-App using the UP Provider - [Setting Your Grid](learn/mini-apps/setting-your-grid): Learn how to set up LSP28 Grid on your Universal Profile โ€” encode Grid JSON, build VerifiableURI, and write on-chain with erc725.js. - [๐Ÿงช Testing Mini-Apps Locally](learn/mini-apps/testing-miniapps): How to run and test your Mini-App locally - [Deploy Multichain Contracts](learn/other-guides/deploy-multichain-contracts): Learn to deploy contracts with the same addresses on multiple blockchains using LSP16-UniversalFactory. - [Using NFC on LUKSO](learn/other-guides/NFC-NFT): Learn how NFC technology can be used on LUKSO blockchain for innovative applications. - [Run Graph Node on LUKSO](learn/other-guides/run-graph-node): A step-by-step guide to setting up a Graph Node on LUKSO using Docker. - [Use IPFS Storage](learn/other-guides/utilize-ipfs-storage): Learn how to integrate IPFS storage solutions for dApps. - [๐ŸŒ Overview](learn/overview): Introduction to the LUKSO Ecosystem - why choose LUKSO? Who is LUKSO intended for? - [Standard Detection](learn/standard-detection): Learn how to detect different smart contract interfaces and a set of metadata keys related to the LSP (LUKSO Standards Proposals) using ERC165 interface Ids and the 'SupportedStandards:{StandardName}' data key. - [Deploying a Universal Profile using LSP23 Factory](learn/universal-profile/advanced-guides/deploy-up-with-lsp23): Learn how to deploy a Universal Profile using LSP23. - [Extend a Universal Profile Functionalities](learn/universal-profile/advanced-guides/extend-profile-functionalities): Learn to enhance your Universal Profile with added functionalities in JavaScript, covering extension deployment, interface extension, and practical use cases. - [EIP-4337 and Universal Profiles](learn/universal-profile/advanced-guides/extension): Learn how EIP-4337 account abstraction relates to Universal Profiles and how to integrate the EIP-4337 extension. - [Upgrade Key Manager](learn/universal-profile/advanced-guides/upgrade-key-manager): This advanced tutorial shows how you can upgrade the `owner()` of a Universal Profile. For instance upgrading the Key Manager with a better one. - [Connect a Universal Profile](learn/universal-profile/connect-profile/connect-up): Learn how to connect your Universal Profile to a dApp (decentralized application) on LUKSO. - [SIWE Login With Universal Profiles and EIP-1271](learn/universal-profile/connect-profile/siwe): Learn how to log in with a Universal Profile using SIWE and EIP-1271 smart contract signature verification. - [Execute Batch Transactions](learn/universal-profile/interactions/batch-transactions): Discover how you can do batch transactions with your Universal Profile Browser Extension, such as transferring different tokens and NFTs to different addresses in one transaction. - [Deploy Contracts](learn/universal-profile/interactions/deploy-contracts): Learn how to deploy a contract from your Universal Profile. - [Interact with other contracts](learn/universal-profile/interactions/interact-with-contracts): This guide shows how to interact with any smart contracts programmatically from a dApp using the UP Browser Extension and ethers.js (or web3.js). - [Transfer LYX](learn/universal-profile/interactions/transfer-lyx): Learn how to write a simple dApp code to transfer LYX from your Universal Profile Browser Extension programmatically. - [Transfer Tokens & NFTs](learn/universal-profile/interactions/transfer-tokens-and-nfts): Learn how to transfer LSP7 tokens and LSP8 individual NFT tokenIds from a Universal Profile to any address on the LUKSO Blockchain, using the UP Browser Extension. - [Gasless Transactions With LSP25 Relay Calls](learn/universal-profile/key-manager/execute-relay-transactions): Learn how gasless transactions work with Universal Profiles, LSP25 Execute Relay Call, LSP6 permissions, and Transaction Relay Services. - [Get List of Permissioned Addresses](learn/universal-profile/key-manager/get-controller-permissions): Learn how to retrieve the list of controller addresses and their associated permissions from a Universal Profile on LUKSO. - [Universal Profile Permissions and Session Keys](learn/universal-profile/key-manager/grant-permissions): Learn how to grant Universal Profile permissions, session keys, app controllers, allowed calls, and allowed ERC725Y data keys on LUKSO. - [Adding Custom Data](learn/universal-profile/metadata/adding-custom-data): Universal Profiles are powered by LSP2, a standard that allows them to function as generic key-value data stores. Beyond the predefined data keys from standards like LSP3 Profile Metadata, you can define and set your own completely custom data keys. - [Edit a Universal Profile](learn/universal-profile/metadata/edit-profile): Learn how to edit the LSP3Profile Metadata of a Universal Profile using viem + wagmi, ethers.js, or web3.js. - [Read Data from your Universal Profile](learn/universal-profile/metadata/read-profile-data): Learn how to read Universal Profile metadata, ERC725Y data keys, received assets, issued assets, and smart account identity data. - [Register Issued Assets](learn/universal-profile/metadata/register-lsp12-issued-assets): Learn how to register Issued Assets under an Universal Profile. - [Get Profile's Owned Assets](learn/universal-profile/metadata/retrieve-owned-assets): Learn how to discover tokens and NFTs owned by a Universal Profile using LSP5 Received Assets and ERC725Y data keys. - [Accept & Reject Assets](learn/universal-profile/universal-receiver/accept-reject-assets): Learn how Universal Profiles can accept, reject, register, or react to incoming LSP7 tokens and LSP8 NFTs with a Universal Receiver Delegate. - [Create a Token Forwarder](learn/universal-profile/universal-receiver/create-receiver-forwarder): Create an LSP1 Universal Receiver Delegate that auto-forwards a portion of received LSP7 tokens from a Universal Profile. - [Universal Receiver](learn/universal-profile/universal-receiver/deploy-universal-receiver): This guide will teach you how to deploy and set the default implementation of the Universal Receiver Delegate (URD) used by the Universal Profile. The URD will register the addresses of the received assets and vaults and remove them on a balance equal to 0. It requires the SUPER_SETDATA and REENTRANCY permissions to interact with the ๐Ÿ†™. - [Create a Vault](learn/vault/create-a-vault): This guide might contain outdated information and will be updated soon. - [Edit Vault Data](learn/vault/edit-vault-data): This guide might contain outdated information and will be updated soon. - [Grant Vault Permissions](learn/vault/grant-vault-permissions): This guide might contain outdated information and will be updated soon. - [Interact With Contracts](learn/vault/interact-with-contracts): This guide might contain outdated information and will be updated soon. - [The Consumer Crypto Stack](learn/why-lukso/architecture/consumer-crypto-stack): The architecture patterns a consumer crypto app needs โ€” accounts, identity, permissions, gasless interaction, social primitives โ€” chain by chain, compared. - [Gasless Onboarding Patterns](learn/why-lukso/architecture/gasless-onboarding-patterns): How consumer apps sponsor user transactions: meta-transactions, paymasters, EIP-7702 delegation, and LUKSO's native relayed execution, compared head to head. - [Onchain Identity for Dapp Developers](learn/why-lukso/architecture/onchain-identity): How dapps represent users on-chain: account-as-identity, name resolution, attestations, and portable profiles compared across Ethereum, Solana, and LUKSO. - [Smart Account Permissions: LSP6 vs. the Rest of the EVM](learn/why-lukso/architecture/smart-account-permissions): How per-app, per-device, and per-function account permissions are handled across ERC-4337, Safe, EIP-7702, Solana, and LUKSO LSP6. - [Best Blockchain for Consumer Apps](learn/why-lukso/best-blockchain-for/consumer-apps): Best blockchain for consumer crypto apps: account model, identity, permissions, onboarding, and gasless UX compared across LUKSO, Ethereum, Base, and Solana. - [Best Blockchain for Creator Platforms](learn/why-lukso/best-blockchain-for/creator-platforms): Best blockchain for creator platforms: Manifold, Foundation, Zora, Farcaster, Lens, Metaplex, and LUKSO Universal Profiles compared. - [Best Blockchain for Digital Identity](learn/why-lukso/best-blockchain-for/digital-identity): Best blockchain for digital identity: ENS, Farcaster, Lens, EAS, Worldcoin, and LUKSO Universal Profiles compared on account model and profile layer. - [Best EVM Chain for Consumer Applications](learn/why-lukso/best-blockchain-for/evm-consumer-apps): Best EVM-only blockchain for consumer apps: Ethereum, Base, Arbitrum, Optimism, Polygon, and LUKSO compared once non-EVM chains are ruled out. - [Best Blockchain for Loyalty Programs](learn/why-lukso/best-blockchain-for/loyalty-programs): Best blockchain for loyalty programs: gasless redemption, portable member identity, and per-vendor permissions compared across chains. - [Best Blockchain for Mobile Apps](learn/why-lukso/best-blockchain-for/mobile-apps): Best blockchain for mobile-first crypto apps: seedless wallet UX, gasless interaction, and per-app permissions compared across chains. - [Best Blockchain for NFT Marketplaces](learn/why-lukso/best-blockchain-for/nft-marketplaces): Best blockchain for NFT marketplaces: secondary liquidity, royalty enforcement, and receiver-aware assets compared across Ethereum, Base, Solana, and LUKSO. - [Best Blockchain for Social Apps](learn/why-lukso/best-blockchain-for/social-apps): Best blockchain for social apps: portable profiles and follower graphs compared across Ethereum, Farcaster, Lens, Solana, and LUKSO. - [Build Dynamic NFTs on LUKSO](learn/why-lukso/build/dynamic-nfts): Build stateful, evolving NFTs on LUKSO with LSP8, LSP4, and ERC725Y: per-token on-chain data, no metadata server or marketplace refresh button needed. - [Extending Deployed Contracts with LSP17](learn/why-lukso/build/extending-deployed-contracts): Add new function selectors to a deployed LUKSO contract with LSP17 Contract Extension โ€” no admin upgrade key, no shared storage, no diamond-cut ceremony. - [Build Gasless Onboarding on LUKSO](learn/why-lukso/build/gasless-onboarding): Build sponsored, gasless transaction flows on LUKSO with LSP25 executeRelayCall โ€” no bundler, no EntryPoint, no paymaster contract. - [Build Profile-Native Apps on LUKSO](learn/why-lukso/build/profile-native-apps): Build apps on LUKSO where identity is the account, inventory is on-chain, and the social graph is portable โ€” LSP3, LSP5, LSP12, and LSP26. - [Build Smart Wallet UX on LUKSO](learn/why-lukso/build/smart-wallet-ux): Build session keys, scoped delegation, guardian-based recovery, and signature verification on LUKSO with LSP6, LSP11 social recovery, LSP20, ERC-1271. - [Build Token Economics on LUKSO](learn/why-lukso/build/token-economics): Build fungible token economics on LUKSO with LSP7 and LSP4 โ€” tokens that integrate with profile identity instead of sitting on a detached balance sheet. - [EOA vs. Universal Profile](learn/why-lukso/compare/eoa-vs-universal-profile): Externally owned accounts compared with LUKSO Universal Profiles across identity, permissions, recovery, signing, and gasless execution, feature by feature. - [ERC1155 vs. LSP7 + LSP8](learn/why-lukso/compare/erc1155-vs-lsp7-lsp8): ERC1155 multi-token contracts compared with LUKSO's LSP7 + LSP8 split-by-shape model: transfer hooks, metadata, batch transfers, and indexing cost. - [ERC20 vs. LSP7 Digital Asset](learn/why-lukso/compare/erc20-vs-lsp7): ERC20 vs LSP7 Digital Asset compared function by function: transfer signatures, receiver hooks, operator authorization, and on-chain metadata storage. - [ERC2535 Diamonds vs. LSP17 Contract Extension](learn/why-lukso/compare/erc2535-vs-lsp17): ERC-2535 Diamond proxies compared with LSP17 Contract Extension: storage model, upgrade authority, and permissioning for adding functions post-deploy. - [ERC4337 vs. EIP-7702](learn/why-lukso/compare/erc4337-vs-eip7702): ERC-4337 alt-mempool smart accounts vs EIP-7702 EOA delegation: infrastructure, address migration, gas sponsorship, and residual key risk compared. - [ERC4337 vs. the LSP Account Stack](learn/why-lukso/compare/erc4337-vs-lsp-stack): ERC-4337 account abstraction compared with LUKSO's native LSP0 + LSP6 + LSP20 + LSP25 account stack: transaction flow, permissions, gas sponsorship. - [ERC721 vs. LSP8 Identifiable Digital Asset](learn/why-lukso/compare/erc721-vs-lsp8): ERC721 vs LSP8 Identifiable Digital Asset compared function by function: token ID types, on-chain metadata, transfer hooks, and operator authorization. - [ERC-4337 vs EIP-7702 vs LUKSO Universal Profiles](learn/why-lukso/cross-chain/erc4337-vs-eip7702-vs-lukso): ERC-4337, EIP-7702, and LUKSO Universal Profiles compared as three answers to what a smart account should be โ€” infrastructure, security, and permissions. - [Ethereum vs Base vs LUKSO for Consumer Apps](learn/why-lukso/cross-chain/ethereum-vs-base-vs-lukso): Ethereum L1, Base, and LUKSO compared head-to-head for consumer apps โ€” account model, identity, onboarding, permissions, and social primitives. - [LUKSO vs. Major EVMs](learn/why-lukso/cross-chain/lukso-vs-major-evms): LUKSO compared with Ethereum L1, Base, Arbitrum, Optimism, and Polygon on account model, permissions, and app-layer standardization. - [Solana vs. LUKSO for Consumer Apps](learn/why-lukso/cross-chain/solana-vs-lukso): Solana vs LUKSO for consumer apps: non-EVM throughput and mobile SDKs versus a standardized EVM account, permission, and social stack. - [What is ERC20?](learn/why-lukso/erc-explainers/erc-20): ERC20 origin, the six-function ABI, its well-known approval and receiver-hook limits, and the LSP7 standard its own author built to fix them. - [What is ERC4337?](learn/why-lukso/erc-explainers/erc-4337): ERC4337 account abstraction explained: UserOperations, bundlers, EntryPoint, paymasters, and the native LSP0 + LSP6 + LSP25 alternative. - [What is ERC721?](learn/why-lukso/erc-explainers/erc-721): ERC721 origin, the NFT ABI, tokenURI rot and other well-known limits, and the LSP8 Identifiable Digital Asset standard built to address them. - [Extend a Deployed Contract Without an Upgrade Key](learn/why-lukso/problems/contract-extension): Add new functions to a deployed contract without a permanent upgrade key: LSP17 compared with proxies, diamonds, and Safe modules. - [Stop Binding Identity and Funds to a Single Private Key](learn/why-lukso/problems/eoa-key-risk): A single private key controls identity, funds, and authority in an EOA. Universal Profiles separate the account from its controllers. - [Split Fungible and Unique Assets at the Standard Level, Not the Token ID](learn/why-lukso/problems/erc1155-complexity): ERC-1155 packs fungible and non-fungible items into one contract via ID bit conventions. LSP7 and LSP8 split the semantics at the standard level. - [Stop Granting Standing Allowances to Token Contracts](learn/why-lukso/problems/erc20-approval-risks): ERC-20 approve grants standing, often unlimited, allowances. LSP7 moves scope enforcement to LSP6 account permissions instead. - [Give Every Token Transfer a Receiver Hook](learn/why-lukso/problems/erc20-transfer-hooks): ERC-20 transfer() never calls the recipient, stranding tokens sent to contracts. LSP7 fires an LSP1 universalReceiver hook on every transfer, both sides. - [Skip the Bundler Mempool for Account Abstraction](learn/why-lukso/problems/erc4337-bundler-tax): ERC-4337 account abstraction runs on a parallel mempool of bundlers and paymasters. LSP0 + LSP6 + LSP25 put relay execution on infrastructure the account already has. - [Make NFT Metadata Verifiable, Not Just Hosted](learn/why-lukso/problems/erc721-dynamic-metadata): ERC-721 tokenURI returns one string with no integrity guarantee. LSP8 stores per-token metadata as typed, verifiable ERC725Y keys. - [One Receiver Hook for Every Asset Type](learn/why-lukso/problems/erc721-safe-transfer): ERC-721 safeTransferFrom only checks one receiver interface, and the unsafe path still ships. LSP1 gives every asset type one universal hook. - [Let Token IDs Declare What They Mean, Not Just Hold a Number](learn/why-lukso/problems/erc721-tokenid-limits): ERC-721 token IDs are a bare, undeclared uint256 โ€” a hash and a counter look identical on-chain. LSP8 lets a collection declare what its ID means. - [Onboard Users Without Making Them Buy Gas First](learn/why-lukso/problems/gasless-onboarding): New users need native gas before they can do anything. LSP25 lets a relayer submit signed calls with no bundler or paymaster contract. - [Recover an Account Without a Seed Phrase](learn/why-lukso/problems/social-recovery): Recovery should be a permission graph, not a seed phrase. LSP11 lets guardians install a new controller with no residual key above the system. - [Grant a dApp Less Than the Whole Account](learn/why-lukso/problems/wallet-permissions): Connecting a dApp usually hands over the whole account. LSP6 Key Manager grants per-controller, per-call, revocable permissions on-chain. - [Create Deposit Keys](networks/advanced-guides/create-validator-keys): Learn how to create validator keys for your LUKSO node. - [Exit Validators](networks/advanced-guides/exit-validators): Learn how to exit validators on the LUKSO Network. - [Switch Between Clients](networks/advanced-guides/switch-consensus-clients): Learn how to switch consensus clients on LUKSO to help improve client diversity: switch from Prysm to Lighthouse or Teku. - [Update the Clients](networks/advanced-guides/update-clients): Discover how to check for new blockchain client versions on LUKSO. - [Update Gas Price](networks/advanced-guides/update-gas-price): Learn how to adjust the minimum gas price for validators on the LUKSO Network. - [Update the Node](networks/advanced-guides/update-the-node): Discover how to check your LUKSO CLI version and update it to the latest one. - [Update Validator Withdrawals](networks/advanced-guides/withdrawal-update): Update the LUKSO Validator withdrawals to be able to withdraw staked LYX/ LYXt. - [Become a Validator](networks/mainnet/become-a-validator): Become a LUKSO Mainnet validator using the LUKSO Deposit Launchpad and deposit 32 LYX per validator. - [Network parameters](networks/mainnet/parameters): Network Parameters for LUKSO: Execution Block Explorer, RPC providers, Chain ID. - [Running a Node](networks/mainnet/running-a-node): Run a Mainnet LUKSO node with one of the three options: Dappnode, LUKSO CLI, or Docker. - [Become a Validator](networks/testnet/become-a-validator): Become a LUKSO Testnet validator using the LUKSO Deposit Launchpad and deposit 32 LYX per validator. - [Network parameters](networks/testnet/parameters): Network Parameters for LUKSO Testnet: Execution Block Explorer, RPC providers, Chain ID, LUKSO Testnet faucet. - [Running a Node](networks/testnet/running-a-node): Run a Testnet LUKSO node with one of the three options: Dappnode, LUKSO CLI, or Docker. - [LSP14 - Ownable 2-Step](standards/access-control/lsp14-ownable-2-step): LUKSO's LSP14 - Ownable2Step: a safer smart contract ownership transfer and renounce pattern extending EIP173. - [LSP6 - Key Manager](standards/access-control/lsp6-key-manager): LUKSO's LSP6 - Key Manager for controlling a LUKSO LSP0ERC725Account. - [Universal Profiles](standards/accounts/introduction): Introduction to LUKSO Universal Profiles, smart contract accounts with metadata, permissions, asset receiving, relay execution, and recovery patterns. - [LSP0 - ERC725 Account](standards/accounts/lsp0-erc725account): LUKSO's LSP0 - ERC725 Account. - [LSP1 - Universal Receiver](standards/accounts/lsp1-universal-receiver): LUKSO LSP1 Universal Receiver Delegate. - [LSP1 - Universal Receiver Delegate](standards/accounts/lsp1-universal-receiver-delegate): LUKSO LSP1 Universal Receiver for notifying upon incoming transactions. - [LSP15 - Transaction Relayer API](standards/accounts/lsp15-transaction-relayer-api): LUKSO's Transaction Relay Service API Standard. - [LSP17 - Contract Extension](standards/accounts/lsp17-contract-extension): LUKSO's LSP17 - Contract Extension for adding smart contract functions after deployment through reusable extension contracts. - [LSP20 - Call Verification](standards/accounts/lsp20-call-verification): LUKSO's LSP20 - Call Verification for direct Universal Profile calls, smart account permission checks, and delegated call verification. - [LSP25 - Execute Relay Call](standards/accounts/lsp25-execute-relay-call): Learn about meta transactions using the LSP25 Execute Relay Call standards and how to use multi-channel nonces to dispatch transactions that are order independent or not. - [LSP26 - Follower System](standards/accounts/lsp26-follower-system): LUKSO's LSP26 Follower System for managing on-chain social graph relationships, followers, follows, and profile notifications. - [LSP9 - Vault](standards/accounts/lsp9-vault): LUKSO LSP9 - Vault for holding assets and interacting with other smart contracts. - [ERC725](standards/erc725): ERC725X operations: call, create, create2, staticcall, delegatecall, and ERC725Y Generic Data Key/Value Store. - [Complete Event Reference](standards/event-reference): Technical reference of all Solidity events defined across LUKSO Standard Proposals (LSPs), with keccak256 topic0 hashes for building indexers and event-processing systems. - [LSP16 - Universal Factory](standards/factories/lsp16-universal-factory): LUKSO's LSP16 - Universal Factory for deploying the same smart contracts to the same address across different chains. - [LSP23 Linked Contracts Factory](standards/factories/lsp23-linked-contracts-factory): LUKSO's LSP23 Linked Contracts Factory to allow the deployment of primary and secondary smart contracts that are linked together. - [Introduction](standards/introduction): Introduction to LSPs (LUKSO Standard Proposals). - [LSP10 - Received Vaults](standards/metadata/lsp10-received-vaults): LUKSO LSP10 - Received Vaults for keeping track of all the vaults owned by a smart contract. - [LSP12 - Issued Assets](standards/metadata/lsp12-issued-assets): LUKSO LSP12 - Issued Assets for keeping track of all the assets issued by a smart contract. - [LSP2 - ERC725Y JSON Schema](standards/metadata/lsp2-json-schema): LUKSO's LSP2 - ERC725Y JSON Schema for better abstraction on top of the storage of a smart contract. - [LSP3 - Profile Metadata](standards/metadata/lsp3-profile-metadata): LUKSO LSP3-Profile-Metadata: a Metadata standard that defines specific data keys to describe a profile. - [LSP5 - Received Assets](standards/metadata/lsp5-received-assets): LUKSO LSP5 - Received Assets: a standard for referencing and keeping track of received assets. - [Types of LSPs Standards](standards/standard-types): Discover the different type of LUKSO Standards Proposals: smart contracts interfaces and standardised metadata keys. - [Tokens & NFT 2.0](standards/tokens/introduction): Introduction to LUKSO Tokens (LSP7-DigitalAsset ) and NFTs 2.0 (LSP8-IdentifiableDigitalAsset). - [LSP4 - Digital Asset Metadata](standards/tokens/LSP4-Digital-Asset-Metadata): LUKSO LSP4 - Digital Asset Metadata for defining data keys to describe a Digital Asset. - [LSP7 - Digital Asset](standards/tokens/LSP7-Digital-Asset): LUKSO LSP7 - Digital Asset for fungible assets. - [LSP8 - Identifiable Digital Asset](standards/tokens/LSP8-Identifiable-Digital-Asset): LUKSO LSP8 - Identifiable Digital Asset for non-fungible assets. - [๐Ÿ” Indexer API](tools/apis/indexer-api): The Envio Indexer provides a powerful way to query any information, past events or metadata from the LUKSO blockchain. It offers flexible querying capabilities with support for filtering and real-time subscriptions. - [โ›ฝ Transaction Relay API](tools/apis/relayer-api): The LUKSO Transaction Relay Service enables gasless transactions for Universal Profiles. Registered Universal Profiles receive a free monthly gas quota of 20 million gas. - [๐Ÿ†™ Relayer User API](tools/apis/relayer-user-api): This feature is currently in private beta. If you are interested, please contact us. - [๐Ÿ†™ Additional RPC APIs](tools/apis/up-rpc-api): LUKSO's RPC API supported methods. - [EIP191Signer](tools/dapps/eip191-signerjs/Classes/EIP191Signer): hashEthereumSignedMessage - [Getting Started](tools/dapps/eip191-signerjs/getting-started): - GitHub Repository - [Getting Started](tools/dapps/erc725js/getting-started): This package is currently in the early stages of development. Feel free to report issues or feature requests through the Github repository. - [Methods](tools/dapps/erc725js/methods): Encoding - [Providers](tools/dapps/erc725js/providers): The provider by which @erc725/erc725.js will request blockchain data is set on the instantiation of the class through the configuration object. - [Schemas](tools/dapps/erc725js/schemas): For more details on schemas, see the official specification of the LSP2 ERC725 JSON schemas standard specification - [Getting Started](tools/dapps/lsp-factoryjs/getting-started): @lukso/lsp-factory.js makes it easy to deploy smart accounts and tokens on LUKSO (and other EVM chains). Instead of manually deploying and wiring up multiple contracts, the factory handles everything in a single call: - [Getting Started](tools/dapps/lsp-utils/getting-started): This package is currently in the early stages of development. Please use it for testing or experimentation purposes only. - [IPFS](tools/dapps/lsp-utils/IPFS): validateIpfsUrl - [LSP12IssuedAssets](tools/dapps/lsp-utils/LSP12IssuedAssets): addIssuedAssets - [LSP23LinkedContractsFactory](tools/dapps/lsp-utils/LSP23LinkedContractsFactory): deployUniversalProfile - [LSP2ERC725YJSONSchema](tools/dapps/lsp-utils/LSP2ERC725YJSONSchema): decodeAssetUrl - [LSP3ProfileMetadata](tools/dapps/lsp-utils/LSP3ProfileMetadata): getProfileMetadata - [LSP4DigitalAssetMetadata](tools/dapps/lsp-utils/LSP4DigitalAssetMetadata): addDigitalAssetCreators - [LSP5ReceivedAssets](tools/dapps/lsp-utils/LSP5ReceivedAssets): generateReceivedAssetKeys - [LSP6KeyManager](tools/dapps/lsp-utils/LSP6KeyManager): createValidityTimestamp - [API Reference](tools/dapps/up-modal/api-reference): setupLuksoConnector - [Customization](tools/dapps/up-modal/customization): The modal supports visual customization via CSS variables. Set them on :root or any ancestor of the `` element. - [Getting Started](tools/dapps/up-modal/getting-started): The @lukso/up-modal package provides a connect modal for LUKSO Universal Profiles. It offers a responsive connection dialog with support for desktop and mobile, automatically detecting UP Mobile (via WalletConnect), UP Browser Extension (via EIP-6963), and other EOA wallets. Modal works with apps that use Wagmi, a library to interact Ethereum. Wagmi handles the underlying connection management, so you can use its APIs alongside the modal. - [Internationalization](tools/dapps/up-modal/internationalization): The modal ships with English (en_US) translations by default. You can customize any text string or add support for other languages. - [Getting Started](tools/dapps/up-provider/getting-started): The @up-provider library lets dApps run as mini-apps on Grid and allows parent applications to one-click-connect to your mini-app. - [Grid Providers](tools/dapps/up-provider/grid-providers): Developers can use Grid Providers to host and connect mini-apps on their pages. - [viem & wagmi](tools/dapps/viem-wagmi/getting-started): Use viem and wagmi with LUKSO โ€” native chain support, Universal Profile interactions, and LSP contract integration. - [๐Ÿญ Node Docker Factory](tools/docker-factory): Docker Factory is a web app that allows you to easily create a custom docker-compose file to connect to a LUKSO network. Simply select your desired clients, add the additional options, copy your generated docker-compose file and run it. For more information visit the Docker Factory website. - [๐Ÿ” Explorers & Debug Tools](tools/explorers-debuggers): Block Explorers - [๐Ÿชข Integrations](tools/integrations): โ›“๏ธ Looking to integrate LUKSO? or already integrating? - [Constants](tools/lsp-smart-contracts/constants): The constants.ts file exposes many useful variables. - [Contracts ABI](tools/lsp-smart-contracts/contracts-abi): You can import the LUKSO smart contracts ABIs from the /artifacts folder: - [Getting Started](tools/lsp-smart-contracts/getting-started): - GitHub: lukso-network/lsp-smart-contracts - [Solidity Contracts](tools/lsp-smart-contracts/solidity-contracts): The solidity sources of the LUKSO smart contracts are available in the /contracts folder. - [Working with LSPs on Remix IDE](tools/lsp-smart-contracts/working-with-remix): This guide will walk you through the process of building and deploying LSP smart contracts using Remix IDE. - [๐Ÿ”‘ Authorize Controller](tools/management-tools/authorize): Authorize Controller Tool - [Tools](tools/tools): Explore the different tools available for developers to build dApps, smart contracts and protocols more easily on LUKSO.