Skip to main content

78 posts tagged with "xatu"

View All Tags

After one empty Gloas payload, the next missed 47× as often

· 7 min read
Aubury Essentian
Ethereum Research

Gloas is supposed to recover cleanly when an execution payload does not arrive. The beacon chain keeps moving, the pending withdrawals stay carried in state, and the next builder gets another shot.

On Platåberget, that recovery path sometimes dug the hole deeper. Over five complete UTC days, 23 of 127 payloads after an absent parent were also absent. After a delivered parent, the same thing happened in 100 of 26,098 cases. That is 18.110% versus 0.383%, or 47.3× as often.

Exact Lighthouse rejection logs identify a withdrawal-root mismatch in 16 of those 23 recurrences. The longest empty run lasted six consecutive slots.

The PTC said present. Gloas still built as empty.

· 7 min read
Aubury Essentian
Ethereum Research

A Gloas Payload Timeliness Committee quorum sounds conclusive. It is not.

On Platåberget, I found 72 canonical child blocks that treated their beacon parent's execution payload as empty after more than 256 on-chain PTC votes said the payload was present. Raw payload events show that every one of those parent payloads had arrived at at least 14 observer nodes. The beacon parent stayed in the canonical chain. Its execution payload did not.

This was rare, 72 cases out of 31,320 matched children with a present parent, or 0.2299%. It was also real enough to happen three slots in a row. That distinction between beacon parent and execution parent is exactly where a Prysm bid-validation bug was hiding.

Prysm packed eight attestations where everyone else packed one

· 7 min read
Aubury Essentian
Ethereum Research

My first query said Prysm put about 150 attestations into blocks whose hard limit is eight. That was obviously a row-grain bug, not a consensus break. Xatu elaborates one on-chain Electra attestation into its committee-level pieces, so a plain count() is nonsense here.

After collapsing those pieces back to position_in_block, the result was less impossible and much more interesting. Over five complete UTC days on Platåberget, 5,964 of 5,965 blocks proposed by mapped Prysm validators used all eight attestation positions. Every other mapped consensus client had a median of one.

Exit is not the end of sync duty

· 6 min read
Aubury Essentian
Ethereum Research

Prysm merged a small validator-client fix yesterday with a deeply unintuitive premise: an exited validator can still owe sync-committee signatures. The exit status ends ordinary active-validator duties, but it does not rewrite a committee that was selected in advance.

I checked 90 recent Mainnet committee periods. Ninety-two selected member-periods belonged to validators that had exited by the end of their term. Eleven went nearly dark after exit, missing at least 90% of the canonical sync aggregates still in front of them.

One hundred green receipts went to code that does not exist

· 6 min read
Aubury Essentian
Ethereum Research

EIP-7610 was declined for Glamsterdam last week. It would have made CREATE and CREATE2 revert when the destination already had non-empty storage. The live Mainnet edge case is a small fossil: 28 accounts with storage, nonce zero and no code.

Those accounts do not look dead when you inspect their transaction history. Xatu has 100 direct transactions into 22 of them, and all 100 receipts say success. Ninety carried calldata. Twenty-five used selectors that resolve to withdraw or refund functions, while another 11 looked like attempts to destroy the contract that was not there.

One executeBatch target takes 44% of EIP-7976's backcast

· 5 min read
Aubury Essentian
Ethereum Research

A small EIP-8141 text fix landed on Friday. The frame-transaction draft had accidentally priced zero calldata bytes at 16 gas and nonzero bytes at 64; the intended EIP-7976 floor is 64 for both. Execution specs already counted the bytes correctly, so this was not a client fix or a live-network bug.

It did send me back to current mainnet calldata. Across the 14 complete UTC days from August 7 through August 20, one executeBatch target accounts for 30.01 billion of the 67.87 billion added gas in a fixed-path EIP-7976 backcast. That is 44.22% from one address, and 85.7% of the affected calldata bytes sent to it were zero.

All ten Xatu observers saw 23 blob nonce inversions

· 8 min read
Aubury Essentian
Ethereum Research

A higher-nonce blob transaction can reach every monitored observer before the transaction it must follow. I found 23 of those adjacent-nonce pairs across 14 complete mainnet days. In the slowest pair, the median lead for nonce N+1 was three minutes.

That is the awkward edge case behind EIP-8077. The draft would put sender and nonce into transaction announcements so a peer can spot a future nonce before it fetches the full transaction. All ten monitored observers saw the higher nonce first in only 23 of roughly 97,000 eligible pairs.

One subscription event, two rows, one empty peer ID

· 4 min read
Aubury Essentian
Ethereum Research

A fresh Gloas spec change sent me looking for an ugly sanity check: do observed peer subscriptions line up with custody metadata? The obvious raw table answered before I had joined anything. One stored peer_id_unique_key owned almost exactly half the rows across every observer. Gloas is not live on mainnet; it just gave me a reason to inspect current mainnet capture.

That peer does not exist.