mirror of
https://github.com/sigp/gossipsub-testground.git
synced 2026-01-09 05:28:04 -05:00
* Bump the Rust version * Update smoke plan * Update scoring plan * Update censoring plan * Fix wrong file name * Update eth-consensus plan * Fix clippy warnings * cargo fmt
Censoring Simulation
This simulation creates a number of malicious nodes which do not propagate received messages. This simulation is aimed to help fine-tune gossipsub scoring parameters to mitigate censoring attacks on gossipsub networks.
Running the simulation
testground run composition -f censoring/compositions/composition.toml --wait
How the Simulation Works
Note: Attackers connect to a single publisher (victim). Publisher1 is the victim in this test plan.
sequenceDiagram
participant Publishers
participant Lurkers
participant Attackers
%% Discovery
Note over Publishers,Lurkers: Setup discovery<br />Connect to some of the honest nodes (publishers + lukers)<br />randomly selected
Note over Attackers: Setup discovery<br />Connect to a single publisher
Publishers->>Lurkers: Connect
Lurkers->>Publishers: Connect
Attackers->>Publishers: Connect to a single publisher (victim)
%% Subscribe topics
Note over Publishers,Lurkers: Subscribe topic(s)
Publishers->>Lurkers: Subscribe/GRAFT
Lurkers->>Publishers: Subscribe/GRAFT
Publishers->>Attackers: Subscribe/GRAFT
Note over Attackers: Subscribe to the topic in the message from the publisher, <br/>and send back Subscribe/GRAFT.
Attackers->>Publishers: Subscribe/GRAFT
%% Publish messages
Note over Publishers: Periodically publish messages on all topics subscribing.
loop Publish messages
Publishers->>Lurkers: Message
Publishers->>Attackers: Message
Note over Attackers: **Don't propagate messages**
end
%% Record metrics
Note over Publishers,Lurkers: Record metrics.
Dashboards
Please see the root README for how to run Grafana.
Gossipsub Metrics
The metrics of gossipsub are recorded once the simulation has been completed. All of the metrics on libp2p-gossipsub are available in this dashboard.
Variables for this dashboard:
run_id: The run_id for the test run you want to see.topic: The gossipsub topic, currently it's fixed toemulate.instance_name: Some panels in this dashboard need an instance name to be specified. (e.g. score_per_mesh histogram)
Peer Scores
The peer scores are recorded periodically (every second) while the simulation is running.
Variables for this dashboard:
run_id: The run_id for the test run you want to see.instance_name: It's default toAll, you can select specific instances.