LUKSO Expert
Complete knowledge base for building on LUKSO — the blockchain for creative economies, digital identity, and new social standards.
Quick Facts
- Chain ID: 42 (mainnet) / 4201 (testnet)
- Native token: LYX
- Consensus: Proof of Stake (32 LYX per validator)
- EVM compatible: Yes, unmodified Ethereum execution layer
- Unique: Universal Profiles (smart contract accounts) instead of EOAs
- Founder: Fabian Vogelsteller (also created ERC-20 and ERC-725)
Core Concepts
LUKSO extends Ethereum with LSP standards (LUKSO Standard Proposals) that enable:
- Smart accounts (Universal Profiles) with built-in permissions, metadata, and social features
- Flexible tokens (LSP7/LSP8) with safety features like
forceparameter and universal receiver hooks - Gasless transactions via relay service (LSP25)
- On-chain social graph via followers system (LSP26)
- Profile customization via The Grid (LSP28)
Architecture Overview
Universal Profile (LSP0/ERC725Account)
├── KeyManager (LSP6) — permission layer
│ ├── Controllers — addresses with specific permissions
│ └── Allowed calls/addresses — fine-grained access control
├── Profile Data (LSP3) — name, description, avatar, links
├── Universal Receiver (LSP1) — hooks for incoming transactions
├── Owned Assets (LSP5) — registry of tokens/NFTs owned
├── Issued Assets (LSP12) — registry of tokens/NFTs created
└── The Grid (LSP28) — customizable profile layout
Reference Files
Load these based on what you need:
LSP Standards (references/lsp-standards.md)
Complete reference for ALL LSP standards (LSP0-LSP28+). Includes interfaces, function signatures, and implementation details. Read when working with any specific LSP or needing to understand the standards architecture.
Developer Patterns (references/dev-patterns.md)
Practical code examples and implementation guides. Covers UP creation, token operations, permissions, gasless transactions, and common pitfalls. Read when writing code or debugging LUKSO-specific issues.
Ecosystem (references/ecosystem.md)
Projects, team, community channels, grants, and chain infrastructure. Read when answering ecosystem questions or looking for project information.
Contracts & Repos (references/contracts-and-repos.md)
Deployed contract addresses, GitHub repositories, NPM packages, and API endpoints. Read when looking up addresses, ABIs, or integration endpoints.
Key Contract Addresses (Mainnet)
| Contract | Address |
|---|---|
| LSP26 Follower System | 0xf01103E5a9909Fc0DBe8166dA7085e0285daDDcA |
| Envio GraphQL | https://envio.lukso-mainnet.universal.tech/v1/graphql |
Full address list in
references/contracts-and-repos.md
Common Operations Quick Reference
Resolve username to UP address
# Envio GraphQL
query { Profile(where: {name: {_eq: "username"}}) { id name } }
Check UP count
query { Profile_aggregate { aggregate { count } } }
Follow a profile (LSP26)
const LSP26 = "0xf01103E5a9909Fc0DBe8166dA7085e0285daDDcA";
const calldata = lsp26Contract.methods.follow(targetAddress).encodeABI();
await universalProfile.methods.execute(0, LSP26, 0, calldata).send({from: controller});
Important Gotchas
-
forceparameter (LSP7/LSP8): Set totrueto send tokens to any address. Set tofalse(default) to only send to UPs with a Universal Receiver — prevents accidental sends to EOAs or contracts that can't handle them. -
LSP6 Permissions: Permissions are bitmask-based. Common mistake: granting
CALLpermission but forgettingEXECUTE_RELAY_CALLfor gasless transactions. -
ERC725Y data encoding: Use
@erc725/erc725.jsfor encoding — manual encoding is error-prone, especially for VerifiableURI and array types. -
Gas estimation: UP transactions go through KeyManager proxy, so gas estimates can be off. Add 20-30% buffer.
Developer Resources
- Docs: https://docs.lukso.tech
- GitHub: https://github.com/lukso-network
- Medium: https://medium.com/lukso
- Discord: https://discord.gg/lukso
- Testnet faucet: https://faucet.testnet.lukso.network