EIP-8272:Recent Roots for Frame Transactions

Discussion topic for EIP-8272: Recent Roots for Frame Transactions · Pull Request #11726 · ethereum/EIPs · GitHub

Abstract

EIP-8141 frame transactions can reference recent roots without reading mutable storage during validation. A root source writes roots to a system contract, with each root keyed by (source_id, slot), where source_id derives from the writer address and a salt. A frame transaction may declare recent root references of the form:

(source_id, slot, root)

Before frame execution, clients check each reference against the transaction pre-state. The check succeeds only if the named root is stored for the named source and slot, and the slot is still recent. Validation code can then read the verified reference through transaction introspection.

Motivation

EIP-8141 validation must not read arbitrary storage controlled by another account or application in the public mempool. Some validation rules still need to depend on recent application state, such as privacy tree roots, wallet authorization roots, or account validation roots.

Recent root references let a transaction explicitly name recent roots in its signed transaction envelope. Each reference maps to one system-contract storage key and can be checked before validation code runs.

Privacy applications, for example, keep a tree of commitments and prove spends against a recent tree root. With this EIP, the application writes roots by slot, and spend transactions reference one of those roots directly instead of reading the application’s changing tree state during validation.

3 Likes