g/wei math->primitives, some new helpers (#14026)

Co-authored-by: Kasey Kirkham <kasey@users.noreply.github.com>
This commit is contained in:
kasey
2024-05-20 10:40:46 -05:00
committed by GitHub
parent 8a12b78684
commit 9befb6bd06
58 changed files with 398 additions and 358 deletions

View File

@@ -13,7 +13,6 @@ go_library(
"//config/fieldparams:go_default_library",
"//consensus-types/interfaces:go_default_library",
"//consensus-types/primitives:go_default_library",
"//math:go_default_library",
"//proto/engine/v1:go_default_library",
"//proto/prysm/v1alpha1:go_default_library",
"@com_github_prometheus_client_golang//prometheus:go_default_library",

View File

@@ -11,7 +11,6 @@ import (
fieldparams "github.com/prysmaticlabs/prysm/v5/config/fieldparams"
"github.com/prysmaticlabs/prysm/v5/consensus-types/interfaces"
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
"github.com/prysmaticlabs/prysm/v5/math"
enginev1 "github.com/prysmaticlabs/prysm/v5/proto/engine/v1"
ethpb "github.com/prysmaticlabs/prysm/v5/proto/prysm/v1alpha1"
)
@@ -182,7 +181,7 @@ type ReadOnlyEth1Data interface {
// ReadOnlyExits defines a struct which only has read access to Exit related methods.
type ReadOnlyExits interface {
ExitBalanceToConsume() (math.Gwei, error)
ExitBalanceToConsume() (primitives.Gwei, error)
EarliestExitEpoch() (primitives.Epoch, error)
}
@@ -219,13 +218,13 @@ type ReadOnlySyncCommittee interface {
}
type ReadOnlyDeposits interface {
DepositBalanceToConsume() (math.Gwei, error)
DepositBalanceToConsume() (primitives.Gwei, error)
DepositReceiptsStartIndex() (uint64, error)
PendingBalanceDeposits() ([]*ethpb.PendingBalanceDeposit, error)
}
type ReadOnlyConsolidations interface {
ConsolidationBalanceToConsume() (math.Gwei, error)
ConsolidationBalanceToConsume() (primitives.Gwei, error)
EarliestConsolidationEpoch() (primitives.Epoch, error)
PendingConsolidations() ([]*ethpb.PendingConsolidation, error)
NumPendingConsolidations() (uint64, error)
@@ -249,7 +248,7 @@ type WriteOnlyEth1Data interface {
SetEth1DataVotes(val []*ethpb.Eth1Data) error
AppendEth1DataVotes(val *ethpb.Eth1Data) error
SetEth1DepositIndex(val uint64) error
ExitEpochAndUpdateChurn(exitBalance math.Gwei) (primitives.Epoch, error)
ExitEpochAndUpdateChurn(exitBalance primitives.Gwei) (primitives.Epoch, error)
}
// WriteOnlyValidators defines a struct which only has write access to validators methods.
@@ -321,7 +320,7 @@ type WriteOnlyWithdrawals interface {
type WriteOnlyConsolidations interface {
AppendPendingConsolidation(val *ethpb.PendingConsolidation) error
SetConsolidationBalanceToConsume(math.Gwei) error
SetConsolidationBalanceToConsume(primitives.Gwei) error
SetEarliestConsolidationEpoch(epoch primitives.Epoch) error
SetPendingConsolidations(val []*ethpb.PendingConsolidation) error
}
@@ -330,5 +329,5 @@ type WriteOnlyDeposits interface {
AppendPendingBalanceDeposit(index primitives.ValidatorIndex, amount uint64) error
SetDepositReceiptsStartIndex(index uint64) error
SetPendingBalanceDeposits(val []*ethpb.PendingBalanceDeposit) error
SetDepositBalanceToConsume(math.Gwei) error
SetDepositBalanceToConsume(primitives.Gwei) error
}

View File

@@ -143,7 +143,6 @@ go_test(
"//container/trie:go_default_library",
"//crypto/rand:go_default_library",
"//encoding/bytesutil:go_default_library",
"//math:go_default_library",
"//proto/engine/v1:go_default_library",
"//proto/prysm/v1alpha1:go_default_library",
"//runtime/interop:go_default_library",

View File

@@ -13,7 +13,6 @@ import (
"github.com/prysmaticlabs/prysm/v5/beacon-chain/state/stateutil"
"github.com/prysmaticlabs/prysm/v5/config/features"
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
"github.com/prysmaticlabs/prysm/v5/math"
enginev1 "github.com/prysmaticlabs/prysm/v5/proto/engine/v1"
ethpb "github.com/prysmaticlabs/prysm/v5/proto/prysm/v1alpha1"
)
@@ -64,10 +63,10 @@ type BeaconState struct {
// Electra fields
depositReceiptsStartIndex uint64
depositBalanceToConsume math.Gwei
exitBalanceToConsume math.Gwei
depositBalanceToConsume primitives.Gwei
exitBalanceToConsume primitives.Gwei
earliestExitEpoch primitives.Epoch
consolidationBalanceToConsume math.Gwei
consolidationBalanceToConsume primitives.Gwei
earliestConsolidationEpoch primitives.Epoch
pendingBalanceDeposits []*ethpb.PendingBalanceDeposit // pending_balance_deposits: List[PendingBalanceDeposit, PENDING_BALANCE_DEPOSITS_LIMIT]
pendingPartialWithdrawals []*ethpb.PendingPartialWithdrawal // pending_partial_withdrawals: List[PartialWithdrawal, PENDING_PARTIAL_WITHDRAWALS_LIMIT]
@@ -121,10 +120,10 @@ type beaconStateMarshalable struct {
NextWithdrawalIndex uint64 `json:"next_withdrawal_index" yaml:"next_withdrawal_index"`
NextWithdrawalValidatorIndex primitives.ValidatorIndex `json:"next_withdrawal_validator_index" yaml:"next_withdrawal_validator_index"`
DepositReceiptsStartIndex uint64 `json:"deposit_receipts_start_index" yaml:"deposit_receipts_start_index"`
DepositBalanceToConsume math.Gwei `json:"deposit_balance_to_consume" yaml:"deposit_balance_to_consume"`
ExitBalanceToConsume math.Gwei `json:"exit_balance_to_consume" yaml:"exit_balance_to_consume"`
DepositBalanceToConsume primitives.Gwei `json:"deposit_balance_to_consume" yaml:"deposit_balance_to_consume"`
ExitBalanceToConsume primitives.Gwei `json:"exit_balance_to_consume" yaml:"exit_balance_to_consume"`
EarliestExitEpoch primitives.Epoch `json:"earliest_exit_epoch" yaml:"earliest_exit_epoch"`
ConsolidationBalanceToConsume math.Gwei `json:"consolidation_balance_to_consume" yaml:"consolidation_balance_to_consume"`
ConsolidationBalanceToConsume primitives.Gwei `json:"consolidation_balance_to_consume" yaml:"consolidation_balance_to_consume"`
EarliestConsolidationEpoch primitives.Epoch `json:"earliest_consolidation_epoch" yaml:"earliest_consolidation_epoch"`
PendingBalanceDeposits []*ethpb.PendingBalanceDeposit `json:"pending_balance_deposits" yaml:"pending_balance_deposits"`
PendingPartialWithdrawals []*ethpb.PendingPartialWithdrawal `json:"pending_partial_withdrawals" yaml:"pending_partial_withdrawals"`

View File

@@ -13,7 +13,6 @@ import (
"github.com/prysmaticlabs/prysm/v5/beacon-chain/state/stateutil"
"github.com/prysmaticlabs/prysm/v5/config/features"
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
"github.com/prysmaticlabs/prysm/v5/math"
enginev1 "github.com/prysmaticlabs/prysm/v5/proto/engine/v1"
ethpb "github.com/prysmaticlabs/prysm/v5/proto/prysm/v1alpha1"
)
@@ -64,10 +63,10 @@ type BeaconState struct {
// Electra fields
depositReceiptsStartIndex uint64
depositBalanceToConsume math.Gwei
exitBalanceToConsume math.Gwei
depositBalanceToConsume primitives.Gwei
exitBalanceToConsume primitives.Gwei
earliestExitEpoch primitives.Epoch
consolidationBalanceToConsume math.Gwei
consolidationBalanceToConsume primitives.Gwei
earliestConsolidationEpoch primitives.Epoch
pendingBalanceDeposits []*ethpb.PendingBalanceDeposit // pending_balance_deposits: List[PendingBalanceDeposit, PENDING_BALANCE_DEPOSITS_LIMIT]
pendingPartialWithdrawals []*ethpb.PendingPartialWithdrawal // pending_partial_withdrawals: List[PartialWithdrawal, PENDING_PARTIAL_WITHDRAWALS_LIMIT]
@@ -121,10 +120,10 @@ type beaconStateMarshalable struct {
NextWithdrawalIndex uint64 `json:"next_withdrawal_index" yaml:"next_withdrawal_index"`
NextWithdrawalValidatorIndex primitives.ValidatorIndex `json:"next_withdrawal_validator_index" yaml:"next_withdrawal_validator_index"`
DepositReceiptsStartIndex uint64 `json:"deposit_receipts_start_index" yaml:"deposit_receipts_start_index"`
DepositBalanceToConsume math.Gwei `json:"deposit_balance_to_consume" yaml:"deposit_balance_to_consume"`
ExitBalanceToConsume math.Gwei `json:"exit_balance_to_consume" yaml:"exit_balance_to_consume"`
DepositBalanceToConsume primitives.Gwei `json:"deposit_balance_to_consume" yaml:"deposit_balance_to_consume"`
ExitBalanceToConsume primitives.Gwei `json:"exit_balance_to_consume" yaml:"exit_balance_to_consume"`
EarliestExitEpoch primitives.Epoch `json:"earliest_exit_epoch" yaml:"earliest_exit_epoch"`
ConsolidationBalanceToConsume math.Gwei `json:"consolidation_balance_to_consume" yaml:"consolidation_balance_to_consume"`
ConsolidationBalanceToConsume primitives.Gwei `json:"consolidation_balance_to_consume" yaml:"consolidation_balance_to_consume"`
EarliestConsolidationEpoch primitives.Epoch `json:"earliest_consolidation_epoch" yaml:"earliest_consolidation_epoch"`
PendingBalanceDeposits []*ethpb.PendingBalanceDeposit `json:"pending_balance_deposits" yaml:"pending_balance_deposits"`
PendingPartialWithdrawals []*ethpb.PendingPartialWithdrawal `json:"pending_partial_withdrawals" yaml:"pending_partial_withdrawals"`

View File

@@ -1,7 +1,7 @@
package state_native
import (
"github.com/prysmaticlabs/prysm/v5/math"
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
ethpb "github.com/prysmaticlabs/prysm/v5/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v5/runtime/version"
)
@@ -9,7 +9,7 @@ import (
// DepositBalanceToConsume is a non-mutating call to the beacon state which returns the value of the
// deposit balance to consume field. This method requires access to the RLock on the state and only
// applies in electra or later.
func (b *BeaconState) DepositBalanceToConsume() (math.Gwei, error) {
func (b *BeaconState) DepositBalanceToConsume() (primitives.Gwei, error) {
if b.version < version.Electra {
return 0, errNotSupported("DepositBalanceToConsume", b.version)
}

View File

@@ -5,7 +5,6 @@ import (
state_native "github.com/prysmaticlabs/prysm/v5/beacon-chain/state/state-native"
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
"github.com/prysmaticlabs/prysm/v5/math"
eth "github.com/prysmaticlabs/prysm/v5/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v5/testing/require"
)
@@ -17,7 +16,7 @@ func TestDepositBalanceToConsume(t *testing.T) {
require.NoError(t, err)
dbtc, err := s.DepositBalanceToConsume()
require.NoError(t, err)
require.Equal(t, math.Gwei(44), dbtc)
require.Equal(t, primitives.Gwei(44), dbtc)
// Fails for older than electra state
s, err = state_native.InitializeFromProtoDeneb(&eth.BeaconStateDeneb{})

View File

@@ -2,7 +2,6 @@ package state_native
import (
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
"github.com/prysmaticlabs/prysm/v5/math"
ethpb "github.com/prysmaticlabs/prysm/v5/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v5/runtime/version"
)
@@ -22,7 +21,7 @@ func (b *BeaconState) EarliestConsolidationEpoch() (primitives.Epoch, error) {
// ConsolidationBalanceToConsume is a non-mutating call to the beacon state which returns the value
// of the consolidation balance to consume field. This method requires access to the RLock on the
// state and only applies in electra or later.
func (b *BeaconState) ConsolidationBalanceToConsume() (math.Gwei, error) {
func (b *BeaconState) ConsolidationBalanceToConsume() (primitives.Gwei, error) {
if b.version < version.Electra {
return 0, errNotSupported("ConsolidationBalanceToConsume", b.version)
}

View File

@@ -5,7 +5,6 @@ import (
state_native "github.com/prysmaticlabs/prysm/v5/beacon-chain/state/state-native"
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
"github.com/prysmaticlabs/prysm/v5/math"
ethpb "github.com/prysmaticlabs/prysm/v5/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v5/testing/require"
)
@@ -32,7 +31,7 @@ func TestEarliestConsolidationEpoch(t *testing.T) {
func TestConsolidationBalanceToConsume(t *testing.T) {
t.Run("electra returns expected value", func(t *testing.T) {
want := math.Gwei(10)
want := primitives.Gwei(10)
st, err := state_native.InitializeFromProtoElectra(&ethpb.BeaconStateElectra{
ConsolidationBalanceToConsume: want,
})

View File

@@ -2,12 +2,11 @@ package state_native
import (
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
"github.com/prysmaticlabs/prysm/v5/math"
"github.com/prysmaticlabs/prysm/v5/runtime/version"
)
// ExitBalanceToConsume is used for returning the ExitBalanceToConsume as part of eip 7251
func (b *BeaconState) ExitBalanceToConsume() (math.Gwei, error) {
func (b *BeaconState) ExitBalanceToConsume() (primitives.Gwei, error) {
if b.version < version.Electra {
return 0, errNotSupported("ExitBalanceToConsume", b.version)
}

View File

@@ -5,7 +5,6 @@ import (
state_native "github.com/prysmaticlabs/prysm/v5/beacon-chain/state/state-native"
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
"github.com/prysmaticlabs/prysm/v5/math"
ethpb "github.com/prysmaticlabs/prysm/v5/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v5/testing/require"
"github.com/prysmaticlabs/prysm/v5/testing/util"
@@ -18,7 +17,7 @@ func TestExitBalanceToConsume(t *testing.T) {
require.ErrorContains(t, "is not supported", err)
})
t.Run("electra returns expected value", func(t *testing.T) {
want := math.Gwei(2)
want := primitives.Gwei(2)
dState, err := state_native.InitializeFromProtoElectra(&ethpb.BeaconStateElectra{ExitBalanceToConsume: want})
require.NoError(t, err)
got, err := dState.ExitBalanceToConsume()

View File

@@ -4,7 +4,6 @@ import (
"github.com/prysmaticlabs/prysm/v5/beacon-chain/state/state-native/types"
"github.com/prysmaticlabs/prysm/v5/beacon-chain/state/stateutil"
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
"github.com/prysmaticlabs/prysm/v5/math"
ethpb "github.com/prysmaticlabs/prysm/v5/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v5/runtime/version"
)
@@ -52,7 +51,7 @@ func (b *BeaconState) SetPendingBalanceDeposits(val []*ethpb.PendingBalanceDepos
// SetDepositBalanceToConsume is a mutating call to the beacon state which sets the deposit balance
// to consume value to the given value. This method requires access to the Lock on the state and
// only applies in electra or later.
func (b *BeaconState) SetDepositBalanceToConsume(dbtc math.Gwei) error {
func (b *BeaconState) SetDepositBalanceToConsume(dbtc primitives.Gwei) error {
if b.version < version.Electra {
return errNotSupported("SetDepositBalanceToConsume", b.version)
}

View File

@@ -5,7 +5,6 @@ import (
state_native "github.com/prysmaticlabs/prysm/v5/beacon-chain/state/state-native"
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
"github.com/prysmaticlabs/prysm/v5/math"
eth "github.com/prysmaticlabs/prysm/v5/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v5/testing/require"
)
@@ -52,7 +51,7 @@ func TestSetDepositBalanceToConsume(t *testing.T) {
require.NoError(t, s.SetDepositBalanceToConsume(10))
dbtc, err := s.DepositBalanceToConsume()
require.NoError(t, err)
require.Equal(t, math.Gwei(10), dbtc)
require.Equal(t, primitives.Gwei(10), dbtc)
// Fails for versions older than electra
s, err = state_native.InitializeFromProtoDeneb(&eth.BeaconStateDeneb{})

View File

@@ -4,7 +4,6 @@ import (
"github.com/prysmaticlabs/prysm/v5/beacon-chain/core/helpers"
"github.com/prysmaticlabs/prysm/v5/beacon-chain/state/state-native/types"
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
"github.com/prysmaticlabs/prysm/v5/math"
"github.com/prysmaticlabs/prysm/v5/runtime/version"
"github.com/prysmaticlabs/prysm/v5/time/slots"
)
@@ -34,7 +33,7 @@ import (
// state.earliest_exit_epoch = earliest_exit_epoch
//
// return state.earliest_exit_epoch
func (b *BeaconState) ExitEpochAndUpdateChurn(exitBalance math.Gwei) (primitives.Epoch, error) {
func (b *BeaconState) ExitEpochAndUpdateChurn(exitBalance primitives.Gwei) (primitives.Epoch, error) {
if b.version < version.Electra {
return 0, errNotSupported("ExitEpochAndUpdateChurn", b.version)
}
@@ -49,10 +48,10 @@ func (b *BeaconState) ExitEpochAndUpdateChurn(exitBalance math.Gwei) (primitives
defer b.lock.Unlock()
earliestExitEpoch := max(b.earliestExitEpoch, helpers.ActivationExitEpoch(slots.ToEpoch(b.slot)))
perEpochChurn := helpers.ActivationExitChurnLimit(math.Gwei(activeBal)) // Guaranteed to be non-zero.
perEpochChurn := helpers.ActivationExitChurnLimit(primitives.Gwei(activeBal)) // Guaranteed to be non-zero.
// New epoch for exits
var exitBalanceToConsume math.Gwei
var exitBalanceToConsume primitives.Gwei
if b.earliestExitEpoch < earliestExitEpoch {
exitBalanceToConsume = perEpochChurn
} else {
@@ -64,7 +63,7 @@ func (b *BeaconState) ExitEpochAndUpdateChurn(exitBalance math.Gwei) (primitives
balanceToProcess := exitBalance - exitBalanceToConsume
additionalEpochs := primitives.Epoch((balanceToProcess-1)/perEpochChurn + 1)
earliestExitEpoch += additionalEpochs
exitBalanceToConsume += math.Gwei(additionalEpochs) * perEpochChurn
exitBalanceToConsume += primitives.Gwei(additionalEpochs) * perEpochChurn
}
// Consume the balance and update state variables.

View File

@@ -8,7 +8,6 @@ import (
state_native "github.com/prysmaticlabs/prysm/v5/beacon-chain/state/state-native"
"github.com/prysmaticlabs/prysm/v5/config/params"
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
"github.com/prysmaticlabs/prysm/v5/math"
eth "github.com/prysmaticlabs/prysm/v5/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v5/testing/require"
"github.com/prysmaticlabs/prysm/v5/testing/util"
@@ -30,7 +29,7 @@ func TestExitEpochAndUpdateChurn_SpectestCase(t *testing.T) {
val, err := s.ValidatorAtIndex(0)
require.NoError(t, err)
ee, err := s.ExitEpochAndUpdateChurn(math.Gwei(val.EffectiveBalance))
ee, err := s.ExitEpochAndUpdateChurn(primitives.Gwei(val.EffectiveBalance))
require.NoError(t, err)
require.Equal(t, primitives.Epoch(262), ee)
@@ -39,7 +38,7 @@ func TestExitEpochAndUpdateChurn_SpectestCase(t *testing.T) {
if !ok {
t.Fatal("wrong proto")
}
require.Equal(t, math.Gwei(127000000000), pb.ExitBalanceToConsume)
require.Equal(t, primitives.Gwei(127000000000), pb.ExitBalanceToConsume)
require.Equal(t, primitives.Epoch(262), pb.EarliestExitEpoch)
// Fails for versions older than electra
@@ -62,15 +61,15 @@ func TestExitEpochAndUpdateChurn(t *testing.T) {
},
Balances: []uint64{params.BeaconConfig().MaxEffectiveBalanceElectra},
EarliestExitEpoch: epoch - params.BeaconConfig().MaxSeedLookahead*2, // Old, relative to slot.
ExitBalanceToConsume: math.Gwei(20_000_000),
ExitBalanceToConsume: primitives.Gwei(20_000_000),
})
require.NoError(t, err)
activeBal, err := helpers.TotalActiveBalance(st)
require.NoError(t, err)
exitBal := math.Gwei(10_000_000)
exitBal := primitives.Gwei(10_000_000)
wantExitBalToConsume := helpers.ActivationExitChurnLimit(math.Gwei(activeBal)) - exitBal
wantExitBalToConsume := helpers.ActivationExitChurnLimit(primitives.Gwei(activeBal)) - exitBal
ee, err := st.ExitEpochAndUpdateChurn(exitBal)
require.NoError(t, err)
@@ -97,16 +96,16 @@ func TestExitEpochAndUpdateChurn(t *testing.T) {
},
Balances: []uint64{params.BeaconConfig().MaxEffectiveBalanceElectra},
EarliestExitEpoch: epoch,
ExitBalanceToConsume: math.Gwei(20_000_000),
ExitBalanceToConsume: primitives.Gwei(20_000_000),
})
require.NoError(t, err)
activeBal, err := helpers.TotalActiveBalance(st)
require.NoError(t, err)
activationExitChurnLimit := helpers.ActivationExitChurnLimit(math.Gwei(activeBal))
activationExitChurnLimit := helpers.ActivationExitChurnLimit(primitives.Gwei(activeBal))
exitBal := activationExitChurnLimit * 2
wantExitBalToConsume := math.Gwei(0)
wantExitBalToConsume := primitives.Gwei(0)
ee, err := st.ExitEpochAndUpdateChurn(exitBal)
require.NoError(t, err)
@@ -133,13 +132,13 @@ func TestExitEpochAndUpdateChurn(t *testing.T) {
},
Balances: []uint64{params.BeaconConfig().MaxEffectiveBalanceElectra},
EarliestExitEpoch: epoch + 10_000,
ExitBalanceToConsume: math.Gwei(20_000_000),
ExitBalanceToConsume: primitives.Gwei(20_000_000),
})
require.NoError(t, err)
exitBal := math.Gwei(10_000_000)
exitBal := primitives.Gwei(10_000_000)
wantExitBalToConsume := math.Gwei(20_000_000) - exitBal
wantExitBalToConsume := primitives.Gwei(20_000_000) - exitBal
ee, err := st.ExitEpochAndUpdateChurn(exitBal)
require.NoError(t, err)
@@ -166,14 +165,14 @@ func TestExitEpochAndUpdateChurn(t *testing.T) {
},
Balances: []uint64{params.BeaconConfig().MaxEffectiveBalanceElectra},
EarliestExitEpoch: epoch + 10_000,
ExitBalanceToConsume: math.Gwei(20_000_000),
ExitBalanceToConsume: primitives.Gwei(20_000_000),
})
require.NoError(t, err)
exitBal := math.Gwei(40_000_000)
exitBal := primitives.Gwei(40_000_000)
activeBal, err := helpers.TotalActiveBalance(st)
require.NoError(t, err)
activationExitChurnLimit := helpers.ActivationExitChurnLimit(math.Gwei(activeBal))
activationExitChurnLimit := helpers.ActivationExitChurnLimit(primitives.Gwei(activeBal))
wantExitBalToConsume := activationExitChurnLimit - 20_000_000
ee, err := st.ExitEpochAndUpdateChurn(exitBal)

View File

@@ -4,7 +4,6 @@ import (
"github.com/prysmaticlabs/prysm/v5/beacon-chain/state/state-native/types"
"github.com/prysmaticlabs/prysm/v5/beacon-chain/state/stateutil"
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
"github.com/prysmaticlabs/prysm/v5/math"
ethpb "github.com/prysmaticlabs/prysm/v5/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v5/runtime/version"
)
@@ -69,7 +68,7 @@ func (b *BeaconState) SetEarliestConsolidationEpoch(epoch primitives.Epoch) erro
// SetConsolidationBalanceToConsume is a mutating call to the beacon state which sets the value of
// the consolidation balance to consume to the provided value. This method requires access to the
// Lock on the state and only applies in electra or later.
func (b *BeaconState) SetConsolidationBalanceToConsume(balance math.Gwei) error {
func (b *BeaconState) SetConsolidationBalanceToConsume(balance primitives.Gwei) error {
if b.version < version.Electra {
return errNotSupported("SetConsolidationBalanceToConsume", b.version)
}

View File

@@ -5,7 +5,6 @@ import (
state_native "github.com/prysmaticlabs/prysm/v5/beacon-chain/state/state-native"
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
"github.com/prysmaticlabs/prysm/v5/math"
eth "github.com/prysmaticlabs/prysm/v5/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v5/testing/require"
)
@@ -67,7 +66,7 @@ func TestSetConsolidationBalanceToConsume(t *testing.T) {
require.NoError(t, s.SetConsolidationBalanceToConsume(10))
cbtc, err := s.ConsolidationBalanceToConsume()
require.NoError(t, err)
require.Equal(t, math.Gwei(10), cbtc)
require.Equal(t, primitives.Gwei(10), cbtc)
// Fails for versions older than electra
s, err = state_native.InitializeFromProtoDeneb(&eth.BeaconStateDeneb{})