Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
762307e
Lock swapped
jclapis Sep 30, 2025
eebbae6
Finished initial registry refresh task
jclapis Sep 30, 2025
175dfce
Merge branch 'main' into registry-refreshing
jclapis Sep 30, 2025
e091685
Merge branch 'main' into registry-refreshing
jclapis Oct 6, 2025
2f7a945
Started adding state to the SSV mock service
jclapis Oct 6, 2025
7ed808a
A little mock cleanup
jclapis Oct 6, 2025
2d2bc7f
Broke SSV out into its own module
jclapis Oct 6, 2025
3628204
First working SSV dynamic refresh test
jclapis Oct 7, 2025
f4cd8c2
Clippy formatting
jclapis Oct 7, 2025
bccc5bb
Fixed some state setup prior to testing
jclapis Oct 7, 2025
d7e4ae8
Clarified the example config
jclapis Oct 14, 2025
ef64d9d
Removed the Option from the SSV API URL
jclapis Oct 14, 2025
3ec5bb4
Setting the registry refresh interval to 0 now errors out
jclapis Oct 14, 2025
e9a14d5
Clarified registry uniqueness in the example config
jclapis Oct 14, 2025
e60a1f8
Removed some verbosity from the new pubkey message
jclapis Oct 14, 2025
c5534c7
Added removed key support to registry refreshing
jclapis Oct 14, 2025
6c788f4
Moved registry refresh interval into validation
jclapis Oct 14, 2025
f7fa708
Made the default SSV URL more clear in the example config
jclapis Oct 14, 2025
978c573
Update crates/pbs/src/service.rs
jclapis Oct 20, 2025
3651350
Update crates/pbs/src/service.rs
jclapis Oct 20, 2025
9bf1ea9
Fixed some suggestion typos
jclapis Oct 20, 2025
c9587a2
Removed verbose logging
jclapis Oct 20, 2025
59311fb
Changed tokio RwLock to parking_lot
jclapis Oct 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 25 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 17 additions & 2 deletions config.example.toml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@ extra_validation_enabled = false
# Execution Layer RPC url to use for extra validation
# OPTIONAL
# rpc_url = "https://ethereum-holesky-rpc.publicnode.com"
# URL of the SSV API server to use, if you have a mux that targets an SSV node operator
# OPTIONAL, DEFAULT: "https://api.ssv.network/api/v4"
# ssv_api_url = "https://api.ssv.network/api/v4"
# Timeout for any HTTP requests sent from the PBS module to other services, in seconds
# OPTIONAL, DEFAULT: 10
http_timeout_seconds = 10
Expand All @@ -64,6 +67,13 @@ register_validator_retry_limit = 3
# Maximum number of validators to register in a single request.
# OPTIONAL, DEFAULT: "" (unlimited)
validator_registration_batch_size = ""
# For any Registry-based Mux configurations that have dynamic pubkey
# refreshing enabled, this is how often to refresh the list of pubkeys
# from the registry, in seconds. Enabling registry refreshing is done per-mux
# with the mux's `enable_refreshing` property. If none of the muxes have it
# enabled, this value will not be used.
# OPTIONAL, DEFAULT: 384
mux_registry_refresh_interval_seconds = 384

# The PBS module needs one or more [[relays]] as defined below.
[[relays]]
Expand Down Expand Up @@ -126,6 +136,11 @@ validator_pubkeys = [
# - Registry: details of a registry to load keys from. Supported registries:
# - Lido: NodeOperatorsRegistry
# - SSV: SSV API
# You can toggle the 'enable_refreshing' flag to let this registry periodically query Lido or SSV and refresh the list of validator pubkeys belonging to the corresponding operator.
# Each of these registry entries must be unique:
# - There can only be one Lido entry with a given Lido node operator ID.
# - There can only be one SSV entry with a given SSV node operator ID.
# - A Lido entry can have the same node operator ID as an SSV entry if they happen to coincide; they're treated as separate entities.
#
# Example JSON list:
# [
Expand All @@ -135,8 +150,8 @@ validator_pubkeys = [
# OPTIONAL
loader = "./tests/data/mux_keys.example.json"
# loader = { url = "http://localhost:8000/keys" }
# loader = { registry = "lido", node_operator_id = 8 }
# loader = { registry = "ssv", node_operator_id = 8 }
# loader = { registry = "lido", node_operator_id = 8, enable_refreshing = false }
# loader = { registry = "ssv", node_operator_id = 8, enable_refreshing = false }
late_in_slot_time_ms = 1500
timeout_get_header_ms = 900
# For each mux, one or more [[mux.relays]] can be defined, which will be used for the matching validator pubkeys
Expand Down
3 changes: 3 additions & 0 deletions crates/common/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ publish = false
rust-version.workspace = true
version.workspace = true

[features]
testing-flags = []

[dependencies]
aes.workspace = true
alloy.workspace = true
Expand Down
Loading
Loading