Kevo Docs

Smart Accounts (EIP-7702)

Kevo turns each user's embedded EOA into a smart account using EIP-7702. The same address gains execute() and validateUserOp() capabilities, unlocking ERC-4337 features like gas sponsorship — without changing the user's wallet address.

What you get

Same address

The user's EOA keeps its existing address and balance. EIP-7702 installs delegate code at that address — no migration, no new wallet.

ERC-4337 ready

Once delegated, the EOA can be invoked through the EntryPoint, enabling gas sponsorship, batched calls, and any other 4337 feature.

How it works

EIP-7702 lets an EOA authorize a contract address to provide its code. The signed authorization is included in a type-4 transaction by the sponsor, and from that point on the EOA executes the delegate's bytecode for any incoming call.

Kevo uses Pimlico's Simple7702Account as the default delegate. It exposes a single execute(target, value, data) entrypoint that can only be called by the EntryPoint or by the account itself.

Default delegate

text
Simple7702Account: 0xe6Cae83BdE06E4c305530e199D7217f42808555B
EntryPoint v0.8:   0x4337084d9e255ff0702461cf8895ce9e3b5ff108

Enable smart accounts

Smart accounts are off by default. Toggle them in the project's features JSON via the portal or the Admin API. delegateImpl defaults to simple7702.

json
{
  "smartAccounts": {
    "enabled": true,
    "delegateImpl": "simple7702"
  }
}

Lifecycle

The first sponsored transaction from a user installs the delegation: the sponsor broadcasts a type-4 transaction with the user's signed 7702 authorization, then calls EntryPoint.handleOps([userOp], beneficiary) in the same flow.

From the second transaction onward Kevo detects the existing delegation (code starting with 0xef0100) and skips the auth step, dropping back to a normal type-2 transaction containing only the handleOps call.

Smart accounts and gas sponsorship are independent flags but typically used together. Enabling sponsorship without smart accounts has no effect — the EntryPoint cannot route calls to a plain EOA without delegate code.