@ -18,6 +18,7 @@ package params
import (
import (
"fmt"
"fmt"
"math"
"math/big"
"math/big"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common"
@ -55,7 +56,6 @@ var (
ArrowGlacierBlock : big . NewInt ( 13_773_000 ) ,
ArrowGlacierBlock : big . NewInt ( 13_773_000 ) ,
GrayGlacierBlock : big . NewInt ( 15_050_000 ) ,
GrayGlacierBlock : big . NewInt ( 15_050_000 ) ,
TerminalTotalDifficulty : MainnetTerminalTotalDifficulty , // 58_750_000_000_000_000_000_000
TerminalTotalDifficulty : MainnetTerminalTotalDifficulty , // 58_750_000_000_000_000_000_000
TerminalTotalDifficultyPassed : true ,
ShanghaiTime : newUint64 ( 1681338455 ) ,
ShanghaiTime : newUint64 ( 1681338455 ) ,
CancunTime : newUint64 ( 1710338135 ) ,
CancunTime : newUint64 ( 1710338135 ) ,
DepositContractAddress : common . HexToAddress ( "0x00000000219ab540356cbb839cbe05303d7705fa" ) ,
DepositContractAddress : common . HexToAddress ( "0x00000000219ab540356cbb839cbe05303d7705fa" ) ,
@ -80,7 +80,6 @@ var (
ArrowGlacierBlock : nil ,
ArrowGlacierBlock : nil ,
GrayGlacierBlock : nil ,
GrayGlacierBlock : nil ,
TerminalTotalDifficulty : big . NewInt ( 0 ) ,
TerminalTotalDifficulty : big . NewInt ( 0 ) ,
TerminalTotalDifficultyPassed : true ,
MergeNetsplitBlock : nil ,
MergeNetsplitBlock : nil ,
ShanghaiTime : newUint64 ( 1696000704 ) ,
ShanghaiTime : newUint64 ( 1696000704 ) ,
CancunTime : newUint64 ( 1707305664 ) ,
CancunTime : newUint64 ( 1707305664 ) ,
@ -105,7 +104,6 @@ var (
ArrowGlacierBlock : nil ,
ArrowGlacierBlock : nil ,
GrayGlacierBlock : nil ,
GrayGlacierBlock : nil ,
TerminalTotalDifficulty : big . NewInt ( 17_000_000_000_000_000 ) ,
TerminalTotalDifficulty : big . NewInt ( 17_000_000_000_000_000 ) ,
TerminalTotalDifficultyPassed : true ,
MergeNetsplitBlock : big . NewInt ( 1735371 ) ,
MergeNetsplitBlock : big . NewInt ( 1735371 ) ,
ShanghaiTime : newUint64 ( 1677557088 ) ,
ShanghaiTime : newUint64 ( 1677557088 ) ,
CancunTime : newUint64 ( 1706655072 ) ,
CancunTime : newUint64 ( 1706655072 ) ,
@ -130,13 +128,12 @@ var (
LondonBlock : big . NewInt ( 0 ) ,
LondonBlock : big . NewInt ( 0 ) ,
ArrowGlacierBlock : big . NewInt ( 0 ) ,
ArrowGlacierBlock : big . NewInt ( 0 ) ,
GrayGlacierBlock : big . NewInt ( 0 ) ,
GrayGlacierBlock : big . NewInt ( 0 ) ,
TerminalTotalDifficulty : big . NewInt ( math . MaxInt64 ) ,
MergeNetsplitBlock : nil ,
MergeNetsplitBlock : nil ,
ShanghaiTime : nil ,
ShanghaiTime : nil ,
CancunTime : nil ,
CancunTime : nil ,
PragueTime : nil ,
PragueTime : nil ,
VerkleTime : nil ,
VerkleTime : nil ,
TerminalTotalDifficulty : nil ,
TerminalTotalDifficultyPassed : true ,
Ethash : new ( EthashConfig ) ,
Ethash : new ( EthashConfig ) ,
Clique : nil ,
Clique : nil ,
}
}
@ -158,9 +155,8 @@ var (
GrayGlacierBlock : big . NewInt ( 0 ) ,
GrayGlacierBlock : big . NewInt ( 0 ) ,
ShanghaiTime : newUint64 ( 0 ) ,
ShanghaiTime : newUint64 ( 0 ) ,
CancunTime : newUint64 ( 0 ) ,
CancunTime : newUint64 ( 0 ) ,
PragueTime : newUint64 ( 0 ) ,
TerminalTotalDifficulty : big . NewInt ( 0 ) ,
TerminalTotalDifficulty : big . NewInt ( 0 ) ,
TerminalTotalDifficultyPassed : true ,
PragueTime : newUint64 ( 0 ) ,
}
}
// AllCliqueProtocolChanges contains every protocol change (EIPs) introduced
// AllCliqueProtocolChanges contains every protocol change (EIPs) introduced
@ -187,8 +183,7 @@ var (
CancunTime : nil ,
CancunTime : nil ,
PragueTime : nil ,
PragueTime : nil ,
VerkleTime : nil ,
VerkleTime : nil ,
TerminalTotalDifficulty : nil ,
TerminalTotalDifficulty : big . NewInt ( math . MaxInt64 ) ,
TerminalTotalDifficultyPassed : false ,
Ethash : nil ,
Ethash : nil ,
Clique : & CliqueConfig { Period : 0 , Epoch : 30000 } ,
Clique : & CliqueConfig { Period : 0 , Epoch : 30000 } ,
}
}
@ -217,8 +212,7 @@ var (
CancunTime : nil ,
CancunTime : nil ,
PragueTime : nil ,
PragueTime : nil ,
VerkleTime : nil ,
VerkleTime : nil ,
TerminalTotalDifficulty : nil ,
TerminalTotalDifficulty : big . NewInt ( math . MaxInt64 ) ,
TerminalTotalDifficultyPassed : false ,
Ethash : new ( EthashConfig ) ,
Ethash : new ( EthashConfig ) ,
Clique : nil ,
Clique : nil ,
}
}
@ -248,7 +242,6 @@ var (
PragueTime : newUint64 ( 0 ) ,
PragueTime : newUint64 ( 0 ) ,
VerkleTime : nil ,
VerkleTime : nil ,
TerminalTotalDifficulty : big . NewInt ( 0 ) ,
TerminalTotalDifficulty : big . NewInt ( 0 ) ,
TerminalTotalDifficultyPassed : true ,
Ethash : new ( EthashConfig ) ,
Ethash : new ( EthashConfig ) ,
Clique : nil ,
Clique : nil ,
}
}
@ -277,8 +270,7 @@ var (
CancunTime : nil ,
CancunTime : nil ,
PragueTime : nil ,
PragueTime : nil ,
VerkleTime : nil ,
VerkleTime : nil ,
TerminalTotalDifficulty : nil ,
TerminalTotalDifficulty : big . NewInt ( math . MaxInt64 ) ,
TerminalTotalDifficultyPassed : false ,
Ethash : new ( EthashConfig ) ,
Ethash : new ( EthashConfig ) ,
Clique : nil ,
Clique : nil ,
}
}
@ -332,13 +324,6 @@ type ChainConfig struct {
// the network that triggers the consensus upgrade.
// the network that triggers the consensus upgrade.
TerminalTotalDifficulty * big . Int ` json:"terminalTotalDifficulty,omitempty" `
TerminalTotalDifficulty * big . Int ` json:"terminalTotalDifficulty,omitempty" `
// TerminalTotalDifficultyPassed is a flag specifying that the network already
// passed the terminal total difficulty. Its purpose is to disable legacy sync
// even without having seen the TTD locally (safer long term).
//
// TODO(karalabe): Drop this field eventually (always assuming PoS mode)
TerminalTotalDifficultyPassed bool ` json:"terminalTotalDifficultyPassed,omitempty" `
DepositContractAddress common . Address ` json:"depositContractAddress,omitempty" `
DepositContractAddress common . Address ` json:"depositContractAddress,omitempty" `
// Various consensus engines
// Various consensus engines
@ -377,21 +362,9 @@ func (c *ChainConfig) Description() string {
banner += fmt . Sprintf ( "Chain ID: %v (%s)\n" , c . ChainID , network )
banner += fmt . Sprintf ( "Chain ID: %v (%s)\n" , c . ChainID , network )
switch {
switch {
case c . Ethash != nil :
case c . Ethash != nil :
if c . TerminalTotalDifficulty == nil {
banner += "Consensus: Ethash (proof-of-work)\n"
} else if ! c . TerminalTotalDifficultyPassed {
banner += "Consensus: Beacon (proof-of-stake), merging from Ethash (proof-of-work)\n"
} else {
banner += "Consensus: Beacon (proof-of-stake), merged from Ethash (proof-of-work)\n"
banner += "Consensus: Beacon (proof-of-stake), merged from Ethash (proof-of-work)\n"
}
case c . Clique != nil :
case c . Clique != nil :
if c . TerminalTotalDifficulty == nil {
banner += "Consensus: Clique (proof-of-authority)\n"
} else if ! c . TerminalTotalDifficultyPassed {
banner += "Consensus: Beacon (proof-of-stake), merging from Clique (proof-of-authority)\n"
} else {
banner += "Consensus: Beacon (proof-of-stake), merged from Clique (proof-of-authority)\n"
banner += "Consensus: Beacon (proof-of-stake), merged from Clique (proof-of-authority)\n"
}
default :
default :
banner += "Consensus: unknown\n"
banner += "Consensus: unknown\n"
}
}
@ -426,18 +399,13 @@ func (c *ChainConfig) Description() string {
banner += "\n"
banner += "\n"
// Add a special section for the merge as it's non-obvious
// Add a special section for the merge as it's non-obvious
if c . TerminalTotalDifficulty == nil {
banner += "The Merge is not yet available for this network!\n"
banner += " - Hard-fork specification: https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md\n"
} else {
banner += "Merge configured:\n"
banner += "Merge configured:\n"
banner += " - Hard-fork specification: https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md\n"
banner += " - Hard-fork specification: https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md\n"
banner += fmt . Sprintf ( " - Network known to be merged: %v \n" , c . TerminalTotalDifficultyPassed )
banner += " - Network known to be merged\n"
banner += fmt . Sprintf ( " - Total terminal difficulty: %v\n" , c . TerminalTotalDifficulty )
banner += fmt . Sprintf ( " - Total terminal difficulty: %v\n" , c . TerminalTotalDifficulty )
if c . MergeNetsplitBlock != nil {
if c . MergeNetsplitBlock != nil {
banner += fmt . Sprintf ( " - Merge netsplit block: #%-8v\n" , c . MergeNetsplitBlock )
banner += fmt . Sprintf ( " - Merge netsplit block: #%-8v\n" , c . MergeNetsplitBlock )
}
}
}
banner += "\n"
banner += "\n"
// Create a list of forks post-merge
// Create a list of forks post-merge