Add default config options for transition constants (#2940)

## Issue Addressed

Continuation to #2934 

## Proposed Changes

Currently, we have the transition fields in the config (`TERMINAL_TOTAL_DIFFICULTY`, `TERMINAL_BLOCK_HASH` and `TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH`) as mandatory fields. 

This is causing compatibility issues with other client BN's (nimbus and teku v22.1.0) which don't return these fields on a `eth/v1/config/spec` api call. Since we don't use this values until the merge, I think it's okay to have default values set for these fields as well to ensure compatibility.
This commit is contained in:
Pawan Dhananjay 2022-01-20 23:05:42 +00:00
parent f0f327af0c
commit 799aedd631

View File

@ -611,9 +611,15 @@ pub struct Config {
#[serde(default)] #[serde(default)]
pub preset_base: String, pub preset_base: String,
// TODO(merge): remove this default
#[serde(default = "default_terminal_total_difficulty")]
#[serde(with = "eth2_serde_utils::quoted_u256")] #[serde(with = "eth2_serde_utils::quoted_u256")]
pub terminal_total_difficulty: Uint256, pub terminal_total_difficulty: Uint256,
// TODO(merge): remove this default
#[serde(default = "default_terminal_block_hash")]
pub terminal_block_hash: Hash256, pub terminal_block_hash: Hash256,
// TODO(merge): remove this default
#[serde(default = "default_terminal_block_hash_activation_epoch")]
pub terminal_block_hash_activation_epoch: Epoch, pub terminal_block_hash_activation_epoch: Epoch,
#[serde(with = "eth2_serde_utils::quoted_u64")] #[serde(with = "eth2_serde_utils::quoted_u64")]
@ -682,6 +688,20 @@ fn default_bellatrix_fork_epoch() -> Option<MaybeQuoted<Epoch>> {
None None
} }
fn default_terminal_total_difficulty() -> Uint256 {
"115792089237316195423570985008687907853269984665640564039457584007913129638912"
.parse()
.unwrap()
}
fn default_terminal_block_hash() -> Hash256 {
Hash256::zero()
}
fn default_terminal_block_hash_activation_epoch() -> Epoch {
Epoch::new(u64::MAX)
}
impl Default for Config { impl Default for Config {
fn default() -> Self { fn default() -> Self {
let chain_spec = MainnetEthSpec::default_spec(); let chain_spec = MainnetEthSpec::default_spec();