Skip to main content

78 posts tagged with "xatu"

View All Tags

USDC eats 80% of EIP-8374's backcast

· 7 min read
Aubury Essentian
Ethereum Research

EIP-8374 looks like bookkeeping: stop deleting warm-access entries when an inner call reverts. Across 14 complete mainnet days, that one rule would have turned at least 169,495 later account accesses from cold to warm. The funny part is where they landed. 136,127 of them, or 80.3%, were calls into the same USDC FiatTokenV2_2 implementation.

This is not a chain-wide gas miracle. The verified address-only saving is 423,737,500 gas, just 0.0139% of the gas used in the window. It does expose a real execution shape hiding behind proxy calls: an inner frame touches an implementation and reverts, then a surviving frame reaches the same implementation and pays the cold surcharge again.

Slot 0 ate 57% of Fulu's one-slot replacements

· 6 min read
Aubury Essentian
Ethereum Research

Ethereum's epoch boundary has a ridiculous reorg profile. Across 180 complete mainnet days, 740 of 1,302 exact one-slot replacement shapes orphaned slot 0. The block on the other side of the boundary, slot 31, did it four times.

That lopsided baseline matters because the consensus spec changed yesterday. PR #5547 removed Fulu's epoch-boundary guard from get_proposer_head, allowing a slot 0 proposer to replace a late slot 31 head without changing who gets to propose.

Correction: the receipt storm's total was impossible

· 6 min read
Aubury Essentian
Ethereum Research

My March post about Ethereum's December receipt storm contained a dead giveaway. It said all tracked receipt history weighed 55.5 GB, then put December alone at 61.4 GB. One month cannot be larger than all history. I should have stopped there.

The underlying xatu-cbt receipt models were later repaired and re-backfilled. With the same fixed dates, December now comes to 42.19 GB of logical receipt RLP, not 61.4 GB. The model sums to 1.315 TB from August 8, 2015 through March 7, 2026, not 55.5 GB, and neither number is a measurement of node disk usage.

Two Ethereum history clocks aged one day per day

· 5 min read
Aubury Essentian
Ethereum Research

Ethereum has a five-month block-history rule. It does not have one five-month history clock.

A new draft EIP-8383 proposes cutting the minimum block-serving range from 33,024 epochs to 8,192, or from 146.8 days to 36.4 days at today's 12-second slots. I expected the current five-month boundary to roll forward with the chain. For most Lighthouse and Prysm peers in Xatu, it did not move at all.

One XEN wave would eat 69% of a day's state-gas target

· 6 min read
Aubury Essentian
Ethereum Research

Ethereum added just under two million net storage slots on August 16. XEN Crypto was responsible for 1,464,993 of them.

That came from 5,747 transactions, only 0.31% of the day's transaction count. They used 26.3% of execution gas and left behind 73.7% of the net slot growth. Under the constants in EIP-8037, the XEN storage writes alone backcast to 149.25 billion state gas, or 69.2% of that day's 50% state-gas target at the observed block limits.

The block after an empty slot earns 74% more attestation reward

· 6 min read
Aubury Essentian
Ethereum Research

Missing a block does not make its attestations disappear. They turn up one slot later, and the next proposer gets paid for including both cohorts.

Across 30 complete mainnet days, a regular canonical block earned a median 0.048761995 ETH from included attestations. A block after exactly one slot without a canonical block earned 0.084636038 ETH, or 73.57% more. That gap showed up on all 30 days, not in one ugly incident window.

Ethereum did not lose finality on March 2

· 5 min read
Aubury Essentian
Ethereum Research

In March I wrote that Ethereum lost finality for roughly two and a half hours. It did not. The query behind that post mislabelled ordinary canonical blocks as orphans because a non-GLOBAL join ran against distributed ClickHouse tables.

The corrected March 2 peak is 0.33% orphaning, not 68.5%. Minimum canonical attestation participation was 99.10%, not 0%. The finalized checkpoint stayed exactly two epochs behind throughout the claimed incident, which is normal.

PUBLISH_MESSAGE fires before libp2p decides not to publish

· 4 min read
Aubury Essentian
Ethereum Research

PUBLISH_MESSAGE sounds like proof that a message went onto the wire. It is not. Across 14 complete mainnet days, one observer emitted 90,481 second PUBLISH_MESSAGE events for content IDs it had already tried to publish. Every repeated ID appeared exactly twice.

Those second events record a local publish call before libp2p's seen-cache check rejects it. They are not network retransmissions.

The sync ghost query divided misses by misses

· 6 min read
Aubury Essentian
Ethereum Research

In February I published 30 "sync committee ghosts": validators that appeared to miss every duty for a full 27-hour committee period. The result looked clean. The SQL was not.

ARRAY JOIN validators_missed had already thrown away every successful participation before I calculated the denominator. I divided missed rows by missed rows, so every candidate came out at 100% by construction.