Add flag to import all attestations (#1941)
## Issue Addressed NA ## Proposed Changes Adds the `--import-all-attestations` flag which tells the `network::AttestationService` to import/aggregate all attestations after verification (instead of only ones for subnets that are relevant to local validators). This is useful for testing/debugging and also for creating back-up nodes that should be all cached up and ready for any validator. ## Additional Info NA
This commit is contained in:
parent
d0cbf3111a
commit
65b1cf2af1
@ -84,6 +84,10 @@ pub struct Config {
|
|||||||
/// Subscribe to all subnets for the duration of the runtime.
|
/// Subscribe to all subnets for the duration of the runtime.
|
||||||
pub subscribe_all_subnets: bool,
|
pub subscribe_all_subnets: bool,
|
||||||
|
|
||||||
|
/// Import/aggregate all attestations recieved on subscribed subnets for the duration of the
|
||||||
|
/// runtime.
|
||||||
|
pub import_all_attestations: bool,
|
||||||
|
|
||||||
/// List of extra topics to initially subscribe to as strings.
|
/// List of extra topics to initially subscribe to as strings.
|
||||||
pub topics: Vec<GossipKind>,
|
pub topics: Vec<GossipKind>,
|
||||||
}
|
}
|
||||||
@ -185,6 +189,7 @@ impl Default for Config {
|
|||||||
disable_discovery: false,
|
disable_discovery: false,
|
||||||
upnp_enabled: true,
|
upnp_enabled: true,
|
||||||
subscribe_all_subnets: false,
|
subscribe_all_subnets: false,
|
||||||
|
import_all_attestations: false,
|
||||||
topics: Vec::new(),
|
topics: Vec::new(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -121,6 +121,9 @@ pub struct AttestationService<T: BeaconChainTypes> {
|
|||||||
/// We are always subscribed to all subnets.
|
/// We are always subscribed to all subnets.
|
||||||
subscribe_all_subnets: bool,
|
subscribe_all_subnets: bool,
|
||||||
|
|
||||||
|
/// We process and aggregate all attestations on subscribed subnets.
|
||||||
|
import_all_attestations: bool,
|
||||||
|
|
||||||
/// The logger for the attestation service.
|
/// The logger for the attestation service.
|
||||||
log: slog::Logger,
|
log: slog::Logger,
|
||||||
}
|
}
|
||||||
@ -161,6 +164,7 @@ impl<T: BeaconChainTypes> AttestationService<T> {
|
|||||||
known_validators: HashSetDelay::new(last_seen_val_timeout),
|
known_validators: HashSetDelay::new(last_seen_val_timeout),
|
||||||
waker: None,
|
waker: None,
|
||||||
subscribe_all_subnets: config.subscribe_all_subnets,
|
subscribe_all_subnets: config.subscribe_all_subnets,
|
||||||
|
import_all_attestations: config.import_all_attestations,
|
||||||
discovery_disabled: config.disable_discovery,
|
discovery_disabled: config.disable_discovery,
|
||||||
log,
|
log,
|
||||||
}
|
}
|
||||||
@ -286,6 +290,10 @@ impl<T: BeaconChainTypes> AttestationService<T> {
|
|||||||
subnet: SubnetId,
|
subnet: SubnetId,
|
||||||
attestation: &Attestation<T::EthSpec>,
|
attestation: &Attestation<T::EthSpec>,
|
||||||
) -> bool {
|
) -> bool {
|
||||||
|
if self.import_all_attestations {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
let exact_subnet = ExactSubnet {
|
let exact_subnet = ExactSubnet {
|
||||||
subnet_id: subnet,
|
subnet_id: subnet,
|
||||||
slot: attestation.data.slot,
|
slot: attestation.data.slot,
|
||||||
|
@ -37,6 +37,14 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
|||||||
This will also advertise the beacon node as being long-lived subscribed to all subnets.")
|
This will also advertise the beacon node as being long-lived subscribed to all subnets.")
|
||||||
.takes_value(false),
|
.takes_value(false),
|
||||||
)
|
)
|
||||||
|
.arg(
|
||||||
|
Arg::with_name("import-all-attestations")
|
||||||
|
.long("import-all-attestations")
|
||||||
|
.help("Import and aggregate all attestations, regardless of validator subscriptions. \
|
||||||
|
This will only import attestations from already-subscribed subnets, use with \
|
||||||
|
--subscribe-all-subnets to ensure all attestations are received for import.")
|
||||||
|
.takes_value(false),
|
||||||
|
)
|
||||||
.arg(
|
.arg(
|
||||||
Arg::with_name("zero-ports")
|
Arg::with_name("zero-ports")
|
||||||
.long("zero-ports")
|
.long("zero-ports")
|
||||||
|
@ -373,6 +373,10 @@ pub fn set_network_config(
|
|||||||
config.subscribe_all_subnets = true;
|
config.subscribe_all_subnets = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if cli_args.is_present("import-all-attestations") {
|
||||||
|
config.import_all_attestations = true;
|
||||||
|
}
|
||||||
|
|
||||||
if let Some(listen_address_str) = cli_args.value_of("listen-address") {
|
if let Some(listen_address_str) = cli_args.value_of("listen-address") {
|
||||||
let listen_address = listen_address_str
|
let listen_address = listen_address_str
|
||||||
.parse()
|
.parse()
|
||||||
|
Loading…
Reference in New Issue
Block a user