mirror of
https://github.com/sigp/gossipsub-testground.git
synced 2026-01-09 05:28:04 -05:00
* Initial implementation for scoring-parameters test plan * Record the number of BeaconBlock messages received per epoch * Add attacker module * Dialing from attackers to a beacon node * Add debug log * Add TopicScoreParameter for BeaconBlock * Rename crate and collect attacker info * Add dashboards * Add metrics * Add topic_msg_sent_counts to dashboard * Attestations * rename * topic_msg_sent_counts * Make params configurable * dashboards * Aggregates per epoch * Attestations per epoch * run time * Remove empty descriptions * cargo update * Record the result of sync_committee_aggregates and sync_committee_messages * Update Messages dashboard * Topic params for SignedContributionAndProof and SyncCommitteeMessage * Make get_param() generic * Use get_param() * Dashboard: automate run_id * Dashboard: Add `Settings` * Set gossipsub config based on lighthouse * Record peer scores on its own task * Record metrics on its own task * Fix invalid gossipsub config * Remove unnecessary comment lines * Some cleanup * Merge main into scoring-parameters * Add scoring test plan to CI workflow * Update dashboard * Fix: discarding correct message * Add `Cache Misses` to the dashboard * Avoid unnecessary compiling * Add Cargo.lock * Introduce NetworkConfiguration * Fix clippy warnings * Upgrade npg * Add README * Fix clippy warnings * Improve qualifications * Remove debug lines
189 lines
10 KiB
TOML
189 lines
10 KiB
TOML
name = "scoring"
|
|
|
|
[defaults]
|
|
builder = "docker:generic"
|
|
runner = "local:docker"
|
|
disable_metrics = false
|
|
|
|
[builders."docker:generic"]
|
|
enabled = true
|
|
|
|
[runners."local:docker"]
|
|
enabled = true
|
|
|
|
[[testcases]]
|
|
name = "scoring"
|
|
instances = { min = 3, max = 100, default = 3 }
|
|
[testcases.params]
|
|
# ###########################################################################
|
|
# Network config
|
|
# ###########################################################################
|
|
latency = { type = "int", desc = "Network latency between nodes", unit = "ms", default = 5 }
|
|
latency_max = { type = "int", desc = "If supplied, latency is between latency and latency_max", unit = "ms", default = 50 }
|
|
bandwidth = { type = "int", desc = "Bandwidth in MiB", unit = "MiB", default = 1024 }
|
|
|
|
# ###########################################################################
|
|
# Topology config
|
|
# ###########################################################################
|
|
seed = { type = "int", desc = "Seed to use for the rng", default = 40 }
|
|
no_val_percentage = { type = "int", desc = "% of nodes without vals", default = 0 }
|
|
total_validators = { type = "int", desc = "number of validators", default = 200 }
|
|
min_peers_per_node = { type = "int", desc = "minimum number of peers to connect to", default = 2 }
|
|
max_peers_per_node_inclusive = { type = "int", desc = "maximum number of peers to connect to", default = 3 }
|
|
run = { type = "int", desc = "Time to run the simulation", default = 600, unit="sec" }
|
|
|
|
# ###########################################################################
|
|
# Peer score params
|
|
# ###########################################################################
|
|
topic_score_cap = { type = "float", default = 53.7499 }
|
|
decay_interval = { type = "float", unit = "sec", default = 12 }
|
|
decay_to_zero = { type = "float", default = 0.01 }
|
|
retain_score = { type = "float", unit = "sec", default = 38400 }
|
|
# P5: Application-specific peer scoring
|
|
app_specific_weight = { type = "float", default = 53.7499 }
|
|
# P6: IP-colocation factor.
|
|
ip_colocation_factor_weight = { type = "float", default = -53.7499 }
|
|
ip_colocation_factor_threshold = { type = "float", default = 8.0 }
|
|
# P7: behavioural pattern penalties.
|
|
behaviour_penalty_weight = { type = "float", default = -15.8793 }
|
|
behaviour_penalty_threshold = { type = "float", default = 6.0 }
|
|
behaviour_penalty_decay = { type = "float", default = 0.9857 }
|
|
|
|
# ###########################################################################
|
|
# Peer score thresholds
|
|
# ###########################################################################
|
|
gossip_threshold = { type = "float", default = -4000.0 }
|
|
publish_threshold = { type = "float", default = -8000.0 }
|
|
graylist_threshold = { type = "float", default = -16000.0 }
|
|
accept_px_threshold = { type = "float", default = 100.0 }
|
|
opportunistic_graft_threshold = { type = "float", default = 5.0 }
|
|
|
|
# ###########################################################################
|
|
# Topic score params
|
|
# ###########################################################################
|
|
# BeaconBlocks
|
|
bb_topic_weight = { type = "float", default = 0.5 }
|
|
## P1: time in the mesh
|
|
bb_time_in_mesh_weight = { type = "float", default = 0.0333 }
|
|
bb_time_in_mesh_quantum = { type = "int", unit = "slot", default = 1 }
|
|
bb_time_in_mesh_cap = { type = "float", default = 300.0 }
|
|
## P2: first message deliveries
|
|
bb_first_message_deliveries_weight = { type = "float", default = 0.8603 }
|
|
bb_first_message_deliveries_decay = { type = "float", default = 0.9928 }
|
|
bb_first_message_deliveries_cap = { type = "float", default = 46.4916 }
|
|
## P3: mesh message deliveries
|
|
bb_mesh_message_deliveries_weight = { type = "float", default = -0.5 }
|
|
bb_mesh_message_deliveries_decay = { type = "float", default = 0.9716 }
|
|
bb_mesh_message_deliveries_threshold = { type = "float", default = 0.6849 }
|
|
bb_mesh_message_deliveries_cap = { type = "float", default = 2.0547 }
|
|
bb_mesh_message_deliveries_activation = { type = "int", unit = "epoch", default = 1 }
|
|
bb_mesh_message_deliveries_window = { type = "int", unit = "sec", default = 2 }
|
|
## P3b: sticky mesh propagation failures
|
|
bb_mesh_failure_penalty_weight = { type = "float", default = -0.5 }
|
|
bb_mesh_failure_penalty_decay = { type = "float", default = 0.9716 }
|
|
## P4: invalid messages
|
|
bb_invalid_message_deliveries_weight = { type = "float", default = -214.9999 }
|
|
bb_invalid_message_deliveries_decay = { type = "float", default = 0.9971 }
|
|
|
|
# BeaconAggregateAndProof
|
|
baap_topic_weight = { type = "float", default = 0.5 }
|
|
## P1: time in the mesh
|
|
baap_time_in_mesh_weight = { type = "float", default = 0.0333 }
|
|
baap_time_in_mesh_quantum = { type = "int", unit = "slot", default = 1 }
|
|
baap_time_in_mesh_cap = { type = "float", default = 300.0 }
|
|
## P2: first message deliveries
|
|
baap_first_message_deliveries_weight = { type = "float", default = 16.0842 }
|
|
baap_first_message_deliveries_decay = { type = "float", default = 0.8659 }
|
|
baap_first_message_deliveries_cap = { type = "float", default = 2.4869 }
|
|
## P3: mesh message deliveries
|
|
baap_mesh_message_deliveries_weight = { type = "float", default = -0.5 }
|
|
baap_mesh_message_deliveries_decay = { type = "float", default = 0.9305 }
|
|
baap_mesh_message_deliveries_threshold = { type = "float", default = 22.0559 }
|
|
baap_mesh_message_deliveries_cap = { type = "float", default = 2.0 }
|
|
baap_mesh_message_deliveries_activation = { type = "int", unit = "epoch", default = 1 }
|
|
baap_mesh_message_deliveries_window = { type = "int", unit = "sec", default = 2 }
|
|
## P3b: sticky mesh propagation failures
|
|
baap_mesh_failure_penalty_weight = { type = "float", default = -0.5 }
|
|
baap_mesh_failure_penalty_decay = { type = "float", default = 0.9305 }
|
|
## P4: invalid messages
|
|
baap_invalid_message_deliveries_weight = { type = "float", default = -214.9999 }
|
|
baap_invalid_message_deliveries_decay = { type = "float", default = 0.9971 }
|
|
|
|
# Attestation
|
|
a_topic_weight = { type = "float", default = 0.0156 }
|
|
## P1: time in the mesh
|
|
a_time_in_mesh_weight = { type = "float", default = 0.0333 }
|
|
a_time_in_mesh_quantum = { type = "int", unit = "slot", default = 1 }
|
|
a_time_in_mesh_cap = { type = "float", default = 300.0 }
|
|
## P2: first message deliveries
|
|
a_first_message_deliveries_weight = { type = "float", default = 271.3987 }
|
|
a_first_message_deliveries_decay = { type = "float", default = 0.9646 }
|
|
a_first_message_deliveries_cap = { type = "float", default = 0.1473 }
|
|
## P3: mesh message deliveries
|
|
a_mesh_message_deliveries_weight = { type = "float", default = -0.0156 }
|
|
a_mesh_message_deliveries_decay = { type = "float", default = 0.9910 }
|
|
a_mesh_message_deliveries_threshold = { type = "float", default = 5.6149 }
|
|
a_mesh_message_deliveries_cap = { type = "float", default = 2.0 }
|
|
a_mesh_message_deliveries_activation = { type = "int", unit = "epoch", default = 3 }
|
|
a_mesh_message_deliveries_window = { type = "int", unit = "sec", default = 2 }
|
|
## P3b: sticky mesh propagation failures
|
|
a_mesh_failure_penalty_weight = { type = "float", default = -0.0156 }
|
|
a_mesh_failure_penalty_decay = { type = "float", default = 0.9910 }
|
|
## P4: invalid messages
|
|
a_invalid_message_deliveries_weight = { type = "float", default = -6879.9999 }
|
|
a_invalid_message_deliveries_decay = { type = "float", default = 0.9971 }
|
|
|
|
# SignedContributionAndProof
|
|
# * Disabled by default based on current lighthouse implementation.
|
|
# * The default topic params below are from libp2p-gossipsub.
|
|
scap_enable_topic_params = { type = "bool", default = false } # Disabled by default
|
|
scap_topic_weight = { type = "float", default = 0.5 }
|
|
## P1: time in the mesh
|
|
scap_time_in_mesh_weight = { type = "float", default = 1.0 }
|
|
scap_time_in_mesh_quantum = { type = "int", unit = "slot", default = 1 }
|
|
scap_time_in_mesh_cap = { type = "float", default = 3600.0 }
|
|
## P2: first message deliveries
|
|
scap_first_message_deliveries_weight = { type = "float", default = 1.0 }
|
|
scap_first_message_deliveries_decay = { type = "float", default = 0.5 }
|
|
scap_first_message_deliveries_cap = { type = "float", default = 2000.0 }
|
|
## P3: mesh message deliveries
|
|
scap_mesh_message_deliveries_weight = { type = "float", default = -1.0 }
|
|
scap_mesh_message_deliveries_decay = { type = "float", default = 0.5 }
|
|
scap_mesh_message_deliveries_threshold = { type = "float", default = 20.0 }
|
|
scap_mesh_message_deliveries_cap = { type = "float", default = 100.0 }
|
|
scap_mesh_message_deliveries_activation = { type = "int", unit = "epoch", default = 1 }
|
|
scap_mesh_message_deliveries_window = { type = "int", unit = "sec", default = 1 }
|
|
## P3b: sticky mesh propagation failures
|
|
scap_mesh_failure_penalty_weight = { type = "float", default = -1.0 }
|
|
scap_mesh_failure_penalty_decay = { type = "float", default = 0.5 }
|
|
## P4: invalid messages
|
|
scap_invalid_message_deliveries_weight = { type = "float", default = -1.0 }
|
|
scap_invalid_message_deliveries_decay = { type = "float", default = 0.3 }
|
|
|
|
# SyncCommitteeMessage
|
|
# * Disabled by default based on current lighthouse implementation.
|
|
# * The default topic params below are from libp2p-gossipsub.
|
|
scm_enable_topic_params = { type = "bool", default = false } # Disabled by default
|
|
scm_topic_weight = { type = "float", default = 0.5 }
|
|
## P1: time in the mesh
|
|
scm_time_in_mesh_weight = { type = "float", default = 1.0 }
|
|
scm_time_in_mesh_quantum = { type = "int", unit = "slot", default = 1 }
|
|
scm_time_in_mesh_cap = { type = "float", default = 3600.0 }
|
|
## P2: first message deliveries
|
|
scm_first_message_deliveries_weight = { type = "float", default = 1.0 }
|
|
scm_first_message_deliveries_decay = { type = "float", default = 0.5 }
|
|
scm_first_message_deliveries_cap = { type = "float", default = 2000.0 }
|
|
## P3: mesh message deliveries
|
|
scm_mesh_message_deliveries_weight = { type = "float", default = -1.0 }
|
|
scm_mesh_message_deliveries_decay = { type = "float", default = 0.5 }
|
|
scm_mesh_message_deliveries_threshold = { type = "float", default = 20.0 }
|
|
scm_mesh_message_deliveries_cap = { type = "float", default = 100.0 }
|
|
scm_mesh_message_deliveries_activation = { type = "int", unit = "epoch", default = 1 }
|
|
scm_mesh_message_deliveries_window = { type = "int", unit = "sec", default = 1 }
|
|
## P3b: sticky mesh propagation failures
|
|
scm_mesh_failure_penalty_weight = { type = "float", default = -1.0 }
|
|
scm_mesh_failure_penalty_decay = { type = "float", default = 0.5 }
|
|
## P4: invalid messages
|
|
scm_invalid_message_deliveries_weight = { type = "float", default = -1.0 }
|
|
scm_invalid_message_deliveries_decay = { type = "float", default = 0.3 }
|