Build Gasless Onboarding on LUKSO
Gasless UX is fundamentally a separation between the signer and the payer. LSP25 puts that separation on the Key Manager every profile already has: a controller signs a payload via executeRelayCall(signature, nonce, validityTimestamps, payload), a relayer submits it to the Key Manager and pays the gas, and the Key Manager verifies the signature and the controller's LSP6 permissions β including EXECUTE_RELAY_CALL β before executing on the account. No parallel UserOperation mempool, no EntryPoint singleton, no separate paymaster contract holding its own deposit β sponsored execution is a native function call on infrastructure the profile already has.
The stackβ
| Standard | Role |
|---|---|
| LSP25 | executeRelayCall on the account's Key Manager |
| LSP6 | Constrains what the signing controller may authorize (requires EXECUTE_RELAY_CALL for relayed calls) |
| LSP20 | Lets controllers call the account directly inline when relay isn't needed |
Relayers can be self-hosted against LSP15's standardized relayer API, or mocked for testing via github.com/lukso-network/tools-mock-relayer.
When this vertical fitsβ
You're onboarding users who don't already hold LYX, and you want to sponsor the first N actions, an entire app session, or just the expensive operations (recovery, large setData calls) β without standing up and operating a bundler.
Use higher nonce channels for parallel session streams instead of serializing every relayed call through channel 0 β this lets multiple concurrent flows (e.g. one per device or app) submit relay calls without blocking on each other's ordering.
Related reading: Gasless onboarding without a paymaster Β· ERC-4337's bundler tax Β· ERC-4337 vs the LSP account stack Β· Gasless onboarding architecture patterns