problem · erc-4337 alternatives

ERC-4337 alternatives

The ERC-4337 stack is a parallel mempool.

ERC-4337 LSP·0 LSP·6 LSP·25 LSP·20

UserOperations, EntryPoint, bundlers, paymasters. Most teams don't want to run any of that.

ERC-4337 handleOps(UserOperation[], beneficiary)
separate mempool bundler stack paymaster
LSP·0+6+25 executeRelayCall(sig, nonce, validity, payload)
account is the entrypoint no bundler
LUKSO route

If you're dealing with ERC-4337 alternatives, the LUKSO route is LSP0 + LSP6 + LSP25 + LSP20. A Universal Profile is a contract account composed from LSP0 + LSP6 + LSP25 + LSP20. A controller signs, a relayer submits, the profile validates via LSP6 and executes — no EntryPoint hop, no UserOperation envelope, no bundler. msg.sender at downstream targets is the account itself, and permissions live in a single standard vocabulary instead of per-account validator modules.

Why this breaks

ERC-4337 ships account abstraction over a transaction system designed for EOAs. The price is a parallel infrastructure: UserOperations, EntryPoint contracts, bundlers, paymasters, signature aggregators. Most product teams do not want to run or rent any of that.

The other catch: ERC-4337 accounts are smart accounts, but the value model still runs through the EntryPoint. Debugging, tracing, and gas accounting all sit on a separate plane from regular tx flow. Block explorers show handleOps, not your function call.

What people try

Safe + relayer

Safe is a smart account contract. A relayer submits the multisig exec call. No UserOperation, no bundler. Solid model, just less standardized than ERC-4337.

EIP-7702

EOAs temporarily delegate to a contract for one transaction, getting smart-account semantics without becoming a contract. Sponsorship still needs a paymaster.

Custodial backends

Sign user actions server-side. Simplest UX, weakest custody story.

App-specific forwarders

EIP-2771 forwarders narrow to a single product. Hard to share across protocols.

How LSP solves it

A Universal Profile is a contract account composed from:

  • LSP0 — the ERC-725 account contract itself
  • LSP6 — Key Manager permissions on every controller
  • LSP25executeRelayCall for sponsored execution
  • LSP20 — call verification so the account validates calls inline

There is no bundler and no EntryPoint. A controller signs, a relayer submits, the profile validates via LSP6 and executes. Because the relayed call goes through the account, LSP6 permissions still apply: the controller signing the relay payload can only authorize what its permissions allow.

The structural tradeoff: ERC-4337 separates the account from its validator. You can swap the validator independently of the account, mix validators per UserOperation, and the EntryPoint is the shared coordination plane. That decoupling is the model’s strength — and its cost in extra hops, non-standard permission shapes, and the parallel mempool.

The LSP stack fuses the account and its policy. LSP6 vocabulary is the permission language, LSP20 verifies calls inline, LSP25 handles sponsored execution as a function on the account. The cost is that extending behavior means adding LSP17 extensions or composing new LSPs — not hot-swapping a validator.

continue at the source