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:
Age Manning 2020-11-30 22:55:08 +00:00
parent 77f3539654
commit c718e81eaf
4 changed files with 30 additions and 5 deletions

View File

@ -151,11 +151,19 @@ impl<TSpec: EthSpec> Behaviour<TSpec> {
) -> error::Result<Self> {
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_version::version_with_platform(),
local_key.public(),
);
)
};
let enr_fork_id = network_globals
.local_enr()

View File

@ -88,6 +88,10 @@ pub struct Config {
/// runtime.
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.
pub topics: Vec<GossipKind>,
}
@ -188,6 +192,7 @@ impl Default for Config {
client_version: lighthouse_version::version_with_platform(),
disable_discovery: false,
upnp_enabled: true,
private: false,
subscribe_all_subnets: false,
import_all_attestations: false,
topics: Vec::new(),

View File

@ -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.")
.takes_value(false),
)
.arg(
Arg::with_name("private")
.long("private")
.help("Prevents sending various client identification information.")
.takes_value(false),
)
.arg(
Arg::with_name("enr-udp-port")
.long("enr-udp-port")

View File

@ -305,6 +305,8 @@ pub fn get_config<E: EthSpec>(
}
graffiti.as_bytes()
} else if cli_args.is_present("private") {
b""
} else {
lighthouse_version::VERSION.as_bytes()
};
@ -577,6 +579,10 @@ pub fn set_network_config(
config.upnp_enabled = false;
}
if cli_args.is_present("private") {
config.private = true;
}
Ok(())
}