From 3f8f5edb3f082ddbdccc19492995612ad3cdcc79 Mon Sep 17 00:00:00 2001 From: terence tsao Date: Wed, 14 Jul 2021 13:25:28 -0700 Subject: [PATCH] Clean up deposits --- beacon-chain/core/altair/deposit.go | 18 ------- beacon-chain/core/altair/deposit_test.go | 65 ------------------------ shared/testutil/BUILD.bazel | 1 + shared/testutil/altair.go | 21 +++++++- 4 files changed, 21 insertions(+), 84 deletions(-) diff --git a/beacon-chain/core/altair/deposit.go b/beacon-chain/core/altair/deposit.go index 032a77dc86..82a4b4d1d3 100644 --- a/beacon-chain/core/altair/deposit.go +++ b/beacon-chain/core/altair/deposit.go @@ -12,24 +12,6 @@ import ( "github.com/prysmaticlabs/prysm/shared/params" ) -// ProcessPreGenesisDeposits processes a deposit for the beacon state Altair before chain start. -func ProcessPreGenesisDeposits( - ctx context.Context, - beaconState iface.BeaconStateAltair, - deposits []*ethpb.Deposit, -) (iface.BeaconStateAltair, error) { - var err error - beaconState, err = ProcessDeposits(ctx, beaconState, deposits) - if err != nil { - return nil, errors.Wrap(err, "could not process deposit") - } - beaconState, err = blocks.ActivateValidatorWithEffectiveBalance(beaconState, deposits) - if err != nil { - return nil, err - } - return beaconState, nil -} - // ProcessDeposits processes validator deposits for beacon state Altair. func ProcessDeposits( ctx context.Context, diff --git a/beacon-chain/core/altair/deposit_test.go b/beacon-chain/core/altair/deposit_test.go index 0f66f6f885..691a515471 100644 --- a/beacon-chain/core/altair/deposit_test.go +++ b/beacon-chain/core/altair/deposit_test.go @@ -4,7 +4,6 @@ import ( "context" "testing" - types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core/altair" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" stateAltair "github.com/prysmaticlabs/prysm/beacon-chain/state/v2" @@ -245,67 +244,3 @@ func TestProcessDeposit_SkipsInvalidDeposit(t *testing.T) { t.Errorf("Expected validator balance at index 0 to stay 0, received: %v", newState.Balances()[0]) } } - -func TestPreGenesisDeposits_SkipInvalidDeposit(t *testing.T) { - dep, _, err := testutil.DeterministicDepositsAndKeys(100) - require.NoError(t, err) - dep[0].Data.Signature = make([]byte, 96) - trie, _, err := testutil.DepositTrieFromDeposits(dep) - require.NoError(t, err) - - for i := range dep { - proof, err := trie.MerkleProof(i) - require.NoError(t, err) - dep[i].Proof = proof - } - root := trie.Root() - eth1Data := ðpb.Eth1Data{ - DepositRoot: root[:], - DepositCount: 1, - } - registry := []*ethpb.Validator{ - { - PublicKey: []byte{1}, - WithdrawalCredentials: []byte{1, 2, 3}, - }, - } - balances := []uint64{0} - beaconState, err := stateAltair.InitializeFromProto(&pb.BeaconStateAltair{ - Validators: registry, - Balances: balances, - Eth1Data: eth1Data, - Fork: &pb.Fork{ - PreviousVersion: params.BeaconConfig().GenesisForkVersion, - CurrentVersion: params.BeaconConfig().GenesisForkVersion, - }, - }) - require.NoError(t, err) - newState, err := altair.ProcessPreGenesisDeposits(context.Background(), beaconState, dep) - require.NoError(t, err, "Expected invalid block deposit to be ignored without error") - - _, ok := newState.ValidatorIndexByPubkey(bytesutil.ToBytes48(dep[0].Data.PublicKey)) - require.Equal(t, false, ok, "bad pubkey should not exist in state") - - for i := 1; i < newState.NumValidators(); i++ { - val, err := newState.ValidatorAtIndex(types.ValidatorIndex(i)) - require.NoError(t, err) - require.Equal(t, params.BeaconConfig().MaxEffectiveBalance, val.EffectiveBalance, "unequal effective balance") - require.Equal(t, types.Epoch(0), val.ActivationEpoch) - require.Equal(t, types.Epoch(0), val.ActivationEligibilityEpoch) - } - if newState.Eth1DepositIndex() != 100 { - t.Errorf( - "Expected Eth1DepositIndex to be increased by 99 after processing an invalid deposit, received change: %v", - newState.Eth1DepositIndex(), - ) - } - if len(newState.Validators()) != 100 { - t.Errorf("Expected validator list to have length 100, received: %v", len(newState.Validators())) - } - if len(newState.Balances()) != 100 { - t.Errorf("Expected validator balances list to have length 100, received: %v", len(newState.Balances())) - } - if newState.Balances()[0] != 0 { - t.Errorf("Expected validator balance at index 0 to stay 0, received: %v", newState.Balances()[0]) - } -} diff --git a/shared/testutil/BUILD.bazel b/shared/testutil/BUILD.bazel index ff1abd9546..10e5ea3b10 100644 --- a/shared/testutil/BUILD.bazel +++ b/shared/testutil/BUILD.bazel @@ -19,6 +19,7 @@ go_library( visibility = ["//visibility:public"], deps = [ "//beacon-chain/core/altair:go_default_library", + "//beacon-chain/core/blocks:go_default_library", "//beacon-chain/core/helpers:go_default_library", "//beacon-chain/core/state:go_default_library", "//beacon-chain/p2p/types:go_default_library", diff --git a/shared/testutil/altair.go b/shared/testutil/altair.go index a11c1a775e..fc514264d4 100644 --- a/shared/testutil/altair.go +++ b/shared/testutil/altair.go @@ -9,6 +9,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/go-bitfield" "github.com/prysmaticlabs/prysm/beacon-chain/core/altair" + "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" "github.com/prysmaticlabs/prysm/beacon-chain/core/state" iface "github.com/prysmaticlabs/prysm/beacon-chain/state/interface" @@ -54,7 +55,7 @@ func GenesisBeaconState(ctx context.Context, deposits []*ethpb.Deposit, genesisT return nil, err } - state, err = altair.ProcessPreGenesisDeposits(ctx, state, deposits) + state, err = processPreGenesisDeposits(ctx, state, deposits) if err != nil { return nil, errors.Wrap(err, "could not process validator deposits") } @@ -62,6 +63,24 @@ func GenesisBeaconState(ctx context.Context, deposits []*ethpb.Deposit, genesisT return buildGenesisBeaconState(genesisTime, state, state.Eth1Data()) } +// processPreGenesisDeposits processes a deposit for the beacon state Altair before chain start. +func processPreGenesisDeposits( + ctx context.Context, + beaconState iface.BeaconStateAltair, + deposits []*ethpb.Deposit, +) (iface.BeaconStateAltair, error) { + var err error + beaconState, err = altair.ProcessDeposits(ctx, beaconState, deposits) + if err != nil { + return nil, errors.Wrap(err, "could not process deposit") + } + beaconState, err = blocks.ActivateValidatorWithEffectiveBalance(beaconState, deposits) + if err != nil { + return nil, err + } + return beaconState, nil +} + func buildGenesisBeaconState(genesisTime uint64, preState iface.BeaconStateAltair, eth1Data *ethpb.Eth1Data) (iface.BeaconStateAltair, error) { if eth1Data == nil { return nil, errors.New("no eth1data provided for genesis state")