Skip to content

experiment(amsterdam): prove exact SSTORE write prepayment - #2

Draft
chugarchugarr wants to merge 11 commits into
forks/amsterdamfrom
experiment/glamsterdam-write-prepayment
Draft

experiment(amsterdam): prove exact SSTORE write prepayment#2
chugarchugarr wants to merge 11 commits into
forks/amsterdamfrom
experiment/glamsterdam-write-prepayment

Conversation

@chugarchugarr

@chugarchugarr chugarchugarr commented Aug 26, 2026

Copy link
Copy Markdown
Owner

Experimental execution-semantics proof for glamsterdam-write-prepayment, pinned to forks/amsterdam@20f7f6271a720091e5fea0a82e7bc802866ae36a.

The branch exposes four independently named executable assertions:

  1. OSAKA_PASS — one parent gives a child a fixed CALL budget; the child changes an existing nonzero slot.
  2. AMSTERDAM_FAIL — identical child bytecode and budget run out of gas after EIP-8038 reprices the warm first-change SSTORE from 2,900 to 10,100.
  3. AMSTERDAM_VOUCHER_PASS — a transaction-boundary prepayment for the exact 7,200 write delta restores the child-frame requirement to 2,900.
  4. AMSTERDAM_TOTAL_CHARGE_PRESERVED — the normal and prepaid storage-resource paths both charge 12,100:
    • normal: 2,100 cold access + 10,000 write;
    • prepaid: 2,000 access-list prepayment + 7,200 write delta + 100 warm access + 2,800 legacy write.

Prototype representation:

  • three domain-separated access-list markers contribute 6,000 of the write delta;
  • a 1,200 intrinsic remainder is charged at the transaction boundary;
  • Amsterdam records one (address, storage key) prepayment in the transaction environment;
  • SSTORE consumes it once, including across an OOG/reverted child attempt.

The marker representation is only a proof vehicle. It is not a proposed final transaction wire format. Encoding overhead is isolated from the conserved 12,100 storage-resource charge.

Containment tests also prove partial markers do not activate a discount, an OOG attempt cannot replay a voucher, and ordinary Amsterdam SSTORE behavior remains unchanged.

Mainnet scanning remains out of scope for this PR.

RLP-1 resolution tracking

This experiment is now the first live engineering claim tracked through the external RLP-1 resolution-lineage profile.

Pinned evidence snapshot:
https://github.com/chugarchugarr/resolution-receipt-technocore/blob/proposal/resolution-lineage/public/claims/glamsterdam-write-prepayment/evidence-pr-head.json

Signed resolution record:
https://github.com/chugarchugarr/resolution-receipt-technocore/blob/proposal/resolution-lineage/public/claims/glamsterdam-write-prepayment/resolution-0001.json

Current derived state: UNRESOLVED.

The four internal executable assertions are recorded as PASS against pinned PR head e16d4096a95ad1409fe4b26af0dbeb8de7dd1fe9. A fifth required check — independent technically credible falsification/review — remains UNRESOLVED, so RLP-1 mechanically prevents this experiment from being represented as SURVIVED before that external check exists.

This RLP-1 state is a bounded resolution claim only. It is not an Ethereum acceptance, adoption, mainnet, or wire-format claim.

@chugarchugarr chugarchugarr changed the title test(amsterdam): prove fixed-gas storage repricing liveness gap experiment(amsterdam): prove exact SSTORE write prepayment Aug 26, 2026

Copy link
Copy Markdown
Owner Author

Focused proof is green: https://github.com/chugarchugarr/execution-specs/actions/runs/32996887596

@misilva73 @weiihann — requesting a narrow falsification pass because this experiment is driven by EIP-8038's SSTORE repricing. The two review questions are:

  1. Does the identical fixed child budget correctly cross Osaka PASS → Amsterdam OOG?
  2. Does relocating exactly the 7,200 STORAGE_WRITE delta to transaction scope restore the child while preserving the full 12,100 Amsterdam storage-resource charge?

This is not a proposed wire format or an adoption claim. Mainnet-value scanning is out of scope. Canonical evidence boundary: chugarchugarr/-x402-resolution-receipt#2

Copy link
Copy Markdown
Owner Author

This experiment is now the first real engineering claim tracked through RLP-1. The pinned evidence object and signed resolution record are public in chugarchugarr/resolution-receipt-technocore on proposal/resolution-lineage.

Current derived state is intentionally UNRESOLVED: the four executable assertions are recorded as PASS, while a fifth required external-falsification check remains UNRESOLVED until a technically credible reviewer accepts, narrows, or falsifies the two review questions already posted here.

The machine check for that public RLP-1 claim is green on RLP head dd63ce241d6ceec25db447b7dc33c435664d7b11. This is not an Ethereum acceptance or adoption claim.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant