Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

EIP-7702

Stable supports EIP-7702, which allows an EOA to set its account code to an existing smart contract. EOAs keep their original address and private key while executing the delegate's logic.

Transaction format

EIP-7702 uses transaction type 0x04 with an authorizationList field. Each authorization designates a delegate contract whose code the EOA executes for that transaction.

{
  type: 4,
  to: eoa.address,
  data: delegateCallData,
  authorizationList: [signedAuthorization],
  maxPriorityFeePerGas: 0n, // always 0 on Stable
  // ... standard EIP-1559 fields
}

The authorization carries:

  • chainId: must match the target chain.
  • address: the delegate contract address.
  • nonce: the authorization nonce (separate from the transaction nonce).

Wallets and libraries that support EIP-7702 handle the authorization format automatically.

Tooling

  • ethers.js: wallet.signAuthorization({ chainId, address, nonce }) produces the signed authorization for inclusion in the authorizationList.
  • viem: use signAuthorization with a walletClient, then pass the result to sendTransaction.
  • Hardhat / Foundry: standard EIP-7702 transaction format works when your toolchain version supports the Pectra hardfork.

Next recommended