mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-08 18:51:19 +00:00
95 lines
2.6 KiB
Go
95 lines
2.6 KiB
Go
|
package filesystem
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"github.com/pkg/errors"
|
||
|
|
||
|
"github.com/prysmaticlabs/prysm/v5/config/proposer"
|
||
|
)
|
||
|
|
||
|
// ErrNoProposerSettingsFound is an error thrown when no settings are found.
|
||
|
var ErrNoProposerSettingsFound = errors.New("no proposer settings found in bucket")
|
||
|
|
||
|
// ProposerSettings returns the proposer settings.
|
||
|
func (s *Store) ProposerSettings(_ context.Context) (*proposer.Settings, error) {
|
||
|
// Get configuration
|
||
|
configuration, err := s.configuration()
|
||
|
if err != nil {
|
||
|
return nil, errors.Wrap(err, "could not get configuration")
|
||
|
}
|
||
|
|
||
|
// Return on error if config file does not exist.
|
||
|
if configuration == nil || configuration.ProposerSettings == nil {
|
||
|
return nil, ErrNoProposerSettingsFound
|
||
|
}
|
||
|
|
||
|
// Convert proposer settings to validator service config.
|
||
|
proposerSettings, err := proposer.SettingFromConsensus(configuration.ProposerSettings)
|
||
|
if err != nil {
|
||
|
return nil, errors.Wrap(err, "could not convert proposer settings")
|
||
|
}
|
||
|
|
||
|
return proposerSettings, nil
|
||
|
}
|
||
|
|
||
|
// ProposerSettingsExists returns true if proposer settings exists, false otherwise.
|
||
|
func (s *Store) ProposerSettingsExists(_ context.Context) (bool, error) {
|
||
|
// Get configuration.
|
||
|
configuration, err := s.configuration()
|
||
|
if err != nil {
|
||
|
return false, errors.Wrap(err, "could not get configuration")
|
||
|
}
|
||
|
|
||
|
// If configuration is nil, return false.
|
||
|
if configuration == nil {
|
||
|
return false, nil
|
||
|
}
|
||
|
|
||
|
// Return true if proposer settings exists, false otherwise.
|
||
|
exists := configuration.ProposerSettings != nil
|
||
|
return exists, nil
|
||
|
}
|
||
|
|
||
|
// SaveProposerSettings saves the proposer settings.
|
||
|
func (s *Store) SaveProposerSettings(_ context.Context, proposerSettings *proposer.Settings) error {
|
||
|
// Check if there is something to save.
|
||
|
if !proposerSettings.ShouldBeSaved() {
|
||
|
log.Warn("proposer settings are empty, nothing has been saved")
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Convert proposer settings to payload.
|
||
|
proposerSettingsPayload := proposerSettings.ToConsensus()
|
||
|
|
||
|
// Get configuration.
|
||
|
configuration, err := s.configuration()
|
||
|
if err != nil {
|
||
|
return errors.Wrap(err, "could not get configuration")
|
||
|
}
|
||
|
|
||
|
if configuration == nil {
|
||
|
// If configuration is nil, create new config.
|
||
|
configuration = &Configuration{
|
||
|
ProposerSettings: proposerSettingsPayload,
|
||
|
}
|
||
|
|
||
|
// Save the configuration.
|
||
|
if err := s.saveConfiguration(configuration); err != nil {
|
||
|
return errors.Wrap(err, "could not save configuration")
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Modify the value of proposer settings.
|
||
|
configuration.ProposerSettings = proposerSettingsPayload
|
||
|
|
||
|
// Save the configuration.
|
||
|
if err := s.saveConfiguration(configuration); err != nil {
|
||
|
return errors.Wrap(err, "could not save configuration")
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|