Files
logos-execution-zone/lez/sequencer
erhant e04a238567 feat(sequencer)!: screen transactions for fee validity at RPC ingest
Reject fee-invalid transactions at submission instead of letting them
rot in the mempool, and let clients price a transaction before signing.

The screen runs against the head state and is anti-spam, not consensus:
the block transition and the builder remain the enforcement points. It
is at least as strict as the builder's pre-screen, so nothing admitted
is unbuildable — both now read the same `exceeds_empty_block` bound.

Rejections are machine-readable: `AdmissionRejection` lives in
sequencer_service_protocol with a stable per-check error code, and
travels serialized in the JSON-RPC error's `data` field so clients
branch on values rather than parse prose.

Adds `getFeeState`, returning current base fees, the band the next
block's can land in, the private-transaction quote, and the block caps.
The base-fee step is extracted into `fee_core::stepped_base_fees` so the
quote and the block transition cannot drift. Rejection payloads encode
their u128 fields as decimal strings: the `check` tag makes the enum
internally tagged, and serde cannot read a bare u128 back through that
path.

BREAKING CHANGE: submissions that were previously accepted into the
mempool are now rejected at ingest when their declared gas or bytes
exceed the block caps, their max_fee is below the reserve at current
base fees, or their payer is unauthorized or cannot fund the reserve.
2026-08-13 13:58:31 +03:00
..