
Current as of 2026-10-16.
POST_TX frame to inspect transaction changes and events.
The Ethereum Foundation has proposed native transaction assertions as a way for on-chain code to inspect a transaction’s net state changes after its actions run. An assertion compares the resulting state with a rule; if the rule fails, the transaction’s execution actions are reverted. The rule is included and signed alongside those actions.
This addresses a gap between signing a request and controlling its result. A valid signature authorizes a transaction, but its effects can depend on the code and state present when it executes. Existing defenses, such as transaction simulation and contract checks, have limits: simulation can be based on state that changes before inclusion, while contract checks can inspect only information they are designed to access.
The Foundation presents EIP-7906 as one possible design. It adds a read-only POST_TX frame after transaction actions. Three opcodes—TXTRACE, TXDIFF and EVENTDATACOPY—let assertion code inspect state changes and emitted events. The proposal is a candidate implementation; its inclusion in an Ethereum upgrade has not been decided.
The key idea is to evaluate the net result after the actions have run. For example, if a storage slot is written several times during execution but ends with its original value, it does not represent a net change. An assertion can compare starting and final values against its rule. The Foundation describes possible conditions such as receiving at least a specified amount, keeping spending below a cap, limiting new token approvals, or preserving account control logic. It can also restrict the allowed set of changes.
The rule travels with the actions in the signed transaction. That makes the intended condition part of what is authorized, while the post-transaction check evaluates whether execution met it. The model is meant to address cases where the action a user signed does not, by itself, guarantee an acceptable outcome once the transaction encounters the code and state present at execution time.
Section source: How native transaction assertions could enforce a transaction’s final outcome; EIP-7906: Transaction Assertions via State Diff Opcode; Ethereum Foundation Explores Rules to Check Transaction Results.

For business and technical teams, the main potential benefit is the ability to check a transaction’s outcome, rather than only the action a user signed. An assertion could require a minimum amount received, cap spending, limit new token approvals, preserve account control logic, or allow only specified changes. This could make certain workflows easier to constrain when the expected result can be expressed as a rule over the transaction’s state changes.
The conditions can cover more than a single balance. The Foundation describes checking net changes to balances, storage and code, newly deployed contracts, and emitted events. This matters because a workflow’s acceptable result may depend on several kinds of effects. A rule that checks only one value cannot establish whether other changes also stayed within acceptable bounds.
That may be useful in applications where a transaction builder, wallet, or delegated process prepares actions on someone’s behalf. Teams could define acceptable results as part of the transaction policy and reject execution when the observed result falls outside that policy. This is a potential safeguard, not a guarantee that an application’s entire workflow is safe.
The boundary matters. Assertions cover the transaction that carries them on one chain. They do not control later effects in another transaction or chain, and they cannot undo changes made in the transaction’s validation prefix. In the EIP-7906 draft, a POST_TX failure reverts the execution body but leaves the transaction included, with a failed receipt and gas payment intact.
The timing of the check is central to this design. EIP-7906 places the read-only POST_TX frame after transaction actions, so it can inspect the outcome at the end without changing state itself. If the assertion fails, the execution body is reverted. The draft distinguishes this failure from a transaction that is never included: the transaction remains included, the failed frame has a failed receipt, and gas is still paid.
Section source: How native transaction assertions could enforce a transaction’s final outcome; EIP-7906: Transaction Assertions via State Diff Opcode.

The central design question is who defines the rule. A technically complete check can still permit a harmful result if a compromised frontend supplies a permissive assertion. For the rule to add meaningful protection, it needs to come from independently approved user intent, a standing account policy, or protocol logic that the compromised component cannot change.
The rule’s source and the rule’s coverage are separate concerns. A well-sourced rule can still check too little; a broad check can still encode an outcome the user did not want. Teams need to determine both what conditions represent the intended result and whether the component preparing the transaction can weaken or replace those conditions.
Enforcement also needs to be explicit. EIP-7906 does not require every transaction to include an assertion. A wallet must include the intended rule in the transactions it builds. A protocol that depends on a particular rule must reject calls that omit it or provide an incorrect one. Otherwise, the assertion is optional and can be left out.
The Foundation’s description makes this distinction important for both personal and protocol use. A wallet can require an assertion in the transactions it constructs for its user. A protocol that protects a function with a required assertion must check that the call includes that precise rule; simply supporting the EIP would not make the requirement apply automatically.
Teams should also account for failure semantics and coverage. A failed assertion does not mean the transaction disappears without cost: the draft leaves it included and charges gas. And an assertion that checks only selected balances or approvals may miss other consequential changes. The EIP draft warns that incomplete assertions can create a false sense of safety.
For teams designing on-chain workflows, this points to a practical review: define the intended outcome in testable terms, identify who can change the rule, and check which state changes the rule actually covers. The outcome should be considered in the context of the transaction carrying the assertion, since later effects in another transaction or chain are outside its control. If that work involves application or contract design, IT Finance’s smart contract development service is a relevant place to discuss implementation requirements.
Section source: How native transaction assertions could enforce a transaction’s final outcome; EIP-7906: Transaction Assertions via State Diff Opcode.
Native transaction assertions could give wallets and applications a way to enforce signed conditions against a transaction’s final on-chain effects. Their practical value depends on trusted rule-setting, comprehensive checks, and explicit enforcement, while the proposal remains subject to implementation and adoption.
No. They can check specified outcomes, but the rule must be trustworthy and complete. Assertions also cannot control later effects in another transaction or chain.
The draft says the transaction’s execution body is reverted, while the transaction remains included with a failed receipt and gas payment. The failure therefore does not remove the transaction from the block or make its gas cost disappear.
No. EIP-7906 does not require one. Wallets would need to include the intended assertion, and protocols relying on a rule would need to reject calls that omit or misstate it.
The Foundation describes conditions over net state changes, including minimum amounts received, spending caps, limits on new token approvals, preservation of account control logic, and specified sets of allowed changes. EIP-7906 is one proposed way to inspect state changes and emitted events after the transaction actions run.
This article was prepared with the support of AI tools and verified against the public sources listed above.