mirror of
https://github.com/logos-blockchain/logos-execution-zone.git
synced 2026-08-26 03:41:13 +00:00
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.