mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-04-06 09:57:29 +00:00
closes #31310 This has been requested a few times in the past and I think it is a nice quality-of-life improvement for users. At a predetermined interval, there will now be a "Fork ready" log when a future fork is scheduled, but not yet active. It can only possibly print after block import, which kinda avoids the scenario where the client isn't progressing or is syncing and the user thinks it's "ready" because it sees a ready log. New output: ```console INFO [03-08|21:32:57.472] Imported new potential chain segment number=7 hash=aa24ee..f09e62 blocks=1 txs=0 mgas=0.000 elapsed="874.916µs" mgasps=0.000 snapdiffs=973.00B triediffs=7.05KiB triedirty=0.00B INFO [03-08|21:32:57.473] Ready for fork activation fork=Prague date="18 Mar 25 19:29 CET" remaining=237h57m0s timestamp=1,742,322,597 INFO [03-08|21:32:57.475] Chain head was updated number=7 hash=aa24ee..f09e62 root=19b0de..8d32f2 elapsed="129.125µs" ``` Easiest way to verify this behavior is to apply this patch and run `geth --dev --dev.period=12` ```patch diff --git a/params/config.go b/params/config.go index 9c7719d901..030c4f80e7 100644 --- a/params/config.go +++ b/params/config.go @@ -174,7 +174,7 @@ var ( ShanghaiTime: newUint64(0), CancunTime: newUint64(0), TerminalTotalDifficulty: big.NewInt(0), - PragueTime: newUint64(0), + PragueTime: newUint64(uint64(time.Now().Add(time.Hour * 300).Unix())), BlobScheduleConfig: &BlobScheduleConfig{ Cancun: DefaultCancunBlobConfig, Prague: DefaultPragueBlobConfig, ```
75 lines
2 KiB
Go
75 lines
2 KiB
Go
// Copyright 2023 The go-ethereum Authors
|
|
// This file is part of the go-ethereum library.
|
|
//
|
|
// The go-ethereum library is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU Lesser General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// The go-ethereum library is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU Lesser General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU Lesser General Public License
|
|
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
package forks
|
|
|
|
// Fork is a numerical identifier of specific network upgrades (forks).
|
|
type Fork int
|
|
|
|
const (
|
|
Frontier Fork = iota
|
|
FrontierThawing
|
|
Homestead
|
|
DAO
|
|
TangerineWhistle // a.k.a. the EIP150 fork
|
|
SpuriousDragon // a.k.a. the EIP155 fork
|
|
Byzantium
|
|
Constantinople
|
|
Petersburg
|
|
Istanbul
|
|
MuirGlacier
|
|
Berlin
|
|
London
|
|
ArrowGlacier
|
|
GrayGlacier
|
|
Paris
|
|
Shanghai
|
|
Cancun
|
|
Prague
|
|
Osaka
|
|
)
|
|
|
|
// String implements fmt.Stringer.
|
|
func (f Fork) String() string {
|
|
s, ok := forkToString[f]
|
|
if !ok {
|
|
return "Unknown fork"
|
|
}
|
|
return s
|
|
}
|
|
|
|
var forkToString = map[Fork]string{
|
|
Frontier: "Frontier",
|
|
FrontierThawing: "Frontier Thawing",
|
|
Homestead: "Homestead",
|
|
DAO: "DAO",
|
|
TangerineWhistle: "Tangerine Whistle",
|
|
SpuriousDragon: "Spurious Dragon",
|
|
Byzantium: "Byzantium",
|
|
Constantinople: "Constantinople",
|
|
Petersburg: "Petersburg",
|
|
Istanbul: "Istanbul",
|
|
MuirGlacier: "Muir Glacier",
|
|
Berlin: "Berlin",
|
|
London: "London",
|
|
ArrowGlacier: "Arrow Glacier",
|
|
GrayGlacier: "Gray Glacier",
|
|
Paris: "Paris",
|
|
Shanghai: "Shanghai",
|
|
Cancun: "Cancun",
|
|
Prague: "Prague",
|
|
Osaka: "Osaka",
|
|
}
|