mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-09 13:28:01 -05:00
g/wei math->primitives, some new helpers (#14026)
Co-authored-by: Kasey Kirkham <kasey@users.noreply.github.com>
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"`
|
||||
|
||||
@@ -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"`
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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(ð.BeaconStateDeneb{})
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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(ðpb.BeaconStateElectra{
|
||||
ConsolidationBalanceToConsume: want,
|
||||
})
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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(ðpb.BeaconStateElectra{ExitBalanceToConsume: want})
|
||||
require.NoError(t, err)
|
||||
got, err := dState.ExitBalanceToConsume()
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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(ð.BeaconStateDeneb{})
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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(ð.BeaconStateDeneb{})
|
||||
|
||||
Reference in New Issue
Block a user