mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-02 16:21:42 +00:00
Append client version info to graffiti (#7558)
* #7201 Co-Authored-By: Tan Chee Keong <tanck@sigmaprime.io> Co-Authored-By: chonghe <44791194+chong-he@users.noreply.github.com> Co-Authored-By: Jimmy Chen <jimmy@sigmaprime.io> Co-Authored-By: Tan Chee Keong <tanck2005@gmail.com>
This commit is contained in:
@@ -150,6 +150,16 @@ pub struct ValidatorClient {
|
||||
)]
|
||||
pub graffiti: Option<String>,
|
||||
|
||||
#[clap(
|
||||
long,
|
||||
requires = "graffiti",
|
||||
help = "When used, client version info will be prepended to user custom graffiti, with a space in between. \
|
||||
This should only be used with a Lighthouse beacon node.",
|
||||
display_order = 0,
|
||||
help_heading = FLAG_HEADER
|
||||
)]
|
||||
pub graffiti_append: bool,
|
||||
|
||||
#[clap(
|
||||
long,
|
||||
value_name = "GRAFFITI-FILE",
|
||||
|
||||
@@ -7,7 +7,7 @@ use directory::{
|
||||
DEFAULT_HARDCODED_NETWORK, DEFAULT_ROOT_DIR, DEFAULT_SECRET_DIR, DEFAULT_VALIDATOR_DIR,
|
||||
get_network_dir,
|
||||
};
|
||||
use eth2::types::Graffiti;
|
||||
use eth2::types::{Graffiti, GraffitiPolicy};
|
||||
use graffiti_file::GraffitiFile;
|
||||
use initialized_validators::Config as InitializedValidatorsConfig;
|
||||
use lighthouse_validator_store::Config as ValidatorStoreConfig;
|
||||
@@ -55,6 +55,8 @@ pub struct Config {
|
||||
pub graffiti: Option<Graffiti>,
|
||||
/// Graffiti file to load per validator graffitis.
|
||||
pub graffiti_file: Option<GraffitiFile>,
|
||||
/// GraffitiPolicy to append client version info
|
||||
pub graffiti_policy: Option<GraffitiPolicy>,
|
||||
/// Configuration for the HTTP REST API.
|
||||
pub http_api: validator_http_api::Config,
|
||||
/// Configuration for the HTTP REST API.
|
||||
@@ -119,6 +121,7 @@ impl Default for Config {
|
||||
long_timeouts_multiplier: 1,
|
||||
graffiti: None,
|
||||
graffiti_file: None,
|
||||
graffiti_policy: None,
|
||||
http_api: <_>::default(),
|
||||
http_metrics: <_>::default(),
|
||||
beacon_node_fallback: <_>::default(),
|
||||
@@ -233,6 +236,12 @@ impl Config {
|
||||
}
|
||||
}
|
||||
|
||||
config.graffiti_policy = if validator_client_config.graffiti_append {
|
||||
Some(GraffitiPolicy::AppendClientVersions)
|
||||
} else {
|
||||
Some(GraffitiPolicy::PreserveUserGraffiti)
|
||||
};
|
||||
|
||||
if let Some(input_fee_recipient) = validator_client_config.suggested_fee_recipient {
|
||||
config.validator_store.fee_recipient = Some(input_fee_recipient);
|
||||
}
|
||||
|
||||
@@ -486,7 +486,8 @@ impl<E: EthSpec> ProductionValidatorClient<E> {
|
||||
.executor(context.executor.clone())
|
||||
.chain_spec(context.eth2_config.spec.clone())
|
||||
.graffiti(config.graffiti)
|
||||
.graffiti_file(config.graffiti_file.clone());
|
||||
.graffiti_file(config.graffiti_file.clone())
|
||||
.graffiti_policy(config.graffiti_policy);
|
||||
|
||||
// If we have proposer nodes, add them to the block service builder.
|
||||
if proposer_nodes_num > 0 {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
use beacon_node_fallback::{ApiTopic, BeaconNodeFallback, Error as FallbackError, Errors};
|
||||
use bls::PublicKeyBytes;
|
||||
use eth2::types::GraffitiPolicy;
|
||||
use eth2::{BeaconNodeHttpClient, StatusCode};
|
||||
use graffiti_file::{GraffitiFile, determine_graffiti};
|
||||
use logging::crit;
|
||||
@@ -50,6 +51,7 @@ pub struct BlockServiceBuilder<S, T> {
|
||||
chain_spec: Option<Arc<ChainSpec>>,
|
||||
graffiti: Option<Graffiti>,
|
||||
graffiti_file: Option<GraffitiFile>,
|
||||
graffiti_policy: Option<GraffitiPolicy>,
|
||||
}
|
||||
|
||||
impl<S: ValidatorStore, T: SlotClock + 'static> BlockServiceBuilder<S, T> {
|
||||
@@ -63,6 +65,7 @@ impl<S: ValidatorStore, T: SlotClock + 'static> BlockServiceBuilder<S, T> {
|
||||
chain_spec: None,
|
||||
graffiti: None,
|
||||
graffiti_file: None,
|
||||
graffiti_policy: None,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,6 +109,11 @@ impl<S: ValidatorStore, T: SlotClock + 'static> BlockServiceBuilder<S, T> {
|
||||
self
|
||||
}
|
||||
|
||||
pub fn graffiti_policy(mut self, graffiti_policy: Option<GraffitiPolicy>) -> Self {
|
||||
self.graffiti_policy = graffiti_policy;
|
||||
self
|
||||
}
|
||||
|
||||
pub fn build(self) -> Result<BlockService<S, T>, String> {
|
||||
Ok(BlockService {
|
||||
inner: Arc::new(Inner {
|
||||
@@ -127,6 +135,7 @@ impl<S: ValidatorStore, T: SlotClock + 'static> BlockServiceBuilder<S, T> {
|
||||
proposer_nodes: self.proposer_nodes,
|
||||
graffiti: self.graffiti,
|
||||
graffiti_file: self.graffiti_file,
|
||||
graffiti_policy: self.graffiti_policy,
|
||||
}),
|
||||
})
|
||||
}
|
||||
@@ -192,6 +201,7 @@ pub struct Inner<S, T> {
|
||||
chain_spec: Arc<ChainSpec>,
|
||||
graffiti: Option<Graffiti>,
|
||||
graffiti_file: Option<GraffitiFile>,
|
||||
graffiti_policy: Option<GraffitiPolicy>,
|
||||
}
|
||||
|
||||
/// Attempts to produce attestations for any block producer(s) at the start of the epoch.
|
||||
@@ -466,6 +476,7 @@ impl<S: ValidatorStore + 'static, T: SlotClock + 'static> BlockService<S, T> {
|
||||
randao_reveal_ref,
|
||||
graffiti.as_ref(),
|
||||
builder_boost_factor,
|
||||
self_ref.graffiti_policy,
|
||||
)
|
||||
.await
|
||||
})
|
||||
@@ -492,6 +503,7 @@ impl<S: ValidatorStore + 'static, T: SlotClock + 'static> BlockService<S, T> {
|
||||
randao_reveal_ref,
|
||||
graffiti.as_ref(),
|
||||
builder_boost_factor,
|
||||
self_ref.graffiti_policy,
|
||||
)
|
||||
.await
|
||||
.map_err(|e| {
|
||||
|
||||
Reference in New Issue
Block a user