-
-
owned this note
-
Published
Linked with GitHub
# Goerli shadowfork 0 (goerli-sf-0) analysis
## Introduction
Goerli-sf-0 spec sheet is the same as the [dencun-devnet-10 spec](https://notes.ethereum.org/@ethpandaops/dencun-devnet-10).
The shadowfork went live at `November 6, 2023 3:31:00 PM UTC`. The Dencun fork happened on the shadow fork 20 epochs later.
Test setup:
- Goerli shadowfork, capella state
- EIP-4788 deployed on main goerli chain
- Blob spamming
- NO TX spamming, natural load from goerli
## Node split
Each node has 100 validators. Each node has 4 vCPUs, 32GB of RAM and ~900GB SSD.
## Resource usage
### Overall CPU/RAM:
![overall use](https://storage.googleapis.com/ethereum-hackmd/upload_9adba988fe7a8b0db4c006a3771d5091.png)
We're seeing roughly ~25% CPU use across the board. This is lower CPU use compared to the main goerli chain, purely due to the smaller state and lesser gossip load.
Usage didn't change post dencun. There seems to be no cause for concern here.
### Network health:
![finality](https://storage.googleapis.com/ethereum-hackmd/upload_0e92a11fbdbdeceaaed40b647f1931a8.png)
We can see regular finality from the beginning, there are no network wide issues to be seen.
## Blob analysis:
Blob data was collected using [Xatu](https://github.com/ethpandaops/xatu/) targeting the event stream of (2 each) teku, prysm, lodestar nodes and 1 lighthouse node.
The data collection is for ~16h. 31.8k blocks, 1.5M attestations, 96.8k blobs were ingested in this period.
![blob-sidecar rate](https://storage.googleapis.com/ethereum-hackmd/upload_9d136e9dce3bcec3268c74cf72f57c8d.png)
We mostly see blocks with 6 blobs. This would indicate a network with healthy and regular blob usage.
![sidecar propagation](https://storage.googleapis.com/ethereum-hackmd/upload_fb0daf5e9b10fad2529971b20c014800.png)
On average, we see all blobs gossiped in under 1s. However, when we see the p95 metrics: There seems to be extremely spiky behaviour for such a small network. This would indicate that one node is probably an outlier.
![sidecar heatmap](https://storage.googleapis.com/ethereum-hackmd/upload_cdae5a67a7213b3c58c15d70d11affa8.png)
Most if not all blobs are propagated well under the 500ms range. This should be expected in such a small network. The max outlier is still under the 4s mark. Some investigation needs to be done to check the reason, but the variation band is indeed quite small.
![blob vs included](https://storage.googleapis.com/ethereum-hackmd/upload_ff7eb58eab18e16c863d7bfa9a54fdc6.png)
The average increase in blob propagation time when a slot has 1 blob vs when it has 6 blobs is ~150ms. The max values of both increases by ~400ms.
### Block vs blob:
![blob v block](https://storage.googleapis.com/ethereum-hackmd/upload_292e80b30986864639205ff1dd578d96.png)
The presence of 1 blob in a slot leads to a block propagation time of ~235ms on average. If there are 6 blobs, the block takes ~400ms to propagate. At this network size, the increase seems in line with what we see in other metrics.
### Block/Attestation analysis:
![block prop](https://storage.googleapis.com/ethereum-hackmd/upload_5183e4573cb0d0765bbc128b48c17894.png)
Block propagation seems to occur well under the 500ms range. There is some spiky behaviour in the propagation graph, unsure what is causing it.
![block prop avg](https://storage.googleapis.com/ethereum-hackmd/upload_300b3eaa3a97a1d6d9af8222e6e68f89.png)
This is the same graph as above, but filtered for just the average values. It does indeed seem extremely spiky (even when compared with regular goerli)
![attestation heatmap](https://storage.googleapis.com/ethereum-hackmd/upload_8d1dbd1fdf78c54988f3fdbff5a9bd3e.png)
Attestations seem to happen well within the expected time frame.
![reorgs](https://storage.googleapis.com/ethereum-hackmd/upload_260ceaf727f3613133cb544f4f2bbdd5.png)
We see no reorgs in the network. This is probably owing to the timely attestations, proposals and blob arrivals - likely due to the small network size.