Compare commits

...

2 Commits

Author SHA1 Message Date
Potuz
23e1525650 fix linter 2025-02-04 07:31:25 -03:00
Potuz
6d4d65db05 Use OrderedSchedule to compute forks for epochs 2025-02-03 17:07:17 -03:00
5 changed files with 25 additions and 24 deletions

View File

@@ -37,8 +37,8 @@ go_test(
"attestation_test.go",
"execution_payload_envelope_test.go",
],
embed = [":go_default_library"],
deps = [
":go_default_library",
"//beacon-chain/core/altair:go_default_library",
"//beacon-chain/state/state-native:go_default_library",
"//config/params:go_default_library",

View File

@@ -309,3 +309,7 @@ func (ro *mockROForkchoice) GetPTCVote() primitives.PTCStatus {
ro.calls = append(ro.calls, getPTCVoteCalled)
return primitives.PAYLOAD_ABSENT
}
func (ro *mockROForkchoice) HashForBlockRoot(_ [32]byte) [32]byte {
return [32]byte{}
}

View File

@@ -14,7 +14,6 @@ go_library(
"//config/fieldparams:go_default_library",
"//config/params:go_default_library",
"//consensus-types/primitives:go_default_library",
"//encoding/bytesutil:go_default_library",
"//proto/prysm/v1alpha1:go_default_library",
"//time/slots:go_default_library",
"@com_github_pkg_errors//:go_default_library",

View File

@@ -11,7 +11,6 @@ import (
"github.com/prysmaticlabs/prysm/v5/beacon-chain/core/signing"
"github.com/prysmaticlabs/prysm/v5/config/params"
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
"github.com/prysmaticlabs/prysm/v5/encoding/bytesutil"
ethpb "github.com/prysmaticlabs/prysm/v5/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v5/time/slots"
)
@@ -85,27 +84,8 @@ func CreateForkDigest(
func Fork(
targetEpoch primitives.Epoch,
) (*ethpb.Fork, error) {
currentForkVersion := bytesutil.ToBytes4(params.BeaconConfig().GenesisForkVersion)
previousForkVersion := bytesutil.ToBytes4(params.BeaconConfig().GenesisForkVersion)
fSchedule := params.BeaconConfig().ForkVersionSchedule
sortedForkVersions := SortedForkVersions(fSchedule)
forkEpoch := primitives.Epoch(0)
for _, forkVersion := range sortedForkVersions {
epoch, ok := fSchedule[forkVersion]
if !ok {
return nil, errors.Errorf("fork version %x doesn't exist in schedule", forkVersion)
}
if targetEpoch >= epoch {
previousForkVersion = currentForkVersion
currentForkVersion = forkVersion
forkEpoch = epoch
}
}
return &ethpb.Fork{
PreviousVersion: previousForkVersion[:],
CurrentVersion: currentForkVersion[:],
Epoch: forkEpoch,
}, nil
osc := NewOrderedSchedule(params.BeaconConfig())
return osc.ForkForEpoch(targetEpoch)
}
// RetrieveForkDataFromDigest performs the inverse, where it tries to determine the fork version

View File

@@ -37,6 +37,24 @@ func (o OrderedSchedule) Less(i, j int) bool {
return o[i].Epoch < o[j].Epoch
}
// ForkForEpoch returns the Fork object for the given epoch
func (o OrderedSchedule) ForkForEpoch(epoch primitives.Epoch) (*ethpb.Fork, error) {
ret := &ethpb.Fork{}
for i := len(o) - 1; i >= 0; i-- {
if o[i].Epoch <= epoch {
ret.Epoch = o[i].Epoch
ret.CurrentVersion = o[i].Version[:]
prev, err := o.Previous(o[i].Version)
if err != nil {
return nil, err
}
ret.PreviousVersion = prev[:]
return ret, nil
}
}
return nil, errors.Wrapf(ErrVersionNotFound, "no epoch in list <= %d", epoch)
}
// VersionForEpoch finds the Version with the highest epoch <= the given epoch
func (o OrderedSchedule) VersionForEpoch(epoch primitives.Epoch) ([fieldparams.VersionLength]byte, error) {
for i := len(o) - 1; i >= 0; i-- {