mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-09 15:37:56 -05:00
Use slot to determine fork version (#14653)
* Use slot to determine version * gaz * solve cyclic dependency * Radek' review * unit test * gaz * use require instead of assert * fix test * fix test * fix TestGetAggregateAttestation * fix ListAttestations test * James' review * Radek' review * add extra checks to GetAttesterSlashingsV2 * fix matchingAtts * improve tests + fix * fix * stop appending all non electra atts * more tests * changelog * revert TestProduceSyncCommitteeContribution changes --------- Co-authored-by: Radosław Kapka <rkapka@wp.pl> Co-authored-by: rkapka <radoslaw.kapka@gmail.com>
This commit is contained in:
@@ -13,6 +13,7 @@ go_library(
|
||||
"//config/params:go_default_library",
|
||||
"//consensus-types/primitives:go_default_library",
|
||||
"//math:go_default_library",
|
||||
"//runtime/version:go_default_library",
|
||||
"//time:go_default_library",
|
||||
"@com_github_pkg_errors//:go_default_library",
|
||||
"@com_github_sirupsen_logrus//:go_default_library",
|
||||
@@ -32,6 +33,7 @@ go_test(
|
||||
deps = [
|
||||
"//config/params:go_default_library",
|
||||
"//consensus-types/primitives:go_default_library",
|
||||
"//runtime/version:go_default_library",
|
||||
"//testing/assert:go_default_library",
|
||||
"//testing/require:go_default_library",
|
||||
"//time:go_default_library",
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
"github.com/prysmaticlabs/prysm/v5/config/params"
|
||||
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
|
||||
mathutil "github.com/prysmaticlabs/prysm/v5/math"
|
||||
"github.com/prysmaticlabs/prysm/v5/runtime/version"
|
||||
prysmTime "github.com/prysmaticlabs/prysm/v5/time"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
@@ -81,6 +82,25 @@ func ToEpoch(slot primitives.Slot) primitives.Epoch {
|
||||
return primitives.Epoch(slot.DivSlot(params.BeaconConfig().SlotsPerEpoch))
|
||||
}
|
||||
|
||||
// ToForkVersion translates a slot into it's corresponding version.
|
||||
func ToForkVersion(slot primitives.Slot) int {
|
||||
epoch := ToEpoch(slot)
|
||||
switch {
|
||||
case epoch >= params.BeaconConfig().ElectraForkEpoch:
|
||||
return version.Electra
|
||||
case epoch >= params.BeaconConfig().DenebForkEpoch:
|
||||
return version.Deneb
|
||||
case epoch >= params.BeaconConfig().CapellaForkEpoch:
|
||||
return version.Capella
|
||||
case epoch >= params.BeaconConfig().BellatrixForkEpoch:
|
||||
return version.Bellatrix
|
||||
case epoch >= params.BeaconConfig().AltairForkEpoch:
|
||||
return version.Altair
|
||||
default:
|
||||
return version.Phase0
|
||||
}
|
||||
}
|
||||
|
||||
// EpochStart returns the first slot number of the
|
||||
// current epoch.
|
||||
//
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
|
||||
"github.com/prysmaticlabs/prysm/v5/config/params"
|
||||
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
|
||||
"github.com/prysmaticlabs/prysm/v5/runtime/version"
|
||||
"github.com/prysmaticlabs/prysm/v5/testing/assert"
|
||||
"github.com/prysmaticlabs/prysm/v5/testing/require"
|
||||
prysmTime "github.com/prysmaticlabs/prysm/v5/time"
|
||||
@@ -632,3 +633,58 @@ func TestSecondsUntilNextEpochStart(t *testing.T) {
|
||||
require.Equal(t, true, IsEpochStart(currentSlot))
|
||||
|
||||
}
|
||||
|
||||
func TestToForkVersion(t *testing.T) {
|
||||
t.Run("Electra fork version", func(t *testing.T) {
|
||||
params.SetupTestConfigCleanup(t)
|
||||
config := params.BeaconConfig()
|
||||
config.ElectraForkEpoch = 100
|
||||
params.OverrideBeaconConfig(config)
|
||||
|
||||
slot, err := EpochStart(params.BeaconConfig().ElectraForkEpoch)
|
||||
require.NoError(t, err)
|
||||
|
||||
result := ToForkVersion(slot)
|
||||
require.Equal(t, version.Electra, result)
|
||||
})
|
||||
|
||||
t.Run("Deneb fork version", func(t *testing.T) {
|
||||
slot, err := EpochStart(params.BeaconConfig().DenebForkEpoch)
|
||||
require.NoError(t, err)
|
||||
|
||||
result := ToForkVersion(slot)
|
||||
require.Equal(t, version.Deneb, result)
|
||||
})
|
||||
|
||||
t.Run("Capella fork version", func(t *testing.T) {
|
||||
slot, err := EpochStart(params.BeaconConfig().CapellaForkEpoch)
|
||||
require.NoError(t, err)
|
||||
|
||||
result := ToForkVersion(slot)
|
||||
require.Equal(t, version.Capella, result)
|
||||
})
|
||||
|
||||
t.Run("Bellatrix fork version", func(t *testing.T) {
|
||||
slot, err := EpochStart(params.BeaconConfig().BellatrixForkEpoch)
|
||||
require.NoError(t, err)
|
||||
|
||||
result := ToForkVersion(slot)
|
||||
require.Equal(t, version.Bellatrix, result)
|
||||
})
|
||||
|
||||
t.Run("Altair fork version", func(t *testing.T) {
|
||||
slot, err := EpochStart(params.BeaconConfig().AltairForkEpoch)
|
||||
require.NoError(t, err)
|
||||
|
||||
result := ToForkVersion(slot)
|
||||
require.Equal(t, version.Altair, result)
|
||||
})
|
||||
|
||||
t.Run("Phase0 fork version", func(t *testing.T) {
|
||||
slot, err := EpochStart(params.BeaconConfig().AltairForkEpoch)
|
||||
require.NoError(t, err)
|
||||
|
||||
result := ToForkVersion(slot - 1)
|
||||
require.Equal(t, version.Phase0, result)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user