mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-09 15:37:56 -05:00
Add Fulu case for saveStatesEfficientInternal (#15553)
* Add Fulu case for saveStatesEfficientInternal * Add changelog --------- Co-authored-by: Radosław Kapka <rkapka@wp.pl> Co-authored-by: james-prysm <90280386+james-prysm@users.noreply.github.com>
This commit is contained in:
@@ -253,6 +253,10 @@ func (s *Store) saveStatesEfficientInternal(ctx context.Context, tx *bolt.Tx, bl
|
|||||||
if err := s.processElectra(ctx, rawType, rt[:], bucket, valIdxBkt, validatorKeys[i]); err != nil {
|
if err := s.processElectra(ctx, rawType, rt[:], bucket, valIdxBkt, validatorKeys[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
case *ethpb.BeaconStateFulu:
|
||||||
|
if err := s.processFulu(ctx, rawType, rt[:], bucket, valIdxBkt, validatorKeys[i]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return errors.New("invalid state type")
|
return errors.New("invalid state type")
|
||||||
}
|
}
|
||||||
@@ -368,6 +372,24 @@ func (s *Store) processElectra(ctx context.Context, pbState *ethpb.BeaconStateEl
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Store) processFulu(ctx context.Context, pbState *ethpb.BeaconStateFulu, rootHash []byte, bucket, valIdxBkt *bolt.Bucket, validatorKey []byte) error {
|
||||||
|
valEntries := pbState.Validators
|
||||||
|
pbState.Validators = make([]*ethpb.Validator, 0)
|
||||||
|
rawObj, err := pbState.MarshalSSZ()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
encodedState := snappy.Encode(nil, append(fuluKey, rawObj...))
|
||||||
|
if err := bucket.Put(rootHash, encodedState); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
pbState.Validators = valEntries
|
||||||
|
if err := valIdxBkt.Put(rootHash, validatorKey); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Store) storeValidatorEntriesSeparately(ctx context.Context, tx *bolt.Tx, validatorsEntries map[string]*ethpb.Validator) error {
|
func (s *Store) storeValidatorEntriesSeparately(ctx context.Context, tx *bolt.Tx, validatorsEntries map[string]*ethpb.Validator) error {
|
||||||
valBkt := tx.Bucket(stateValidatorsBucket)
|
valBkt := tx.Bucket(stateValidatorsBucket)
|
||||||
for hashStr, validatorEntry := range validatorsEntries {
|
for hashStr, validatorEntry := range validatorsEntries {
|
||||||
|
|||||||
3
changelog/syjn99_save-state-efficient-fulu.md
Normal file
3
changelog/syjn99_save-state-efficient-fulu.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
### Added
|
||||||
|
|
||||||
|
- Add Fulu case for `saveStatesEfficientInternal`
|
||||||
Reference in New Issue
Block a user