Adds ENR "eth2" field and Fork logic to networking (#953)

* Merge #913

* Correct release tests

* Completed release test corrections

* Initial work on upgrading discovery

* Updates discovery to latest version

* Update ENR initialisation logic

* Remove debug statements

* Shifts timing units to slots

* Initial work

* Add initial fork versioning and EnrForkId

* Correct linking for EnrForkId

* Adds eth2 field to local ENR

* Initial work to eth2 field integration

* Integrate eth2 field into discovery

* temp commit

* Add a timer to adjust fork versions during a hard fork for the ENR
This commit is contained in:
Age Manning
2020-03-24 21:45:53 +11:00
committed by GitHub
parent af1c5c326c
commit 58111cddb2
17 changed files with 431 additions and 235 deletions

View File

@@ -150,6 +150,14 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
automatically.")
.takes_value(true),
)
/* Client/chain related arguments */
.arg(
Arg::with_name("disabled-forks")
.long("disabled-forks")
.value_name("STRING")
.help("A comma separated list of forks that will be disabled.")
.takes_value(true),
)
/* REST API related arguments */
.arg(
Arg::with_name("http")

View File

@@ -187,6 +187,19 @@ pub fn get_configs<E: EthSpec>(
client_config.network.secret_key_hex = Some(p2p_priv_key.to_string());
}
/*
* Chain specification
*/
if let Some(disabled_forks_str) = cli_args.value_of("disabled-forks") {
client_config.disabled_forks = disabled_forks_str
.split(',')
.map(|fork_name| {
fork_name
.parse()
.map_err(|_| format!("Invalid fork name: {}", fork_name))
})
.collect::<Result<Vec<String>>>()?;
}
/*
* Http server
*/

View File

@@ -72,7 +72,7 @@ impl<E: EthSpec> ProductionBeaconNode<E> {
/// Client behaviour is defined by the given `client_config`.
pub fn new(
context: RuntimeContext<E>,
client_config: ClientConfig,
mut client_config: ClientConfig,
) -> impl Future<Item = Self, Error = String> {
let http_eth2_config = context.eth2_config().clone();
let spec = context.eth2_config().spec.clone();
@@ -124,7 +124,7 @@ impl<E: EthSpec> ProductionBeaconNode<E> {
.system_time_slot_clock()?
.websocket_event_handler(client_config.websocket_server.clone())?
.build_beacon_chain()?
.network(&client_config.network)?
.network(&mut client_config.network)?
.notifier()?;
let builder = if client_config.rest_api.enabled {