Skip to main content

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​

StandardRole
LSP25executeRelayCall on the account's Key Manager
LSP6Constrains what the signing controller may authorize (requires EXECUTE_RELAY_CALL for relayed calls)
LSP20Lets 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.

Nonce channels

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