Skip to main content

Onboard Users Without Making Them Buy Gas First

A brand-new EOA can't do anything until it holds native currency, because an EOA signs and pays in the same step. Every popular fix for this β€” trusted forwarders, ERC-4337 paymasters, third-party relayer SDKs β€” adds a layer of infrastructure the builder has to run, rent, or trust. LSP25 puts relay execution on the LSP6 Key Manager that already governs every Universal Profile: a controller signs a payload, a relayer submits it to the Key Manager and pays gas, and executeRelayCall verifies the signature and the controller's permissions before executing on the account β€” no bundler, no EntryPoint, no separate mempool.

Before / after​

ArchitectureWhat it requiresSponsorship model
ERC-2771 trusted forwarderevery recipient contract inherits ERC2771Contextforwarder pays; contracts trust the forwarder
ERC-4337 + paymasterEntryPoint deposit, bundler, validatePaymasterUserOpa paymaster contract sponsors per UserOperation
Third-party relayers (Gelato, Biconomy, Defender)vendor SDK integrationvendor-hosted infrastructure
LSP25 executeRelayCalla signed payload plus a nonce channela relayer submits to the Key Manager β€” no bundler

Why sponsorship needs a separate signer and payer​

A new user needs native currency before they can do anything with an EOA, because signing and paying are the same act. Any sponsorship model has to add a layer that separates who signs from who pays β€” and every popular pattern does that by adding infrastructure: a trusted forwarder you have to trust, an ERC-4337 EntryPoint and bundler you have to run or rent, or a third-party relayer with its own SDK and its own vendor lock-in. The cost lands on the builder, not on the spec.

What people try today​

EIP-2771 trusted forwarders let contracts extract the real msg.sender from calldata. It's cheap, but every protected contract has to be built forwarder-aware and has to trust that specific forwarder. ERC-4337 plus a paymaster is powerful but means shipping or renting the full UserOperation pool, bundler, and EntryPoint stack. Turnkey relayers like Gelato, Biconomy, and Defender wrap one of the above into a convenient SDK, at the cost of vendor coupling. EIP-7702 lets an EOA delegate to smart-account code β€” a delegation that persists until replaced or cleared, not just for one transaction β€” and a plain transaction sender can already cover gas for it, though matching ERC-4337's exact sponsorship UX still means pairing it with a paymaster.

How LSP25 keeps it native, with no new infrastructure​

LSP25 defines executeRelayCall on the LSP6 Key Manager β€” the same contract that already checks permissions for every direct call on the profile. A controller signs a payload β€” with a nonce channel for ordering and replay protection β€” and a relayer submits it to the Key Manager, which verifies the signature, confirms the signer holds the EXECUTE_RELAY_CALL permission alongside whatever permission the payload itself needs, and then executes it on the account. There's still no bundler, no EntryPoint, no separate mempool: gasless execution is one function call on infrastructure every Universal Profile already has, not a new protocol layer bolted on top. Because the Key Manager checks the same LSP6 permissions it always would, the controller signing the relay payload can only authorize what its permissions allow, so the sponsoring relayer can never escalate the controller's authority just by paying for gas.

Sponsorship without extra trust

A relayer that pays gas through executeRelayCall never gains more authority than the signing controller already had β€” the Key Manager checks LSP6 permissions (including EXECUTE_RELAY_CALL) on every relayed call, not bypassed by it.

Related reading: ERC-4337's bundler tax Β· Wallet permission scoping Β· Building gasless onboarding Β· Gasless onboarding patterns Β· Execute relay transactions