Use time.Time instead of uint64 for genesis time (#15419)

* Convert genesis times from seconds to time.Time

* Fixing failed forkchoice tests in a new commit so it doesn't get worse

Fixing failed spectest tests in a new commit so it doesn't get worse

Fixing forkchoice tests, then spectests

* Fixing forkchoice tests, then spectests. Now asking for help...

* Fix TestForkChoice_GetProposerHead

* Fix broken build

* Resolve TODO(preston) items

* Changelog fragment

* Resolve TODO(preston) items again

* Resolve lint issues

* Use consistant field names for sinceSlotStart (no spaces)

* Manu's feedback

* Renamed StartTime -> UnsafeStartTime, marked as deprecated because it doesn't handle overflow scenarios.
Renamed SlotTime -> StartTime
Renamed SlotAt -> At
Handled the error in cases where StartTime was used.

@james-prysm feedback

* Revert beacon-chain/blockchain/receive_block_test.go from 1b7844de

* Fixing issues after rebase

* Accepted suggestions from @potuz

* Remove CanonicalHeadSlot from merge conflicts

---------

Co-authored-by: potuz <potuz@prysmaticlabs.com>
This commit is contained in:
Preston Van Loon
2025-07-14 16:04:50 -05:00
committed by GitHub
parent 56e8881bc1
commit 499d27b6ae
143 changed files with 659 additions and 595 deletions

View File

@@ -177,7 +177,7 @@ func (c *client) initializeMockChainService(ctx context.Context) (*mockChain, er
if err != nil {
return nil, err
}
currEpoch := slots.ToEpoch(slots.SinceGenesis(genesisResp.GenesisTime.AsTime()))
currEpoch := slots.ToEpoch(slots.CurrentSlot(genesisResp.GenesisTime.AsTime()))
currFork, err := forks.Fork(currEpoch)
if err != nil {
return nil, err

View File

@@ -32,5 +32,5 @@ func (m *mockChain) GenesisTime() time.Time {
}
func (m *mockChain) CurrentSlot() primitives.Slot {
return slots.SinceGenesis(m.genesisTime)
return slots.CurrentSlot(m.genesisTime)
}

View File

@@ -260,9 +260,10 @@ func generateGenesis(ctx context.Context) (state.BeaconState, error) {
}
// set timestamps for genesis and shanghai fork
gen.Timestamp = f.GenesisTime
gen.Config.ShanghaiTime = interop.GethShanghaiTime(f.GenesisTime, params.BeaconConfig())
gen.Config.CancunTime = interop.GethCancunTime(f.GenesisTime, params.BeaconConfig())
gen.Config.PragueTime = interop.GethPragueTime(f.GenesisTime, params.BeaconConfig())
genesis := time.Unix(int64(f.GenesisTime), 0)
gen.Config.ShanghaiTime = interop.GethShanghaiTime(genesis, params.BeaconConfig())
gen.Config.CancunTime = interop.GethCancunTime(genesis, params.BeaconConfig())
gen.Config.PragueTime = interop.GethPragueTime(genesis, params.BeaconConfig())
fields := logrus.Fields{}
if gen.Config.ShanghaiTime != nil {
@@ -280,7 +281,7 @@ func generateGenesis(ctx context.Context) (state.BeaconState, error) {
gen.Config.TerminalTotalDifficulty = big.NewInt(0)
}
} else {
gen = interop.GethTestnetGenesis(f.GenesisTime, params.BeaconConfig())
gen = interop.GethTestnetGenesis(time.Unix(int64(f.GenesisTime), 0), params.BeaconConfig())
}
if f.GethGenesisJsonOut != "" {
@@ -296,7 +297,7 @@ func generateGenesis(ctx context.Context) (state.BeaconState, error) {
gb := gen.ToBlock()
// TODO: expose the PregenesisCreds option with a cli flag - for now defaulting to no withdrawal credentials at genesis
genesisState, err := interop.NewPreminedGenesis(ctx, f.GenesisTime, nv, 0, v, gb, opts...)
genesisState, err := interop.NewPreminedGenesis(ctx, time.Unix(int64(f.GenesisTime), 0), nv, 0, v, gb, opts...)
if err != nil {
return nil, err
}