7.4 KiB
AIP-17: One-Gwei EIP-1559 Base-Fee Floor
Preamble
| Field | Value |
|---|---|
| AIP | 17 |
| Title | One-Gwei EIP-1559 Base-Fee Floor |
| Author | Aere Network Foundation |
| Type | Standards Track |
| Category | Core |
| Status | Final |
| Created | 2026-07-20 |
| Requires | 10 |
| Supersedes | None |
| Superseded-By | None |
| Ratification | Foundation-ratified (pre-decentralization) |
Abstract
This AIP documents the client-flag-gated fork that clamps the EIP-1559 base fee on chain 2800 to a minimum of 1 Gwei from block 10,141,734. Before that block the real minimum bottomed out at 7 wei. It is a retro-filed record of a change already live on chain 2800: it backfills history and did not go through Draft, Review or Last Call.
Motivation
Aere's public RPC and its documentation reported a 1 Gwei base fee while the chain's actual base fee had decayed to 7 wei. That gap was being closed by a presentation-layer shim rather than by the chain, which meant a user who queried the chain directly and a user who read our documentation got different answers, and only one of them was true.
There were two honest ways to close it: change the documentation to say 7 wei, or change the chain so that 1 Gwei is the real value. The second was chosen because a base fee of 7 wei is not a meaningful price signal, and because a floor is a value the chain can actually enforce and any observer can verify from block data. The shim was then retired, which was the point of the exercise: the number reported is now the number the chain produces.
Specification
For every block B:
baseFee(B) = max( baseFee_1559(parent), 1000000000 ) if number(B) >= 10141734
baseFee(B) = baseFee_1559(parent) otherwise
where baseFee_1559 is the unmodified parent-derived EIP-1559 base fee and
1000000000 wei = 1 Gwei.
- The clamp is applied at the three exits of
computeBaseFee(blockNumber, parentBaseFee, parentGasUsed, targetGasUsed), identically on the produce path and the validate path, so a floored block both produces and self-validates the floored value. - The two driving values are Besu client system properties:
AERE_BASEFEE_FLOOR_FORK_BLOCK = 10141734andAERE_BASEFEE_FLOOR_VALUE = 1000000000, exposed asaere.basefee.floor.forkBlock. - The defaults are dormant (
forkBlock = Long.MAX_VALUE), so an unflagged build never applies the floor and is byte-identical to stock in behavior. - The change is deliberately not an EIP-2124 fork-id input and is not registered as a scheduled fork.
Measured activation boundary (re-confirmed by direct measurement 2026-07-19):
block 10,141,733 has baseFeePerGas = 7 wei; block 10,141,734 has
baseFeePerGas = 0x3b9aca00 = 1,000,000,000 wei; the value holds at 1 Gwei at
every later block sampled through head, and eth_feeHistory at head reports
0x3b9aca00.
Rationale
Why a client flag rather than a chain-config fork. Base-fee validation is absent from the QBFT header ruleset, so a node with a different floor flag does not reject a peer's blocks: two clients with different flags share one fork id and peer normally. That property is what made the rollout carry no liveness risk, because validators could be upgraded one at a time and a lagging node could not halt or split the chain. The flag being dormant by default is what keeps every historical block below 10,141,734 valid with its original sub-Gwei base fee.
Why 1 Gwei. It is the value the documentation already claimed, so the fork made the documentation true rather than choosing a new number and creating a second discrepancy.
Alternatives rejected. Keeping the presentation-layer shim: it makes the RPC lie, and a hash-verifiable chain that needs a shim to look right has a credibility problem worse than a low base fee. Enshrining the floor as a consensus fork rule with a fork id: unnecessary given that base fee is not header-validated here, and it would have introduced a genuine split risk in exchange for nothing.
Backwards Compatibility
Historical blocks are unaffected and still validate with their original base fees. Integrators that hard-coded a sub-Gwei minimum gas price will underprice transactions from block 10,141,734 onward and should read the base fee from the chain. No contract interface changed.
Security Considerations
This modification cannot halt or fork QBFT, because base-fee validation is not part of the QBFT header ruleset (which is also why a non-upgraded node syncs straight past the floor block with no rejection). The corresponding weakness is the same fact stated from the other side: because the floor is not consensus-enforced, a validator running without the flag would produce blocks with a sub-Gwei base fee and no one would reject them. Consistency depends on operational rollout to all validators, not on consensus. All seven validators are Foundation-operated (AIP-9), so today that is an operational guarantee under one operator.
Open question, honestly flagged. Where the EIP-1559 base fee ultimately goes
on chain 2800 is not fully resolved. Measurement on block 10,487,561 (one
transaction, gasUsed 22,474, effectiveGasPrice = baseFeePerGas = 1 Gwei, so
zero priority tip) showed a coinbase balance delta of exactly 0 wei, which
rules out the base fee being credited to the coinbase, since crediting would have
moved 22,474,000,000,000 wei. Because the tip was zero, that measurement cannot by
itself separate "protocol-burned" from "routed elsewhere". Completing the
distinction needs a block containing a transaction with a nonzero priority tip and
unpruned state.
This floor is not a burn. Aere's burn is a separate cut of the validator coinbase reward (AIP-2). A base-fee floor sets a minimum price; it does not remove supply. These two must not be conflated in any Aere document.
Reference Implementation and On-Chain Deployment
- Diff:
aerenew/basefee-floor-dryrun/basefee-floor.diff - Runbook:
aerenew/docs/BASEFEE-FLOOR-FORK-RUNBOOK-2026-07-17.md - Specification detail:
aerenew/docs/AERE-PROTOCOL-SPECIFICATION.mdSection 5.1 - Chain ID 2800, activation block 10,141,734. No contract address: this is a client change.
Verify it yourself: fetch baseFeePerGas for blocks 10,141,733 and 10,141,734
from https://rpc.aere.network and from the second public endpoint
https://rpc2.aere.network. Both return 7 wei and 1,000,000,000 wei
respectively, and the fork-block hash is identical across both endpoints.
Errata
Erratum 1 (2026-09-12). The Security Considerations say "All seven validators are Foundation-operated (AIP-9)" without a date, so read on its own it is a claim about today. That was a measurement of 2026-07-19. Measured 2026-09-12: the set is ten, still all Foundation-operated, so the conclusion of that sentence stands and only its count moved. See the erratum on AIP-9. The original text is left exactly as published, per AIP-1 section 5.
Post-Acceptance Outcome Record
2026-07-20. Activation was clean and is measured: base fee 7 wei at block 10,141,733 became 1 Gwei at 10,141,734 and has stayed 1 Gwei; the fork-block hash was identical across the public RPC and the second RPC, so there was no split; N = 7 held with no halt. The presentation-layer shim was retired, and both public endpoints now serve an honest, hash-verifiable 1 Gwei. Rollback remains available by clearing the flag, which would return the chain to unmodified EIP-1559 behavior from the next block.
Copyright
Released to the public domain (CC0). No rights reserved.