@ -100,23 +100,24 @@ var (
// RopstenChainConfig contains the chain parameters to run a node on the Ropsten test network.
RopstenChainConfig = & ChainConfig {
ChainID : big . NewInt ( 3 ) ,
HomesteadBlock : big . NewInt ( 0 ) ,
DAOForkBlock : nil ,
DAOForkSupport : true ,
EIP150Block : big . NewInt ( 0 ) ,
EIP150Hash : common . HexToHash ( "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d" ) ,
EIP155Block : big . NewInt ( 10 ) ,
EIP158Block : big . NewInt ( 10 ) ,
ByzantiumBlock : big . NewInt ( 1_700_000 ) ,
ConstantinopleBlock : big . NewInt ( 4_230_000 ) ,
PetersburgBlock : big . NewInt ( 4_939_394 ) ,
IstanbulBlock : big . NewInt ( 6_485_846 ) ,
MuirGlacierBlock : big . NewInt ( 7_117_117 ) ,
BerlinBlock : big . NewInt ( 9_812_189 ) ,
LondonBlock : big . NewInt ( 10_499_401 ) ,
TerminalTotalDifficulty : new ( big . Int ) . SetUint64 ( 50000000000000000 ) ,
Ethash : new ( EthashConfig ) ,
ChainID : big . NewInt ( 3 ) ,
HomesteadBlock : big . NewInt ( 0 ) ,
DAOForkBlock : nil ,
DAOForkSupport : true ,
EIP150Block : big . NewInt ( 0 ) ,
EIP150Hash : common . HexToHash ( "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d" ) ,
EIP155Block : big . NewInt ( 10 ) ,
EIP158Block : big . NewInt ( 10 ) ,
ByzantiumBlock : big . NewInt ( 1_700_000 ) ,
ConstantinopleBlock : big . NewInt ( 4_230_000 ) ,
PetersburgBlock : big . NewInt ( 4_939_394 ) ,
IstanbulBlock : big . NewInt ( 6_485_846 ) ,
MuirGlacierBlock : big . NewInt ( 7_117_117 ) ,
BerlinBlock : big . NewInt ( 9_812_189 ) ,
LondonBlock : big . NewInt ( 10_499_401 ) ,
TerminalTotalDifficulty : new ( big . Int ) . SetUint64 ( 50_000_000_000_000_000 ) ,
TerminalTotalDifficultyPassed : true ,
Ethash : new ( EthashConfig ) ,
}
// RopstenTrustedCheckpoint contains the light client trusted checkpoint for the Ropsten test network.
@ -142,23 +143,24 @@ var (
// SepoliaChainConfig contains the chain parameters to run a node on the Sepolia test network.
SepoliaChainConfig = & ChainConfig {
ChainID : big . NewInt ( 11155111 ) ,
HomesteadBlock : big . NewInt ( 0 ) ,
DAOForkBlock : nil ,
DAOForkSupport : true ,
EIP150Block : big . NewInt ( 0 ) ,
EIP155Block : big . NewInt ( 0 ) ,
EIP158Block : big . NewInt ( 0 ) ,
ByzantiumBlock : big . NewInt ( 0 ) ,
ConstantinopleBlock : big . NewInt ( 0 ) ,
PetersburgBlock : big . NewInt ( 0 ) ,
IstanbulBlock : big . NewInt ( 0 ) ,
MuirGlacierBlock : big . NewInt ( 0 ) ,
BerlinBlock : big . NewInt ( 0 ) ,
LondonBlock : big . NewInt ( 0 ) ,
TerminalTotalDifficulty : big . NewInt ( 17_000_000_000_000_000 ) ,
MergeNetsplitBlock : big . NewInt ( 1735371 ) ,
Ethash : new ( EthashConfig ) ,
ChainID : big . NewInt ( 11155111 ) ,
HomesteadBlock : big . NewInt ( 0 ) ,
DAOForkBlock : nil ,
DAOForkSupport : true ,
EIP150Block : big . NewInt ( 0 ) ,
EIP155Block : big . NewInt ( 0 ) ,
EIP158Block : big . NewInt ( 0 ) ,
ByzantiumBlock : big . NewInt ( 0 ) ,
ConstantinopleBlock : big . NewInt ( 0 ) ,
PetersburgBlock : big . NewInt ( 0 ) ,
IstanbulBlock : big . NewInt ( 0 ) ,
MuirGlacierBlock : big . NewInt ( 0 ) ,
BerlinBlock : big . NewInt ( 0 ) ,
LondonBlock : big . NewInt ( 0 ) ,
TerminalTotalDifficulty : big . NewInt ( 17_000_000_000_000_000 ) ,
TerminalTotalDifficultyPassed : true ,
MergeNetsplitBlock : big . NewInt ( 1735371 ) ,
Ethash : new ( EthashConfig ) ,
}
// SepoliaTrustedCheckpoint contains the light client trusted checkpoint for the Sepolia test network.
@ -263,16 +265,16 @@ var (
//
// This configuration is intentionally not using keyed fields to force anyone
// adding flags to the config to also have to set these fields.
AllEthashProtocolChanges = & ChainConfig { big . NewInt ( 1337 ) , big . NewInt ( 0 ) , nil , false , big . NewInt ( 0 ) , common . Hash { } , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , nil , nil , nil , nil , new ( EthashConfig ) , nil }
AllEthashProtocolChanges = & ChainConfig { big . NewInt ( 1337 ) , big . NewInt ( 0 ) , nil , false , big . NewInt ( 0 ) , common . Hash { } , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , nil , nil , nil , nil , false , new ( EthashConfig ) , nil }
// AllCliqueProtocolChanges contains every protocol change (EIPs) introduced
// and accepted by the Ethereum core developers into the Clique consensus.
//
// This configuration is intentionally not using keyed fields to force anyone
// adding flags to the config to also have to set these fields.
AllCliqueProtocolChanges = & ChainConfig { big . NewInt ( 1337 ) , big . NewInt ( 0 ) , nil , false , big . NewInt ( 0 ) , common . Hash { } , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , nil , nil , nil , nil , nil , nil , nil , & CliqueConfig { Period : 0 , Epoch : 30000 } }
AllCliqueProtocolChanges = & ChainConfig { big . NewInt ( 1337 ) , big . NewInt ( 0 ) , nil , false , big . NewInt ( 0 ) , common . Hash { } , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , nil , nil , nil , nil , nil , nil , false , nil , & CliqueConfig { Period : 0 , Epoch : 30000 } }
TestChainConfig = & ChainConfig { big . NewInt ( 1 ) , big . NewInt ( 0 ) , nil , false , big . NewInt ( 0 ) , common . Hash { } , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , nil , nil , nil , nil , new ( EthashConfig ) , nil }
TestChainConfig = & ChainConfig { big . NewInt ( 1 ) , big . NewInt ( 0 ) , nil , false , big . NewInt ( 0 ) , common . Hash { } , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , big . NewInt ( 0 ) , nil , nil , nil , nil , false , new ( EthashConfig ) , nil }
TestRules = TestChainConfig . Rules ( new ( big . Int ) , false )
)
@ -370,6 +372,11 @@ type ChainConfig struct {
// the network that triggers the consensus upgrade.
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).
TerminalTotalDifficultyPassed bool ` json:"terminalTotalDifficultyPassed,omitempty" `
// Various consensus engines
Ethash * EthashConfig ` json:"ethash,omitempty" `
Clique * CliqueConfig ` json:"clique,omitempty" `
@ -408,12 +415,16 @@ func (c *ChainConfig) String() string {
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"
}
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"
}
@ -462,9 +473,10 @@ func (c *ChainConfig) String() string {
banner += " - Hard-fork specification: https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md)"
} else {
banner += "Merge configured:\n"
banner += " - Hard-fork specification: https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md)\n"
banner += fmt . Sprintf ( " - Total terminal difficulty: %v\n" , c . TerminalTotalDifficulty )
banner += fmt . Sprintf ( " - Merge netsplit block: %-8v" , c . MergeNetsplitBlock )
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 += fmt . Sprintf ( " - Total terminal difficulty: %v\n" , c . TerminalTotalDifficulty )
banner += fmt . Sprintf ( " - Merge netsplit block: %-8v" , c . MergeNetsplitBlock )
}
return banner
}