GossipSub v1.1 simulator

Watch a peer-to-peer network defend itself

Fifty simulated peers run GossipSub v1.1 with P1–P4 peer scoring. Inject Sybils, an eclipse or a partition and watch the score bite, live or from a recording. Same mechanism, toy constants.

All peers gossiping

Modelled on

  • libp2p
  • GossipSub v1.1
  • Ethereum
  • OpenTelemetry
  • Prometheus

Gossip attacks are invisible until the mesh breaks

A flooding Sybil or a silent eclipse looks like any other peer until delivery drops. Luminar puts the mechanism on screen.

  1. See every hop

    A publish lights the mesh peer by peer, so you watch the path it takes. In the recording each message crosses 50 peers in 4.2 hops on average.

    4.2 avg hops

  2. Break it on purpose

    Inject Sybils, an eclipse or a partition, live or on a timer, and watch P1–P4 scoring answer. 5 Sybils grafted at T+10.2 s are gone by T+11.9 s.

    2 heartbeats to prune

  3. Replay any moment

    Every run can be recorded and scrubbed in the browser with no backend. Pause on the prune, step back to the graft, share the timestamp.

    39.7 s recorded

/ Attacks

Three ways to break a mesh

Each one ships as a recording that plays offline, and each can be injected live in the simulator.

  • SybilT+10.2 s

    Sybils pruned in two heartbeats

    5 attacker peers graft into honest meshes at once and flood invalid messages. P4 scoring sinks them below the prune bar and the mesh drops them.

    Sybils grafted
    5
    heartbeats to prune
    2
    delivery held
    100%
    Watch the Sybil recording
  • EclipseT+16.2 s

    An eclipse scoring cannot see

    Silent attackers take every mesh slot around peer‑10. They send nothing invalid, so P4 never fires; only clearing the fault frees the peer.

    eclipsed
    peer-10
    attacker score floor
    −0.25
    to heal after the clear
    1.4 s
    Watch the eclipse
  • PartitionT+15 s

    One mesh, cut in half, then healed

    The cut drops every link between two halves of 50 peers. Each half keeps gossiping alone until T+35 s, when the mesh grafts itself back together.

    delivery while cut
    50%
    cut held
    20 s
    to heal
    4.5 s
    Watch the partition heal

Same mechanism, toy constants.

Luminar runs the GossipSub v1.1 mesh and P1–P4 scoring with numbers small enough to watch: mesh degree 6 and a one second heartbeat, where Ethereum mainnet runs D 8, 0.7 s and prune thresholds in the thousands.

Luminar · GossipSub v1.1 · P1–P4

Film

One attack, start to heal

The Sybil recording, cut with sound: a publish, 5 Sybils grafted and pruned in 2 heartbeats, an eclipse on peer-10, then the heal.

0:00 / 0:00

Fig. 3One publish, 5 Sybils, one eclipse, one heal. The sound plays only once you press play.

What it does

A GossipSub v1.1 network you can run on a laptop

20 to 200 simulated libp2p peers with mesh, IHAVE/IWANT and P1⁠–⁠P4 peer scoring. Attack it, record it, replay it.

  • 01P1–P4 scoring

    A score bar falls from 0 past GRAFT −5 and PRUNE −10 in two heartbeats; the peer is pruned.

    Peer scoring that bites

    Every invalid message costs a Sybil ten points of P4. Its score falls past the GRAFT bar at −5 and the PRUNE bar at −10, and the mesh drops it 2 heartbeats after the graft.

    Open the simulator
  • 02Fault injection

    A flame diamond grafts into a seven peer mesh with dashed links, then the links snap away.

    Attacks you inject live

    Graft 5 Sybils, eclipse one peer or cut the network in two while it runs. Clear the fault and the mesh heals: 1.4 s in the recording.

    Inject an attack
  • 03Recordings

    A playhead sweeps a 39.7 s recording past beats at 10.2 s, 11.9 s, 16.2 s, 24.1 s.

    Reproducible recordings

    Any run can be recorded and replayed in the browser with no backend. Scrub straight to the graft, the prune or the heal.

    Watch the Sybil recording
  • 04Live mainnet

    World map: 138 observer nodes at 61 sites light in the order they first saw the block of slot 15466393, from 3247 ms to 5195 ms after slot start.

    Real block arrivals, on a map

    In mainnet mode the Geo view lights ethPandaOps observers as each block reaches them: arrival at observer nodes, ~2.5 min behind. The pattern is the real network's, never the path a block took.

    Watch the recorded block wave
  • 05Stage mode

    A broadcast ticker counts up to delivery 100%, 4.2 average hops and 100 ms propagation.

    Built for the stage

    Every recording opens in a projector theme with a broadcast ticker, and the number keys jump between recordings mid talk.

    Open a recording on stage

Luminar against mainnet

Honest by design

Same mechanism, toy constants. Luminar runs the GossipSub v1.1 mechanism with constants small enough to watch a peer get pruned on a laptop. These five differences from an Ethereum mainnet node tell you what a recording can and cannot show.

Luminar constants against an Ethereum mainnet node (Lighthouse defaults)
ParameterLuminarEthereum mainnetLighthouse defaults
Mesh degreeD6low 4 · high 88
Heartbeatinterval1 s0.7 s
Thresholdsscore−5 · −10graft · prune−4000 · −8000 · −16000gossip · publish · graylist
Score termsfunctionP1–P4mesh time, first deliveries, delivery deficit, invalid messagesP1–P7adds application score, IP colocation, behaviour penalty
EclipsevisibilityInvisiblesilent attackers send nothing invalid, so only the P3 deficit movesHard tooP6 only sees attackers that share an IP

[ FAQ ]

Questions, answered plainly

What Luminar is, what it is not, and where every number on this page comes from.

08 questions

A real-time simulator of a peer-to-peer gossip network. 50 simulated peers run GossipSub v1.1 with P1–P4 peer scoring; you inject Sybils, an eclipse or a partition and watch the mesh answer, heartbeat by heartbeat, live or from a recording. A second view shows real block arrivals on Ethereum mainnet.