mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-09 23:48:06 -05:00
Move slot epoch from core to time pkg (#9714)
* Move slot epoch from core to time pkg * Fix fuzz Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
This commit is contained in:
@@ -30,13 +30,13 @@ go_library(
|
|||||||
"//async/event:go_default_library",
|
"//async/event:go_default_library",
|
||||||
"//beacon-chain/cache:go_default_library",
|
"//beacon-chain/cache:go_default_library",
|
||||||
"//beacon-chain/cache/depositcache:go_default_library",
|
"//beacon-chain/cache/depositcache:go_default_library",
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/altair:go_default_library",
|
"//beacon-chain/core/altair:go_default_library",
|
||||||
"//beacon-chain/core/epoch/precompute:go_default_library",
|
"//beacon-chain/core/epoch/precompute:go_default_library",
|
||||||
"//beacon-chain/core/feed:go_default_library",
|
"//beacon-chain/core/feed:go_default_library",
|
||||||
"//beacon-chain/core/feed/state:go_default_library",
|
"//beacon-chain/core/feed/state:go_default_library",
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
"//beacon-chain/core/signing:go_default_library",
|
"//beacon-chain/core/signing:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/core/transition:go_default_library",
|
"//beacon-chain/core/transition:go_default_library",
|
||||||
"//beacon-chain/db:go_default_library",
|
"//beacon-chain/db:go_default_library",
|
||||||
"//beacon-chain/db/filters:go_default_library",
|
"//beacon-chain/db/filters:go_default_library",
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import (
|
|||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/feed"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/feed"
|
||||||
statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state"
|
statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/forkchoice/protoarray"
|
"github.com/prysmaticlabs/prysm/beacon-chain/forkchoice/protoarray"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/features"
|
"github.com/prysmaticlabs/prysm/config/features"
|
||||||
@@ -141,7 +141,7 @@ func (s *Service) saveHead(ctx context.Context, headRoot [32]byte) error {
|
|||||||
NewHeadBlock: headRoot[:],
|
NewHeadBlock: headRoot[:],
|
||||||
OldHeadState: oldStateRoot,
|
OldHeadState: oldStateRoot,
|
||||||
NewHeadState: newStateRoot,
|
NewHeadState: newStateRoot,
|
||||||
Epoch: core.SlotToEpoch(newHeadSlot),
|
Epoch: time.SlotToEpoch(newHeadSlot),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -298,7 +298,7 @@ func (s *Service) cacheJustifiedStateBalances(ctx context.Context, justifiedRoot
|
|||||||
return errors.New("justified state can't be nil")
|
return errors.New("justified state can't be nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
epoch := core.CurrentEpoch(justifiedState)
|
epoch := time.CurrentEpoch(justifiedState)
|
||||||
|
|
||||||
justifiedBalances := make([]uint64, justifiedState.NumValidators())
|
justifiedBalances := make([]uint64, justifiedState.NumValidators())
|
||||||
if err := justifiedState.ReadFromEveryValidator(func(idx int, val state.ReadOnlyValidator) error {
|
if err := justifiedState.ReadFromEveryValidator(func(idx int, val state.ReadOnlyValidator) error {
|
||||||
@@ -336,15 +336,15 @@ func (s *Service) notifyNewHeadEvent(
|
|||||||
currentDutyDependentRoot := s.genesisRoot[:]
|
currentDutyDependentRoot := s.genesisRoot[:]
|
||||||
|
|
||||||
var previousDutyEpoch types.Epoch
|
var previousDutyEpoch types.Epoch
|
||||||
currentDutyEpoch := core.SlotToEpoch(newHeadSlot)
|
currentDutyEpoch := time.SlotToEpoch(newHeadSlot)
|
||||||
if currentDutyEpoch > 0 {
|
if currentDutyEpoch > 0 {
|
||||||
previousDutyEpoch = currentDutyEpoch.Sub(1)
|
previousDutyEpoch = currentDutyEpoch.Sub(1)
|
||||||
}
|
}
|
||||||
currentDutySlot, err := core.StartSlot(currentDutyEpoch)
|
currentDutySlot, err := time.StartSlot(currentDutyEpoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "could not get duty slot")
|
return errors.Wrap(err, "could not get duty slot")
|
||||||
}
|
}
|
||||||
previousDutySlot, err := core.StartSlot(previousDutyEpoch)
|
previousDutySlot, err := time.StartSlot(previousDutyEpoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "could not get duty slot")
|
return errors.Wrap(err, "could not get duty slot")
|
||||||
}
|
}
|
||||||
@@ -366,7 +366,7 @@ func (s *Service) notifyNewHeadEvent(
|
|||||||
Slot: newHeadSlot,
|
Slot: newHeadSlot,
|
||||||
Block: newHeadRoot,
|
Block: newHeadRoot,
|
||||||
State: newHeadStateRoot,
|
State: newHeadStateRoot,
|
||||||
EpochTransition: core.IsEpochStart(newHeadSlot),
|
EpochTransition: time.IsEpochStart(newHeadSlot),
|
||||||
PreviousDutyDependentRoot: previousDutyDependentRoot,
|
PreviousDutyDependentRoot: previousDutyDependentRoot,
|
||||||
CurrentDutyDependentRoot: currentDutyDependentRoot,
|
CurrentDutyDependentRoot: currentDutyDependentRoot,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ import (
|
|||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/async"
|
"github.com/prysmaticlabs/prysm/async"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/altair"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/altair"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
@@ -62,14 +62,14 @@ func (s *Service) HeadSyncContributionProofDomain(ctx context.Context, slot type
|
|||||||
// rather than for the range
|
// rather than for the range
|
||||||
// [compute_start_slot_at_epoch(epoch), compute_start_slot_at_epoch(epoch) + SLOTS_PER_EPOCH)
|
// [compute_start_slot_at_epoch(epoch), compute_start_slot_at_epoch(epoch) + SLOTS_PER_EPOCH)
|
||||||
func (s *Service) HeadSyncCommitteeIndices(ctx context.Context, index types.ValidatorIndex, slot types.Slot) ([]types.CommitteeIndex, error) {
|
func (s *Service) HeadSyncCommitteeIndices(ctx context.Context, index types.ValidatorIndex, slot types.Slot) ([]types.CommitteeIndex, error) {
|
||||||
nextSlotEpoch := core.SlotToEpoch(slot + 1)
|
nextSlotEpoch := time.SlotToEpoch(slot + 1)
|
||||||
currentEpoch := core.SlotToEpoch(slot)
|
currentEpoch := time.SlotToEpoch(slot)
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
case core.SyncCommitteePeriod(nextSlotEpoch) == core.SyncCommitteePeriod(currentEpoch):
|
case time.SyncCommitteePeriod(nextSlotEpoch) == time.SyncCommitteePeriod(currentEpoch):
|
||||||
return s.headCurrentSyncCommitteeIndices(ctx, index, slot)
|
return s.headCurrentSyncCommitteeIndices(ctx, index, slot)
|
||||||
// At sync committee period boundary, validator should sample the next epoch sync committee.
|
// At sync committee period boundary, validator should sample the next epoch sync committee.
|
||||||
case core.SyncCommitteePeriod(nextSlotEpoch) == core.SyncCommitteePeriod(currentEpoch)+1:
|
case time.SyncCommitteePeriod(nextSlotEpoch) == time.SyncCommitteePeriod(currentEpoch)+1:
|
||||||
return s.headNextSyncCommitteeIndices(ctx, index, slot)
|
return s.headNextSyncCommitteeIndices(ctx, index, slot)
|
||||||
default:
|
default:
|
||||||
// Impossible condition.
|
// Impossible condition.
|
||||||
@@ -105,11 +105,11 @@ func (s *Service) HeadSyncCommitteePubKeys(ctx context.Context, slot types.Slot,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
nextSlotEpoch := core.SlotToEpoch(headState.Slot() + 1)
|
nextSlotEpoch := time.SlotToEpoch(headState.Slot() + 1)
|
||||||
currEpoch := core.SlotToEpoch(headState.Slot())
|
currEpoch := time.SlotToEpoch(headState.Slot())
|
||||||
|
|
||||||
var syncCommittee *ethpb.SyncCommittee
|
var syncCommittee *ethpb.SyncCommittee
|
||||||
if currEpoch == nextSlotEpoch || core.SyncCommitteePeriod(currEpoch) == core.SyncCommitteePeriod(nextSlotEpoch) {
|
if currEpoch == nextSlotEpoch || time.SyncCommitteePeriod(currEpoch) == time.SyncCommitteePeriod(nextSlotEpoch) {
|
||||||
syncCommittee, err = headState.CurrentSyncCommittee()
|
syncCommittee, err = headState.CurrentSyncCommittee()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -130,7 +130,7 @@ func (s *Service) domainWithHeadState(ctx context.Context, slot types.Slot, doma
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return signing.Domain(headState.Fork(), core.SlotToEpoch(headState.Slot()), domain, headState.GenesisValidatorRoot())
|
return signing.Domain(headState.Fork(), time.SlotToEpoch(headState.Slot()), domain, headState.GenesisValidatorRoot())
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns the head state that is advanced up to `slot`. It utilizes the cache `syncCommitteeHeadState` by retrieving using `slot` as key.
|
// returns the head state that is advanced up to `slot`. It utilizes the cache `syncCommitteeHeadState` by retrieving using `slot` as key.
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import (
|
|||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
dbtest "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
|
dbtest "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state/stategen"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state/stategen"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
@@ -122,7 +122,7 @@ func TestService_HeadSyncCommitteeDomain(t *testing.T) {
|
|||||||
c := &Service{}
|
c := &Service{}
|
||||||
c.head = &head{state: s}
|
c.head = &head{state: s}
|
||||||
|
|
||||||
wanted, err := signing.Domain(s.Fork(), core.SlotToEpoch(s.Slot()), params.BeaconConfig().DomainSyncCommittee, s.GenesisValidatorRoot())
|
wanted, err := signing.Domain(s.Fork(), time.SlotToEpoch(s.Slot()), params.BeaconConfig().DomainSyncCommittee, s.GenesisValidatorRoot())
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
d, err := c.HeadSyncCommitteeDomain(context.Background(), 0)
|
d, err := c.HeadSyncCommitteeDomain(context.Background(), 0)
|
||||||
@@ -136,7 +136,7 @@ func TestService_HeadSyncContributionProofDomain(t *testing.T) {
|
|||||||
c := &Service{}
|
c := &Service{}
|
||||||
c.head = &head{state: s}
|
c.head = &head{state: s}
|
||||||
|
|
||||||
wanted, err := signing.Domain(s.Fork(), core.SlotToEpoch(s.Slot()), params.BeaconConfig().DomainContributionAndProof, s.GenesisValidatorRoot())
|
wanted, err := signing.Domain(s.Fork(), time.SlotToEpoch(s.Slot()), params.BeaconConfig().DomainContributionAndProof, s.GenesisValidatorRoot())
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
d, err := c.HeadSyncContributionProofDomain(context.Background(), 0)
|
d, err := c.HeadSyncContributionProofDomain(context.Background(), 0)
|
||||||
@@ -150,7 +150,7 @@ func TestService_HeadSyncSelectionProofDomain(t *testing.T) {
|
|||||||
c := &Service{}
|
c := &Service{}
|
||||||
c.head = &head{state: s}
|
c.head = &head{state: s}
|
||||||
|
|
||||||
wanted, err := signing.Domain(s.Fork(), core.SlotToEpoch(s.Slot()), params.BeaconConfig().DomainSyncCommitteeSelectionProof, s.GenesisValidatorRoot())
|
wanted, err := signing.Domain(s.Fork(), time.SlotToEpoch(s.Slot()), params.BeaconConfig().DomainSyncCommitteeSelectionProof, s.GenesisValidatorRoot())
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
d, err := c.HeadSyncSelectionProofDomain(context.Background(), 0)
|
d, err := c.HeadSyncSelectionProofDomain(context.Background(), 0)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing"
|
mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
|
testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
|
||||||
"github.com/prysmaticlabs/prysm/config/features"
|
"github.com/prysmaticlabs/prysm/config/features"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
@@ -187,9 +187,9 @@ func Test_notifyNewHeadEvent(t *testing.T) {
|
|||||||
},
|
},
|
||||||
genesisRoot: genesisRoot,
|
genesisRoot: genesisRoot,
|
||||||
}
|
}
|
||||||
epoch1Start, err := core.StartSlot(1)
|
epoch1Start, err := coreTime.StartSlot(1)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
epoch2Start, err := core.StartSlot(1)
|
epoch2Start, err := coreTime.StartSlot(1)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NoError(t, bState.SetSlot(epoch1Start))
|
require.NoError(t, bState.SetSlot(epoch1Start))
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
||||||
"github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/block"
|
"github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/block"
|
||||||
@@ -44,7 +44,7 @@ func logStateTransitionData(b block.BeaconBlock) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func logBlockSyncStatus(block block.BeaconBlock, blockRoot [32]byte, finalized *ethpb.Checkpoint, receivedTime time.Time, genesisTime uint64) error {
|
func logBlockSyncStatus(block block.BeaconBlock, blockRoot [32]byte, finalized *ethpb.Checkpoint, receivedTime time.Time, genesisTime uint64) error {
|
||||||
startTime, err := core.SlotToTime(genesisTime, block.Slot())
|
startTime, err := coreTime.SlotToTime(genesisTime, block.Slot())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -52,7 +52,7 @@ func logBlockSyncStatus(block block.BeaconBlock, blockRoot [32]byte, finalized *
|
|||||||
"slot": block.Slot(),
|
"slot": block.Slot(),
|
||||||
"slotInEpoch": block.Slot() % params.BeaconConfig().SlotsPerEpoch,
|
"slotInEpoch": block.Slot() % params.BeaconConfig().SlotsPerEpoch,
|
||||||
"block": fmt.Sprintf("0x%s...", hex.EncodeToString(blockRoot[:])[:8]),
|
"block": fmt.Sprintf("0x%s...", hex.EncodeToString(blockRoot[:])[:8]),
|
||||||
"epoch": core.SlotToEpoch(block.Slot()),
|
"epoch": coreTime.SlotToEpoch(block.Slot()),
|
||||||
"finalizedEpoch": finalized.Epoch,
|
"finalizedEpoch": finalized.Epoch,
|
||||||
"finalizedRoot": fmt.Sprintf("0x%s...", hex.EncodeToString(finalized.Root)[:8]),
|
"finalizedRoot": fmt.Sprintf("0x%s...", hex.EncodeToString(finalized.Root)[:8]),
|
||||||
}).Info("Synced new block")
|
}).Info("Synced new block")
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
||||||
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
||||||
@@ -75,7 +75,7 @@ func (s *Service) onAttestation(ctx context.Context, a *ethpb.Attestation) error
|
|||||||
// validate_aggregate_proof.go and validate_beacon_attestation.go
|
// validate_aggregate_proof.go and validate_beacon_attestation.go
|
||||||
|
|
||||||
// Verify attestations can only affect the fork choice of subsequent slots.
|
// Verify attestations can only affect the fork choice of subsequent slots.
|
||||||
if err := core.VerifySlotTime(genesisTime, a.Data.Slot+1, params.BeaconNetworkConfig().MaximumGossipClockDisparity); err != nil {
|
if err := coreTime.VerifySlotTime(genesisTime, a.Data.Slot+1, params.BeaconNetworkConfig().MaximumGossipClockDisparity); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import (
|
|||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/async"
|
"github.com/prysmaticlabs/prysm/async"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
@@ -38,7 +38,7 @@ func (s *Service) getAttPreState(ctx context.Context, c *ethpb.Checkpoint) (stat
|
|||||||
return nil, errors.Wrapf(err, "could not get pre state for epoch %d", c.Epoch)
|
return nil, errors.Wrapf(err, "could not get pre state for epoch %d", c.Epoch)
|
||||||
}
|
}
|
||||||
|
|
||||||
epochStartSlot, err := core.StartSlot(c.Epoch)
|
epochStartSlot, err := time.StartSlot(c.Epoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -63,7 +63,7 @@ func (s *Service) getAttPreState(ctx context.Context, c *ethpb.Checkpoint) (stat
|
|||||||
// verifyAttTargetEpoch validates attestation is from the current or previous epoch.
|
// verifyAttTargetEpoch validates attestation is from the current or previous epoch.
|
||||||
func (s *Service) verifyAttTargetEpoch(_ context.Context, genesisTime, nowTime uint64, c *ethpb.Checkpoint) error {
|
func (s *Service) verifyAttTargetEpoch(_ context.Context, genesisTime, nowTime uint64, c *ethpb.Checkpoint) error {
|
||||||
currentSlot := types.Slot((nowTime - genesisTime) / params.BeaconConfig().SecondsPerSlot)
|
currentSlot := types.Slot((nowTime - genesisTime) / params.BeaconConfig().SecondsPerSlot)
|
||||||
currentEpoch := core.SlotToEpoch(currentSlot)
|
currentEpoch := time.SlotToEpoch(currentSlot)
|
||||||
var prevEpoch types.Epoch
|
var prevEpoch types.Epoch
|
||||||
// Prevents previous epoch under flow
|
// Prevents previous epoch under flow
|
||||||
if currentEpoch > 1 {
|
if currentEpoch > 1 {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
||||||
testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
|
testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/forkchoice/protoarray"
|
"github.com/prysmaticlabs/prysm/beacon-chain/forkchoice/protoarray"
|
||||||
@@ -251,7 +251,7 @@ func TestStore_UpdateCheckpointState(t *testing.T) {
|
|||||||
require.NoError(t, service.cfg.BeaconDB.SaveState(ctx, baseState, bytesutil.ToBytes32(newCheckpoint.Root)))
|
require.NoError(t, service.cfg.BeaconDB.SaveState(ctx, baseState, bytesutil.ToBytes32(newCheckpoint.Root)))
|
||||||
returned, err = service.getAttPreState(ctx, newCheckpoint)
|
returned, err = service.getAttPreState(ctx, newCheckpoint)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
s, err := core.StartSlot(newCheckpoint.Epoch)
|
s, err := coreTime.StartSlot(newCheckpoint.Epoch)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
baseState, err = transition.ProcessSlots(ctx, baseState, s)
|
baseState, err = transition.ProcessSlots(ctx, baseState, s)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/feed"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/feed"
|
||||||
statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state"
|
statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/features"
|
"github.com/prysmaticlabs/prysm/config/features"
|
||||||
@@ -268,7 +268,7 @@ func (s *Service) onBlockBatch(ctx context.Context, blks []block.SignedBeaconBlo
|
|||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
// Save potential boundary states.
|
// Save potential boundary states.
|
||||||
if core.IsEpochStart(preState.Slot()) {
|
if coreTime.IsEpochStart(preState.Slot()) {
|
||||||
boundaries[blockRoots[i]] = preState.Copy()
|
boundaries[blockRoots[i]] = preState.Copy()
|
||||||
if err := s.handleEpochBoundary(ctx, preState); err != nil {
|
if err := s.handleEpochBoundary(ctx, preState); err != nil {
|
||||||
return nil, nil, errors.Wrap(err, "could not handle epoch boundary state")
|
return nil, nil, errors.Wrap(err, "could not handle epoch boundary state")
|
||||||
@@ -351,7 +351,7 @@ func (s *Service) handleEpochBoundary(ctx context.Context, postState state.Beaco
|
|||||||
|
|
||||||
if postState.Slot()+1 == s.nextEpochBoundarySlot {
|
if postState.Slot()+1 == s.nextEpochBoundarySlot {
|
||||||
// Update caches for the next epoch at epoch boundary slot - 1.
|
// Update caches for the next epoch at epoch boundary slot - 1.
|
||||||
if err := helpers.UpdateCommitteeCache(postState, core.NextEpoch(postState)); err != nil {
|
if err := helpers.UpdateCommitteeCache(postState, coreTime.NextEpoch(postState)); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
copied := postState.Copy()
|
copied := postState.Copy()
|
||||||
@@ -367,14 +367,14 @@ func (s *Service) handleEpochBoundary(ctx context.Context, postState state.Beaco
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
var err error
|
var err error
|
||||||
s.nextEpochBoundarySlot, err = core.StartSlot(core.NextEpoch(postState))
|
s.nextEpochBoundarySlot, err = coreTime.StartSlot(coreTime.NextEpoch(postState))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update caches at epoch boundary slot.
|
// Update caches at epoch boundary slot.
|
||||||
// The following updates have short cut to return nil cheaply if fulfilled during boundary slot - 1.
|
// The following updates have short cut to return nil cheaply if fulfilled during boundary slot - 1.
|
||||||
if err := helpers.UpdateCommitteeCache(postState, core.CurrentEpoch(postState)); err != nil {
|
if err := helpers.UpdateCommitteeCache(postState, coreTime.CurrentEpoch(postState)); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := helpers.UpdateProposerIndicesInCache(ctx, postState); err != nil {
|
if err := helpers.UpdateProposerIndicesInCache(ctx, postState); err != nil {
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import (
|
|||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
||||||
@@ -21,7 +21,7 @@ import (
|
|||||||
|
|
||||||
// CurrentSlot returns the current slot based on time.
|
// CurrentSlot returns the current slot based on time.
|
||||||
func (s *Service) CurrentSlot() types.Slot {
|
func (s *Service) CurrentSlot() types.Slot {
|
||||||
return core.CurrentSlot(uint64(s.genesisTime.Unix()))
|
return time.CurrentSlot(uint64(s.genesisTime.Unix()))
|
||||||
}
|
}
|
||||||
|
|
||||||
// getBlockPreState returns the pre state of an incoming block. It uses the parent root of the block
|
// getBlockPreState returns the pre state of an incoming block. It uses the parent root of the block
|
||||||
@@ -45,7 +45,7 @@ func (s *Service) getBlockPreState(ctx context.Context, b block.BeaconBlock) (st
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Verify block slot time is not from the future.
|
// Verify block slot time is not from the future.
|
||||||
if err := core.VerifySlotTime(preState.GenesisTime(), b.Slot(), params.BeaconNetworkConfig().MaximumGossipClockDisparity); err != nil {
|
if err := time.VerifySlotTime(preState.GenesisTime(), b.Slot(), params.BeaconNetworkConfig().MaximumGossipClockDisparity); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,7 +122,7 @@ func (s *Service) VerifyBlkDescendant(ctx context.Context, root [32]byte) error
|
|||||||
// verifyBlkFinalizedSlot validates input block is not less than or equal
|
// verifyBlkFinalizedSlot validates input block is not less than or equal
|
||||||
// to current finalized slot.
|
// to current finalized slot.
|
||||||
func (s *Service) verifyBlkFinalizedSlot(b block.BeaconBlock) error {
|
func (s *Service) verifyBlkFinalizedSlot(b block.BeaconBlock) error {
|
||||||
finalizedSlot, err := core.StartSlot(s.finalizedCheckpt.Epoch)
|
finalizedSlot, err := time.StartSlot(s.finalizedCheckpt.Epoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -140,7 +140,7 @@ func (s *Service) shouldUpdateCurrentJustified(ctx context.Context, newJustified
|
|||||||
ctx, span := trace.StartSpan(ctx, "blockChain.shouldUpdateCurrentJustified")
|
ctx, span := trace.StartSpan(ctx, "blockChain.shouldUpdateCurrentJustified")
|
||||||
defer span.End()
|
defer span.End()
|
||||||
|
|
||||||
if core.SlotsSinceEpochStarts(s.CurrentSlot()) < params.BeaconConfig().SafeSlotsToUpdateJustified {
|
if time.SlotsSinceEpochStarts(s.CurrentSlot()) < params.BeaconConfig().SafeSlotsToUpdateJustified {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
var newJustifiedBlockSigned block.SignedBeaconBlock
|
var newJustifiedBlockSigned block.SignedBeaconBlock
|
||||||
@@ -159,7 +159,7 @@ func (s *Service) shouldUpdateCurrentJustified(ctx context.Context, newJustified
|
|||||||
}
|
}
|
||||||
|
|
||||||
newJustifiedBlock := newJustifiedBlockSigned.Block()
|
newJustifiedBlock := newJustifiedBlockSigned.Block()
|
||||||
jSlot, err := core.StartSlot(s.justifiedCheckpt.Epoch)
|
jSlot, err := time.StartSlot(s.justifiedCheckpt.Epoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
@@ -348,7 +348,7 @@ func (s *Service) finalizedImpliesNewJustified(ctx context.Context, state state.
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update justified if store justified is not in chain with finalized check point.
|
// Update justified if store justified is not in chain with finalized check point.
|
||||||
finalizedSlot, err := core.StartSlot(s.finalizedCheckpt.Epoch)
|
finalizedSlot, err := time.StartSlot(s.finalizedCheckpt.Epoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -377,7 +377,7 @@ func (s *Service) fillInForkChoiceMissingBlocks(ctx context.Context, blk block.B
|
|||||||
parentRoot := bytesutil.ToBytes32(blk.ParentRoot())
|
parentRoot := bytesutil.ToBytes32(blk.ParentRoot())
|
||||||
slot := blk.Slot()
|
slot := blk.Slot()
|
||||||
// Fork choice only matters from last finalized slot.
|
// Fork choice only matters from last finalized slot.
|
||||||
fSlot, err := core.StartSlot(s.finalizedCheckpt.Epoch)
|
fSlot, err := time.StartSlot(s.finalizedCheckpt.Epoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/feed"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/feed"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
||||||
@@ -51,11 +51,11 @@ func (s *Service) ReceiveAttestationNoPubsub(ctx context.Context, att *ethpb.Att
|
|||||||
|
|
||||||
// AttestationTargetState returns the pre state of attestation.
|
// AttestationTargetState returns the pre state of attestation.
|
||||||
func (s *Service) AttestationTargetState(ctx context.Context, target *ethpb.Checkpoint) (state.BeaconState, error) {
|
func (s *Service) AttestationTargetState(ctx context.Context, target *ethpb.Checkpoint) (state.BeaconState, error) {
|
||||||
ss, err := core.StartSlot(target.Epoch)
|
ss, err := coreTime.StartSlot(target.Epoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if err := core.ValidateSlotClock(ss, uint64(s.genesisTime.Unix())); err != nil {
|
if err := coreTime.ValidateSlotClock(ss, uint64(s.genesisTime.Unix())); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return s.getAttPreState(ctx, target)
|
return s.getAttPreState(ctx, target)
|
||||||
@@ -63,7 +63,7 @@ func (s *Service) AttestationTargetState(ctx context.Context, target *ethpb.Chec
|
|||||||
|
|
||||||
// VerifyLmdFfgConsistency verifies that attestation's LMD and FFG votes are consistency to each other.
|
// VerifyLmdFfgConsistency verifies that attestation's LMD and FFG votes are consistency to each other.
|
||||||
func (s *Service) VerifyLmdFfgConsistency(ctx context.Context, a *ethpb.Attestation) error {
|
func (s *Service) VerifyLmdFfgConsistency(ctx context.Context, a *ethpb.Attestation) error {
|
||||||
targetSlot, err := core.StartSlot(a.Data.Target.Epoch)
|
targetSlot, err := coreTime.StartSlot(a.Data.Target.Epoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -88,7 +88,7 @@ func (s *Service) VerifyFinalizedConsistency(ctx context.Context, root []byte) e
|
|||||||
}
|
}
|
||||||
|
|
||||||
f := s.FinalizedCheckpt()
|
f := s.FinalizedCheckpt()
|
||||||
ss, err := core.StartSlot(f.Epoch)
|
ss, err := coreTime.StartSlot(f.Epoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -147,7 +147,7 @@ func (s *Service) processAttestations(ctx context.Context) {
|
|||||||
// This delays consideration in the fork choice until their slot is in the past.
|
// This delays consideration in the fork choice until their slot is in the past.
|
||||||
// https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/fork-choice.md#validate_on_attestation
|
// https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/fork-choice.md#validate_on_attestation
|
||||||
nextSlot := a.Data.Slot + 1
|
nextSlot := a.Data.Slot + 1
|
||||||
if err := core.VerifySlotTime(uint64(s.genesisTime.Unix()), nextSlot, params.BeaconNetworkConfig().MaximumGossipClockDisparity); err != nil {
|
if err := coreTime.VerifySlotTime(uint64(s.genesisTime.Unix()), nextSlot, params.BeaconNetworkConfig().MaximumGossipClockDisparity); err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
||||||
testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
|
testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/forkchoice/protoarray"
|
"github.com/prysmaticlabs/prysm/beacon-chain/forkchoice/protoarray"
|
||||||
@@ -35,7 +35,7 @@ func TestAttestationCheckPtState_FarFutureSlot(t *testing.T) {
|
|||||||
chainService := setupBeaconChain(t, beaconDB)
|
chainService := setupBeaconChain(t, beaconDB)
|
||||||
chainService.genesisTime = time.Now()
|
chainService.genesisTime = time.Now()
|
||||||
|
|
||||||
e := types.Epoch(core.MaxSlotBuffer/uint64(params.BeaconConfig().SlotsPerEpoch) + 1)
|
e := types.Epoch(coreTime.MaxSlotBuffer/uint64(params.BeaconConfig().SlotsPerEpoch) + 1)
|
||||||
_, err := chainService.AttestationTargetState(context.Background(), ðpb.Checkpoint{Epoch: e})
|
_, err := chainService.AttestationTargetState(context.Background(), ðpb.Checkpoint{Epoch: e})
|
||||||
require.ErrorContains(t, "exceeds max allowed value relative to the local clock", err)
|
require.ErrorContains(t, "exceeds max allowed value relative to the local clock", err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import (
|
|||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/feed"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/feed"
|
||||||
statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state"
|
statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state"
|
||||||
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/monitoring/tracing"
|
"github.com/prysmaticlabs/prysm/monitoring/tracing"
|
||||||
"github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/block"
|
"github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/block"
|
||||||
"github.com/prysmaticlabs/prysm/time"
|
"github.com/prysmaticlabs/prysm/time"
|
||||||
@@ -142,7 +142,7 @@ func (s *Service) handlePostBlockOperations(b block.BeaconBlock) error {
|
|||||||
// This checks whether it's time to start saving hot state to DB.
|
// This checks whether it's time to start saving hot state to DB.
|
||||||
// It's time when there's `epochsSinceFinalitySaveHotStateDB` epochs of non-finality.
|
// It's time when there's `epochsSinceFinalitySaveHotStateDB` epochs of non-finality.
|
||||||
func (s *Service) checkSaveHotStateDB(ctx context.Context) error {
|
func (s *Service) checkSaveHotStateDB(ctx context.Context) error {
|
||||||
currentEpoch := core.SlotToEpoch(s.CurrentSlot())
|
currentEpoch := coreTime.SlotToEpoch(s.CurrentSlot())
|
||||||
// Prevent `sinceFinality` going underflow.
|
// Prevent `sinceFinality` going underflow.
|
||||||
var sinceFinality types.Epoch
|
var sinceFinality types.Epoch
|
||||||
if currentEpoch > s.finalizedCheckpt.Epoch {
|
if currentEpoch > s.finalizedCheckpt.Epoch {
|
||||||
|
|||||||
@@ -14,10 +14,10 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/async/event"
|
"github.com/prysmaticlabs/prysm/async/event"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/cache/depositcache"
|
"github.com/prysmaticlabs/prysm/beacon-chain/cache/depositcache"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/feed"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/feed"
|
||||||
statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state"
|
statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/db"
|
"github.com/prysmaticlabs/prysm/beacon-chain/db"
|
||||||
f "github.com/prysmaticlabs/prysm/beacon-chain/forkchoice"
|
f "github.com/prysmaticlabs/prysm/beacon-chain/forkchoice"
|
||||||
@@ -176,7 +176,7 @@ func (s *Service) Start() {
|
|||||||
s.prevFinalizedCheckpt = ethpb.CopyCheckpoint(finalizedCheckpoint)
|
s.prevFinalizedCheckpt = ethpb.CopyCheckpoint(finalizedCheckpoint)
|
||||||
s.resumeForkChoice(justifiedCheckpoint, finalizedCheckpoint)
|
s.resumeForkChoice(justifiedCheckpoint, finalizedCheckpoint)
|
||||||
|
|
||||||
ss, err := core.StartSlot(s.finalizedCheckpt.Epoch)
|
ss, err := coreTime.StartSlot(s.finalizedCheckpt.Epoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Could not get start slot of finalized epoch: %v", err)
|
log.Fatalf("Could not get start slot of finalized epoch: %v", err)
|
||||||
}
|
}
|
||||||
@@ -413,7 +413,7 @@ func (s *Service) initializeChainInfo(ctx context.Context) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "could not retrieve head block")
|
return errors.Wrap(err, "could not retrieve head block")
|
||||||
}
|
}
|
||||||
headEpoch := core.SlotToEpoch(headBlock.Block().Slot())
|
headEpoch := coreTime.SlotToEpoch(headBlock.Block().Slot())
|
||||||
var epochsSinceFinality types.Epoch
|
var epochsSinceFinality types.Epoch
|
||||||
if headEpoch > finalized.Epoch {
|
if headEpoch > finalized.Epoch {
|
||||||
epochsSinceFinality = headEpoch - finalized.Epoch
|
epochsSinceFinality = headEpoch - finalized.Epoch
|
||||||
|
|||||||
@@ -10,11 +10,11 @@ import (
|
|||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/prysmaticlabs/prysm/async/event"
|
"github.com/prysmaticlabs/prysm/async/event"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/cache/depositcache"
|
"github.com/prysmaticlabs/prysm/beacon-chain/cache/depositcache"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
b "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
|
b "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/feed"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/feed"
|
||||||
statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state"
|
statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/db"
|
"github.com/prysmaticlabs/prysm/beacon-chain/db"
|
||||||
testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
|
testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
|
||||||
@@ -281,7 +281,7 @@ func TestChainService_InitializeChainInfo(t *testing.T) {
|
|||||||
require.NoError(t, beaconDB.SaveState(ctx, headState, headRoot))
|
require.NoError(t, beaconDB.SaveState(ctx, headState, headRoot))
|
||||||
require.NoError(t, beaconDB.SaveState(ctx, headState, genesisRoot))
|
require.NoError(t, beaconDB.SaveState(ctx, headState, genesisRoot))
|
||||||
require.NoError(t, beaconDB.SaveBlock(ctx, wrapper.WrappedPhase0SignedBeaconBlock(headBlock)))
|
require.NoError(t, beaconDB.SaveBlock(ctx, wrapper.WrappedPhase0SignedBeaconBlock(headBlock)))
|
||||||
require.NoError(t, beaconDB.SaveFinalizedCheckpoint(ctx, ðpb.Checkpoint{Epoch: core.SlotToEpoch(finalizedSlot), Root: headRoot[:]}))
|
require.NoError(t, beaconDB.SaveFinalizedCheckpoint(ctx, ðpb.Checkpoint{Epoch: coreTime.SlotToEpoch(finalizedSlot), Root: headRoot[:]}))
|
||||||
c := &Service{cfg: &Config{BeaconDB: beaconDB, StateGen: stategen.New(beaconDB)}}
|
c := &Service{cfg: &Config{BeaconDB: beaconDB, StateGen: stategen.New(beaconDB)}}
|
||||||
require.NoError(t, c.initializeChainInfo(ctx))
|
require.NoError(t, c.initializeChainInfo(ctx))
|
||||||
headBlk, err := c.HeadBlock(ctx)
|
headBlk, err := c.HeadBlock(ctx)
|
||||||
@@ -375,7 +375,7 @@ func TestChainService_InitializeChainInfo_HeadSync(t *testing.T) {
|
|||||||
require.NoError(t, beaconDB.SaveState(ctx, headState, headRoot))
|
require.NoError(t, beaconDB.SaveState(ctx, headState, headRoot))
|
||||||
require.NoError(t, beaconDB.SaveHeadBlockRoot(ctx, headRoot))
|
require.NoError(t, beaconDB.SaveHeadBlockRoot(ctx, headRoot))
|
||||||
require.NoError(t, beaconDB.SaveFinalizedCheckpoint(ctx, ðpb.Checkpoint{
|
require.NoError(t, beaconDB.SaveFinalizedCheckpoint(ctx, ðpb.Checkpoint{
|
||||||
Epoch: core.SlotToEpoch(finalizedBlock.Block.Slot),
|
Epoch: coreTime.SlotToEpoch(finalizedBlock.Block.Slot),
|
||||||
Root: finalizedRoot[:],
|
Root: finalizedRoot[:],
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/db/filters"
|
"github.com/prysmaticlabs/prysm/beacon-chain/db/filters"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
||||||
@@ -38,7 +38,7 @@ func (s *Service) VerifyWeakSubjectivityRoot(ctx context.Context) error {
|
|||||||
return fmt.Errorf("node does not have root in DB: %#x", r)
|
return fmt.Errorf("node does not have root in DB: %#x", r)
|
||||||
}
|
}
|
||||||
|
|
||||||
startSlot, err := core.StartSlot(s.cfg.WeakSubjectivityCheckpt.Epoch)
|
startSlot, err := time.StartSlot(s.cfg.WeakSubjectivityCheckpt.Epoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,12 +21,12 @@ go_library(
|
|||||||
"//validator/client:__pkg__",
|
"//validator/client:__pkg__",
|
||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/blocks:go_default_library",
|
"//beacon-chain/core/blocks:go_default_library",
|
||||||
"//beacon-chain/core/epoch:go_default_library",
|
"//beacon-chain/core/epoch:go_default_library",
|
||||||
"//beacon-chain/core/epoch/precompute:go_default_library",
|
"//beacon-chain/core/epoch/precompute:go_default_library",
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
"//beacon-chain/core/signing:go_default_library",
|
"//beacon-chain/core/signing:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/p2p/types:go_default_library",
|
"//beacon-chain/p2p/types:go_default_library",
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
"//beacon-chain/state/v2:go_default_library",
|
"//beacon-chain/state/v2:go_default_library",
|
||||||
@@ -61,11 +61,11 @@ go_test(
|
|||||||
],
|
],
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/epoch:go_default_library",
|
"//beacon-chain/core/epoch:go_default_library",
|
||||||
"//beacon-chain/core/epoch/precompute:go_default_library",
|
"//beacon-chain/core/epoch/precompute:go_default_library",
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
"//beacon-chain/core/signing:go_default_library",
|
"//beacon-chain/core/signing:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/p2p/types:go_default_library",
|
"//beacon-chain/p2p/types:go_default_library",
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
"//beacon-chain/state/v2:go_default_library",
|
"//beacon-chain/state/v2:go_default_library",
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ import (
|
|||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
||||||
@@ -105,7 +105,7 @@ func SetParticipationAndRewardProposer(
|
|||||||
indices []uint64,
|
indices []uint64,
|
||||||
participatedFlags map[uint8]bool, totalBalance uint64) (state.BeaconState, error) {
|
participatedFlags map[uint8]bool, totalBalance uint64) (state.BeaconState, error) {
|
||||||
var epochParticipation []byte
|
var epochParticipation []byte
|
||||||
currentEpoch := core.CurrentEpoch(beaconState)
|
currentEpoch := time.CurrentEpoch(beaconState)
|
||||||
var err error
|
var err error
|
||||||
if targetEpoch == currentEpoch {
|
if targetEpoch == currentEpoch {
|
||||||
epochParticipation, err = beaconState.CurrentEpochParticipation()
|
epochParticipation, err = beaconState.CurrentEpochParticipation()
|
||||||
@@ -240,7 +240,7 @@ func RewardProposer(ctx context.Context, beaconState state.BeaconState, proposer
|
|||||||
//
|
//
|
||||||
// return participation_flag_indices
|
// return participation_flag_indices
|
||||||
func AttestationParticipationFlagIndices(beaconState state.BeaconStateAltair, data *ethpb.AttestationData, delay types.Slot) (map[uint8]bool, error) {
|
func AttestationParticipationFlagIndices(beaconState state.BeaconStateAltair, data *ethpb.AttestationData, delay types.Slot) (map[uint8]bool, error) {
|
||||||
currEpoch := core.CurrentEpoch(beaconState)
|
currEpoch := time.CurrentEpoch(beaconState)
|
||||||
var justifiedCheckpt *ethpb.Checkpoint
|
var justifiedCheckpt *ethpb.Checkpoint
|
||||||
if data.Target.Epoch == currEpoch {
|
if data.Target.Epoch == currEpoch {
|
||||||
justifiedCheckpt = beaconState.CurrentJustifiedCheckpoint()
|
justifiedCheckpt = beaconState.CurrentJustifiedCheckpoint()
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ import (
|
|||||||
fuzz "github.com/google/gofuzz"
|
fuzz "github.com/google/gofuzz"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/go-bitfield"
|
"github.com/prysmaticlabs/go-bitfield"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/altair"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/altair"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
stateAltair "github.com/prysmaticlabs/prysm/beacon-chain/state/v2"
|
stateAltair "github.com/prysmaticlabs/prysm/beacon-chain/state/v2"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
@@ -75,8 +75,8 @@ func TestProcessAttestations_NeitherCurrentNorPrevEpoch(t *testing.T) {
|
|||||||
want := fmt.Sprintf(
|
want := fmt.Sprintf(
|
||||||
"expected target epoch (%d) to be the previous epoch (%d) or the current epoch (%d)",
|
"expected target epoch (%d) to be the previous epoch (%d) or the current epoch (%d)",
|
||||||
att.Data.Target.Epoch,
|
att.Data.Target.Epoch,
|
||||||
core.PrevEpoch(beaconState),
|
time.PrevEpoch(beaconState),
|
||||||
core.CurrentEpoch(beaconState),
|
time.CurrentEpoch(beaconState),
|
||||||
)
|
)
|
||||||
wsb, err := wrapper.WrappedAltairSignedBeaconBlock(b)
|
wsb, err := wrapper.WrappedAltairSignedBeaconBlock(b)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -111,7 +111,7 @@ func TestProcessAttestations_CurrentEpochFFGDataMismatches(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
_, err = altair.ProcessAttestationsNoVerifySignature(context.Background(), beaconState, wsb)
|
_, err = altair.ProcessAttestationsNoVerifySignature(context.Background(), beaconState, wsb)
|
||||||
require.ErrorContains(t, want, err)
|
require.ErrorContains(t, want, err)
|
||||||
b.Block.Body.Attestations[0].Data.Source.Epoch = core.CurrentEpoch(beaconState)
|
b.Block.Body.Attestations[0].Data.Source.Epoch = time.CurrentEpoch(beaconState)
|
||||||
b.Block.Body.Attestations[0].Data.Source.Root = []byte{}
|
b.Block.Body.Attestations[0].Data.Source.Root = []byte{}
|
||||||
wsb, err = wrapper.WrappedAltairSignedBeaconBlock(b)
|
wsb, err = wrapper.WrappedAltairSignedBeaconBlock(b)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -152,8 +152,8 @@ func TestProcessAttestations_PrevEpochFFGDataMismatches(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
_, err = altair.ProcessAttestationsNoVerifySignature(context.Background(), beaconState, wsb)
|
_, err = altair.ProcessAttestationsNoVerifySignature(context.Background(), beaconState, wsb)
|
||||||
require.ErrorContains(t, want, err)
|
require.ErrorContains(t, want, err)
|
||||||
b.Block.Body.Attestations[0].Data.Source.Epoch = core.PrevEpoch(beaconState)
|
b.Block.Body.Attestations[0].Data.Source.Epoch = time.PrevEpoch(beaconState)
|
||||||
b.Block.Body.Attestations[0].Data.Target.Epoch = core.PrevEpoch(beaconState)
|
b.Block.Body.Attestations[0].Data.Target.Epoch = time.PrevEpoch(beaconState)
|
||||||
b.Block.Body.Attestations[0].Data.Source.Root = []byte{}
|
b.Block.Body.Attestations[0].Data.Source.Root = []byte{}
|
||||||
wsb, err = wrapper.WrappedAltairSignedBeaconBlock(b)
|
wsb, err = wrapper.WrappedAltairSignedBeaconBlock(b)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -471,7 +471,7 @@ func TestSetParticipationAndRewardProposer(t *testing.T) {
|
|||||||
beaconState, _ := util.DeterministicGenesisStateAltair(t, params.BeaconConfig().MaxValidatorsPerCommittee)
|
beaconState, _ := util.DeterministicGenesisStateAltair(t, params.BeaconConfig().MaxValidatorsPerCommittee)
|
||||||
require.NoError(t, beaconState.SetSlot(params.BeaconConfig().SlotsPerEpoch))
|
require.NoError(t, beaconState.SetSlot(params.BeaconConfig().SlotsPerEpoch))
|
||||||
|
|
||||||
currentEpoch := core.CurrentEpoch(beaconState)
|
currentEpoch := time.CurrentEpoch(beaconState)
|
||||||
if test.epoch == currentEpoch {
|
if test.epoch == currentEpoch {
|
||||||
require.NoError(t, beaconState.SetCurrentParticipationBits(test.epochParticipation))
|
require.NoError(t, beaconState.SetCurrentParticipationBits(test.epochParticipation))
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
p2pType "github.com/prysmaticlabs/prysm/beacon-chain/p2p/types"
|
p2pType "github.com/prysmaticlabs/prysm/beacon-chain/p2p/types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
@@ -101,8 +101,8 @@ func FilterSyncCommitteeVotes(s state.BeaconStateAltair, sync *ethpb.SyncAggrega
|
|||||||
|
|
||||||
// VerifySyncCommitteeSig verifies sync committee signature `syncSig` is valid with respect to public keys `syncKeys`.
|
// VerifySyncCommitteeSig verifies sync committee signature `syncSig` is valid with respect to public keys `syncKeys`.
|
||||||
func VerifySyncCommitteeSig(s state.BeaconStateAltair, syncKeys []bls.PublicKey, syncSig []byte) error {
|
func VerifySyncCommitteeSig(s state.BeaconStateAltair, syncKeys []bls.PublicKey, syncSig []byte) error {
|
||||||
ps := core.PrevSlot(s.Slot())
|
ps := time.PrevSlot(s.Slot())
|
||||||
d, err := signing.Domain(s.Fork(), core.SlotToEpoch(ps), params.BeaconConfig().DomainSyncCommittee, s.GenesisValidatorRoot())
|
d, err := signing.Domain(s.Fork(), time.SlotToEpoch(ps), params.BeaconConfig().DomainSyncCommittee, s.GenesisValidatorRoot())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import (
|
|||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/go-bitfield"
|
"github.com/prysmaticlabs/go-bitfield"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/altair"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/altair"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
p2pType "github.com/prysmaticlabs/prysm/beacon-chain/p2p/types"
|
p2pType "github.com/prysmaticlabs/prysm/beacon-chain/p2p/types"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/crypto/bls"
|
"github.com/prysmaticlabs/prysm/crypto/bls"
|
||||||
@@ -33,13 +33,13 @@ func TestProcessSyncCommittee_PerfectParticipation(t *testing.T) {
|
|||||||
}
|
}
|
||||||
indices, err := altair.NextSyncCommitteeIndices(context.Background(), beaconState)
|
indices, err := altair.NextSyncCommitteeIndices(context.Background(), beaconState)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
ps := core.PrevSlot(beaconState.Slot())
|
ps := time.PrevSlot(beaconState.Slot())
|
||||||
pbr, err := helpers.BlockRootAtSlot(beaconState, ps)
|
pbr, err := helpers.BlockRootAtSlot(beaconState, ps)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
sigs := make([]bls.Signature, len(indices))
|
sigs := make([]bls.Signature, len(indices))
|
||||||
for i, indice := range indices {
|
for i, indice := range indices {
|
||||||
b := p2pType.SSZBytes(pbr)
|
b := p2pType.SSZBytes(pbr)
|
||||||
sb, err := signing.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice])
|
sb, err := signing.ComputeDomainAndSign(beaconState, time.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice])
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
sig, err := bls.SignatureFromBytes(sb)
|
sig, err := bls.SignatureFromBytes(sb)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -107,13 +107,13 @@ func TestProcessSyncCommittee_MixParticipation_BadSignature(t *testing.T) {
|
|||||||
}
|
}
|
||||||
indices, err := altair.NextSyncCommitteeIndices(context.Background(), beaconState)
|
indices, err := altair.NextSyncCommitteeIndices(context.Background(), beaconState)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
ps := core.PrevSlot(beaconState.Slot())
|
ps := time.PrevSlot(beaconState.Slot())
|
||||||
pbr, err := helpers.BlockRootAtSlot(beaconState, ps)
|
pbr, err := helpers.BlockRootAtSlot(beaconState, ps)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
sigs := make([]bls.Signature, len(indices))
|
sigs := make([]bls.Signature, len(indices))
|
||||||
for i, indice := range indices {
|
for i, indice := range indices {
|
||||||
b := p2pType.SSZBytes(pbr)
|
b := p2pType.SSZBytes(pbr)
|
||||||
sb, err := signing.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice])
|
sb, err := signing.ComputeDomainAndSign(beaconState, time.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice])
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
sig, err := bls.SignatureFromBytes(sb)
|
sig, err := bls.SignatureFromBytes(sb)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -142,14 +142,14 @@ func TestProcessSyncCommittee_MixParticipation_GoodSignature(t *testing.T) {
|
|||||||
}
|
}
|
||||||
indices, err := altair.NextSyncCommitteeIndices(context.Background(), beaconState)
|
indices, err := altair.NextSyncCommitteeIndices(context.Background(), beaconState)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
ps := core.PrevSlot(beaconState.Slot())
|
ps := time.PrevSlot(beaconState.Slot())
|
||||||
pbr, err := helpers.BlockRootAtSlot(beaconState, ps)
|
pbr, err := helpers.BlockRootAtSlot(beaconState, ps)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
sigs := make([]bls.Signature, 0, len(indices))
|
sigs := make([]bls.Signature, 0, len(indices))
|
||||||
for i, indice := range indices {
|
for i, indice := range indices {
|
||||||
if syncBits.BitAt(uint64(i)) {
|
if syncBits.BitAt(uint64(i)) {
|
||||||
b := p2pType.SSZBytes(pbr)
|
b := p2pType.SSZBytes(pbr)
|
||||||
sb, err := signing.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice])
|
sb, err := signing.ComputeDomainAndSign(beaconState, time.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice])
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
sig, err := bls.SignatureFromBytes(sb)
|
sig, err := bls.SignatureFromBytes(sb)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -215,14 +215,14 @@ func Test_VerifySyncCommitteeSig(t *testing.T) {
|
|||||||
}
|
}
|
||||||
indices, err := altair.NextSyncCommitteeIndices(context.Background(), beaconState)
|
indices, err := altair.NextSyncCommitteeIndices(context.Background(), beaconState)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
ps := core.PrevSlot(beaconState.Slot())
|
ps := time.PrevSlot(beaconState.Slot())
|
||||||
pbr, err := helpers.BlockRootAtSlot(beaconState, ps)
|
pbr, err := helpers.BlockRootAtSlot(beaconState, ps)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
sigs := make([]bls.Signature, len(indices))
|
sigs := make([]bls.Signature, len(indices))
|
||||||
pks := make([]bls.PublicKey, len(indices))
|
pks := make([]bls.PublicKey, len(indices))
|
||||||
for i, indice := range indices {
|
for i, indice := range indices {
|
||||||
b := p2pType.SSZBytes(pbr)
|
b := p2pType.SSZBytes(pbr)
|
||||||
sb, err := signing.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice])
|
sb, err := signing.ComputeDomainAndSign(beaconState, time.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice])
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
sig, err := bls.SignatureFromBytes(sb)
|
sig, err := bls.SignatureFromBytes(sb)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/epoch/precompute"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/epoch/precompute"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/math"
|
"github.com/prysmaticlabs/prysm/math"
|
||||||
@@ -19,8 +19,8 @@ func InitializePrecomputeValidators(ctx context.Context, beaconState state.Beaco
|
|||||||
defer span.End()
|
defer span.End()
|
||||||
vals := make([]*precompute.Validator, beaconState.NumValidators())
|
vals := make([]*precompute.Validator, beaconState.NumValidators())
|
||||||
bal := &precompute.Balance{}
|
bal := &precompute.Balance{}
|
||||||
prevEpoch := core.PrevEpoch(beaconState)
|
prevEpoch := time.PrevEpoch(beaconState)
|
||||||
currentEpoch := core.CurrentEpoch(beaconState)
|
currentEpoch := time.CurrentEpoch(beaconState)
|
||||||
inactivityScores, err := beaconState.InactivityScores()
|
inactivityScores, err := beaconState.InactivityScores()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
@@ -74,7 +74,7 @@ func ProcessInactivityScores(
|
|||||||
defer span.End()
|
defer span.End()
|
||||||
|
|
||||||
cfg := params.BeaconConfig()
|
cfg := params.BeaconConfig()
|
||||||
if core.CurrentEpoch(beaconState) == cfg.GenesisEpoch {
|
if time.CurrentEpoch(beaconState) == cfg.GenesisEpoch {
|
||||||
return beaconState, vals, nil
|
return beaconState, vals, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ func ProcessInactivityScores(
|
|||||||
|
|
||||||
bias := cfg.InactivityScoreBias
|
bias := cfg.InactivityScoreBias
|
||||||
recoveryRate := cfg.InactivityScoreRecoveryRate
|
recoveryRate := cfg.InactivityScoreRecoveryRate
|
||||||
prevEpoch := core.PrevEpoch(beaconState)
|
prevEpoch := time.PrevEpoch(beaconState)
|
||||||
finalizedEpoch := beaconState.FinalizedCheckpointEpoch()
|
finalizedEpoch := beaconState.FinalizedCheckpointEpoch()
|
||||||
for i, v := range vals {
|
for i, v := range vals {
|
||||||
if !precompute.EligibleForRewards(v) {
|
if !precompute.EligibleForRewards(v) {
|
||||||
@@ -182,7 +182,7 @@ func ProcessRewardsAndPenaltiesPrecompute(
|
|||||||
) (state.BeaconStateAltair, error) {
|
) (state.BeaconStateAltair, error) {
|
||||||
// Don't process rewards and penalties in genesis epoch.
|
// Don't process rewards and penalties in genesis epoch.
|
||||||
cfg := params.BeaconConfig()
|
cfg := params.BeaconConfig()
|
||||||
if core.CurrentEpoch(beaconState) == cfg.GenesisEpoch {
|
if time.CurrentEpoch(beaconState) == cfg.GenesisEpoch {
|
||||||
return beaconState, nil
|
return beaconState, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -227,7 +227,7 @@ func AttestationsDelta(beaconState state.BeaconStateAltair, bal *precompute.Bala
|
|||||||
penalties = make([]uint64, numOfVals)
|
penalties = make([]uint64, numOfVals)
|
||||||
|
|
||||||
cfg := params.BeaconConfig()
|
cfg := params.BeaconConfig()
|
||||||
prevEpoch := core.PrevEpoch(beaconState)
|
prevEpoch := time.PrevEpoch(beaconState)
|
||||||
finalizedEpoch := beaconState.FinalizedCheckpointEpoch()
|
finalizedEpoch := beaconState.FinalizedCheckpointEpoch()
|
||||||
increment := cfg.EffectiveBalanceIncrement
|
increment := cfg.EffectiveBalanceIncrement
|
||||||
factor := cfg.BaseRewardFactor
|
factor := cfg.BaseRewardFactor
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ package altair
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
@@ -19,7 +19,7 @@ import (
|
|||||||
// state.current_sync_committee = state.next_sync_committee
|
// state.current_sync_committee = state.next_sync_committee
|
||||||
// state.next_sync_committee = get_next_sync_committee(state)
|
// state.next_sync_committee = get_next_sync_committee(state)
|
||||||
func ProcessSyncCommitteeUpdates(ctx context.Context, beaconState state.BeaconStateAltair) (state.BeaconStateAltair, error) {
|
func ProcessSyncCommitteeUpdates(ctx context.Context, beaconState state.BeaconStateAltair) (state.BeaconStateAltair, error) {
|
||||||
nextEpoch := core.NextEpoch(beaconState)
|
nextEpoch := time.NextEpoch(beaconState)
|
||||||
if nextEpoch%params.BeaconConfig().EpochsPerSyncCommitteePeriod == 0 {
|
if nextEpoch%params.BeaconConfig().EpochsPerSyncCommitteePeriod == 0 {
|
||||||
nextSyncCommittee, err := beaconState.NextSyncCommittee()
|
nextSyncCommittee, err := beaconState.NextSyncCommittee()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/altair"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/altair"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/epoch"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/epoch"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
stateAltair "github.com/prysmaticlabs/prysm/beacon-chain/state/v2"
|
stateAltair "github.com/prysmaticlabs/prysm/beacon-chain/state/v2"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
||||||
@@ -59,7 +59,7 @@ func TestProcessSyncCommitteeUpdates_CanRotate(t *testing.T) {
|
|||||||
require.DeepEqual(t, next, c)
|
require.DeepEqual(t, next, c)
|
||||||
|
|
||||||
// Test boundary condition.
|
// Test boundary condition.
|
||||||
slot := params.BeaconConfig().SlotsPerEpoch * types.Slot(core.CurrentEpoch(s)+params.BeaconConfig().EpochsPerSyncCommitteePeriod)
|
slot := params.BeaconConfig().SlotsPerEpoch * types.Slot(time.CurrentEpoch(s)+params.BeaconConfig().EpochsPerSyncCommitteePeriod)
|
||||||
require.NoError(t, s.SetSlot(slot))
|
require.NoError(t, s.SetSlot(slot))
|
||||||
boundaryCommittee, err := altair.NextSyncCommittee(context.Background(), s)
|
boundaryCommittee, err := altair.NextSyncCommittee(context.Background(), s)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import (
|
|||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/crypto/bls"
|
"github.com/prysmaticlabs/prysm/crypto/bls"
|
||||||
@@ -97,7 +97,7 @@ func NextSyncCommittee(ctx context.Context, s state.BeaconStateAltair) (*ethpb.S
|
|||||||
// i += 1
|
// i += 1
|
||||||
// return sync_committee_indices
|
// return sync_committee_indices
|
||||||
func NextSyncCommitteeIndices(ctx context.Context, s state.BeaconStateAltair) ([]types.ValidatorIndex, error) {
|
func NextSyncCommitteeIndices(ctx context.Context, s state.BeaconStateAltair) ([]types.ValidatorIndex, error) {
|
||||||
epoch := core.NextEpoch(s)
|
epoch := coreTime.NextEpoch(s)
|
||||||
indices, err := helpers.ActiveValidatorIndices(ctx, s, epoch)
|
indices, err := helpers.ActiveValidatorIndices(ctx, s, epoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -185,15 +185,15 @@ func IsSyncCommitteeAggregator(sig []byte) (bool, error) {
|
|||||||
|
|
||||||
// ValidateSyncMessageTime validates sync message to ensure that the provided slot is valid.
|
// ValidateSyncMessageTime validates sync message to ensure that the provided slot is valid.
|
||||||
func ValidateSyncMessageTime(slot types.Slot, genesisTime time.Time, clockDisparity time.Duration) error {
|
func ValidateSyncMessageTime(slot types.Slot, genesisTime time.Time, clockDisparity time.Duration) error {
|
||||||
if err := core.ValidateSlotClock(slot, uint64(genesisTime.Unix())); err != nil {
|
if err := coreTime.ValidateSlotClock(slot, uint64(genesisTime.Unix())); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
messageTime, err := core.SlotToTime(uint64(genesisTime.Unix()), slot)
|
messageTime, err := coreTime.SlotToTime(uint64(genesisTime.Unix()), slot)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
currentSlot := core.SlotsSince(genesisTime)
|
currentSlot := coreTime.SlotsSince(genesisTime)
|
||||||
slotStartTime, err := core.SlotToTime(uint64(genesisTime.Unix()), currentSlot)
|
slotStartTime, err := coreTime.SlotToTime(uint64(genesisTime.Unix()), currentSlot)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ package altair
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
statealtair "github.com/prysmaticlabs/prysm/beacon-chain/state/v2"
|
statealtair "github.com/prysmaticlabs/prysm/beacon-chain/state/v2"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
@@ -63,7 +63,7 @@ import (
|
|||||||
// post.next_sync_committee = get_next_sync_committee(post)
|
// post.next_sync_committee = get_next_sync_committee(post)
|
||||||
// return post
|
// return post
|
||||||
func UpgradeToAltair(ctx context.Context, state state.BeaconState) (state.BeaconStateAltair, error) {
|
func UpgradeToAltair(ctx context.Context, state state.BeaconState) (state.BeaconStateAltair, error) {
|
||||||
epoch := core.CurrentEpoch(state)
|
epoch := time.CurrentEpoch(state)
|
||||||
|
|
||||||
numValidators := state.NumValidators()
|
numValidators := state.NumValidators()
|
||||||
s := ðpb.BeaconStateAltair{
|
s := ðpb.BeaconStateAltair{
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import (
|
|||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/go-bitfield"
|
"github.com/prysmaticlabs/go-bitfield"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/altair"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/altair"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
stateAltair "github.com/prysmaticlabs/prysm/beacon-chain/state/v2"
|
stateAltair "github.com/prysmaticlabs/prysm/beacon-chain/state/v2"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
@@ -109,7 +109,7 @@ func TestUpgradeToAltair(t *testing.T) {
|
|||||||
require.DeepSSZEqual(t, ðpb.Fork{
|
require.DeepSSZEqual(t, ðpb.Fork{
|
||||||
PreviousVersion: st.Fork().CurrentVersion,
|
PreviousVersion: st.Fork().CurrentVersion,
|
||||||
CurrentVersion: params.BeaconConfig().AltairForkVersion,
|
CurrentVersion: params.BeaconConfig().AltairForkVersion,
|
||||||
Epoch: core.CurrentEpoch(st),
|
Epoch: time.CurrentEpoch(st),
|
||||||
}, f)
|
}, f)
|
||||||
csc, err := aState.CurrentSyncCommittee()
|
csc, err := aState.CurrentSyncCommittee()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|||||||
@@ -24,9 +24,9 @@ go_library(
|
|||||||
"//validator:__subpackages__",
|
"//validator:__subpackages__",
|
||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
"//beacon-chain/core/signing:go_default_library",
|
"//beacon-chain/core/signing:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/core/validators:go_default_library",
|
"//beacon-chain/core/validators:go_default_library",
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
"//config/params:go_default_library",
|
"//config/params:go_default_library",
|
||||||
@@ -74,9 +74,9 @@ go_test(
|
|||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
shard_count = 2,
|
shard_count = 2,
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
"//beacon-chain/core/signing:go_default_library",
|
"//beacon-chain/core/signing:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/core/validators:go_default_library",
|
"//beacon-chain/core/validators:go_default_library",
|
||||||
"//beacon-chain/p2p/types:go_default_library",
|
"//beacon-chain/p2p/types:go_default_library",
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import (
|
|||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/crypto/bls"
|
"github.com/prysmaticlabs/prysm/crypto/bls"
|
||||||
@@ -52,8 +52,8 @@ func VerifyAttestationNoVerifySignature(
|
|||||||
if err := helpers.ValidateNilAttestation(att); err != nil {
|
if err := helpers.ValidateNilAttestation(att); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
currEpoch := core.CurrentEpoch(beaconState)
|
currEpoch := time.CurrentEpoch(beaconState)
|
||||||
prevEpoch := core.PrevEpoch(beaconState)
|
prevEpoch := time.PrevEpoch(beaconState)
|
||||||
data := att.Data
|
data := att.Data
|
||||||
if data.Target.Epoch != prevEpoch && data.Target.Epoch != currEpoch {
|
if data.Target.Epoch != prevEpoch && data.Target.Epoch != currEpoch {
|
||||||
return fmt.Errorf(
|
return fmt.Errorf(
|
||||||
@@ -137,7 +137,7 @@ func ProcessAttestationNoVerifySignature(
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
currEpoch := core.CurrentEpoch(beaconState)
|
currEpoch := time.CurrentEpoch(beaconState)
|
||||||
data := att.Data
|
data := att.Data
|
||||||
s := att.Data.Slot
|
s := att.Data.Slot
|
||||||
proposerIndex, err := helpers.BeaconProposerIndex(ctx, beaconState)
|
proposerIndex, err := helpers.BeaconProposerIndex(ctx, beaconState)
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import (
|
|||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/container/slice"
|
"github.com/prysmaticlabs/prysm/container/slice"
|
||||||
@@ -50,7 +50,7 @@ func ProcessAttesterSlashings(
|
|||||||
sort.SliceStable(slashableIndices, func(i, j int) bool {
|
sort.SliceStable(slashableIndices, func(i, j int) bool {
|
||||||
return slashableIndices[i] < slashableIndices[j]
|
return slashableIndices[i] < slashableIndices[j]
|
||||||
})
|
})
|
||||||
currentEpoch := core.SlotToEpoch(beaconState.Slot())
|
currentEpoch := time.SlotToEpoch(beaconState.Slot())
|
||||||
var err error
|
var err error
|
||||||
var slashedAny bool
|
var slashedAny bool
|
||||||
var val state.ReadOnlyValidator
|
var val state.ReadOnlyValidator
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import (
|
|||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
v "github.com/prysmaticlabs/prysm/beacon-chain/core/validators"
|
v "github.com/prysmaticlabs/prysm/beacon-chain/core/validators"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
@@ -135,7 +135,7 @@ func VerifyExitAndSignature(
|
|||||||
// # Initiate exit
|
// # Initiate exit
|
||||||
// initiate_validator_exit(state, voluntary_exit.validator_index)
|
// initiate_validator_exit(state, voluntary_exit.validator_index)
|
||||||
func verifyExitConditions(validator state.ReadOnlyValidator, currentSlot types.Slot, exit *ethpb.VoluntaryExit) error {
|
func verifyExitConditions(validator state.ReadOnlyValidator, currentSlot types.Slot, exit *ethpb.VoluntaryExit) error {
|
||||||
currentEpoch := core.SlotToEpoch(currentSlot)
|
currentEpoch := time.SlotToEpoch(currentSlot)
|
||||||
// Verify the validator is active.
|
// Verify the validator is active.
|
||||||
if !helpers.IsActiveValidatorUsingTrie(validator, currentEpoch) {
|
if !helpers.IsActiveValidatorUsingTrie(validator, currentEpoch) {
|
||||||
return errors.New("non-active validator cannot exit")
|
return errors.New("non-active validator cannot exit")
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/crypto/bls"
|
"github.com/prysmaticlabs/prysm/crypto/bls"
|
||||||
@@ -113,7 +113,7 @@ func TestProcessVoluntaryExits_AppliesCorrectStatus(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
val.PublicKey = priv.PublicKey().Marshal()
|
val.PublicKey = priv.PublicKey().Marshal()
|
||||||
require.NoError(t, state.UpdateValidatorAtIndex(0, val))
|
require.NoError(t, state.UpdateValidatorAtIndex(0, val))
|
||||||
exits[0].Signature, err = signing.ComputeDomainAndSign(state, core.CurrentEpoch(state), exits[0].Exit, params.BeaconConfig().DomainVoluntaryExit, priv)
|
exits[0].Signature, err = signing.ComputeDomainAndSign(state, time.CurrentEpoch(state), exits[0].Exit, params.BeaconConfig().DomainVoluntaryExit, priv)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
b := util.NewBeaconBlock()
|
b := util.NewBeaconBlock()
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ import (
|
|||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
p2ptypes "github.com/prysmaticlabs/prysm/beacon-chain/p2p/types"
|
p2ptypes "github.com/prysmaticlabs/prysm/beacon-chain/p2p/types"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/crypto/bls"
|
"github.com/prysmaticlabs/prysm/crypto/bls"
|
||||||
@@ -48,7 +48,7 @@ func TestProcessBlockHeader_ImproperBlockSlot(t *testing.T) {
|
|||||||
latestBlockSignedRoot, err := state.LatestBlockHeader().HashTreeRoot()
|
latestBlockSignedRoot, err := state.LatestBlockHeader().HashTreeRoot()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
currentEpoch := core.CurrentEpoch(state)
|
currentEpoch := time.CurrentEpoch(state)
|
||||||
priv, err := bls.RandKey()
|
priv, err := bls.RandKey()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
pID, err := helpers.BeaconProposerIndex(context.Background(), state)
|
pID, err := helpers.BeaconProposerIndex(context.Background(), state)
|
||||||
@@ -120,7 +120,7 @@ func TestProcessBlockHeader_DifferentSlots(t *testing.T) {
|
|||||||
|
|
||||||
lbhsr, err := state.LatestBlockHeader().HashTreeRoot()
|
lbhsr, err := state.LatestBlockHeader().HashTreeRoot()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
currentEpoch := core.CurrentEpoch(state)
|
currentEpoch := time.CurrentEpoch(state)
|
||||||
|
|
||||||
priv, err := bls.RandKey()
|
priv, err := bls.RandKey()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -159,7 +159,7 @@ func TestProcessBlockHeader_PreviousBlockRootNotSignedRoot(t *testing.T) {
|
|||||||
bh := state.LatestBlockHeader()
|
bh := state.LatestBlockHeader()
|
||||||
bh.Slot = 9
|
bh.Slot = 9
|
||||||
require.NoError(t, state.SetLatestBlockHeader(bh))
|
require.NoError(t, state.SetLatestBlockHeader(bh))
|
||||||
currentEpoch := core.CurrentEpoch(state)
|
currentEpoch := time.CurrentEpoch(state)
|
||||||
priv, err := bls.RandKey()
|
priv, err := bls.RandKey()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
sszBytes := p2ptypes.SSZBytes("hello")
|
sszBytes := p2ptypes.SSZBytes("hello")
|
||||||
@@ -200,7 +200,7 @@ func TestProcessBlockHeader_SlashedProposer(t *testing.T) {
|
|||||||
require.NoError(t, state.SetLatestBlockHeader(bh))
|
require.NoError(t, state.SetLatestBlockHeader(bh))
|
||||||
parentRoot, err := state.LatestBlockHeader().HashTreeRoot()
|
parentRoot, err := state.LatestBlockHeader().HashTreeRoot()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
currentEpoch := core.CurrentEpoch(state)
|
currentEpoch := time.CurrentEpoch(state)
|
||||||
priv, err := bls.RandKey()
|
priv, err := bls.RandKey()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
sszBytes := p2ptypes.SSZBytes("hello")
|
sszBytes := p2ptypes.SSZBytes("hello")
|
||||||
@@ -244,7 +244,7 @@ func TestProcessBlockHeader_OK(t *testing.T) {
|
|||||||
latestBlockSignedRoot, err := state.LatestBlockHeader().HashTreeRoot()
|
latestBlockSignedRoot, err := state.LatestBlockHeader().HashTreeRoot()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
currentEpoch := core.CurrentEpoch(state)
|
currentEpoch := time.CurrentEpoch(state)
|
||||||
priv, err := bls.RandKey()
|
priv, err := bls.RandKey()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
pID, err := helpers.BeaconProposerIndex(context.Background(), state)
|
pID, err := helpers.BeaconProposerIndex(context.Background(), state)
|
||||||
@@ -303,7 +303,7 @@ func TestBlockSignatureSet_OK(t *testing.T) {
|
|||||||
latestBlockSignedRoot, err := state.LatestBlockHeader().HashTreeRoot()
|
latestBlockSignedRoot, err := state.LatestBlockHeader().HashTreeRoot()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
currentEpoch := core.CurrentEpoch(state)
|
currentEpoch := time.CurrentEpoch(state)
|
||||||
priv, err := bls.RandKey()
|
priv, err := bls.RandKey()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
pID, err := helpers.BeaconProposerIndex(context.Background(), state)
|
pID, err := helpers.BeaconProposerIndex(context.Background(), state)
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import (
|
|||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
||||||
@@ -93,12 +93,12 @@ func VerifyProposerSlashing(
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if !helpers.IsSlashableValidatorUsingTrie(proposer, core.CurrentEpoch(beaconState)) {
|
if !helpers.IsSlashableValidatorUsingTrie(proposer, time.CurrentEpoch(beaconState)) {
|
||||||
return fmt.Errorf("validator with key %#x is not slashable", proposer.PublicKey())
|
return fmt.Errorf("validator with key %#x is not slashable", proposer.PublicKey())
|
||||||
}
|
}
|
||||||
headers := []*ethpb.SignedBeaconBlockHeader{slashing.Header_1, slashing.Header_2}
|
headers := []*ethpb.SignedBeaconBlockHeader{slashing.Header_1, slashing.Header_2}
|
||||||
for _, header := range headers {
|
for _, header := range headers {
|
||||||
if err := signing.ComputeDomainVerifySigningRoot(beaconState, pIdx, core.SlotToEpoch(hSlot),
|
if err := signing.ComputeDomainVerifySigningRoot(beaconState, pIdx, time.SlotToEpoch(hSlot),
|
||||||
header.Header, params.BeaconConfig().DomainBeaconProposer, header.Signature); err != nil {
|
header.Header, params.BeaconConfig().DomainBeaconProposer, header.Signature); err != nil {
|
||||||
return errors.Wrap(err, "could not verify beacon block header")
|
return errors.Wrap(err, "could not verify beacon block header")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
v "github.com/prysmaticlabs/prysm/beacon-chain/core/validators"
|
v "github.com/prysmaticlabs/prysm/beacon-chain/core/validators"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
||||||
@@ -329,7 +329,7 @@ func TestVerifyProposerSlashing(t *testing.T) {
|
|||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
|
||||||
sk := sks[tt.args.slashing.Header_1.Header.ProposerIndex]
|
sk := sks[tt.args.slashing.Header_1.Header.ProposerIndex]
|
||||||
d, err := signing.Domain(tt.args.beaconState.Fork(), core.SlotToEpoch(tt.args.slashing.Header_1.Header.Slot), params.BeaconConfig().DomainBeaconProposer, tt.args.beaconState.GenesisValidatorRoot())
|
d, err := signing.Domain(tt.args.beaconState.Fork(), time.SlotToEpoch(tt.args.slashing.Header_1.Header.Slot), params.BeaconConfig().DomainBeaconProposer, tt.args.beaconState.GenesisValidatorRoot())
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
if tt.args.slashing.Header_1.Signature == nil {
|
if tt.args.slashing.Header_1.Signature == nil {
|
||||||
sr, err := signing.ComputeSigningRoot(tt.args.slashing.Header_1.Header, d)
|
sr, err := signing.ComputeSigningRoot(tt.args.slashing.Header_1.Header, d)
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/crypto/hash"
|
"github.com/prysmaticlabs/prysm/crypto/hash"
|
||||||
@@ -63,7 +63,7 @@ func ProcessRandaoNoVerify(
|
|||||||
beaconState state.BeaconState,
|
beaconState state.BeaconState,
|
||||||
randaoReveal []byte,
|
randaoReveal []byte,
|
||||||
) (state.BeaconState, error) {
|
) (state.BeaconState, error) {
|
||||||
currentEpoch := core.SlotToEpoch(beaconState.Slot())
|
currentEpoch := time.SlotToEpoch(beaconState.Slot())
|
||||||
// If block randao passed verification, we XOR the state's latest randao mix with the block's
|
// If block randao passed verification, we XOR the state's latest randao mix with the block's
|
||||||
// randao and update the state's corresponding latest randao mix value.
|
// randao and update the state's corresponding latest randao mix value.
|
||||||
latestMixesLength := params.BeaconConfig().EpochsPerHistoricalVector
|
latestMixesLength := params.BeaconConfig().EpochsPerHistoricalVector
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
||||||
"github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/wrapper"
|
"github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/wrapper"
|
||||||
@@ -47,7 +47,7 @@ func TestProcessRandao_IncorrectProposerFailsVerification(t *testing.T) {
|
|||||||
func TestProcessRandao_SignatureVerifiesAndUpdatesLatestStateMixes(t *testing.T) {
|
func TestProcessRandao_SignatureVerifiesAndUpdatesLatestStateMixes(t *testing.T) {
|
||||||
beaconState, privKeys := util.DeterministicGenesisState(t, 100)
|
beaconState, privKeys := util.DeterministicGenesisState(t, 100)
|
||||||
|
|
||||||
epoch := core.CurrentEpoch(beaconState)
|
epoch := time.CurrentEpoch(beaconState)
|
||||||
epochSignature, err := util.RandaoReveal(beaconState, epoch, privKeys)
|
epochSignature, err := util.RandaoReveal(beaconState, epoch, privKeys)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ func TestProcessRandao_SignatureVerifiesAndUpdatesLatestStateMixes(t *testing.T)
|
|||||||
wrapper.WrappedPhase0SignedBeaconBlock(b),
|
wrapper.WrappedPhase0SignedBeaconBlock(b),
|
||||||
)
|
)
|
||||||
require.NoError(t, err, "Unexpected error processing block randao")
|
require.NoError(t, err, "Unexpected error processing block randao")
|
||||||
currentEpoch := core.CurrentEpoch(beaconState)
|
currentEpoch := time.CurrentEpoch(beaconState)
|
||||||
mix := newState.RandaoMixes()[currentEpoch%params.BeaconConfig().EpochsPerHistoricalVector]
|
mix := newState.RandaoMixes()[currentEpoch%params.BeaconConfig().EpochsPerHistoricalVector]
|
||||||
assert.DeepNotEqual(t, params.BeaconConfig().ZeroHash[:], mix, "Expected empty signature to be overwritten by randao reveal")
|
assert.DeepNotEqual(t, params.BeaconConfig().ZeroHash[:], mix, "Expected empty signature to be overwritten by randao reveal")
|
||||||
}
|
}
|
||||||
@@ -72,7 +72,7 @@ func TestProcessRandao_SignatureVerifiesAndUpdatesLatestStateMixes(t *testing.T)
|
|||||||
func TestRandaoSignatureSet_OK(t *testing.T) {
|
func TestRandaoSignatureSet_OK(t *testing.T) {
|
||||||
beaconState, privKeys := util.DeterministicGenesisState(t, 100)
|
beaconState, privKeys := util.DeterministicGenesisState(t, 100)
|
||||||
|
|
||||||
epoch := core.CurrentEpoch(beaconState)
|
epoch := time.CurrentEpoch(beaconState)
|
||||||
epochSignature, err := util.RandaoReveal(beaconState, epoch, privKeys)
|
epochSignature, err := util.RandaoReveal(beaconState, epoch, privKeys)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import (
|
|||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/crypto/bls"
|
"github.com/prysmaticlabs/prysm/crypto/bls"
|
||||||
@@ -67,7 +67,7 @@ func VerifyBlockSignature(beaconState state.ReadOnlyBeaconState,
|
|||||||
proposerIndex types.ValidatorIndex,
|
proposerIndex types.ValidatorIndex,
|
||||||
sig []byte,
|
sig []byte,
|
||||||
rootFunc func() ([32]byte, error)) error {
|
rootFunc func() ([32]byte, error)) error {
|
||||||
currentEpoch := core.SlotToEpoch(beaconState.Slot())
|
currentEpoch := time.SlotToEpoch(beaconState.Slot())
|
||||||
domain, err := signing.Domain(beaconState.Fork(), currentEpoch, params.BeaconConfig().DomainBeaconProposer, beaconState.GenesisValidatorRoot())
|
domain, err := signing.Domain(beaconState.Fork(), currentEpoch, params.BeaconConfig().DomainBeaconProposer, beaconState.GenesisValidatorRoot())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -82,7 +82,7 @@ func VerifyBlockSignature(beaconState state.ReadOnlyBeaconState,
|
|||||||
|
|
||||||
// VerifyBlockHeaderSignature verifies the proposer signature of a beacon block header.
|
// VerifyBlockHeaderSignature verifies the proposer signature of a beacon block header.
|
||||||
func VerifyBlockHeaderSignature(beaconState state.BeaconState, header *ethpb.SignedBeaconBlockHeader) error {
|
func VerifyBlockHeaderSignature(beaconState state.BeaconState, header *ethpb.SignedBeaconBlockHeader) error {
|
||||||
currentEpoch := core.SlotToEpoch(beaconState.Slot())
|
currentEpoch := time.SlotToEpoch(beaconState.Slot())
|
||||||
domain, err := signing.Domain(beaconState.Fork(), currentEpoch, params.BeaconConfig().DomainBeaconProposer, beaconState.GenesisValidatorRoot())
|
domain, err := signing.Domain(beaconState.Fork(), currentEpoch, params.BeaconConfig().DomainBeaconProposer, beaconState.GenesisValidatorRoot())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -99,7 +99,7 @@ func VerifyBlockHeaderSignature(beaconState state.BeaconState, header *ethpb.Sig
|
|||||||
// from the above method by not using fork data from the state and instead retrieving it
|
// from the above method by not using fork data from the state and instead retrieving it
|
||||||
// via the respective epoch.
|
// via the respective epoch.
|
||||||
func VerifyBlockSignatureUsingCurrentFork(beaconState state.ReadOnlyBeaconState, blk block.SignedBeaconBlock) error {
|
func VerifyBlockSignatureUsingCurrentFork(beaconState state.ReadOnlyBeaconState, blk block.SignedBeaconBlock) error {
|
||||||
currentEpoch := core.SlotToEpoch(blk.Block().Slot())
|
currentEpoch := time.SlotToEpoch(blk.Block().Slot())
|
||||||
fork, err := forks.Fork(currentEpoch)
|
fork, err := forks.Fork(currentEpoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -121,7 +121,7 @@ func BlockSignatureSet(beaconState state.ReadOnlyBeaconState,
|
|||||||
proposerIndex types.ValidatorIndex,
|
proposerIndex types.ValidatorIndex,
|
||||||
sig []byte,
|
sig []byte,
|
||||||
rootFunc func() ([32]byte, error)) (*bls.SignatureSet, error) {
|
rootFunc func() ([32]byte, error)) (*bls.SignatureSet, error) {
|
||||||
currentEpoch := core.SlotToEpoch(beaconState.Slot())
|
currentEpoch := time.SlotToEpoch(beaconState.Slot())
|
||||||
domain, err := signing.Domain(beaconState.Fork(), currentEpoch, params.BeaconConfig().DomainBeaconProposer, beaconState.GenesisValidatorRoot())
|
domain, err := signing.Domain(beaconState.Fork(), currentEpoch, params.BeaconConfig().DomainBeaconProposer, beaconState.GenesisValidatorRoot())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -160,7 +160,7 @@ func randaoSigningData(ctx context.Context, beaconState state.ReadOnlyBeaconStat
|
|||||||
}
|
}
|
||||||
proposerPub := beaconState.PubkeyAtIndex(proposerIdx)
|
proposerPub := beaconState.PubkeyAtIndex(proposerIdx)
|
||||||
|
|
||||||
currentEpoch := core.SlotToEpoch(beaconState.Slot())
|
currentEpoch := time.SlotToEpoch(beaconState.Slot())
|
||||||
buf := make([]byte, 32)
|
buf := make([]byte, 32)
|
||||||
binary.LittleEndian.PutUint64(buf, uint64(currentEpoch))
|
binary.LittleEndian.PutUint64(buf, uint64(currentEpoch))
|
||||||
|
|
||||||
@@ -238,7 +238,7 @@ func AttestationSignatureSet(ctx context.Context, beaconState state.ReadOnlyBeac
|
|||||||
var preForkAtts []*ethpb.Attestation
|
var preForkAtts []*ethpb.Attestation
|
||||||
var postForkAtts []*ethpb.Attestation
|
var postForkAtts []*ethpb.Attestation
|
||||||
for _, a := range atts {
|
for _, a := range atts {
|
||||||
if core.SlotToEpoch(a.Data.Slot) < fork.Epoch {
|
if time.SlotToEpoch(a.Data.Slot) < fork.Epoch {
|
||||||
preForkAtts = append(preForkAtts, a)
|
preForkAtts = append(preForkAtts, a)
|
||||||
} else {
|
} else {
|
||||||
postForkAtts = append(postForkAtts, a)
|
postForkAtts = append(postForkAtts, a)
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ go_library(
|
|||||||
"//testing/spectest:__subpackages__",
|
"//testing/spectest:__subpackages__",
|
||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/core/validators:go_default_library",
|
"//beacon-chain/core/validators:go_default_library",
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
"//config/features:go_default_library",
|
"//config/features:go_default_library",
|
||||||
@@ -32,8 +32,8 @@ go_test(
|
|||||||
],
|
],
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
"//beacon-chain/state/v1:go_default_library",
|
"//beacon-chain/state/v1:go_default_library",
|
||||||
"//config/params:go_default_library",
|
"//config/params:go_default_library",
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import (
|
|||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/validators"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/validators"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/features"
|
"github.com/prysmaticlabs/prysm/config/features"
|
||||||
@@ -88,11 +88,11 @@ func AttestingBalance(ctx context.Context, state state.ReadOnlyBeaconState, atts
|
|||||||
// validator = state.validators[index]
|
// validator = state.validators[index]
|
||||||
// validator.activation_epoch = compute_activation_exit_epoch(get_current_epoch(state))
|
// validator.activation_epoch = compute_activation_exit_epoch(get_current_epoch(state))
|
||||||
func ProcessRegistryUpdates(ctx context.Context, state state.BeaconState) (state.BeaconState, error) {
|
func ProcessRegistryUpdates(ctx context.Context, state state.BeaconState) (state.BeaconState, error) {
|
||||||
currentEpoch := core.CurrentEpoch(state)
|
currentEpoch := time.CurrentEpoch(state)
|
||||||
vals := state.Validators()
|
vals := state.Validators()
|
||||||
var err error
|
var err error
|
||||||
ejectionBal := params.BeaconConfig().EjectionBalance
|
ejectionBal := params.BeaconConfig().EjectionBalance
|
||||||
activationEligibilityEpoch := core.CurrentEpoch(state) + 1
|
activationEligibilityEpoch := time.CurrentEpoch(state) + 1
|
||||||
for idx, validator := range vals {
|
for idx, validator := range vals {
|
||||||
// Process the validators for activation eligibility.
|
// Process the validators for activation eligibility.
|
||||||
if helpers.IsEligibleForActivationQueue(validator) {
|
if helpers.IsEligibleForActivationQueue(validator) {
|
||||||
@@ -167,7 +167,7 @@ func ProcessRegistryUpdates(ctx context.Context, state state.BeaconState) (state
|
|||||||
// penalty = penalty_numerator // total_balance * increment
|
// penalty = penalty_numerator // total_balance * increment
|
||||||
// decrease_balance(state, ValidatorIndex(index), penalty)
|
// decrease_balance(state, ValidatorIndex(index), penalty)
|
||||||
func ProcessSlashings(state state.BeaconState, slashingMultiplier uint64) (state.BeaconState, error) {
|
func ProcessSlashings(state state.BeaconState, slashingMultiplier uint64) (state.BeaconState, error) {
|
||||||
currentEpoch := core.CurrentEpoch(state)
|
currentEpoch := time.CurrentEpoch(state)
|
||||||
totalBalance, err := helpers.TotalActiveBalance(state)
|
totalBalance, err := helpers.TotalActiveBalance(state)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "could not get total active balance")
|
return nil, errors.Wrap(err, "could not get total active balance")
|
||||||
@@ -214,7 +214,7 @@ func ProcessSlashings(state state.BeaconState, slashingMultiplier uint64) (state
|
|||||||
// if next_epoch % EPOCHS_PER_ETH1_VOTING_PERIOD == 0:
|
// if next_epoch % EPOCHS_PER_ETH1_VOTING_PERIOD == 0:
|
||||||
// state.eth1_data_votes = []
|
// state.eth1_data_votes = []
|
||||||
func ProcessEth1DataReset(state state.BeaconState) (state.BeaconState, error) {
|
func ProcessEth1DataReset(state state.BeaconState) (state.BeaconState, error) {
|
||||||
currentEpoch := core.CurrentEpoch(state)
|
currentEpoch := time.CurrentEpoch(state)
|
||||||
nextEpoch := currentEpoch + 1
|
nextEpoch := currentEpoch + 1
|
||||||
|
|
||||||
// Reset ETH1 data votes.
|
// Reset ETH1 data votes.
|
||||||
@@ -312,7 +312,7 @@ func ProcessEffectiveBalanceUpdates(state state.BeaconState) (state.BeaconState,
|
|||||||
// # Reset slashings
|
// # Reset slashings
|
||||||
// state.slashings[next_epoch % EPOCHS_PER_SLASHINGS_VECTOR] = Gwei(0)
|
// state.slashings[next_epoch % EPOCHS_PER_SLASHINGS_VECTOR] = Gwei(0)
|
||||||
func ProcessSlashingsReset(state state.BeaconState) (state.BeaconState, error) {
|
func ProcessSlashingsReset(state state.BeaconState) (state.BeaconState, error) {
|
||||||
currentEpoch := core.CurrentEpoch(state)
|
currentEpoch := time.CurrentEpoch(state)
|
||||||
nextEpoch := currentEpoch + 1
|
nextEpoch := currentEpoch + 1
|
||||||
|
|
||||||
// Set total slashed balances.
|
// Set total slashed balances.
|
||||||
@@ -342,7 +342,7 @@ func ProcessSlashingsReset(state state.BeaconState) (state.BeaconState, error) {
|
|||||||
// # Set randao mix
|
// # Set randao mix
|
||||||
// state.randao_mixes[next_epoch % EPOCHS_PER_HISTORICAL_VECTOR] = get_randao_mix(state, current_epoch)
|
// state.randao_mixes[next_epoch % EPOCHS_PER_HISTORICAL_VECTOR] = get_randao_mix(state, current_epoch)
|
||||||
func ProcessRandaoMixesReset(state state.BeaconState) (state.BeaconState, error) {
|
func ProcessRandaoMixesReset(state state.BeaconState) (state.BeaconState, error) {
|
||||||
currentEpoch := core.CurrentEpoch(state)
|
currentEpoch := time.CurrentEpoch(state)
|
||||||
nextEpoch := currentEpoch + 1
|
nextEpoch := currentEpoch + 1
|
||||||
|
|
||||||
// Set RANDAO mix.
|
// Set RANDAO mix.
|
||||||
@@ -375,7 +375,7 @@ func ProcessRandaoMixesReset(state state.BeaconState) (state.BeaconState, error)
|
|||||||
// historical_batch = HistoricalBatch(block_roots=state.block_roots, state_roots=state.state_roots)
|
// historical_batch = HistoricalBatch(block_roots=state.block_roots, state_roots=state.state_roots)
|
||||||
// state.historical_roots.append(hash_tree_root(historical_batch))
|
// state.historical_roots.append(hash_tree_root(historical_batch))
|
||||||
func ProcessHistoricalRootsUpdate(state state.BeaconState) (state.BeaconState, error) {
|
func ProcessHistoricalRootsUpdate(state state.BeaconState) (state.BeaconState, error) {
|
||||||
currentEpoch := core.CurrentEpoch(state)
|
currentEpoch := time.CurrentEpoch(state)
|
||||||
nextEpoch := currentEpoch + 1
|
nextEpoch := currentEpoch + 1
|
||||||
|
|
||||||
// Set historical root accumulator.
|
// Set historical root accumulator.
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import (
|
|||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/go-bitfield"
|
"github.com/prysmaticlabs/go-bitfield"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/epoch"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/epoch"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
@@ -243,7 +243,7 @@ func TestProcessSlashings_SlashedLess(t *testing.T) {
|
|||||||
|
|
||||||
func TestProcessFinalUpdates_CanProcess(t *testing.T) {
|
func TestProcessFinalUpdates_CanProcess(t *testing.T) {
|
||||||
s := buildState(t, params.BeaconConfig().SlotsPerHistoricalRoot-1, uint64(params.BeaconConfig().SlotsPerEpoch))
|
s := buildState(t, params.BeaconConfig().SlotsPerHistoricalRoot-1, uint64(params.BeaconConfig().SlotsPerEpoch))
|
||||||
ce := core.CurrentEpoch(s)
|
ce := time.CurrentEpoch(s)
|
||||||
ne := ce + 1
|
ne := ce + 1
|
||||||
require.NoError(t, s.SetEth1DataVotes([]*ethpb.Eth1Data{}))
|
require.NoError(t, s.SetEth1DataVotes([]*ethpb.Eth1Data{}))
|
||||||
balances := s.Balances()
|
balances := s.Balances()
|
||||||
@@ -317,7 +317,7 @@ func TestProcessRegistryUpdates_EligibleToActivate(t *testing.T) {
|
|||||||
}
|
}
|
||||||
beaconState, err := v1.InitializeFromProto(base)
|
beaconState, err := v1.InitializeFromProto(base)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
currentEpoch := core.CurrentEpoch(beaconState)
|
currentEpoch := time.CurrentEpoch(beaconState)
|
||||||
newState, err := epoch.ProcessRegistryUpdates(context.Background(), beaconState)
|
newState, err := epoch.ProcessRegistryUpdates(context.Background(), beaconState)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
for i, validator := range newState.Validators() {
|
for i, validator := range newState.Validators() {
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ go_library(
|
|||||||
"//testing/spectest:__subpackages__",
|
"//testing/spectest:__subpackages__",
|
||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
"//config/params:go_default_library",
|
"//config/params:go_default_library",
|
||||||
"//math:go_default_library",
|
"//math:go_default_library",
|
||||||
@@ -41,9 +41,9 @@ go_test(
|
|||||||
],
|
],
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/epoch:go_default_library",
|
"//beacon-chain/core/epoch:go_default_library",
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
"//beacon-chain/state/v1:go_default_library",
|
"//beacon-chain/state/v1:go_default_library",
|
||||||
"//config/params:go_default_library",
|
"//config/params:go_default_library",
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import (
|
|||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/monitoring/tracing"
|
"github.com/prysmaticlabs/prysm/monitoring/tracing"
|
||||||
@@ -71,7 +71,7 @@ func ProcessAttestations(
|
|||||||
|
|
||||||
// AttestedCurrentEpoch returns true if attestation `a` attested once in current epoch and/or epoch boundary block.
|
// AttestedCurrentEpoch returns true if attestation `a` attested once in current epoch and/or epoch boundary block.
|
||||||
func AttestedCurrentEpoch(s state.ReadOnlyBeaconState, a *ethpb.PendingAttestation) (bool, bool, error) {
|
func AttestedCurrentEpoch(s state.ReadOnlyBeaconState, a *ethpb.PendingAttestation) (bool, bool, error) {
|
||||||
currentEpoch := core.CurrentEpoch(s)
|
currentEpoch := time.CurrentEpoch(s)
|
||||||
var votedCurrentEpoch, votedTarget bool
|
var votedCurrentEpoch, votedTarget bool
|
||||||
// Did validator vote current epoch.
|
// Did validator vote current epoch.
|
||||||
if a.Data.Target.Epoch == currentEpoch {
|
if a.Data.Target.Epoch == currentEpoch {
|
||||||
@@ -89,7 +89,7 @@ func AttestedCurrentEpoch(s state.ReadOnlyBeaconState, a *ethpb.PendingAttestati
|
|||||||
|
|
||||||
// AttestedPrevEpoch returns true if attestation `a` attested once in previous epoch and epoch boundary block and/or the same head.
|
// AttestedPrevEpoch returns true if attestation `a` attested once in previous epoch and epoch boundary block and/or the same head.
|
||||||
func AttestedPrevEpoch(s state.ReadOnlyBeaconState, a *ethpb.PendingAttestation) (bool, bool, bool, error) {
|
func AttestedPrevEpoch(s state.ReadOnlyBeaconState, a *ethpb.PendingAttestation) (bool, bool, bool, error) {
|
||||||
prevEpoch := core.PrevEpoch(s)
|
prevEpoch := time.PrevEpoch(s)
|
||||||
var votedPrevEpoch, votedTarget, votedHead bool
|
var votedPrevEpoch, votedTarget, votedHead bool
|
||||||
// Did validator vote previous epoch.
|
// Did validator vote previous epoch.
|
||||||
if a.Data.Target.Epoch == prevEpoch {
|
if a.Data.Target.Epoch == prevEpoch {
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ package precompute
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
||||||
)
|
)
|
||||||
@@ -25,7 +25,7 @@ import (
|
|||||||
// current_target_balance = get_attesting_balance(state, current_attestations)
|
// current_target_balance = get_attesting_balance(state, current_attestations)
|
||||||
// weigh_justification_and_finalization(state, total_active_balance, previous_target_balance, current_target_balance)
|
// weigh_justification_and_finalization(state, total_active_balance, previous_target_balance, current_target_balance)
|
||||||
func ProcessJustificationAndFinalizationPreCompute(state state.BeaconState, pBal *Balance) (state.BeaconState, error) {
|
func ProcessJustificationAndFinalizationPreCompute(state state.BeaconState, pBal *Balance) (state.BeaconState, error) {
|
||||||
canProcessSlot, err := core.StartSlot(2 /*epoch*/)
|
canProcessSlot, err := time.StartSlot(2 /*epoch*/)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -78,8 +78,8 @@ func ProcessJustificationAndFinalizationPreCompute(state state.BeaconState, pBal
|
|||||||
// state.finalized_checkpoint = old_current_justified_checkpoint
|
// state.finalized_checkpoint = old_current_justified_checkpoint
|
||||||
func weighJustificationAndFinalization(state state.BeaconState,
|
func weighJustificationAndFinalization(state state.BeaconState,
|
||||||
totalActiveBalance, prevEpochTargetBalance, currEpochTargetBalance uint64) (state.BeaconState, error) {
|
totalActiveBalance, prevEpochTargetBalance, currEpochTargetBalance uint64) (state.BeaconState, error) {
|
||||||
prevEpoch := core.PrevEpoch(state)
|
prevEpoch := time.PrevEpoch(state)
|
||||||
currentEpoch := core.CurrentEpoch(state)
|
currentEpoch := time.CurrentEpoch(state)
|
||||||
oldPrevJustifiedCheckpoint := state.PreviousJustifiedCheckpoint()
|
oldPrevJustifiedCheckpoint := state.PreviousJustifiedCheckpoint()
|
||||||
oldCurrJustifiedCheckpoint := state.CurrentJustifiedCheckpoint()
|
oldCurrJustifiedCheckpoint := state.CurrentJustifiedCheckpoint()
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"go.opencensus.io/trace"
|
"go.opencensus.io/trace"
|
||||||
@@ -24,8 +24,8 @@ func New(ctx context.Context, s state.BeaconState) ([]*Validator, *Balance, erro
|
|||||||
pValidators := make([]*Validator, s.NumValidators())
|
pValidators := make([]*Validator, s.NumValidators())
|
||||||
pBal := &Balance{}
|
pBal := &Balance{}
|
||||||
|
|
||||||
currentEpoch := core.CurrentEpoch(s)
|
currentEpoch := time.CurrentEpoch(s)
|
||||||
prevEpoch := core.PrevEpoch(s)
|
prevEpoch := time.PrevEpoch(s)
|
||||||
|
|
||||||
if err := s.ReadFromEveryValidator(func(idx int, val state.ReadOnlyValidator) error {
|
if err := s.ReadFromEveryValidator(func(idx int, val state.ReadOnlyValidator) error {
|
||||||
// Was validator withdrawable or slashed
|
// Was validator withdrawable or slashed
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ package precompute
|
|||||||
import (
|
import (
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/math"
|
"github.com/prysmaticlabs/prysm/math"
|
||||||
@@ -23,7 +23,7 @@ func ProcessRewardsAndPenaltiesPrecompute(
|
|||||||
proRewardsFunc proposerRewardsFunc,
|
proRewardsFunc proposerRewardsFunc,
|
||||||
) (state.BeaconState, error) {
|
) (state.BeaconState, error) {
|
||||||
// Can't process rewards and penalties in genesis epoch.
|
// Can't process rewards and penalties in genesis epoch.
|
||||||
if core.CurrentEpoch(state) == 0 {
|
if time.CurrentEpoch(state) == 0 {
|
||||||
return state, nil
|
return state, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,7 +69,7 @@ func AttestationsDelta(state state.ReadOnlyBeaconState, pBal *Balance, vp []*Val
|
|||||||
numOfVals := state.NumValidators()
|
numOfVals := state.NumValidators()
|
||||||
rewards := make([]uint64, numOfVals)
|
rewards := make([]uint64, numOfVals)
|
||||||
penalties := make([]uint64, numOfVals)
|
penalties := make([]uint64, numOfVals)
|
||||||
prevEpoch := core.PrevEpoch(state)
|
prevEpoch := time.PrevEpoch(state)
|
||||||
finalizedEpoch := state.FinalizedCheckpointEpoch()
|
finalizedEpoch := state.FinalizedCheckpointEpoch()
|
||||||
|
|
||||||
sqrtActiveCurrentEpoch := math.IntegerSquareRoot(pBal.ActiveCurrentEpoch)
|
sqrtActiveCurrentEpoch := math.IntegerSquareRoot(pBal.ActiveCurrentEpoch)
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ import (
|
|||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/go-bitfield"
|
"github.com/prysmaticlabs/go-bitfield"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/epoch"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/epoch"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
@@ -246,7 +246,7 @@ func TestProcessRewardsAndPenaltiesPrecompute_SlashedInactivePenalty(t *testing.
|
|||||||
rewards, penalties, err := AttestationsDelta(beaconState, bp, vp)
|
rewards, penalties, err := AttestationsDelta(beaconState, bp, vp)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
finalityDelay := core.PrevEpoch(beaconState) - beaconState.FinalizedCheckpointEpoch()
|
finalityDelay := time.PrevEpoch(beaconState) - beaconState.FinalizedCheckpointEpoch()
|
||||||
for _, i := range slashedAttestedIndices {
|
for _, i := range slashedAttestedIndices {
|
||||||
base, err := baseReward(beaconState, i)
|
base, err := baseReward(beaconState, i)
|
||||||
require.NoError(t, err, "Could not get base reward")
|
require.NoError(t, err, "Could not get base reward")
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ package precompute
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/math"
|
"github.com/prysmaticlabs/prysm/math"
|
||||||
@@ -13,7 +13,7 @@ import (
|
|||||||
// ProcessSlashingsPrecompute processes the slashed validators during epoch processing.
|
// ProcessSlashingsPrecompute processes the slashed validators during epoch processing.
|
||||||
// This is an optimized version by passing in precomputed total epoch balances.
|
// This is an optimized version by passing in precomputed total epoch balances.
|
||||||
func ProcessSlashingsPrecompute(s state.BeaconState, pBal *Balance) error {
|
func ProcessSlashingsPrecompute(s state.BeaconState, pBal *Balance) error {
|
||||||
currentEpoch := core.CurrentEpoch(s)
|
currentEpoch := time.CurrentEpoch(s)
|
||||||
exitLength := params.BeaconConfig().EpochsPerSlashingsVector
|
exitLength := params.BeaconConfig().EpochsPerSlashingsVector
|
||||||
|
|
||||||
// Compute the sum of state slashings
|
// Compute the sum of state slashings
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ go_library(
|
|||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/cache:go_default_library",
|
"//beacon-chain/cache:go_default_library",
|
||||||
"//beacon-chain/core:go_default_library",
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
"//config/params:go_default_library",
|
"//config/params:go_default_library",
|
||||||
"//container/slice:go_default_library",
|
"//container/slice:go_default_library",
|
||||||
@@ -76,7 +76,7 @@ go_test(
|
|||||||
shard_count = 2,
|
shard_count = 2,
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/cache:go_default_library",
|
"//beacon-chain/cache:go_default_library",
|
||||||
"//beacon-chain/core:go_default_library",
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
"//beacon-chain/state/v1:go_default_library",
|
"//beacon-chain/state/v1:go_default_library",
|
||||||
"//beacon-chain/state/v2:go_default_library",
|
"//beacon-chain/state/v2:go_default_library",
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/crypto/bls"
|
"github.com/prysmaticlabs/prysm/crypto/bls"
|
||||||
"github.com/prysmaticlabs/prysm/crypto/hash"
|
"github.com/prysmaticlabs/prysm/crypto/hash"
|
||||||
@@ -40,7 +40,7 @@ func ValidateNilAttestation(attestation *ethpb.Attestation) error {
|
|||||||
// ValidateSlotTargetEpoch checks if attestation data's epoch matches target checkpoint's epoch.
|
// ValidateSlotTargetEpoch checks if attestation data's epoch matches target checkpoint's epoch.
|
||||||
// It is recommended to run `ValidateNilAttestation` first to ensure `data.Target` can't be nil.
|
// It is recommended to run `ValidateNilAttestation` first to ensure `data.Target` can't be nil.
|
||||||
func ValidateSlotTargetEpoch(data *ethpb.AttestationData) error {
|
func ValidateSlotTargetEpoch(data *ethpb.AttestationData) error {
|
||||||
if core.SlotToEpoch(data.Slot) != data.Target.Epoch {
|
if coreTime.SlotToEpoch(data.Slot) != data.Target.Epoch {
|
||||||
return fmt.Errorf("slot %d does not match target epoch %d", data.Slot, data.Target.Epoch)
|
return fmt.Errorf("slot %d does not match target epoch %d", data.Slot, data.Target.Epoch)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@@ -121,7 +121,7 @@ func ComputeSubnetForAttestation(activeValCount uint64, att *ethpb.Attestation)
|
|||||||
//
|
//
|
||||||
// return uint64((committees_since_epoch_start + committee_index) % ATTESTATION_SUBNET_COUNT)
|
// return uint64((committees_since_epoch_start + committee_index) % ATTESTATION_SUBNET_COUNT)
|
||||||
func ComputeSubnetFromCommitteeAndSlot(activeValCount uint64, comIdx types.CommitteeIndex, attSlot types.Slot) uint64 {
|
func ComputeSubnetFromCommitteeAndSlot(activeValCount uint64, comIdx types.CommitteeIndex, attSlot types.Slot) uint64 {
|
||||||
slotSinceStart := core.SlotsSinceEpochStarts(attSlot)
|
slotSinceStart := coreTime.SlotsSinceEpochStarts(attSlot)
|
||||||
comCount := SlotCommitteeCount(activeValCount)
|
comCount := SlotCommitteeCount(activeValCount)
|
||||||
commsSinceStart := uint64(slotSinceStart.Mul(comCount))
|
commsSinceStart := uint64(slotSinceStart.Mul(comCount))
|
||||||
computedSubnet := (commsSinceStart + uint64(comIdx)) % params.BeaconNetworkConfig().AttestationSubnetCount
|
computedSubnet := (commsSinceStart + uint64(comIdx)) % params.BeaconNetworkConfig().AttestationSubnetCount
|
||||||
@@ -142,14 +142,14 @@ func ComputeSubnetFromCommitteeAndSlot(activeValCount uint64, comIdx types.Commi
|
|||||||
// valid_attestation_slot = 101
|
// valid_attestation_slot = 101
|
||||||
// In the attestation must be within the range of 95 to 102 in the example above.
|
// In the attestation must be within the range of 95 to 102 in the example above.
|
||||||
func ValidateAttestationTime(attSlot types.Slot, genesisTime time.Time, clockDisparity time.Duration) error {
|
func ValidateAttestationTime(attSlot types.Slot, genesisTime time.Time, clockDisparity time.Duration) error {
|
||||||
if err := core.ValidateSlotClock(attSlot, uint64(genesisTime.Unix())); err != nil {
|
if err := coreTime.ValidateSlotClock(attSlot, uint64(genesisTime.Unix())); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
attTime, err := core.SlotToTime(uint64(genesisTime.Unix()), attSlot)
|
attTime, err := coreTime.SlotToTime(uint64(genesisTime.Unix()), attSlot)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
currentSlot := core.SlotsSince(genesisTime)
|
currentSlot := coreTime.SlotsSince(genesisTime)
|
||||||
|
|
||||||
// When receiving an attestation, it can be from the future.
|
// When receiving an attestation, it can be from the future.
|
||||||
// so the upper bounds is set to now + clockDisparity(SECONDS_PER_SLOT * 2).
|
// so the upper bounds is set to now + clockDisparity(SECONDS_PER_SLOT * 2).
|
||||||
@@ -163,7 +163,7 @@ func ValidateAttestationTime(attSlot types.Slot, genesisTime time.Time, clockDis
|
|||||||
if currentSlot > params.BeaconNetworkConfig().AttestationPropagationSlotRange {
|
if currentSlot > params.BeaconNetworkConfig().AttestationPropagationSlotRange {
|
||||||
lowerBoundsSlot = currentSlot - params.BeaconNetworkConfig().AttestationPropagationSlotRange
|
lowerBoundsSlot = currentSlot - params.BeaconNetworkConfig().AttestationPropagationSlotRange
|
||||||
}
|
}
|
||||||
lowerTime, err := core.SlotToTime(uint64(genesisTime.Unix()), lowerBoundsSlot)
|
lowerTime, err := coreTime.SlotToTime(uint64(genesisTime.Unix()), lowerBoundsSlot)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -187,7 +187,7 @@ func VerifyCheckpointEpoch(c *ethpb.Checkpoint, genesis time.Time) bool {
|
|||||||
now := uint64(prysmTime.Now().Unix())
|
now := uint64(prysmTime.Now().Unix())
|
||||||
genesisTime := uint64(genesis.Unix())
|
genesisTime := uint64(genesis.Unix())
|
||||||
currentSlot := types.Slot((now - genesisTime) / params.BeaconConfig().SecondsPerSlot)
|
currentSlot := types.Slot((now - genesisTime) / params.BeaconConfig().SecondsPerSlot)
|
||||||
currentEpoch := core.SlotToEpoch(currentSlot)
|
currentEpoch := coreTime.SlotToEpoch(currentSlot)
|
||||||
|
|
||||||
var prevEpoch types.Epoch
|
var prevEpoch types.Epoch
|
||||||
if currentEpoch > 1 {
|
if currentEpoch > 1 {
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/crypto/bls"
|
"github.com/prysmaticlabs/prysm/crypto/bls"
|
||||||
@@ -118,7 +118,7 @@ func TestAttestation_ComputeSubnetForAttestation(t *testing.T) {
|
|||||||
},
|
},
|
||||||
Signature: []byte{'B'},
|
Signature: []byte{'B'},
|
||||||
}
|
}
|
||||||
valCount, err := helpers.ActiveValidatorCount(context.Background(), state, core.SlotToEpoch(att.Data.Slot))
|
valCount, err := helpers.ActiveValidatorCount(context.Background(), state, coreTime.SlotToEpoch(att.Data.Slot))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
sub := helpers.ComputeSubnetForAttestation(valCount, att)
|
sub := helpers.ComputeSubnetForAttestation(valCount, att)
|
||||||
assert.Equal(t, uint64(6), sub, "Did not get correct subnet for attestation")
|
assert.Equal(t, uint64(6), sub, "Did not get correct subnet for attestation")
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import (
|
|||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/go-bitfield"
|
"github.com/prysmaticlabs/go-bitfield"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/container/slice"
|
"github.com/prysmaticlabs/prysm/container/slice"
|
||||||
@@ -73,7 +73,7 @@ func SlotCommitteeCount(activeValidatorCount uint64) uint64 {
|
|||||||
// count=committees_per_slot * SLOTS_PER_EPOCH,
|
// count=committees_per_slot * SLOTS_PER_EPOCH,
|
||||||
// )
|
// )
|
||||||
func BeaconCommitteeFromState(ctx context.Context, state state.ReadOnlyBeaconState, slot types.Slot, committeeIndex types.CommitteeIndex) ([]types.ValidatorIndex, error) {
|
func BeaconCommitteeFromState(ctx context.Context, state state.ReadOnlyBeaconState, slot types.Slot, committeeIndex types.CommitteeIndex) ([]types.ValidatorIndex, error) {
|
||||||
epoch := core.SlotToEpoch(slot)
|
epoch := time.SlotToEpoch(slot)
|
||||||
seed, err := Seed(state, epoch, params.BeaconConfig().DomainBeaconAttester)
|
seed, err := Seed(state, epoch, params.BeaconConfig().DomainBeaconAttester)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "could not get seed")
|
return nil, errors.Wrap(err, "could not get seed")
|
||||||
@@ -157,7 +157,7 @@ func CommitteeAssignments(
|
|||||||
state state.BeaconState,
|
state state.BeaconState,
|
||||||
epoch types.Epoch,
|
epoch types.Epoch,
|
||||||
) (map[types.ValidatorIndex]*CommitteeAssignmentContainer, map[types.ValidatorIndex][]types.Slot, error) {
|
) (map[types.ValidatorIndex]*CommitteeAssignmentContainer, map[types.ValidatorIndex][]types.Slot, error) {
|
||||||
nextEpoch := core.NextEpoch(state)
|
nextEpoch := time.NextEpoch(state)
|
||||||
if epoch > nextEpoch {
|
if epoch > nextEpoch {
|
||||||
return nil, nil, fmt.Errorf(
|
return nil, nil, fmt.Errorf(
|
||||||
"epoch %d can't be greater than next epoch %d",
|
"epoch %d can't be greater than next epoch %d",
|
||||||
@@ -169,7 +169,7 @@ func CommitteeAssignments(
|
|||||||
// We determine the slots in which proposers are supposed to act.
|
// We determine the slots in which proposers are supposed to act.
|
||||||
// Some validators may need to propose multiple times per epoch, so
|
// Some validators may need to propose multiple times per epoch, so
|
||||||
// we use a map of proposer idx -> []slot to keep track of this possibility.
|
// we use a map of proposer idx -> []slot to keep track of this possibility.
|
||||||
startSlot, err := core.StartSlot(epoch)
|
startSlot, err := time.StartSlot(epoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
@@ -320,13 +320,13 @@ func UpdateCommitteeCache(state state.ReadOnlyBeaconState, epoch types.Epoch) er
|
|||||||
func UpdateProposerIndicesInCache(ctx context.Context, state state.ReadOnlyBeaconState) error {
|
func UpdateProposerIndicesInCache(ctx context.Context, state state.ReadOnlyBeaconState) error {
|
||||||
// The cache uses the state root at the (current epoch - 1)'s slot as key. (e.g. for epoch 2, the key is root at slot 63)
|
// The cache uses the state root at the (current epoch - 1)'s slot as key. (e.g. for epoch 2, the key is root at slot 63)
|
||||||
// Which is the reason why we skip genesis epoch.
|
// Which is the reason why we skip genesis epoch.
|
||||||
if core.CurrentEpoch(state) <= params.BeaconConfig().GenesisEpoch+params.BeaconConfig().MinSeedLookahead {
|
if time.CurrentEpoch(state) <= params.BeaconConfig().GenesisEpoch+params.BeaconConfig().MinSeedLookahead {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use state root from (current_epoch - 1))
|
// Use state root from (current_epoch - 1))
|
||||||
wantedEpoch := core.PrevEpoch(state)
|
wantedEpoch := time.PrevEpoch(state)
|
||||||
s, err := core.EndSlot(wantedEpoch)
|
s, err := time.EndSlot(wantedEpoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -347,7 +347,7 @@ func UpdateProposerIndicesInCache(ctx context.Context, state state.ReadOnlyBeaco
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
indices, err := ActiveValidatorIndices(ctx, state, core.CurrentEpoch(state))
|
indices, err := ActiveValidatorIndices(ctx, state, time.CurrentEpoch(state))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -415,12 +415,12 @@ func precomputeProposerIndices(state state.ReadOnlyBeaconState, activeIndices []
|
|||||||
hashFunc := hash.CustomSHA256Hasher()
|
hashFunc := hash.CustomSHA256Hasher()
|
||||||
proposerIndices := make([]types.ValidatorIndex, params.BeaconConfig().SlotsPerEpoch)
|
proposerIndices := make([]types.ValidatorIndex, params.BeaconConfig().SlotsPerEpoch)
|
||||||
|
|
||||||
e := core.CurrentEpoch(state)
|
e := time.CurrentEpoch(state)
|
||||||
seed, err := Seed(state, e, params.BeaconConfig().DomainBeaconProposer)
|
seed, err := Seed(state, e, params.BeaconConfig().DomainBeaconProposer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "could not generate seed")
|
return nil, errors.Wrap(err, "could not generate seed")
|
||||||
}
|
}
|
||||||
slot, err := core.StartSlot(e)
|
slot, err := time.StartSlot(e)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/go-bitfield"
|
"github.com/prysmaticlabs/go-bitfield"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/container/slice"
|
"github.com/prysmaticlabs/prysm/container/slice"
|
||||||
@@ -44,7 +44,7 @@ func TestComputeCommittee_WithoutCache(t *testing.T) {
|
|||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
epoch := core.CurrentEpoch(state)
|
epoch := time.CurrentEpoch(state)
|
||||||
indices, err := ActiveValidatorIndices(context.Background(), state, epoch)
|
indices, err := ActiveValidatorIndices(context.Background(), state, epoch)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
seed, err := Seed(state, epoch, params.BeaconConfig().DomainBeaconAttester)
|
seed, err := Seed(state, epoch, params.BeaconConfig().DomainBeaconAttester)
|
||||||
@@ -190,7 +190,7 @@ func TestCommitteeAssignments_CanRetrieve(t *testing.T) {
|
|||||||
for i, tt := range tests {
|
for i, tt := range tests {
|
||||||
t.Run(fmt.Sprintf("%d", i), func(t *testing.T) {
|
t.Run(fmt.Sprintf("%d", i), func(t *testing.T) {
|
||||||
ClearCache()
|
ClearCache()
|
||||||
validatorIndexToCommittee, proposerIndexToSlots, err := CommitteeAssignments(context.Background(), state, core.SlotToEpoch(tt.slot))
|
validatorIndexToCommittee, proposerIndexToSlots, err := CommitteeAssignments(context.Background(), state, time.SlotToEpoch(tt.slot))
|
||||||
require.NoError(t, err, "Failed to determine CommitteeAssignments")
|
require.NoError(t, err, "Failed to determine CommitteeAssignments")
|
||||||
cac := validatorIndexToCommittee[tt.index]
|
cac := validatorIndexToCommittee[tt.index]
|
||||||
assert.Equal(t, tt.committeeIndex, cac.CommitteeIndex, "Unexpected committeeIndex for validator index %d", tt.index)
|
assert.Equal(t, tt.committeeIndex, cac.CommitteeIndex, "Unexpected committeeIndex for validator index %d", tt.index)
|
||||||
@@ -225,11 +225,11 @@ func TestCommitteeAssignments_CannotRetrieveFuture(t *testing.T) {
|
|||||||
RandaoMixes: make([][]byte, params.BeaconConfig().EpochsPerHistoricalVector),
|
RandaoMixes: make([][]byte, params.BeaconConfig().EpochsPerHistoricalVector),
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
_, proposerIndxs, err := CommitteeAssignments(context.Background(), state, core.CurrentEpoch(state))
|
_, proposerIndxs, err := CommitteeAssignments(context.Background(), state, time.CurrentEpoch(state))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NotEqual(t, 0, len(proposerIndxs), "wanted non-zero proposer index set")
|
require.NotEqual(t, 0, len(proposerIndxs), "wanted non-zero proposer index set")
|
||||||
|
|
||||||
_, proposerIndxs, err = CommitteeAssignments(context.Background(), state, core.CurrentEpoch(state)+1)
|
_, proposerIndxs, err = CommitteeAssignments(context.Background(), state, time.CurrentEpoch(state)+1)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, 0, len(proposerIndxs), "wanted empty proposer index set")
|
require.Equal(t, 0, len(proposerIndxs), "wanted empty proposer index set")
|
||||||
}
|
}
|
||||||
@@ -261,9 +261,9 @@ func TestCommitteeAssignments_EverySlotHasMin1Proposer(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
assert.Equal(t, uint64(params.BeaconConfig().SlotsPerEpoch), uint64(len(slotsWithProposers)), "Unexpected slots")
|
assert.Equal(t, uint64(params.BeaconConfig().SlotsPerEpoch), uint64(len(slotsWithProposers)), "Unexpected slots")
|
||||||
startSlot, err := core.StartSlot(epoch)
|
startSlot, err := time.StartSlot(epoch)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
endSlot, err := core.StartSlot(epoch + 1)
|
endSlot, err := time.StartSlot(epoch + 1)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
for i := startSlot; i < endSlot; i++ {
|
for i := startSlot; i < endSlot; i++ {
|
||||||
hasProposer := slotsWithProposers[i]
|
hasProposer := slotsWithProposers[i]
|
||||||
@@ -385,7 +385,7 @@ func TestUpdateCommitteeCache_CanUpdate(t *testing.T) {
|
|||||||
RandaoMixes: make([][]byte, params.BeaconConfig().EpochsPerHistoricalVector),
|
RandaoMixes: make([][]byte, params.BeaconConfig().EpochsPerHistoricalVector),
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NoError(t, UpdateCommitteeCache(state, core.CurrentEpoch(state)))
|
require.NoError(t, UpdateCommitteeCache(state, time.CurrentEpoch(state)))
|
||||||
|
|
||||||
epoch := types.Epoch(1)
|
epoch := types.Epoch(1)
|
||||||
idx := types.CommitteeIndex(1)
|
idx := types.CommitteeIndex(1)
|
||||||
@@ -410,7 +410,7 @@ func BenchmarkComputeCommittee300000_WithPreCache(b *testing.B) {
|
|||||||
})
|
})
|
||||||
require.NoError(b, err)
|
require.NoError(b, err)
|
||||||
|
|
||||||
epoch := core.CurrentEpoch(state)
|
epoch := time.CurrentEpoch(state)
|
||||||
indices, err := ActiveValidatorIndices(context.Background(), state, epoch)
|
indices, err := ActiveValidatorIndices(context.Background(), state, epoch)
|
||||||
require.NoError(b, err)
|
require.NoError(b, err)
|
||||||
seed, err := Seed(state, epoch, params.BeaconConfig().DomainBeaconAttester)
|
seed, err := Seed(state, epoch, params.BeaconConfig().DomainBeaconAttester)
|
||||||
@@ -444,7 +444,7 @@ func BenchmarkComputeCommittee3000000_WithPreCache(b *testing.B) {
|
|||||||
})
|
})
|
||||||
require.NoError(b, err)
|
require.NoError(b, err)
|
||||||
|
|
||||||
epoch := core.CurrentEpoch(state)
|
epoch := time.CurrentEpoch(state)
|
||||||
indices, err := ActiveValidatorIndices(context.Background(), state, epoch)
|
indices, err := ActiveValidatorIndices(context.Background(), state, epoch)
|
||||||
require.NoError(b, err)
|
require.NoError(b, err)
|
||||||
seed, err := Seed(state, epoch, params.BeaconConfig().DomainBeaconAttester)
|
seed, err := Seed(state, epoch, params.BeaconConfig().DomainBeaconAttester)
|
||||||
@@ -478,7 +478,7 @@ func BenchmarkComputeCommittee128000_WithOutPreCache(b *testing.B) {
|
|||||||
})
|
})
|
||||||
require.NoError(b, err)
|
require.NoError(b, err)
|
||||||
|
|
||||||
epoch := core.CurrentEpoch(state)
|
epoch := time.CurrentEpoch(state)
|
||||||
indices, err := ActiveValidatorIndices(context.Background(), state, epoch)
|
indices, err := ActiveValidatorIndices(context.Background(), state, epoch)
|
||||||
require.NoError(b, err)
|
require.NoError(b, err)
|
||||||
seed, err := Seed(state, epoch, params.BeaconConfig().DomainBeaconAttester)
|
seed, err := Seed(state, epoch, params.BeaconConfig().DomainBeaconAttester)
|
||||||
@@ -513,7 +513,7 @@ func BenchmarkComputeCommittee1000000_WithOutCache(b *testing.B) {
|
|||||||
})
|
})
|
||||||
require.NoError(b, err)
|
require.NoError(b, err)
|
||||||
|
|
||||||
epoch := core.CurrentEpoch(state)
|
epoch := time.CurrentEpoch(state)
|
||||||
indices, err := ActiveValidatorIndices(context.Background(), state, epoch)
|
indices, err := ActiveValidatorIndices(context.Background(), state, epoch)
|
||||||
require.NoError(b, err)
|
require.NoError(b, err)
|
||||||
seed, err := Seed(state, epoch, params.BeaconConfig().DomainBeaconAttester)
|
seed, err := Seed(state, epoch, params.BeaconConfig().DomainBeaconAttester)
|
||||||
@@ -548,7 +548,7 @@ func BenchmarkComputeCommittee4000000_WithOutCache(b *testing.B) {
|
|||||||
})
|
})
|
||||||
require.NoError(b, err)
|
require.NoError(b, err)
|
||||||
|
|
||||||
epoch := core.CurrentEpoch(state)
|
epoch := time.CurrentEpoch(state)
|
||||||
indices, err := ActiveValidatorIndices(context.Background(), state, epoch)
|
indices, err := ActiveValidatorIndices(context.Background(), state, epoch)
|
||||||
require.NoError(b, err)
|
require.NoError(b, err)
|
||||||
seed, err := Seed(state, epoch, params.BeaconConfig().DomainBeaconAttester)
|
seed, err := Seed(state, epoch, params.BeaconConfig().DomainBeaconAttester)
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/block"
|
"github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/block"
|
||||||
@@ -65,7 +65,7 @@ func StateRootAtSlot(state state.ReadOnlyBeaconState, slot types.Slot) ([]byte,
|
|||||||
// """
|
// """
|
||||||
// return get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch))
|
// return get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch))
|
||||||
func BlockRoot(state state.ReadOnlyBeaconState, epoch types.Epoch) ([]byte, error) {
|
func BlockRoot(state state.ReadOnlyBeaconState, epoch types.Epoch) ([]byte, error) {
|
||||||
s, err := core.StartSlot(epoch)
|
s, err := time.StartSlot(epoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
mathutil "github.com/prysmaticlabs/prysm/math"
|
mathutil "github.com/prysmaticlabs/prysm/math"
|
||||||
@@ -66,7 +66,7 @@ func TotalActiveBalance(s state.ReadOnlyBeaconState) (uint64, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
total := uint64(0)
|
total := uint64(0)
|
||||||
epoch := core.SlotToEpoch(s.Slot())
|
epoch := time.SlotToEpoch(s.Slot())
|
||||||
if err := s.ReadFromEveryValidator(func(idx int, val state.ReadOnlyValidator) error {
|
if err := s.ReadFromEveryValidator(func(idx int, val state.ReadOnlyValidator) error {
|
||||||
if IsActiveValidatorUsingTrie(val, epoch) {
|
if IsActiveValidatorUsingTrie(val, epoch) {
|
||||||
total += val.EffectiveBalance()
|
total += val.EffectiveBalance()
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
||||||
"github.com/prysmaticlabs/prysm/config/features"
|
"github.com/prysmaticlabs/prysm/config/features"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
@@ -158,24 +158,24 @@ func TestFinalityDelay(t *testing.T) {
|
|||||||
finalizedEpoch := types.Epoch(0)
|
finalizedEpoch := types.Epoch(0)
|
||||||
// Set values for each test case
|
// Set values for each test case
|
||||||
setVal := func() {
|
setVal := func() {
|
||||||
prevEpoch = core.PrevEpoch(beaconState)
|
prevEpoch = time.PrevEpoch(beaconState)
|
||||||
finalizedEpoch = beaconState.FinalizedCheckpointEpoch()
|
finalizedEpoch = beaconState.FinalizedCheckpointEpoch()
|
||||||
}
|
}
|
||||||
setVal()
|
setVal()
|
||||||
d := FinalityDelay(prevEpoch, finalizedEpoch)
|
d := FinalityDelay(prevEpoch, finalizedEpoch)
|
||||||
w := core.PrevEpoch(beaconState) - beaconState.FinalizedCheckpointEpoch()
|
w := time.PrevEpoch(beaconState) - beaconState.FinalizedCheckpointEpoch()
|
||||||
assert.Equal(t, w, d, "Did not get wanted finality delay")
|
assert.Equal(t, w, d, "Did not get wanted finality delay")
|
||||||
|
|
||||||
require.NoError(t, beaconState.SetFinalizedCheckpoint(ðpb.Checkpoint{Epoch: 4}))
|
require.NoError(t, beaconState.SetFinalizedCheckpoint(ðpb.Checkpoint{Epoch: 4}))
|
||||||
setVal()
|
setVal()
|
||||||
d = FinalityDelay(prevEpoch, finalizedEpoch)
|
d = FinalityDelay(prevEpoch, finalizedEpoch)
|
||||||
w = core.PrevEpoch(beaconState) - beaconState.FinalizedCheckpointEpoch()
|
w = time.PrevEpoch(beaconState) - beaconState.FinalizedCheckpointEpoch()
|
||||||
assert.Equal(t, w, d, "Did not get wanted finality delay")
|
assert.Equal(t, w, d, "Did not get wanted finality delay")
|
||||||
|
|
||||||
require.NoError(t, beaconState.SetFinalizedCheckpoint(ðpb.Checkpoint{Epoch: 5}))
|
require.NoError(t, beaconState.SetFinalizedCheckpoint(ðpb.Checkpoint{Epoch: 5}))
|
||||||
setVal()
|
setVal()
|
||||||
d = FinalityDelay(prevEpoch, finalizedEpoch)
|
d = FinalityDelay(prevEpoch, finalizedEpoch)
|
||||||
w = core.PrevEpoch(beaconState) - beaconState.FinalizedCheckpointEpoch()
|
w = time.PrevEpoch(beaconState) - beaconState.FinalizedCheckpointEpoch()
|
||||||
assert.Equal(t, w, d, "Did not get wanted finality delay")
|
assert.Equal(t, w, d, "Did not get wanted finality delay")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -188,7 +188,7 @@ func TestIsInInactivityLeak(t *testing.T) {
|
|||||||
finalizedEpoch := types.Epoch(0)
|
finalizedEpoch := types.Epoch(0)
|
||||||
// Set values for each test case
|
// Set values for each test case
|
||||||
setVal := func() {
|
setVal := func() {
|
||||||
prevEpoch = core.PrevEpoch(beaconState)
|
prevEpoch = time.PrevEpoch(beaconState)
|
||||||
finalizedEpoch = beaconState.FinalizedCheckpointEpoch()
|
finalizedEpoch = beaconState.FinalizedCheckpointEpoch()
|
||||||
}
|
}
|
||||||
setVal()
|
setVal()
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
||||||
@@ -154,7 +154,7 @@ func UpdateSyncCommitteeCache(st state.BeaconStateAltair) error {
|
|||||||
if nextSlot%params.BeaconConfig().SlotsPerEpoch != 0 {
|
if nextSlot%params.BeaconConfig().SlotsPerEpoch != 0 {
|
||||||
return errors.New("not at the end of the epoch to update cache")
|
return errors.New("not at the end of the epoch to update cache")
|
||||||
}
|
}
|
||||||
if core.SlotToEpoch(nextSlot)%params.BeaconConfig().EpochsPerSyncCommitteePeriod != 0 {
|
if time.SlotToEpoch(nextSlot)%params.BeaconConfig().EpochsPerSyncCommitteePeriod != 0 {
|
||||||
return errors.New("not at sync committee period boundary to update cache")
|
return errors.New("not at sync committee period boundary to update cache")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,11 +191,11 @@ func syncPeriodBoundaryRoot(st state.ReadOnlyBeaconState) ([]byte, error) {
|
|||||||
return params.BeaconConfig().ZeroHash[:], nil
|
return params.BeaconConfig().ZeroHash[:], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
startEpoch, err := core.SyncCommitteePeriodStartEpoch(core.CurrentEpoch(st))
|
startEpoch, err := time.SyncCommitteePeriodStartEpoch(time.CurrentEpoch(st))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
startEpochSlot, err := core.StartSlot(startEpoch)
|
startEpochSlot, err := time.StartSlot(startEpoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
"github.com/prometheus/client_golang/prometheus/promauto"
|
"github.com/prometheus/client_golang/prometheus/promauto"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/crypto/hash"
|
"github.com/prysmaticlabs/prysm/crypto/hash"
|
||||||
@@ -224,12 +224,12 @@ func ValidatorChurnLimit(activeValidatorCount uint64) (uint64, error) {
|
|||||||
// indices = get_active_validator_indices(state, epoch)
|
// indices = get_active_validator_indices(state, epoch)
|
||||||
// return compute_proposer_index(state, indices, seed)
|
// return compute_proposer_index(state, indices, seed)
|
||||||
func BeaconProposerIndex(ctx context.Context, state state.ReadOnlyBeaconState) (types.ValidatorIndex, error) {
|
func BeaconProposerIndex(ctx context.Context, state state.ReadOnlyBeaconState) (types.ValidatorIndex, error) {
|
||||||
e := core.CurrentEpoch(state)
|
e := time.CurrentEpoch(state)
|
||||||
// The cache uses the state root of the previous epoch - minimum_seed_lookahead last slot as key. (e.g. Starting epoch 1, slot 32, the key would be block root at slot 31)
|
// The cache uses the state root of the previous epoch - minimum_seed_lookahead last slot as key. (e.g. Starting epoch 1, slot 32, the key would be block root at slot 31)
|
||||||
// For simplicity, the node will skip caching of genesis epoch.
|
// For simplicity, the node will skip caching of genesis epoch.
|
||||||
if e > params.BeaconConfig().GenesisEpoch+params.BeaconConfig().MinSeedLookahead {
|
if e > params.BeaconConfig().GenesisEpoch+params.BeaconConfig().MinSeedLookahead {
|
||||||
wantedEpoch := core.PrevEpoch(state)
|
wantedEpoch := time.PrevEpoch(state)
|
||||||
s, err := core.EndSlot(wantedEpoch)
|
s, err := time.EndSlot(wantedEpoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/crypto/hash"
|
"github.com/prysmaticlabs/prysm/crypto/hash"
|
||||||
@@ -376,7 +376,7 @@ func TestActiveValidatorCount_Genesis(t *testing.T) {
|
|||||||
seed, err := Seed(beaconState, 0, params.BeaconConfig().DomainBeaconAttester)
|
seed, err := Seed(beaconState, 0, params.BeaconConfig().DomainBeaconAttester)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NoError(t, committeeCache.AddCommitteeShuffledList(&cache.Committees{Seed: seed, ShuffledIndices: []types.ValidatorIndex{1, 2, 3}}))
|
require.NoError(t, committeeCache.AddCommitteeShuffledList(&cache.Committees{Seed: seed, ShuffledIndices: []types.ValidatorIndex{1, 2, 3}}))
|
||||||
validatorCount, err := ActiveValidatorCount(context.Background(), beaconState, core.CurrentEpoch(beaconState))
|
validatorCount, err := ActiveValidatorCount(context.Background(), beaconState, time.CurrentEpoch(beaconState))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, uint64(c), validatorCount, "Did not get the correct validator count")
|
assert.Equal(t, uint64(c), validatorCount, "Did not get the correct validator count")
|
||||||
}
|
}
|
||||||
@@ -407,7 +407,7 @@ func TestChurnLimit_OK(t *testing.T) {
|
|||||||
RandaoMixes: make([][]byte, params.BeaconConfig().EpochsPerHistoricalVector),
|
RandaoMixes: make([][]byte, params.BeaconConfig().EpochsPerHistoricalVector),
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
validatorCount, err := ActiveValidatorCount(context.Background(), beaconState, core.CurrentEpoch(beaconState))
|
validatorCount, err := ActiveValidatorCount(context.Background(), beaconState, time.CurrentEpoch(beaconState))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
resultChurn, err := ValidatorChurnLimit(validatorCount)
|
resultChurn, err := ValidatorChurnLimit(validatorCount)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/math"
|
"github.com/prysmaticlabs/prysm/math"
|
||||||
@@ -58,7 +58,7 @@ func ComputeWeakSubjectivityPeriod(ctx context.Context, st state.ReadOnlyBeaconS
|
|||||||
wsp := uint64(params.BeaconConfig().MinValidatorWithdrawabilityDelay)
|
wsp := uint64(params.BeaconConfig().MinValidatorWithdrawabilityDelay)
|
||||||
|
|
||||||
// Cardinality of active validator set.
|
// Cardinality of active validator set.
|
||||||
N, err := ActiveValidatorCount(ctx, st, core.CurrentEpoch(st))
|
N, err := ActiveValidatorCount(ctx, st, time.CurrentEpoch(st))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, fmt.Errorf("cannot obtain active valiadtor count: %w", err)
|
return 0, fmt.Errorf("cannot obtain active valiadtor count: %w", err)
|
||||||
}
|
}
|
||||||
@@ -132,9 +132,9 @@ func IsWithinWeakSubjectivityPeriod(
|
|||||||
return false, fmt.Errorf("state (%#x) and checkpoint (%#x) roots do not match",
|
return false, fmt.Errorf("state (%#x) and checkpoint (%#x) roots do not match",
|
||||||
wsState.LatestBlockHeader().StateRoot, wsCheckpoint.StateRoot)
|
wsState.LatestBlockHeader().StateRoot, wsCheckpoint.StateRoot)
|
||||||
}
|
}
|
||||||
if core.SlotToEpoch(wsState.Slot()) != wsCheckpoint.Epoch {
|
if time.SlotToEpoch(wsState.Slot()) != wsCheckpoint.Epoch {
|
||||||
return false, fmt.Errorf("state (%v) and checkpoint (%v) epochs do not match",
|
return false, fmt.Errorf("state (%v) and checkpoint (%v) epochs do not match",
|
||||||
core.SlotToEpoch(wsState.Slot()), wsCheckpoint.Epoch)
|
time.SlotToEpoch(wsState.Slot()), wsCheckpoint.Epoch)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compare given epoch to state epoch + weak subjectivity period.
|
// Compare given epoch to state epoch + weak subjectivity period.
|
||||||
@@ -142,7 +142,7 @@ func IsWithinWeakSubjectivityPeriod(
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("cannot compute weak subjectivity period: %w", err)
|
return false, fmt.Errorf("cannot compute weak subjectivity period: %w", err)
|
||||||
}
|
}
|
||||||
wsStateEpoch := core.SlotToEpoch(wsState.Slot())
|
wsStateEpoch := time.SlotToEpoch(wsState.Slot())
|
||||||
|
|
||||||
return currentEpoch <= wsStateEpoch+wsPeriod, nil
|
return currentEpoch <= wsStateEpoch+wsPeriod, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,8 +28,8 @@ go_test(
|
|||||||
],
|
],
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
"//config/params:go_default_library",
|
"//config/params:go_default_library",
|
||||||
"//crypto/bls:go_default_library",
|
"//crypto/bls:go_default_library",
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
fuzz "github.com/google/gofuzz"
|
fuzz "github.com/google/gofuzz"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/crypto/bls"
|
"github.com/prysmaticlabs/prysm/crypto/bls"
|
||||||
@@ -86,7 +86,7 @@ func TestSigningRoot_ComputeDomainAndSign(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
block := tt.genBlock(t, beaconState, privKeys)
|
block := tt.genBlock(t, beaconState, privKeys)
|
||||||
got, err := signing.ComputeDomainAndSign(
|
got, err := signing.ComputeDomainAndSign(
|
||||||
beaconState, core.CurrentEpoch(beaconState), block, tt.domainType, privKeys[idx])
|
beaconState, time.CurrentEpoch(beaconState), block, tt.domainType, privKeys[idx])
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.DeepEqual(t, tt.want, got, "Incorrect signature")
|
require.DeepEqual(t, tt.want, got, "Incorrect signature")
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -3,26 +3,8 @@ load("@prysm//tools/go:def.bzl", "go_library", "go_test")
|
|||||||
go_library(
|
go_library(
|
||||||
name = "go_default_library",
|
name = "go_default_library",
|
||||||
srcs = ["slot_epoch.go"],
|
srcs = ["slot_epoch.go"],
|
||||||
importpath = "github.com/prysmaticlabs/prysm/beacon-chain/core",
|
importpath = "github.com/prysmaticlabs/prysm/beacon-chain/core/time",
|
||||||
visibility = [
|
visibility = ["//visibility:public"],
|
||||||
"//beacon-chain:__subpackages__",
|
|
||||||
"//contracts/deposit:__pkg__",
|
|
||||||
"//crypto/keystore:__pkg__",
|
|
||||||
"//fuzz:__pkg__",
|
|
||||||
"//network/forks:__pkg__",
|
|
||||||
"//proto/prysm/v1alpha1/attestation:__pkg__",
|
|
||||||
"//runtime/interop:__pkg__",
|
|
||||||
"//slasher:__subpackages__",
|
|
||||||
"//testing/altair:__pkg__",
|
|
||||||
"//testing/benchmark/benchmark_files:__subpackages__",
|
|
||||||
"//testing/endtoend/evaluators:__pkg__",
|
|
||||||
"//testing/fuzz:__pkg__",
|
|
||||||
"//testing/slasher/simulator:__subpackages__",
|
|
||||||
"//testing/spectest:__subpackages__",
|
|
||||||
"//testing/util:__pkg__",
|
|
||||||
"//tools:__subpackages__",
|
|
||||||
"//validator:__subpackages__",
|
|
||||||
],
|
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
"//config/params:go_default_library",
|
"//config/params:go_default_library",
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package core
|
package time
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package core
|
package time
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"math"
|
"math"
|
||||||
@@ -26,12 +26,12 @@ go_library(
|
|||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/cache:go_default_library",
|
"//beacon-chain/cache:go_default_library",
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/altair:go_default_library",
|
"//beacon-chain/core/altair:go_default_library",
|
||||||
"//beacon-chain/core/blocks:go_default_library",
|
"//beacon-chain/core/blocks:go_default_library",
|
||||||
"//beacon-chain/core/epoch:go_default_library",
|
"//beacon-chain/core/epoch:go_default_library",
|
||||||
"//beacon-chain/core/epoch/precompute:go_default_library",
|
"//beacon-chain/core/epoch/precompute:go_default_library",
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/core/transition/interop:go_default_library",
|
"//beacon-chain/core/transition/interop:go_default_library",
|
||||||
"//beacon-chain/core/validators:go_default_library",
|
"//beacon-chain/core/validators:go_default_library",
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
@@ -75,11 +75,11 @@ go_test(
|
|||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
shard_count = 3,
|
shard_count = 3,
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/altair:go_default_library",
|
"//beacon-chain/core/altair:go_default_library",
|
||||||
"//beacon-chain/core/blocks:go_default_library",
|
"//beacon-chain/core/blocks:go_default_library",
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
"//beacon-chain/core/signing:go_default_library",
|
"//beacon-chain/core/signing:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/p2p/types:go_default_library",
|
"//beacon-chain/p2p/types:go_default_library",
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
"//beacon-chain/state/v1:go_default_library",
|
"//beacon-chain/state/v1:go_default_library",
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/prysmaticlabs/go-bitfield"
|
"github.com/prysmaticlabs/go-bitfield"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/altair"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/altair"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
||||||
p2pType "github.com/prysmaticlabs/prysm/beacon-chain/p2p/types"
|
p2pType "github.com/prysmaticlabs/prysm/beacon-chain/p2p/types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
@@ -45,7 +45,7 @@ func TestExecuteAltairStateTransitionNoVerify_FullProcess(t *testing.T) {
|
|||||||
require.NoError(t, beaconState.SetEth1DataVotes([]*ethpb.Eth1Data{eth1Data}))
|
require.NoError(t, beaconState.SetEth1DataVotes([]*ethpb.Eth1Data{eth1Data}))
|
||||||
|
|
||||||
require.NoError(t, beaconState.SetSlot(beaconState.Slot()+1))
|
require.NoError(t, beaconState.SetSlot(beaconState.Slot()+1))
|
||||||
epoch := core.CurrentEpoch(beaconState)
|
epoch := time.CurrentEpoch(beaconState)
|
||||||
randaoReveal, err := util.RandaoReveal(beaconState, epoch, privKeys)
|
randaoReveal, err := util.RandaoReveal(beaconState, epoch, privKeys)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NoError(t, beaconState.SetSlot(beaconState.Slot()-1))
|
require.NoError(t, beaconState.SetSlot(beaconState.Slot()-1))
|
||||||
@@ -78,7 +78,7 @@ func TestExecuteAltairStateTransitionNoVerify_FullProcess(t *testing.T) {
|
|||||||
syncSigs := make([]bls.Signature, len(indices))
|
syncSigs := make([]bls.Signature, len(indices))
|
||||||
for i, indice := range indices {
|
for i, indice := range indices {
|
||||||
b := p2pType.SSZBytes(pbr[:])
|
b := p2pType.SSZBytes(pbr[:])
|
||||||
sb, err := signing.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice])
|
sb, err := signing.ComputeDomainAndSign(beaconState, time.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice])
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
sig, err := bls.SignatureFromBytes(sb)
|
sig, err := bls.SignatureFromBytes(sb)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -132,7 +132,7 @@ func TestExecuteAltairStateTransitionNoVerifySignature_CouldNotVerifyStateRoot(t
|
|||||||
require.NoError(t, beaconState.SetEth1DataVotes([]*ethpb.Eth1Data{eth1Data}))
|
require.NoError(t, beaconState.SetEth1DataVotes([]*ethpb.Eth1Data{eth1Data}))
|
||||||
|
|
||||||
require.NoError(t, beaconState.SetSlot(beaconState.Slot()+1))
|
require.NoError(t, beaconState.SetSlot(beaconState.Slot()+1))
|
||||||
epoch := core.CurrentEpoch(beaconState)
|
epoch := time.CurrentEpoch(beaconState)
|
||||||
randaoReveal, err := util.RandaoReveal(beaconState, epoch, privKeys)
|
randaoReveal, err := util.RandaoReveal(beaconState, epoch, privKeys)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NoError(t, beaconState.SetSlot(beaconState.Slot()-1))
|
require.NoError(t, beaconState.SetSlot(beaconState.Slot()-1))
|
||||||
@@ -165,7 +165,7 @@ func TestExecuteAltairStateTransitionNoVerifySignature_CouldNotVerifyStateRoot(t
|
|||||||
syncSigs := make([]bls.Signature, len(indices))
|
syncSigs := make([]bls.Signature, len(indices))
|
||||||
for i, indice := range indices {
|
for i, indice := range indices {
|
||||||
b := p2pType.SSZBytes(pbr[:])
|
b := p2pType.SSZBytes(pbr[:])
|
||||||
sb, err := signing.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice])
|
sb, err := signing.ComputeDomainAndSign(beaconState, time.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice])
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
sig, err := bls.SignatureFromBytes(sb)
|
sig, err := bls.SignatureFromBytes(sb)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
coreState "github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
coreState "github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
||||||
@@ -47,7 +47,7 @@ func BenchmarkExecuteStateTransition_WithCache(b *testing.B) {
|
|||||||
// some attestations in block are from previous epoch
|
// some attestations in block are from previous epoch
|
||||||
currentSlot := beaconState.Slot()
|
currentSlot := beaconState.Slot()
|
||||||
require.NoError(b, beaconState.SetSlot(beaconState.Slot()-params.BeaconConfig().SlotsPerEpoch))
|
require.NoError(b, beaconState.SetSlot(beaconState.Slot()-params.BeaconConfig().SlotsPerEpoch))
|
||||||
require.NoError(b, helpers.UpdateCommitteeCache(beaconState, core.CurrentEpoch(beaconState)))
|
require.NoError(b, helpers.UpdateCommitteeCache(beaconState, time.CurrentEpoch(beaconState)))
|
||||||
require.NoError(b, beaconState.SetSlot(currentSlot))
|
require.NoError(b, beaconState.SetSlot(currentSlot))
|
||||||
// Run the state transition once to populate the cache.
|
// Run the state transition once to populate the cache.
|
||||||
_, err = coreState.ExecuteStateTransition(context.Background(), beaconState, wrapper.WrappedPhase0SignedBeaconBlock(block))
|
_, err = coreState.ExecuteStateTransition(context.Background(), beaconState, wrapper.WrappedPhase0SignedBeaconBlock(block))
|
||||||
@@ -69,7 +69,7 @@ func BenchmarkProcessEpoch_2FullEpochs(b *testing.B) {
|
|||||||
// some attestations in block are from previous epoch
|
// some attestations in block are from previous epoch
|
||||||
currentSlot := beaconState.Slot()
|
currentSlot := beaconState.Slot()
|
||||||
require.NoError(b, beaconState.SetSlot(beaconState.Slot()-params.BeaconConfig().SlotsPerEpoch))
|
require.NoError(b, beaconState.SetSlot(beaconState.Slot()-params.BeaconConfig().SlotsPerEpoch))
|
||||||
require.NoError(b, helpers.UpdateCommitteeCache(beaconState, core.CurrentEpoch(beaconState)))
|
require.NoError(b, helpers.UpdateCommitteeCache(beaconState, time.CurrentEpoch(beaconState)))
|
||||||
require.NoError(b, beaconState.SetSlot(currentSlot))
|
require.NoError(b, beaconState.SetSlot(currentSlot))
|
||||||
|
|
||||||
b.ResetTimer()
|
b.ResetTimer()
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ import (
|
|||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/altair"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/altair"
|
||||||
e "github.com/prysmaticlabs/prysm/beacon-chain/core/epoch"
|
e "github.com/prysmaticlabs/prysm/beacon-chain/core/epoch"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/epoch/precompute"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/epoch/precompute"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/math"
|
"github.com/prysmaticlabs/prysm/math"
|
||||||
@@ -282,8 +282,8 @@ func ProcessSlots(ctx context.Context, state state.BeaconState, slot types.Slot)
|
|||||||
// Spec code:
|
// Spec code:
|
||||||
// If state.slot % SLOTS_PER_EPOCH == 0 and compute_epoch_at_slot(state.slot) == ALTAIR_FORK_EPOCH
|
// If state.slot % SLOTS_PER_EPOCH == 0 and compute_epoch_at_slot(state.slot) == ALTAIR_FORK_EPOCH
|
||||||
func CanUpgradeToAltair(slot types.Slot) bool {
|
func CanUpgradeToAltair(slot types.Slot) bool {
|
||||||
epochStart := core.IsEpochStart(slot)
|
epochStart := time.IsEpochStart(slot)
|
||||||
altairEpoch := core.SlotToEpoch(slot) == params.BeaconConfig().AltairForkEpoch
|
altairEpoch := time.SlotToEpoch(slot) == params.BeaconConfig().AltairForkEpoch
|
||||||
return epochStart && altairEpoch
|
return epochStart && altairEpoch
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -356,7 +356,7 @@ func CanProcessEpoch(state state.ReadOnlyBeaconState) bool {
|
|||||||
func ProcessEpochPrecompute(ctx context.Context, state state.BeaconState) (state.BeaconState, error) {
|
func ProcessEpochPrecompute(ctx context.Context, state state.BeaconState) (state.BeaconState, error) {
|
||||||
ctx, span := trace.StartSpan(ctx, "core.state.ProcessEpochPrecompute")
|
ctx, span := trace.StartSpan(ctx, "core.state.ProcessEpochPrecompute")
|
||||||
defer span.End()
|
defer span.End()
|
||||||
span.AddAttributes(trace.Int64Attribute("epoch", int64(core.CurrentEpoch(state))))
|
span.AddAttributes(trace.Int64Attribute("epoch", int64(time.CurrentEpoch(state))))
|
||||||
|
|
||||||
if state == nil || state.IsNil() {
|
if state == nil || state.IsNil() {
|
||||||
return nil, errors.New("nil state")
|
return nil, errors.New("nil state")
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
||||||
@@ -34,7 +34,7 @@ func TestExecuteStateTransitionNoVerify_FullProcess(t *testing.T) {
|
|||||||
require.NoError(t, beaconState.SetEth1DataVotes([]*ethpb.Eth1Data{eth1Data}))
|
require.NoError(t, beaconState.SetEth1DataVotes([]*ethpb.Eth1Data{eth1Data}))
|
||||||
|
|
||||||
require.NoError(t, beaconState.SetSlot(beaconState.Slot()+1))
|
require.NoError(t, beaconState.SetSlot(beaconState.Slot()+1))
|
||||||
epoch := core.CurrentEpoch(beaconState)
|
epoch := time.CurrentEpoch(beaconState)
|
||||||
randaoReveal, err := util.RandaoReveal(beaconState, epoch, privKeys)
|
randaoReveal, err := util.RandaoReveal(beaconState, epoch, privKeys)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NoError(t, beaconState.SetSlot(beaconState.Slot()-1))
|
require.NoError(t, beaconState.SetSlot(beaconState.Slot()-1))
|
||||||
@@ -86,7 +86,7 @@ func TestExecuteStateTransitionNoVerifySignature_CouldNotVerifyStateRoot(t *test
|
|||||||
require.NoError(t, beaconState.SetEth1DataVotes([]*ethpb.Eth1Data{eth1Data}))
|
require.NoError(t, beaconState.SetEth1DataVotes([]*ethpb.Eth1Data{eth1Data}))
|
||||||
|
|
||||||
require.NoError(t, beaconState.SetSlot(beaconState.Slot()+1))
|
require.NoError(t, beaconState.SetSlot(beaconState.Slot()+1))
|
||||||
epoch := core.CurrentEpoch(beaconState)
|
epoch := time.CurrentEpoch(beaconState)
|
||||||
randaoReveal, err := util.RandaoReveal(beaconState, epoch, privKeys)
|
randaoReveal, err := util.RandaoReveal(beaconState, epoch, privKeys)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NoError(t, beaconState.SetSlot(beaconState.Slot()-1))
|
require.NoError(t, beaconState.SetSlot(beaconState.Slot()-1))
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import (
|
|||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/go-bitfield"
|
"github.com/prysmaticlabs/go-bitfield"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
||||||
@@ -68,7 +68,7 @@ func TestExecuteStateTransition_FullProcess(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
require.NoError(t, beaconState.SetSlot(beaconState.Slot()+1))
|
require.NoError(t, beaconState.SetSlot(beaconState.Slot()+1))
|
||||||
epoch := core.CurrentEpoch(beaconState)
|
epoch := time.CurrentEpoch(beaconState)
|
||||||
randaoReveal, err := util.RandaoReveal(beaconState, epoch, privKeys)
|
randaoReveal, err := util.RandaoReveal(beaconState, epoch, privKeys)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NoError(t, beaconState.SetSlot(beaconState.Slot()-1))
|
require.NoError(t, beaconState.SetSlot(beaconState.Slot()-1))
|
||||||
@@ -214,7 +214,7 @@ func createFullBlockWithOperations(t *testing.T) (state.BeaconState,
|
|||||||
err = beaconState.SetSlot(slotsPerEpoch.Mul(uint64(params.BeaconConfig().ShardCommitteePeriod)) + params.BeaconConfig().MinAttestationInclusionDelay)
|
err = beaconState.SetSlot(slotsPerEpoch.Mul(uint64(params.BeaconConfig().ShardCommitteePeriod)) + params.BeaconConfig().MinAttestationInclusionDelay)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
currentEpoch := core.CurrentEpoch(beaconState)
|
currentEpoch := time.CurrentEpoch(beaconState)
|
||||||
header1 := util.HydrateSignedBeaconHeader(ðpb.SignedBeaconBlockHeader{
|
header1 := util.HydrateSignedBeaconHeader(ðpb.SignedBeaconBlockHeader{
|
||||||
Header: ðpb.BeaconBlockHeader{
|
Header: ðpb.BeaconBlockHeader{
|
||||||
ProposerIndex: proposerSlashIdx,
|
ProposerIndex: proposerSlashIdx,
|
||||||
@@ -232,7 +232,7 @@ func createFullBlockWithOperations(t *testing.T) (state.BeaconState,
|
|||||||
StateRoot: bytesutil.PadTo([]byte("B"), 32),
|
StateRoot: bytesutil.PadTo([]byte("B"), 32),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
header2.Signature, err = signing.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), header2.Header, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerSlashIdx])
|
header2.Signature, err = signing.ComputeDomainAndSign(beaconState, time.CurrentEpoch(beaconState), header2.Header, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerSlashIdx])
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
proposerSlashings := []*ethpb.ProposerSlashing{
|
proposerSlashings := []*ethpb.ProposerSlashing{
|
||||||
@@ -295,7 +295,7 @@ func createFullBlockWithOperations(t *testing.T) (state.BeaconState,
|
|||||||
blockAtt := util.HydrateAttestation(ðpb.Attestation{
|
blockAtt := util.HydrateAttestation(ðpb.Attestation{
|
||||||
Data: ðpb.AttestationData{
|
Data: ðpb.AttestationData{
|
||||||
Slot: beaconState.Slot(),
|
Slot: beaconState.Slot(),
|
||||||
Target: ðpb.Checkpoint{Epoch: core.CurrentEpoch(beaconState)},
|
Target: ðpb.Checkpoint{Epoch: time.CurrentEpoch(beaconState)},
|
||||||
Source: ðpb.Checkpoint{Root: mockRoot[:]}},
|
Source: ðpb.Checkpoint{Root: mockRoot[:]}},
|
||||||
AggregationBits: aggBits,
|
AggregationBits: aggBits,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ go_library(
|
|||||||
"//testing/spectest:__subpackages__",
|
"//testing/spectest:__subpackages__",
|
||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
"//config/params:go_default_library",
|
"//config/params:go_default_library",
|
||||||
"//proto/prysm/v1alpha1:go_default_library",
|
"//proto/prysm/v1alpha1:go_default_library",
|
||||||
@@ -25,8 +25,8 @@ go_test(
|
|||||||
srcs = ["validator_test.go"],
|
srcs = ["validator_test.go"],
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/state/v1:go_default_library",
|
"//beacon-chain/state/v1:go_default_library",
|
||||||
"//config/params:go_default_library",
|
"//config/params:go_default_library",
|
||||||
"//proto/prysm/v1alpha1:go_default_library",
|
"//proto/prysm/v1alpha1:go_default_library",
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ import (
|
|||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
||||||
@@ -57,7 +57,7 @@ func InitiateValidatorExit(ctx context.Context, s state.BeaconState, idx types.V
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
exitEpochs = append(exitEpochs, helpers.ActivationExitEpoch(core.CurrentEpoch(s)))
|
exitEpochs = append(exitEpochs, helpers.ActivationExitEpoch(time.CurrentEpoch(s)))
|
||||||
|
|
||||||
// Obtain the exit queue epoch as the maximum number in the exit epochs array.
|
// Obtain the exit queue epoch as the maximum number in the exit epochs array.
|
||||||
exitQueueEpoch := types.Epoch(0)
|
exitQueueEpoch := types.Epoch(0)
|
||||||
@@ -78,7 +78,7 @@ func InitiateValidatorExit(ctx context.Context, s state.BeaconState, idx types.V
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
activeValidatorCount, err := helpers.ActiveValidatorCount(ctx, s, core.CurrentEpoch(s))
|
activeValidatorCount, err := helpers.ActiveValidatorCount(ctx, s, time.CurrentEpoch(s))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "could not get active validator count")
|
return nil, errors.Wrap(err, "could not get active validator count")
|
||||||
}
|
}
|
||||||
@@ -134,7 +134,7 @@ func SlashValidator(
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrapf(err, "could not initiate validator %d exit", slashedIdx)
|
return nil, errors.Wrapf(err, "could not initiate validator %d exit", slashedIdx)
|
||||||
}
|
}
|
||||||
currentEpoch := core.SlotToEpoch(s.Slot())
|
currentEpoch := time.SlotToEpoch(s.Slot())
|
||||||
validator, err := s.ValidatorAtIndex(slashedIdx)
|
validator, err := s.ValidatorAtIndex(slashedIdx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
||||||
@@ -135,7 +135,7 @@ func TestSlashValidator_OK(t *testing.T) {
|
|||||||
v, err := state.ValidatorAtIndex(slashedIdx)
|
v, err := state.ValidatorAtIndex(slashedIdx)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, true, v.Slashed, "Validator not slashed despite supposed to being slashed")
|
assert.Equal(t, true, v.Slashed, "Validator not slashed despite supposed to being slashed")
|
||||||
assert.Equal(t, core.CurrentEpoch(state)+params.BeaconConfig().EpochsPerSlashingsVector, v.WithdrawableEpoch, "Withdrawable epoch not the expected value")
|
assert.Equal(t, time.CurrentEpoch(state)+params.BeaconConfig().EpochsPerSlashingsVector, v.WithdrawableEpoch, "Withdrawable epoch not the expected value")
|
||||||
|
|
||||||
maxBalance := params.BeaconConfig().MaxEffectiveBalance
|
maxBalance := params.BeaconConfig().MaxEffectiveBalance
|
||||||
slashedBalance := state.Slashings()[state.Slot().Mod(uint64(params.BeaconConfig().EpochsPerSlashingsVector))]
|
slashedBalance := state.Slashings()[state.Slot().Mod(uint64(params.BeaconConfig().EpochsPerSlashingsVector))]
|
||||||
@@ -205,7 +205,7 @@ func TestActivatedValidatorIndices(t *testing.T) {
|
|||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
s, err := v1.InitializeFromProto(tt.state)
|
s, err := v1.InitializeFromProto(tt.state)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
activatedIndices := ActivatedValidatorIndices(core.CurrentEpoch(s), tt.state.Validators)
|
activatedIndices := ActivatedValidatorIndices(time.CurrentEpoch(s), tt.state.Validators)
|
||||||
assert.DeepEqual(t, tt.wanted, activatedIndices)
|
assert.DeepEqual(t, tt.wanted, activatedIndices)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -259,7 +259,7 @@ func TestSlashedValidatorIndices(t *testing.T) {
|
|||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
s, err := v1.InitializeFromProto(tt.state)
|
s, err := v1.InitializeFromProto(tt.state)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
slashedIndices := SlashedValidatorIndices(core.CurrentEpoch(s), tt.state.Validators)
|
slashedIndices := SlashedValidatorIndices(time.CurrentEpoch(s), tt.state.Validators)
|
||||||
assert.DeepEqual(t, tt.wanted, slashedIndices)
|
assert.DeepEqual(t, tt.wanted, slashedIndices)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -319,7 +319,7 @@ func TestExitedValidatorIndices(t *testing.T) {
|
|||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
s, err := v1.InitializeFromProto(tt.state)
|
s, err := v1.InitializeFromProto(tt.state)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
activeCount, err := helpers.ActiveValidatorCount(context.Background(), s, core.PrevEpoch(s))
|
activeCount, err := helpers.ActiveValidatorCount(context.Background(), s, time.PrevEpoch(s))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
exitedIndices, err := ExitedValidatorIndices(0, tt.state.Validators, activeCount)
|
exitedIndices, err := ExitedValidatorIndices(0, tt.state.Validators, activeCount)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|||||||
@@ -34,9 +34,9 @@ go_library(
|
|||||||
"//tools:__subpackages__",
|
"//tools:__subpackages__",
|
||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/blocks:go_default_library",
|
"//beacon-chain/core/blocks:go_default_library",
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/db/filters:go_default_library",
|
"//beacon-chain/db/filters:go_default_library",
|
||||||
"//beacon-chain/db/iface:go_default_library",
|
"//beacon-chain/db/iface:go_default_library",
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"github.com/golang/snappy"
|
"github.com/golang/snappy"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/db/filters"
|
"github.com/prysmaticlabs/prysm/beacon-chain/db/filters"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/container/slice"
|
"github.com/prysmaticlabs/prysm/container/slice"
|
||||||
@@ -479,11 +479,11 @@ func blockRootsBySlotRange(
|
|||||||
endEpoch, endEpochOk := endEpochEncoded.(types.Epoch)
|
endEpoch, endEpochOk := endEpochEncoded.(types.Epoch)
|
||||||
var err error
|
var err error
|
||||||
if startEpochOk && endEpochOk {
|
if startEpochOk && endEpochOk {
|
||||||
startSlot, err = core.StartSlot(startEpoch)
|
startSlot, err = time.StartSlot(startEpoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
endSlot, err = core.StartSlot(endEpoch)
|
endSlot, err = time.StartSlot(endEpoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import (
|
|||||||
"github.com/golang/snappy"
|
"github.com/golang/snappy"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state/genesis"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state/genesis"
|
||||||
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
||||||
@@ -666,7 +666,7 @@ func (s *Store) CleanUpDirtyStates(ctx context.Context, slotsPerArchivedPoint ty
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
finalizedSlot, err := core.StartSlot(f.Epoch)
|
finalizedSlot, err := time.StartSlot(f.Epoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ go_library(
|
|||||||
importpath = "github.com/prysmaticlabs/prysm/beacon-chain/db/slasherkv",
|
importpath = "github.com/prysmaticlabs/prysm/beacon-chain/db/slasherkv",
|
||||||
visibility = ["//beacon-chain:__subpackages__"],
|
visibility = ["//beacon-chain:__subpackages__"],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/core:go_default_library",
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/db/iface:go_default_library",
|
"//beacon-chain/db/iface:go_default_library",
|
||||||
"//beacon-chain/slasher/types:go_default_library",
|
"//beacon-chain/slasher/types:go_default_library",
|
||||||
"//config/params:go_default_library",
|
"//config/params:go_default_library",
|
||||||
@@ -43,7 +43,7 @@ go_test(
|
|||||||
],
|
],
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/core:go_default_library",
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/slasher/types:go_default_library",
|
"//beacon-chain/slasher/types:go_default_library",
|
||||||
"//config/params:go_default_library",
|
"//config/params:go_default_library",
|
||||||
"//encoding/bytesutil:go_default_library",
|
"//encoding/bytesutil:go_default_library",
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
fssz "github.com/ferranbt/fastssz"
|
fssz "github.com/ferranbt/fastssz"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
bolt "go.etcd.io/bbolt"
|
bolt "go.etcd.io/bbolt"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@ func (s *Store) PruneProposalsAtEpoch(
|
|||||||
ctx context.Context, maxEpoch types.Epoch,
|
ctx context.Context, maxEpoch types.Epoch,
|
||||||
) (numPruned uint, err error) {
|
) (numPruned uint, err error) {
|
||||||
var endPruneSlot types.Slot
|
var endPruneSlot types.Slot
|
||||||
endPruneSlot, err = core.EndSlot(maxEpoch)
|
endPruneSlot, err = time.EndSlot(maxEpoch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
slashertypes "github.com/prysmaticlabs/prysm/beacon-chain/slasher/types"
|
slashertypes "github.com/prysmaticlabs/prysm/beacon-chain/slasher/types"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/testing/require"
|
"github.com/prysmaticlabs/prysm/testing/require"
|
||||||
@@ -29,7 +29,7 @@ func TestStore_PruneProposalsAtEpoch(t *testing.T) {
|
|||||||
historyLength := types.Epoch(10)
|
historyLength := types.Epoch(10)
|
||||||
|
|
||||||
pruningLimitEpoch := currentEpoch - historyLength
|
pruningLimitEpoch := currentEpoch - historyLength
|
||||||
lowestStoredSlot, err := core.EndSlot(pruningLimitEpoch)
|
lowestStoredSlot, err := time.EndSlot(pruningLimitEpoch)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
err = beaconDB.db.Update(func(tx *bolt.Tx) error {
|
err = beaconDB.db.Update(func(tx *bolt.Tx) error {
|
||||||
@@ -68,9 +68,9 @@ func TestStore_PruneProposalsAtEpoch(t *testing.T) {
|
|||||||
slotsPerEpoch := params.BeaconConfig().SlotsPerEpoch
|
slotsPerEpoch := params.BeaconConfig().SlotsPerEpoch
|
||||||
proposals := make([]*slashertypes.SignedBlockHeaderWrapper, 0, uint64(currentEpoch)*uint64(slotsPerEpoch)*2)
|
proposals := make([]*slashertypes.SignedBlockHeaderWrapper, 0, uint64(currentEpoch)*uint64(slotsPerEpoch)*2)
|
||||||
for i := types.Epoch(0); i < currentEpoch; i++ {
|
for i := types.Epoch(0); i < currentEpoch; i++ {
|
||||||
startSlot, err := core.StartSlot(i)
|
startSlot, err := time.StartSlot(i)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
endSlot, err := core.StartSlot(i + 1)
|
endSlot, err := time.StartSlot(i + 1)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
for j := startSlot; j < endSlot; j++ {
|
for j := startSlot; j < endSlot; j++ {
|
||||||
prop1 := createProposalWrapper(t, j, 0 /* proposer index */, []byte{0})
|
prop1 := createProposalWrapper(t, j, 0 /* proposer index */, []byte{0})
|
||||||
@@ -89,9 +89,9 @@ func TestStore_PruneProposalsAtEpoch(t *testing.T) {
|
|||||||
for i := types.Epoch(0); i < pruningLimitEpoch; i++ {
|
for i := types.Epoch(0); i < pruningLimitEpoch; i++ {
|
||||||
err = beaconDB.db.View(func(tx *bolt.Tx) error {
|
err = beaconDB.db.View(func(tx *bolt.Tx) error {
|
||||||
bkt := tx.Bucket(proposalRecordsBucket)
|
bkt := tx.Bucket(proposalRecordsBucket)
|
||||||
startSlot, err := core.StartSlot(i)
|
startSlot, err := time.StartSlot(i)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
endSlot, err := core.StartSlot(i + 1)
|
endSlot, err := time.StartSlot(i + 1)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
for j := startSlot; j < endSlot; j++ {
|
for j := startSlot; j < endSlot; j++ {
|
||||||
prop1Key, err := keyForValidatorProposal(j, 0)
|
prop1Key, err := keyForValidatorProposal(j, 0)
|
||||||
@@ -168,9 +168,9 @@ func TestStore_PruneAttestations_OK(t *testing.T) {
|
|||||||
slotsPerEpoch := params.BeaconConfig().SlotsPerEpoch
|
slotsPerEpoch := params.BeaconConfig().SlotsPerEpoch
|
||||||
attestations := make([]*slashertypes.IndexedAttestationWrapper, 0, uint64(currentEpoch)*uint64(slotsPerEpoch)*2)
|
attestations := make([]*slashertypes.IndexedAttestationWrapper, 0, uint64(currentEpoch)*uint64(slotsPerEpoch)*2)
|
||||||
for i := types.Epoch(0); i < currentEpoch; i++ {
|
for i := types.Epoch(0); i < currentEpoch; i++ {
|
||||||
startSlot, err := core.StartSlot(i)
|
startSlot, err := time.StartSlot(i)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
endSlot, err := core.StartSlot(i + 1)
|
endSlot, err := time.StartSlot(i + 1)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
for j := startSlot; j < endSlot; j++ {
|
for j := startSlot; j < endSlot; j++ {
|
||||||
attester1 := uint64(j + 10)
|
attester1 := uint64(j + 10)
|
||||||
@@ -196,9 +196,9 @@ func TestStore_PruneAttestations_OK(t *testing.T) {
|
|||||||
for i := types.Epoch(0); i < pruningLimitEpoch; i++ {
|
for i := types.Epoch(0); i < pruningLimitEpoch; i++ {
|
||||||
err = beaconDB.db.View(func(tx *bolt.Tx) error {
|
err = beaconDB.db.View(func(tx *bolt.Tx) error {
|
||||||
bkt := tx.Bucket(attestationDataRootsBucket)
|
bkt := tx.Bucket(attestationDataRootsBucket)
|
||||||
startSlot, err := core.StartSlot(i)
|
startSlot, err := time.StartSlot(i)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
endSlot, err := core.StartSlot(i + 1)
|
endSlot, err := time.StartSlot(i + 1)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
for j := startSlot; j < endSlot; j++ {
|
for j := startSlot; j < endSlot; j++ {
|
||||||
attester1 := types.ValidatorIndex(j + 10)
|
attester1 := types.ValidatorIndex(j + 10)
|
||||||
|
|||||||
@@ -18,9 +18,9 @@ go_library(
|
|||||||
"//testing/slasher/simulator:__pkg__",
|
"//testing/slasher/simulator:__pkg__",
|
||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/blocks:go_default_library",
|
"//beacon-chain/core/blocks:go_default_library",
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
"//config/params:go_default_library",
|
"//config/params:go_default_library",
|
||||||
"//container/slice:go_default_library",
|
"//container/slice:go_default_library",
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ import (
|
|||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/container/slice"
|
"github.com/prysmaticlabs/prysm/container/slice"
|
||||||
@@ -275,7 +275,7 @@ func (p *Pool) validatorSlashingPreconditionCheck(
|
|||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
// Checking if the validator is slashable.
|
// Checking if the validator is slashable.
|
||||||
if !helpers.IsSlashableValidatorUsingTrie(validator, core.CurrentEpoch(state)) {
|
if !helpers.IsSlashableValidatorUsingTrie(validator, time.CurrentEpoch(state)) {
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
return true, nil
|
return true, nil
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ go_library(
|
|||||||
"//testing/fuzz:__pkg__",
|
"//testing/fuzz:__pkg__",
|
||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/core:go_default_library",
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
"//config/params:go_default_library",
|
"//config/params:go_default_library",
|
||||||
"//proto/prysm/v1alpha1:go_default_library",
|
"//proto/prysm/v1alpha1:go_default_library",
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
||||||
@@ -49,7 +49,7 @@ func (p *Pool) PendingExits(state state.ReadOnlyBeaconState, slot types.Slot, no
|
|||||||
}
|
}
|
||||||
pending := make([]*ethpb.SignedVoluntaryExit, 0, maxExits)
|
pending := make([]*ethpb.SignedVoluntaryExit, 0, maxExits)
|
||||||
for _, e := range p.pending {
|
for _, e := range p.pending {
|
||||||
if e.Exit.Epoch > core.SlotToEpoch(slot) {
|
if e.Exit.Epoch > time.SlotToEpoch(slot) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if v, err := state.ValidatorAtIndexReadOnly(e.Exit.ValidatorIndex); err == nil &&
|
if v, err := state.ValidatorAtIndexReadOnly(e.Exit.ValidatorIndex); err == nil &&
|
||||||
|
|||||||
@@ -42,11 +42,11 @@ go_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//async:go_default_library",
|
"//async:go_default_library",
|
||||||
"//beacon-chain/cache:go_default_library",
|
"//beacon-chain/cache:go_default_library",
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/altair:go_default_library",
|
"//beacon-chain/core/altair:go_default_library",
|
||||||
"//beacon-chain/core/feed:go_default_library",
|
"//beacon-chain/core/feed:go_default_library",
|
||||||
"//beacon-chain/core/feed/state:go_default_library",
|
"//beacon-chain/core/feed/state:go_default_library",
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/db:go_default_library",
|
"//beacon-chain/db:go_default_library",
|
||||||
"//beacon-chain/p2p/encoder:go_default_library",
|
"//beacon-chain/p2p/encoder:go_default_library",
|
||||||
"//beacon-chain/p2p/peers:go_default_library",
|
"//beacon-chain/p2p/peers:go_default_library",
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ import (
|
|||||||
|
|
||||||
ssz "github.com/ferranbt/fastssz"
|
ssz "github.com/ferranbt/fastssz"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/altair"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/altair"
|
||||||
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/crypto/hash"
|
"github.com/prysmaticlabs/prysm/crypto/hash"
|
||||||
"github.com/prysmaticlabs/prysm/monitoring/tracing"
|
"github.com/prysmaticlabs/prysm/monitoring/tracing"
|
||||||
@@ -130,7 +130,7 @@ func (s *Service) broadcastAttestation(ctx context.Context, subnet uint64, att *
|
|||||||
}
|
}
|
||||||
// In the event our attestation is outdated and beyond the
|
// In the event our attestation is outdated and beyond the
|
||||||
// acceptable threshold, we exit early and do not broadcast it.
|
// acceptable threshold, we exit early and do not broadcast it.
|
||||||
currSlot := core.CurrentSlot(uint64(s.genesisTime.Unix()))
|
currSlot := coreTime.CurrentSlot(uint64(s.genesisTime.Unix()))
|
||||||
if att.Data.Slot+params.BeaconConfig().SlotsPerEpoch < currSlot {
|
if att.Data.Slot+params.BeaconConfig().SlotsPerEpoch < currSlot {
|
||||||
log.Warnf("Attestation is too old to broadcast, discarding it. Current Slot: %d , Attestation Slot: %d", currSlot, att.Data.Slot)
|
log.Warnf("Attestation is too old to broadcast, discarding it. Current Slot: %d , Attestation Slot: %d", currSlot, att.Data.Slot)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import (
|
|||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/prysmaticlabs/go-bitfield"
|
"github.com/prysmaticlabs/go-bitfield"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/runtime/version"
|
"github.com/prysmaticlabs/prysm/runtime/version"
|
||||||
)
|
)
|
||||||
@@ -53,7 +53,7 @@ func (s *Service) RefreshENR() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// Compare current epoch with our fork epochs
|
// Compare current epoch with our fork epochs
|
||||||
currEpoch := core.SlotToEpoch(core.CurrentSlot(uint64(s.genesisTime.Unix())))
|
currEpoch := coreTime.SlotToEpoch(coreTime.CurrentSlot(uint64(s.genesisTime.Unix())))
|
||||||
altairForkEpoch := params.BeaconConfig().AltairForkEpoch
|
altairForkEpoch := params.BeaconConfig().AltairForkEpoch
|
||||||
switch {
|
switch {
|
||||||
// Altair Behaviour
|
// Altair Behaviour
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"github.com/ethereum/go-ethereum/p2p/enode"
|
"github.com/ethereum/go-ethereum/p2p/enode"
|
||||||
"github.com/ethereum/go-ethereum/p2p/enr"
|
"github.com/ethereum/go-ethereum/p2p/enr"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/network/forks"
|
"github.com/prysmaticlabs/prysm/network/forks"
|
||||||
pb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
pb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
||||||
@@ -88,8 +88,8 @@ func addForkEntry(
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
currentSlot := core.SlotsSince(genesisTime)
|
currentSlot := coreTime.SlotsSince(genesisTime)
|
||||||
currentEpoch := core.SlotToEpoch(currentSlot)
|
currentEpoch := coreTime.SlotToEpoch(currentSlot)
|
||||||
if prysmTime.Now().Before(genesisTime) {
|
if prysmTime.Now().Before(genesisTime) {
|
||||||
currentEpoch = 0
|
currentEpoch = 0
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package p2p
|
package p2p
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/time/slots"
|
"github.com/prysmaticlabs/prysm/time/slots"
|
||||||
)
|
)
|
||||||
@@ -14,7 +14,7 @@ func (s *Service) forkWatcher() {
|
|||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case currSlot := <-slotTicker.C():
|
case currSlot := <-slotTicker.C():
|
||||||
currEpoch := core.SlotToEpoch(currSlot)
|
currEpoch := time.SlotToEpoch(currSlot)
|
||||||
if currEpoch == params.BeaconConfig().AltairForkEpoch {
|
if currEpoch == params.BeaconConfig().AltairForkEpoch {
|
||||||
// If we are in the fork epoch, we update our enr with
|
// If we are in the fork epoch, we update our enr with
|
||||||
// the updated fork digest. These repeatedly does
|
// the updated fork digest. These repeatedly does
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ import (
|
|||||||
"github.com/libp2p/go-libp2p-core/peer"
|
"github.com/libp2p/go-libp2p-core/peer"
|
||||||
pubsub "github.com/libp2p/go-libp2p-pubsub"
|
pubsub "github.com/libp2p/go-libp2p-pubsub"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||||
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
@@ -134,7 +134,7 @@ func (s *Service) retrieveActiveValidators() (uint64, error) {
|
|||||||
if genState == nil || genState.IsNil() {
|
if genState == nil || genState.IsNil() {
|
||||||
return 0, errors.New("no genesis state exists")
|
return 0, errors.New("no genesis state exists")
|
||||||
}
|
}
|
||||||
activeVals, err := helpers.ActiveValidatorCount(context.Background(), genState, core.CurrentEpoch(genState))
|
activeVals, err := helpers.ActiveValidatorCount(context.Background(), genState, coreTime.CurrentEpoch(genState))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
@@ -149,7 +149,7 @@ func (s *Service) retrieveActiveValidators() (uint64, error) {
|
|||||||
if bState == nil || bState.IsNil() {
|
if bState == nil || bState.IsNil() {
|
||||||
return 0, errors.Errorf("no state with root %#x exists", rt)
|
return 0, errors.Errorf("no state with root %#x exists", rt)
|
||||||
}
|
}
|
||||||
activeVals, err := helpers.ActiveValidatorCount(context.Background(), bState, core.CurrentEpoch(bState))
|
activeVals, err := helpers.ActiveValidatorCount(context.Background(), bState, coreTime.CurrentEpoch(bState))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ go_library(
|
|||||||
importpath = "github.com/prysmaticlabs/prysm/beacon-chain/p2p/peers",
|
importpath = "github.com/prysmaticlabs/prysm/beacon-chain/p2p/peers",
|
||||||
visibility = ["//beacon-chain:__subpackages__"],
|
visibility = ["//beacon-chain:__subpackages__"],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/core:go_default_library",
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/p2p/peers/peerdata:go_default_library",
|
"//beacon-chain/p2p/peers/peerdata:go_default_library",
|
||||||
"//beacon-chain/p2p/peers/scorers:go_default_library",
|
"//beacon-chain/p2p/peers/scorers:go_default_library",
|
||||||
"//config/features:go_default_library",
|
"//config/features:go_default_library",
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ import (
|
|||||||
manet "github.com/multiformats/go-multiaddr/net"
|
manet "github.com/multiformats/go-multiaddr/net"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/go-bitfield"
|
"github.com/prysmaticlabs/go-bitfield"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/p2p/peers/peerdata"
|
"github.com/prysmaticlabs/prysm/beacon-chain/p2p/peers/peerdata"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/p2p/peers/scorers"
|
"github.com/prysmaticlabs/prysm/beacon-chain/p2p/peers/scorers"
|
||||||
"github.com/prysmaticlabs/prysm/config/features"
|
"github.com/prysmaticlabs/prysm/config/features"
|
||||||
@@ -707,7 +707,7 @@ func (p *Status) BestNonFinalized(minPeers int, ourHeadEpoch types.Epoch) (types
|
|||||||
for _, pid := range connected {
|
for _, pid := range connected {
|
||||||
peerChainState, err := p.ChainState(pid)
|
peerChainState, err := p.ChainState(pid)
|
||||||
if err == nil && peerChainState != nil && peerChainState.HeadSlot > ourHeadSlot {
|
if err == nil && peerChainState != nil && peerChainState.HeadSlot > ourHeadSlot {
|
||||||
epoch := core.SlotToEpoch(peerChainState.HeadSlot)
|
epoch := coreTime.SlotToEpoch(peerChainState.HeadSlot)
|
||||||
epochVotes[epoch]++
|
epochVotes[epoch]++
|
||||||
pidEpoch[pid] = epoch
|
pidEpoch[pid] = epoch
|
||||||
pidHead[pid] = peerChainState.HeadSlot
|
pidHead[pid] = peerChainState.HeadSlot
|
||||||
@@ -876,7 +876,7 @@ func (p *Status) HighestEpoch() types.Epoch {
|
|||||||
highestSlot = peerData.ChainState.HeadSlot
|
highestSlot = peerData.ChainState.HeadSlot
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return core.SlotToEpoch(highestSlot)
|
return coreTime.SlotToEpoch(highestSlot)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ConnectedPeerLimit returns the peer limit of
|
// ConnectedPeerLimit returns the peer limit of
|
||||||
|
|||||||
@@ -19,11 +19,11 @@ go_library(
|
|||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
"//beacon-chain/cache/depositcache:go_default_library",
|
"//beacon-chain/cache/depositcache:go_default_library",
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/blocks:go_default_library",
|
"//beacon-chain/core/blocks:go_default_library",
|
||||||
"//beacon-chain/core/feed:go_default_library",
|
"//beacon-chain/core/feed:go_default_library",
|
||||||
"//beacon-chain/core/feed/state:go_default_library",
|
"//beacon-chain/core/feed/state:go_default_library",
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/core/transition:go_default_library",
|
"//beacon-chain/core/transition:go_default_library",
|
||||||
"//beacon-chain/db:go_default_library",
|
"//beacon-chain/db:go_default_library",
|
||||||
"//beacon-chain/powchain/types:go_default_library",
|
"//beacon-chain/powchain/types:go_default_library",
|
||||||
@@ -76,11 +76,11 @@ go_test(
|
|||||||
deps = [
|
deps = [
|
||||||
"//async/event:go_default_library",
|
"//async/event:go_default_library",
|
||||||
"//beacon-chain/cache/depositcache:go_default_library",
|
"//beacon-chain/cache/depositcache:go_default_library",
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/feed:go_default_library",
|
"//beacon-chain/core/feed:go_default_library",
|
||||||
"//beacon-chain/core/feed/state:go_default_library",
|
"//beacon-chain/core/feed/state:go_default_library",
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
"//beacon-chain/core/signing:go_default_library",
|
"//beacon-chain/core/signing:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/db:go_default_library",
|
"//beacon-chain/db:go_default_library",
|
||||||
"//beacon-chain/db/testing:go_default_library",
|
"//beacon-chain/db/testing:go_default_library",
|
||||||
"//beacon-chain/powchain/testing:go_default_library",
|
"//beacon-chain/powchain/testing:go_default_library",
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ import (
|
|||||||
"github.com/prometheus/client_golang/prometheus"
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
"github.com/prometheus/client_golang/prometheus/promauto"
|
"github.com/prometheus/client_golang/prometheus/promauto"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/cache/depositcache"
|
"github.com/prysmaticlabs/prysm/beacon-chain/cache/depositcache"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
|
||||||
statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state"
|
statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state"
|
||||||
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/transition"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/db"
|
"github.com/prysmaticlabs/prysm/beacon-chain/db"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/powchain/types"
|
"github.com/prysmaticlabs/prysm/beacon-chain/powchain/types"
|
||||||
@@ -891,7 +891,7 @@ func (s *Service) cacheHeadersForEth1DataVote(ctx context.Context) error {
|
|||||||
// determines the earliest voting block from which to start caching all our previous headers from.
|
// determines the earliest voting block from which to start caching all our previous headers from.
|
||||||
func (s *Service) determineEarliestVotingBlock(ctx context.Context, followBlock uint64) (uint64, error) {
|
func (s *Service) determineEarliestVotingBlock(ctx context.Context, followBlock uint64) (uint64, error) {
|
||||||
genesisTime := s.chainStartData.GenesisTime
|
genesisTime := s.chainStartData.GenesisTime
|
||||||
currSlot := core.CurrentSlot(genesisTime)
|
currSlot := coreTime.CurrentSlot(genesisTime)
|
||||||
|
|
||||||
// In the event genesis has not occurred yet, we just request go back follow_distance blocks.
|
// In the event genesis has not occurred yet, we just request go back follow_distance blocks.
|
||||||
if genesisTime == 0 || currSlot == 0 {
|
if genesisTime == 0 || currSlot == 0 {
|
||||||
@@ -901,7 +901,7 @@ func (s *Service) determineEarliestVotingBlock(ctx context.Context, followBlock
|
|||||||
}
|
}
|
||||||
return earliestBlk, nil
|
return earliestBlk, nil
|
||||||
}
|
}
|
||||||
votingTime := core.VotingPeriodStartTime(genesisTime, currSlot)
|
votingTime := coreTime.VotingPeriodStartTime(genesisTime, currSlot)
|
||||||
followBackDist := 2 * params.BeaconConfig().SecondsPerETH1Block * params.BeaconConfig().Eth1FollowDistance
|
followBackDist := 2 * params.BeaconConfig().SecondsPerETH1Block * params.BeaconConfig().Eth1FollowDistance
|
||||||
if followBackDist > votingTime {
|
if followBackDist > votingTime {
|
||||||
return 0, errors.Errorf("invalid genesis time provided. %d > %d", followBackDist, votingTime)
|
return 0, errors.Errorf("invalid genesis time provided. %d > %d", followBackDist, votingTime)
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import (
|
|||||||
gethTypes "github.com/ethereum/go-ethereum/core/types"
|
gethTypes "github.com/ethereum/go-ethereum/core/types"
|
||||||
"github.com/prysmaticlabs/prysm/async/event"
|
"github.com/prysmaticlabs/prysm/async/event"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/cache/depositcache"
|
"github.com/prysmaticlabs/prysm/beacon-chain/cache/depositcache"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
dbutil "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
|
dbutil "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
|
||||||
mockPOW "github.com/prysmaticlabs/prysm/beacon-chain/powchain/testing"
|
mockPOW "github.com/prysmaticlabs/prysm/beacon-chain/powchain/testing"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/state/stategen"
|
"github.com/prysmaticlabs/prysm/beacon-chain/state/stategen"
|
||||||
@@ -534,7 +534,7 @@ func TestInitDepositCacheWithFinalization_OK(t *testing.T) {
|
|||||||
require.NoError(t, stateGen.SaveState(ctx, headRoot, emptyState))
|
require.NoError(t, stateGen.SaveState(ctx, headRoot, emptyState))
|
||||||
require.NoError(t, beaconDB.SaveState(ctx, emptyState, headRoot))
|
require.NoError(t, beaconDB.SaveState(ctx, emptyState, headRoot))
|
||||||
require.NoError(t, beaconDB.SaveBlock(ctx, wrapper.WrappedPhase0SignedBeaconBlock(headBlock)))
|
require.NoError(t, beaconDB.SaveBlock(ctx, wrapper.WrappedPhase0SignedBeaconBlock(headBlock)))
|
||||||
require.NoError(t, beaconDB.SaveFinalizedCheckpoint(ctx, ðpb.Checkpoint{Epoch: core.SlotToEpoch(0), Root: headRoot[:]}))
|
require.NoError(t, beaconDB.SaveFinalizedCheckpoint(ctx, ðpb.Checkpoint{Epoch: coreTime.SlotToEpoch(0), Root: headRoot[:]}))
|
||||||
|
|
||||||
s.chainStartData.Chainstarted = true
|
s.chainStartData.Chainstarted = true
|
||||||
require.NoError(t, s.initDepositCaches(context.Background(), ctrs))
|
require.NoError(t, s.initDepositCaches(context.Background(), ctrs))
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ go_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//api/gateway/apimiddleware:go_default_library",
|
"//api/gateway/apimiddleware:go_default_library",
|
||||||
"//api/grpc:go_default_library",
|
"//api/grpc:go_default_library",
|
||||||
"//beacon-chain/core:go_default_library",
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/rpc/eth/events:go_default_library",
|
"//beacon-chain/rpc/eth/events:go_default_library",
|
||||||
"//config/params:go_default_library",
|
"//config/params:go_default_library",
|
||||||
"//encoding/bytesutil:go_default_library",
|
"//encoding/bytesutil:go_default_library",
|
||||||
@@ -37,7 +37,7 @@ go_test(
|
|||||||
deps = [
|
deps = [
|
||||||
"//api/gateway/apimiddleware:go_default_library",
|
"//api/gateway/apimiddleware:go_default_library",
|
||||||
"//api/grpc:go_default_library",
|
"//api/grpc:go_default_library",
|
||||||
"//beacon-chain/core:go_default_library",
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/rpc/eth/events:go_default_library",
|
"//beacon-chain/rpc/eth/events:go_default_library",
|
||||||
"//config/params:go_default_library",
|
"//config/params:go_default_library",
|
||||||
"//encoding/bytesutil:go_default_library",
|
"//encoding/bytesutil:go_default_library",
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import (
|
|||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
types "github.com/prysmaticlabs/eth2-types"
|
types "github.com/prysmaticlabs/eth2-types"
|
||||||
"github.com/prysmaticlabs/prysm/api/gateway/apimiddleware"
|
"github.com/prysmaticlabs/prysm/api/gateway/apimiddleware"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
||||||
ethpbv2 "github.com/prysmaticlabs/prysm/proto/eth/v2"
|
ethpbv2 "github.com/prysmaticlabs/prysm/proto/eth/v2"
|
||||||
@@ -208,7 +208,7 @@ func setInitialPublishBlockPostRequest(endpoint *apimiddleware.Endpoint,
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return false, apimiddleware.InternalServerErrorWithMessage(err, "slot is not an unsigned integer")
|
return false, apimiddleware.InternalServerErrorWithMessage(err, "slot is not an unsigned integer")
|
||||||
}
|
}
|
||||||
if core.SlotToEpoch(types.Slot(slot)) < params.BeaconConfig().AltairForkEpoch {
|
if time.SlotToEpoch(types.Slot(slot)) < params.BeaconConfig().AltairForkEpoch {
|
||||||
endpoint.PostRequest = &signedBeaconBlockContainerJson{}
|
endpoint.PostRequest = &signedBeaconBlockContainerJson{}
|
||||||
} else {
|
} else {
|
||||||
endpoint.PostRequest = &signedBeaconBlockAltairContainerJson{}
|
endpoint.PostRequest = &signedBeaconBlockAltairContainerJson{}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import (
|
|||||||
|
|
||||||
"github.com/gogo/protobuf/types"
|
"github.com/gogo/protobuf/types"
|
||||||
"github.com/prysmaticlabs/prysm/api/gateway/apimiddleware"
|
"github.com/prysmaticlabs/prysm/api/gateway/apimiddleware"
|
||||||
"github.com/prysmaticlabs/prysm/beacon-chain/core"
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
||||||
"github.com/prysmaticlabs/prysm/config/params"
|
"github.com/prysmaticlabs/prysm/config/params"
|
||||||
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
||||||
ethpbv2 "github.com/prysmaticlabs/prysm/proto/eth/v2"
|
ethpbv2 "github.com/prysmaticlabs/prysm/proto/eth/v2"
|
||||||
@@ -384,7 +384,7 @@ func TestSetInitialPublishBlockPostRequest(t *testing.T) {
|
|||||||
assert.Equal(t, reflect.TypeOf(signedBeaconBlockContainerJson{}).Name(), reflect.Indirect(reflect.ValueOf(endpoint.PostRequest)).Type().Name())
|
assert.Equal(t, reflect.TypeOf(signedBeaconBlockContainerJson{}).Name(), reflect.Indirect(reflect.ValueOf(endpoint.PostRequest)).Type().Name())
|
||||||
})
|
})
|
||||||
t.Run("Altair", func(t *testing.T) {
|
t.Run("Altair", func(t *testing.T) {
|
||||||
slot, err := core.StartSlot(params.BeaconConfig().AltairForkEpoch)
|
slot, err := time.StartSlot(params.BeaconConfig().AltairForkEpoch)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
s.Message = struct{ Slot string }{Slot: strconv.FormatUint(uint64(slot), 10)}
|
s.Message = struct{ Slot string }{Slot: strconv.FormatUint(uint64(slot), 10)}
|
||||||
j, err := json.Marshal(s)
|
j, err := json.Marshal(s)
|
||||||
|
|||||||
@@ -17,13 +17,13 @@ go_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//api/grpc:go_default_library",
|
"//api/grpc:go_default_library",
|
||||||
"//beacon-chain/blockchain:go_default_library",
|
"//beacon-chain/blockchain:go_default_library",
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/altair:go_default_library",
|
"//beacon-chain/core/altair:go_default_library",
|
||||||
"//beacon-chain/core/blocks:go_default_library",
|
"//beacon-chain/core/blocks:go_default_library",
|
||||||
"//beacon-chain/core/feed:go_default_library",
|
"//beacon-chain/core/feed:go_default_library",
|
||||||
"//beacon-chain/core/feed/block:go_default_library",
|
"//beacon-chain/core/feed/block:go_default_library",
|
||||||
"//beacon-chain/core/feed/operation:go_default_library",
|
"//beacon-chain/core/feed/operation:go_default_library",
|
||||||
"//beacon-chain/core/helpers:go_default_library",
|
"//beacon-chain/core/helpers:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/db:go_default_library",
|
"//beacon-chain/db:go_default_library",
|
||||||
"//beacon-chain/db/filters:go_default_library",
|
"//beacon-chain/db/filters:go_default_library",
|
||||||
"//beacon-chain/operations/attestations:go_default_library",
|
"//beacon-chain/operations/attestations:go_default_library",
|
||||||
@@ -76,8 +76,8 @@ go_test(
|
|||||||
deps = [
|
deps = [
|
||||||
"//api/grpc:go_default_library",
|
"//api/grpc:go_default_library",
|
||||||
"//beacon-chain/blockchain/testing:go_default_library",
|
"//beacon-chain/blockchain/testing:go_default_library",
|
||||||
"//beacon-chain/core:go_default_library",
|
|
||||||
"//beacon-chain/core/signing:go_default_library",
|
"//beacon-chain/core/signing:go_default_library",
|
||||||
|
"//beacon-chain/core/time:go_default_library",
|
||||||
"//beacon-chain/db:go_default_library",
|
"//beacon-chain/db:go_default_library",
|
||||||
"//beacon-chain/db/testing:go_default_library",
|
"//beacon-chain/db/testing:go_default_library",
|
||||||
"//beacon-chain/operations/attestations:go_default_library",
|
"//beacon-chain/operations/attestations:go_default_library",
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user