# EIP-3074: AUTH and AUTHCALL Opcodes

Source: https://www.eipsfordesigners.com/standards/EIP-3074
Agent brief: https://www.eipsfordesigners.com/standards/EIP-3074/agent.md
Machine-readable JSON: https://www.eipsfordesigners.com/api/standards/EIP-3074
Last reviewed: 2026-04-05
Last updated: 2026-04-05

| Field | Value |
| --- | --- |
| Status | Draft |
| Chain | ethereum |
| Category | Transaction Friction |
| Journey stages | Executing Transactions |
| Detailed guide | Yes |
| Official specification | https://eips.ethereum.org/EIPS/eip-3074 |
| Discussion search | https://ethereum-magicians.org/search?q=EIP-3074 |

## UX Impact

Predecessor to EIP-7702: introduced AUTH and AUTHCALL opcodes letting users sign an authorization so an 'invoker' contract could act on their behalf — enabling sponsored transactions, batching, and delegation without deploying a smart wallet. Superseded by EIP-7702 before mainnet deployment, so this guidance is historical: build new flows on EIP-7702, but the invoker/authorization mental model and its sponsored-transaction UX patterns informed 7702's design.

## Summary

EIP-3074 introduced AUTH and AUTHCALL opcodes, letting users authorize a contract (invoker) to act on their behalf. Users sign an authorization message, and the invoker can then make calls as if it were the user's address. This enables sponsored transactions, batch operations, and delegation without deploying a smart wallet.

## For Designers

- You can design UI that delivers authorize an invoker to act on your behalf.
- You can collapse multi-step actions into one confirmation users understand.
- You can design UI that delivers invoker submits tx, can pay gas for user.

## Applicability

### When to Use

- Your product addresses: eOAs couldn't delegate actions.
- Your product addresses: each operation needed separate transaction.
- The flow should deliver: authorize an invoker to act on your behalf.
- You are designing a authorize invoker experience with visible states and recovery paths.

### When to Avoid

- Show invoker address, name, verification status.
- Prominent authorization manager with revoke options.
- Clear list of capabilities being granted.

## Problems It Solves

### EOAs couldn't delegate actions

Impact: critical

Old way: Every action required direct transaction from EOA

New way: Authorize an invoker to act on your behalf

### Each operation needed separate transaction

Impact: high

Old way: Approve, then swap, then stake = 3 transactions

New way: Authorize invoker, batch everything in one call

### Users always paid their own gas

Impact: high

Old way: Need ETH in wallet before any action

New way: Invoker submits tx, can pay gas for user

### No way to revoke stuck approvals atomically

Impact: medium

Old way: Multiple transactions to clean up approvals

New way: Invoker can batch multiple revokes in one call

## Anti-Patterns

### Not showing invoker details

Severity: critical

User authorizing unknown contract is dangerous

Instead: Show invoker address, name, verification status

### No way to revoke authorizations

Severity: critical

Users can't secure their account if invoker compromised

Instead: Prominent authorization manager with revoke options

### Hiding what invoker can do

Severity: high

User doesn't understand scope of authorization

Instead: Clear list of capabilities being granted

### Not validating invoker trust

Severity: high

Users might authorize malicious invokers

Instead: Show trust signals, audit status, usage stats

### Persistent authorizations without expiry

Severity: medium

Old authorizations become security risks

Instead: Session-based or time-limited authorizations

## UI Components

### InvokerAuthorization

Request authorization for an invoker
States: requesting, reviewing, authorized, rejected
Props: invokerAddress, invokerName, permissions[], onAuth, onReject

### AuthorizationManager

View and manage active authorizations
States: loading, has-auths, no-auths
Props: authorizations[], onRevoke, onRevokeAll

### InvokerTrustScore

Display trust signals for an invoker
States: verified, unverified, warning
Props: invokerAddress, signals[], score

### BatchTransactionPreview

Show operations that will execute via AUTH
States: loading, ready, executing
Props: operations[], gasSponsored, onExecute

## On Monad

### Fast Batch Execution

Ethereum: Batch via AUTH still takes 12+ seconds

Monad: Sub-second execution of entire batch

Design implication: Batch operations feel instant, great UX

### Gas Sponsorship Value

Ethereum: Sponsored gas saves users real money

Monad: Gas already cheap, sponsorship less dramatic

Design implication: Emphasize convenience over cost savings

### EIP-7702 Overlap

Ethereum: EIP-3074 and EIP-7702 serve similar purposes

Monad: Both available, 7702 often preferred for permanence

Design implication: Guide users to appropriate solution for their needs

## UX Patterns

### Authorize Invoker

Grant an invoker permission to act on your behalf

User flow:

- dApp requests authorization
- Wallet shows invoker details
- Permissions clearly listed
- User reviews and approves
- Signed auth message returned

Mockup registry key: `concept/physical-link` (React UI on the live standard page).

### Sponsored Batch Transaction

Execute multiple operations with sponsored gas

User flow:

- User already authorized invoker
- Batch transaction prepared
- All steps shown clearly
- Gas sponsored by invoker
- One click executes all

Mockup registry key: `generic/token-approval` (React UI on the live standard page).

### Active Authorizations

View and revoke active invoker authorizations

User flow:

- User views active authorizations
- See which invokers are authorized
- Usage stats for each
- Individual or bulk revocation
- Clear authorization audit trail

Mockup registry key: `concept/bundled-defi` (React UI on the live standard page).

### Invoker Trust Verification

Help users verify invoker trustworthiness

User flow:

- User considering authorization
- Check invoker verification status
- Review trust signals
- Access audit and source
- Make informed decision

Mockup registry key: `concept/verify-safety` (React UI on the live standard page).

## Related Standards

- EIP-7702: EIP-7702 is successor/alternative providing similar capabilities with different tradeoffs

- ERC-4337: Account abstraction provides another approach to sponsored/batched transactions

- ERC-2771: Meta transactions offer simpler sponsorship without invoker pattern

- EIP-712: AUTH messages use EIP-712 for structured signing
