beacon-chain, config: get consensus values from beacon config (#11798)

* beacon-chain, config: get consensus values from beacon config

* review feedback

Co-authored-by: Nishant Das <nishdas93@gmail.com>
Co-authored-by: Radosław Kapka <rkapka@wp.pl>
This commit is contained in:
Guillaume Ballet 2023-01-25 11:42:03 +01:00 committed by GitHub
parent 0a4b0a68d3
commit c6338e3a31
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 31 additions and 11 deletions

View File

@ -5,7 +5,7 @@ import (
nativetypes "github.com/prysmaticlabs/prysm/v3/beacon-chain/state/state-native/types" nativetypes "github.com/prysmaticlabs/prysm/v3/beacon-chain/state/state-native/types"
"github.com/prysmaticlabs/prysm/v3/beacon-chain/state/stateutil" "github.com/prysmaticlabs/prysm/v3/beacon-chain/state/stateutil"
fieldparams "github.com/prysmaticlabs/prysm/v3/config/fieldparams" "github.com/prysmaticlabs/prysm/v3/config/params"
ethpb "github.com/prysmaticlabs/prysm/v3/proto/prysm/v1alpha1" ethpb "github.com/prysmaticlabs/prysm/v3/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v3/runtime/version" "github.com/prysmaticlabs/prysm/v3/runtime/version"
) )
@ -54,7 +54,7 @@ func (b *BeaconState) AppendCurrentEpochAttestations(val *ethpb.PendingAttestati
} }
atts := b.currentEpochAttestations atts := b.currentEpochAttestations
max := uint64(fieldparams.CurrentEpochAttestationsLength) max := uint64(params.BeaconConfig().CurrentEpochAttestationsLength())
if uint64(len(atts)) >= max { if uint64(len(atts)) >= max {
return fmt.Errorf("current pending attestation exceeds max length %d", max) return fmt.Errorf("current pending attestation exceeds max length %d", max)
} }
@ -84,7 +84,7 @@ func (b *BeaconState) AppendPreviousEpochAttestations(val *ethpb.PendingAttestat
} }
atts := b.previousEpochAttestations atts := b.previousEpochAttestations
max := uint64(fieldparams.PreviousEpochAttestationsLength) max := uint64(params.BeaconConfig().PreviousEpochAttestationsLength())
if uint64(len(atts)) >= max { if uint64(len(atts)) >= max {
return fmt.Errorf("previous pending attestation exceeds max length %d", max) return fmt.Errorf("previous pending attestation exceeds max length %d", max)
} }

View File

