Add privacy option (#2016)
Adds a `--privacy` CLI flag to the beacon node that users may opt into. This does two things: - Removes client identifying information from the identify libp2p protocol - Changes the default graffiti to "" if no graffiti is set.
This commit is contained in:
parent
77f3539654
commit
c718e81eaf
@ -151,11 +151,19 @@ impl<TSpec: EthSpec> Behaviour<TSpec> {
|
|||||||
) -> error::Result<Self> {
|
) -> error::Result<Self> {
|
||||||
let behaviour_log = log.new(o!());
|
let behaviour_log = log.new(o!());
|
||||||
|
|
||||||
let identify = Identify::new(
|
let identify = if net_conf.private {
|
||||||
|
Identify::new(
|
||||||
|
"".into(),
|
||||||
|
"".into(),
|
||||||
|
local_key.public(), // Still send legitimate public key
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
Identify::new(
|
||||||
"lighthouse/libp2p".into(),
|
"lighthouse/libp2p".into(),
|
||||||
lighthouse_version::version_with_platform(),
|
lighthouse_version::version_with_platform(),
|
||||||
local_key.public(),
|
local_key.public(),
|
||||||
);
|
)
|
||||||
|
};
|
||||||
|
|
||||||
let enr_fork_id = network_globals
|
let enr_fork_id = network_globals
|
||||||
.local_enr()
|
.local_enr()
|
||||||
|
@ -88,6 +88,10 @@ pub struct Config {
|
|||||||
/// runtime.
|
/// runtime.
|
||||||
pub import_all_attestations: bool,
|
pub import_all_attestations: bool,
|
||||||
|
|
||||||
|
/// Indicates if the user has set the network to be in private mode. Currently this
|
||||||
|
/// prevents sending client identifying information over identify.
|
||||||
|
pub private: 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>,
|
||||||
}
|
}
|
||||||
@ -188,6 +192,7 @@ impl Default for Config {
|
|||||||
client_version: lighthouse_version::version_with_platform(),
|
client_version: lighthouse_version::version_with_platform(),
|
||||||
disable_discovery: false,
|
disable_discovery: false,
|
||||||
upnp_enabled: true,
|
upnp_enabled: true,
|
||||||
|
private: false,
|
||||||
subscribe_all_subnets: false,
|
subscribe_all_subnets: false,
|
||||||
import_all_attestations: false,
|
import_all_attestations: false,
|
||||||
topics: Vec::new(),
|
topics: Vec::new(),
|
||||||
|
@ -97,6 +97,12 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
|||||||
.help("Disables UPnP support. Setting this will prevent Lighthouse from attempting to automatically establish external port mappings.")
|
.help("Disables UPnP support. Setting this will prevent Lighthouse from attempting to automatically establish external port mappings.")
|
||||||
.takes_value(false),
|
.takes_value(false),
|
||||||
)
|
)
|
||||||
|
.arg(
|
||||||
|
Arg::with_name("private")
|
||||||
|
.long("private")
|
||||||
|
.help("Prevents sending various client identification information.")
|
||||||
|
.takes_value(false),
|
||||||
|
)
|
||||||
.arg(
|
.arg(
|
||||||
Arg::with_name("enr-udp-port")
|
Arg::with_name("enr-udp-port")
|
||||||
.long("enr-udp-port")
|
.long("enr-udp-port")
|
||||||
|
@ -305,6 +305,8 @@ pub fn get_config<E: EthSpec>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
graffiti.as_bytes()
|
graffiti.as_bytes()
|
||||||
|
} else if cli_args.is_present("private") {
|
||||||
|
b""
|
||||||
} else {
|
} else {
|
||||||
lighthouse_version::VERSION.as_bytes()
|
lighthouse_version::VERSION.as_bytes()
|
||||||
};
|
};
|
||||||
@ -577,6 +579,10 @@ pub fn set_network_config(
|
|||||||
config.upnp_enabled = false;
|
config.upnp_enabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if cli_args.is_present("private") {
|
||||||
|
config.private = true;
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user