EIPs
EIP-2930 — Optional access lists
The first typed transaction (0x01) and the access-list data structure every later type (1559, 4844, 7702) reuses. An access list pre-declares the (address, storage_keys) tuples a transaction will touch, trading a calldata surcharge for cheaper post-Berlin opcode costs.
import {
accessListSchema,
accessListEntrySchema,
transaction2930UnsignedSchema,
transaction2930SignedSchema,
ACCESS_LIST_ADDRESS_COST,
ACCESS_LIST_STORAGE_KEY_COST,
FORK_BLOCK,
} from "@ethernauta/eip/2930"; Surface
Access list
| Export | Purpose |
|---|---|
accessListEntrySchema, AccessListEntry | One (address, storageKeys[]) tuple. |
accessListSchema, AccessList | The full list. |
Used by every typed transaction in the library: 1559, 4844, 7702 all import this schema from here.
Wire format
| Export | Purpose |
|---|---|
transaction2930UnsignedSchema, Transaction2930Unsigned | Type-1 pre-signing payload. |
transaction2930SignedSchema, Transaction2930Signed | Type-1 signed envelope. |
Spec constants
| Export | Value | Source |
|---|---|---|
ACCESS_LIST_ADDRESS_COST | 2400n | Per-address gas cost. |
ACCESS_LIST_STORAGE_KEY_COST | 1900n | Per-storage-key gas cost. |
FORK_BLOCK | 12244000n | Berlin activation. |
Where this used to live
The access-list schema and the type-1 codec previously sat under @ethernauta/eth/core/transaction/. They moved here as part of the rule “if the symbol is defined in the EIP paper, it lives in packages/eip/src/<n>/“.
Knock-on effect: every other typed-tx schema in this monorepo now imports accessListSchema from @ethernauta/eip/2930 instead of re-declaring it. Single source of truth for the access-list shape.
When dapps need this
- Building access lists.
eth_createAccessList(still in@ethernauta/eth) returns anAccessList. The schema validates the response. - Composing typed transactions. When you construct a 1559 or 4844 transaction by hand, the
accessListfield is this schema’s type. - Cost modeling. The two cost constants let you predict the calldata premium an access list adds before deciding whether to include one.
See also
- EIP-1559 — type-2 transactions consume
accessListSchema. - EIP-4844 — type-3 (blob) transactions also consume it.
- EIP-7702 — type-4 (set-code) transactions too.
- @ethernauta/eth → eth_createAccessList.