@ -742,7 +742,7 @@ func (b *BeaconState) rootSelector(ctx context.Context, field nativetypes.FieldI
err := b.resetFieldTrie( err := b.resetFieldTrie(
field, field,
b.eth1DataVotes, b.eth1DataVotes,
fieldparams.Eth1DataVotesLength, params.BeaconConfig().Eth1DataVotesLength(),
) )
if err != nil { if err != nil {
return [32]byte{}, err return [32]byte{}, err
@ -788,7 +788,7 @@ func (b *BeaconState) rootSelector(ctx context.Context, field nativetypes.FieldI
err := b.resetFieldTrie( err := b.resetFieldTrie(
field, field,
b.previousEpochAttestations, b.previousEpochAttestations,
fieldparams.PreviousEpochAttestationsLength, params.BeaconConfig().PreviousEpochAttestationsLength(),
) )
if err != nil { if err != nil {
return [32]byte{}, err return [32]byte{}, err
@ -802,7 +802,7 @@ func (b *BeaconState) rootSelector(ctx context.Context, field nativetypes.FieldI
err := b.resetFieldTrie( err := b.resetFieldTrie(
field, field,
b.currentEpochAttestations, b.currentEpochAttestations,
fieldparams.CurrentEpochAttestationsLength, params.BeaconConfig().CurrentEpochAttestationsLength(),
) )
if err != nil { if err != nil {
return [32]byte{}, err return [32]byte{}, err

View File

@ -5,7 +5,7 @@ import (
"encoding/binary" "encoding/binary"
"github.com/pkg/errors" "github.com/pkg/errors"
fieldparams "github.com/prysmaticlabs/prysm/v3/config/fieldparams" params "github.com/prysmaticlabs/prysm/v3/config/params"
"github.com/prysmaticlabs/prysm/v3/crypto/hash" "github.com/prysmaticlabs/prysm/v3/crypto/hash"
"github.com/prysmaticlabs/prysm/v3/encoding/bytesutil" "github.com/prysmaticlabs/prysm/v3/encoding/bytesutil"
"github.com/prysmaticlabs/prysm/v3/encoding/ssz" "github.com/prysmaticlabs/prysm/v3/encoding/ssz"
@ -56,7 +56,7 @@ func Eth1DatasRoot(eth1Datas []*ethpb.Eth1Data) ([32]byte, error) {
hasher, hasher,
eth1VotesRoots, eth1VotesRoots,
uint64(len(eth1VotesRoots)), uint64(len(eth1VotesRoots)),
fieldparams.Eth1DataVotesLength, params.BeaconConfig().Eth1DataVotesLength(),
) )
if err != nil { if err != nil {
return [32]byte{}, errors.Wrap(err, "could not compute eth1data votes merkleization") return [32]byte{}, errors.Wrap(err, "could not compute eth1data votes merkleization")

View File

@ -6,7 +6,7 @@ import (
"fmt" "fmt"
"github.com/pkg/errors" "github.com/pkg/errors"
fieldparams "github.com/prysmaticlabs/prysm/v3/config/fieldparams" params "github.com/prysmaticlabs/prysm/v3/config/params"
"github.com/prysmaticlabs/prysm/v3/crypto/hash" "github.com/prysmaticlabs/prysm/v3/crypto/hash"
"github.com/prysmaticlabs/prysm/v3/encoding/ssz" "github.com/prysmaticlabs/prysm/v3/encoding/ssz"
ethpb "github.com/prysmaticlabs/prysm/v3/proto/prysm/v1alpha1" ethpb "github.com/prysmaticlabs/prysm/v3/proto/prysm/v1alpha1"
@ -19,7 +19,7 @@ func RootsArrayHashTreeRoot(vals [][]byte, length uint64) ([32]byte, error) {
} }
func EpochAttestationsRoot(atts []*ethpb.PendingAttestation) ([32]byte, error) { func EpochAttestationsRoot(atts []*ethpb.PendingAttestation) ([32]byte, error) {
max := uint64(fieldparams.CurrentEpochAttestationsLength) max := uint64(params.BeaconConfig().CurrentEpochAttestationsLength())
if uint64(len(atts)) > max { if uint64(len(atts)) > max {
return [32]byte{}, fmt.Errorf("epoch attestation exceeds max length %d", max) return [32]byte{}, fmt.Errorf("epoch attestation exceeds max length %d", max)
} }
@ -38,7 +38,7 @@ func EpochAttestationsRoot(atts []*ethpb.PendingAttestation) ([32]byte, error) {
hasher, hasher,
roots, roots,
uint64(len(roots)), uint64(len(roots)),
fieldparams.CurrentEpochAttestationsLength, params.BeaconConfig().CurrentEpochAttestationsLength(),
) )
if err != nil { if err != nil {
return [32]byte{}, errors.Wrap(err, "could not compute epoch attestations merkleization") return [32]byte{}, errors.Wrap(err, "could not compute epoch attestations merkleization")

View File

@ -234,3 +234,23 @@ func configForkNames(b *BeaconChainConfig) map[[fieldparams.VersionLength]byte]s
fvn[bytesutil.ToBytes4(b.CapellaForkVersion)] = "capella" fvn[bytesutil.ToBytes4(b.CapellaForkVersion)] = "capella"
return fvn return fvn
} }
// Eth1DataVotesLength returns the maximum length of the votes on the Eth1 data,
// computed from the parameters in BeaconChainConfig.
func (b *BeaconChainConfig) Eth1DataVotesLength() uint64 {
return uint64(b.EpochsPerEth1VotingPeriod.Mul(uint64(b.SlotsPerEpoch)))
}
// PreviousEpochAttestationsLength returns the maximum length of the pending
// attestation list for the previous epoch, computed from the parameters in
// BeaconChainConfig.
func (b *BeaconChainConfig) PreviousEpochAttestationsLength() uint64 {
return uint64(b.SlotsPerEpoch.Mul(b.MaxAttestations))
}
// CurrentEpochAttestationsLength returns the maximum length of the pending
// attestation list for the current epoch, computed from the parameters in
// BeaconChainConfig.
func (b *BeaconChainConfig) CurrentEpochAttestationsLength() uint64 {
return uint64(b.SlotsPerEpoch.Mul(b.MaxAttestations))
}