mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-13 09:28:01 -05:00
51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
//go:build develop
|
|
// +build develop
|
|
|
|
package params
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/mohae/deepcopy"
|
|
)
|
|
|
|
var beaconConfig = MainnetConfig()
|
|
var beaconConfigLock sync.RWMutex
|
|
|
|
// BeaconConfig retrieves beacon chain config.
|
|
func BeaconConfig() *BeaconChainConfig {
|
|
beaconConfigLock.RLock()
|
|
defer beaconConfigLock.RUnlock()
|
|
return beaconConfig
|
|
}
|
|
|
|
// OverrideBeaconConfig by replacing the config. The preferred pattern is to
|
|
// call BeaconConfig(), change the specific parameters, and then call
|
|
// OverrideBeaconConfig(c). Any subsequent calls to params.BeaconConfig() will
|
|
// return this new configuration.
|
|
func OverrideBeaconConfig(c *BeaconChainConfig) {
|
|
beaconConfigLock.Lock()
|
|
defer beaconConfigLock.Unlock()
|
|
c.InitializeForkSchedule()
|
|
name, ok := reverseConfigNames[c.ConfigName]
|
|
// if name collides with an existing config name, override it, because the fork versions probably conflict
|
|
if !ok {
|
|
// otherwise define it as the special "Dynamic" name, ie for a config loaded from a file at runtime
|
|
name = Dynamic
|
|
}
|
|
KnownConfigs[name] = func() *BeaconChainConfig { return c }
|
|
rebuildKnownForkVersions()
|
|
beaconConfig = c
|
|
}
|
|
|
|
// Copy returns a copy of the config object.
|
|
func (b *BeaconChainConfig) Copy() *BeaconChainConfig {
|
|
beaconConfigLock.RLock()
|
|
defer beaconConfigLock.RUnlock()
|
|
config, ok := deepcopy.Copy(*b).(BeaconChainConfig)
|
|
if !ok {
|
|
config = *beaconConfig
|
|
}
|
|
return &config
|
|
}
|