Skip to content

Commit

Permalink
fix(primitives/chain): use terminal_total_difficulty_passed to check …
Browse files Browse the repository at this point in the history
…merged activated or not

Signed-off-by: jsvisa <[email protected]>
  • Loading branch information
jsvisa committed Feb 19, 2024
1 parent 477a018 commit 1e7cbf1
Showing 1 changed file with 61 additions and 12 deletions.
73 changes: 61 additions & 12 deletions crates/primitives/src/chain/spec.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ pub static MAINNET: Lazy<Arc<ChainSpec>> = Lazy::new(|| {
// <https://etherscan.io/block/15537394>
paris_block_and_final_difficulty: Some((
15537394,
U256::from(58_750_003_716_598_352_816_469u128),
U256::from(58_750_003_716_598_352_816_469_u128),
)),
fork_timestamps: ForkTimestamps::default().shanghai(1681338455).cancun(1710338135),
hardforks: BTreeMap::from([
Expand All @@ -54,6 +54,7 @@ pub static MAINNET: Lazy<Arc<ChainSpec>> = Lazy::new(|| {
ForkCondition::TTD {
fork_block: None,
total_difficulty: U256::from(58_750_000_000_000_000_000_000_u128),
terminal_total_difficulty_passed: true,
},
),
(Hardfork::Shanghai, ForkCondition::Timestamp(1681338455)),
Expand Down Expand Up @@ -98,7 +99,11 @@ pub static GOERLI: Lazy<Arc<ChainSpec>> = Lazy::new(|| {
(Hardfork::London, ForkCondition::Block(5062605)),
(
Hardfork::Paris,
ForkCondition::TTD { fork_block: None, total_difficulty: U256::from(10_790_000) },
ForkCondition::TTD {
fork_block: None,
total_difficulty: U256::from(10_790_000),
terminal_total_difficulty_passed: true,
},
),
(Hardfork::Shanghai, ForkCondition::Timestamp(1678832736)),
(Hardfork::Cancun, ForkCondition::Timestamp(1705473120)),
Expand Down Expand Up @@ -146,6 +151,7 @@ pub static SEPOLIA: Lazy<Arc<ChainSpec>> = Lazy::new(|| {
ForkCondition::TTD {
fork_block: Some(1735371),
total_difficulty: U256::from(17_000_000_000_000_000u64),
terminal_total_difficulty_passed: true,
},
),
(Hardfork::Shanghai, ForkCondition::Timestamp(1677557088)),
Expand Down Expand Up @@ -190,7 +196,11 @@ pub static HOLESKY: Lazy<Arc<ChainSpec>> = Lazy::new(|| {
(Hardfork::London, ForkCondition::Block(0)),
(
Hardfork::Paris,
ForkCondition::TTD { fork_block: Some(0), total_difficulty: U256::ZERO },
ForkCondition::TTD {
fork_block: Some(0),
total_difficulty: U256::ZERO,
terminal_total_difficulty_passed: true,
},
),
(Hardfork::Shanghai, ForkCondition::Timestamp(1696000704)),
(Hardfork::Cancun, ForkCondition::Timestamp(1707305664)),
Expand Down Expand Up @@ -236,7 +246,11 @@ pub static DEV: Lazy<Arc<ChainSpec>> = Lazy::new(|| {
(Hardfork::London, ForkCondition::Block(0)),
(
Hardfork::Paris,
ForkCondition::TTD { fork_block: Some(0), total_difficulty: U256::from(0) },
ForkCondition::TTD {
fork_block: Some(0),
total_difficulty: U256::from(0),
terminal_total_difficulty_passed: true,
},
),
(Hardfork::Shanghai, ForkCondition::Timestamp(0)),
]),
Expand Down Expand Up @@ -279,7 +293,11 @@ pub static OP_GOERLI: Lazy<Arc<ChainSpec>> = Lazy::new(|| {
(Hardfork::GrayGlacier, ForkCondition::Block(0)),
(
Hardfork::Paris,
ForkCondition::TTD { fork_block: Some(0), total_difficulty: U256::from(0) },
ForkCondition::TTD {
fork_block: Some(0),
total_difficulty: U256::from(0),
terminal_total_difficulty_passed: true,
},
),
(Hardfork::Bedrock, ForkCondition::Block(4061224)),
(Hardfork::Regolith, ForkCondition::Timestamp(1679079600)),
Expand Down Expand Up @@ -334,7 +352,11 @@ pub static BASE_GOERLI: Lazy<Arc<ChainSpec>> = Lazy::new(|| {
(Hardfork::GrayGlacier, ForkCondition::Block(0)),
(
Hardfork::Paris,
ForkCondition::TTD { fork_block: Some(0), total_difficulty: U256::from(0) },
ForkCondition::TTD {
fork_block: Some(0),
total_difficulty: U256::from(0),
terminal_total_difficulty_passed: true,
},
),
(Hardfork::Bedrock, ForkCondition::Block(0)),
(Hardfork::Regolith, ForkCondition::Timestamp(1683219600)),
Expand Down Expand Up @@ -389,7 +411,11 @@ pub static BASE_SEPOLIA: Lazy<Arc<ChainSpec>> = Lazy::new(|| {
(Hardfork::GrayGlacier, ForkCondition::Block(0)),
(
Hardfork::Paris,
ForkCondition::TTD { fork_block: Some(0), total_difficulty: U256::from(0) },
ForkCondition::TTD {
fork_block: Some(0),
total_difficulty: U256::from(0),
terminal_total_difficulty_passed: true,
},
),
(Hardfork::Bedrock, ForkCondition::Block(0)),
(Hardfork::Regolith, ForkCondition::Timestamp(0)),
Expand Down Expand Up @@ -440,7 +466,11 @@ pub static BASE_MAINNET: Lazy<Arc<ChainSpec>> = Lazy::new(|| {
(Hardfork::GrayGlacier, ForkCondition::Block(0)),
(
Hardfork::Paris,
ForkCondition::TTD { fork_block: Some(0), total_difficulty: U256::from(0) },
ForkCondition::TTD {
fork_block: Some(0),
total_difficulty: U256::from(0),
terminal_total_difficulty_passed: true,
},
),
(Hardfork::Bedrock, ForkCondition::Block(0)),
(Hardfork::Regolith, ForkCondition::Timestamp(0)),
Expand Down Expand Up @@ -1027,6 +1057,9 @@ impl From<Genesis> for ChainSpec {
ForkCondition::TTD {
total_difficulty: ttd,
fork_block: genesis.config.merge_netsplit_block,
terminal_total_difficulty_passed: genesis
.config
.terminal_total_difficulty_passed,
},
);
}
Expand Down Expand Up @@ -1221,7 +1254,11 @@ impl ChainSpecBuilder {
pub fn paris_at_ttd(self, ttd: U256) -> Self {
self.with_fork(
Hardfork::Paris,
ForkCondition::TTD { total_difficulty: ttd, fork_block: None },
ForkCondition::TTD {
total_difficulty: ttd,
fork_block: None,
terminal_total_difficulty_passed: true,
},
)
}

Expand Down Expand Up @@ -1299,7 +1336,11 @@ impl ChainSpecBuilder {
self = self.london_activated();
self.hardforks.insert(
Hardfork::Paris,
ForkCondition::TTD { fork_block: Some(0), total_difficulty: U256::ZERO },
ForkCondition::TTD {
fork_block: Some(0),
total_difficulty: U256::ZERO,
terminal_total_difficulty_passed: true,
},
);
self
}
Expand Down Expand Up @@ -1399,6 +1440,8 @@ pub enum ForkCondition {
fork_block: Option<BlockNumber>,
/// The total difficulty after which the fork is activated.
total_difficulty: U256,
/// Whether the fork is activated after the terminal total difficulty has been passed.
terminal_total_difficulty_passed: bool,
},
/// The fork is activated after a specific timestamp.
Timestamp(u64),
Expand Down Expand Up @@ -1516,13 +1559,17 @@ impl Display for DisplayFork {
ForkCondition::Block(at) | ForkCondition::Timestamp(at) => {
write!(f, "{:32} @{}", name_with_eip, at)?;
}
ForkCondition::TTD { fork_block, total_difficulty } => {
ForkCondition::TTD {
fork_block: _,
total_difficulty,
terminal_total_difficulty_passed,
} => {
writeln!(
f,
"{:32} @{} ({})",
name_with_eip,
total_difficulty,
if fork_block.is_some() {
if terminal_total_difficulty_passed {
"network is known to be merged"
} else {
"network is not known to be merged"
Expand Down Expand Up @@ -1887,6 +1934,7 @@ Post-merge hard forks (timestamp based):
ForkCondition::TTD {
fork_block: Some(101),
total_difficulty: U256::from(10_790_000),
terminal_total_difficulty_passed: true,
},
)
.with_fork(Hardfork::Shanghai, ForkCondition::Timestamp(11313123))
Expand Down Expand Up @@ -1922,6 +1970,7 @@ Post-merge hard forks (timestamp based):
let fork_cond_ttd_no_new_spec = fork_cond_block_only_case.satisfy(ForkCondition::TTD {
fork_block: None,
total_difficulty: U256::from(10_790_000),
terminal_total_difficulty_passed: false,
});
let fork_cond_ttd_no_new_spec_expected =
Head { total_difficulty: U256::from(10_790_000), ..Default::default() };
Expand Down

0 comments on commit 1e7cbf1

Please sign in to comment.