featureconfig

package
v0.3.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 21, 2020 License: GPL-3.0 Imports: 4 Imported by: 202

Documentation

Overview

Package featureconfig defines which features are enabled for runtime in order to selectively enable certain features to maintain a stable runtime.

The process for implementing new features using this package is as follows:

  1. Add a new CMD flag in flags.go, and place it in the proper list(s) var for its client.
  2. Add a condition for the flag in the proper Configure function(s) below.
  3. Place any "new" behavior in the `if flagEnabled` statement.
  4. Place any "previous" behavior in the `else` statement.
  5. Ensure any tests using the new feature fail if the flag isn't enabled. 5a. Use the following to enable your flag for tests: cfg := &featureconfig.Flags{ VerifyAttestationSigs: true, } featureconfig.Init(cfg)
  6. Add the string for the flags that should be running within E2E to E2EValidatorFlags and E2EBeaconChainFlags.

Index

Constants

This section is empty.

Variables

View Source
var BeaconChainFlags = append(deprecatedFlags, []cli.Flag{
	noCustomConfigFlag,
	customGenesisDelayFlag,
	minimalConfigFlag,
	writeSSZStateTransitionsFlag,
	disableForkChoiceUnsafeFlag,
	enableDynamicCommitteeSubnets,
	enableSSZCache,
	enableEth1DataVoteCacheFlag,
	initSyncVerifyEverythingFlag,
	skipBLSVerifyFlag,
	kafkaBootstrapServersFlag,
	enableBackupWebhookFlag,
	enableSkipSlotsCacheFlag,
	enableSlasherFlag,
	cacheFilteredBlockTreeFlag,
	disableStrictAttestationPubsubVerificationFlag,
	disableUpdateHeadPerAttestation,
	enableByteMempool,
	enableStateGenSigVerify,
	checkHeadState,
	enableNoiseHandshake,
	dontPruneStateStartUp,
	broadcastSlashingFlag,
	newStateMgmt,
	enableInitSyncQueue,
	enableFieldTrie,
}...)

BeaconChainFlags contains a list of all the feature flags that apply to the beacon-chain client.

View Source
var E2EBeaconChainFlags = []string{
	"--enable-ssz-cache",
	"--cache-filtered-block-tree",
	"--enable-skip-slots-cache",
	"--enable-eth1-data-vote-cache",
	"--enable-byte-mempool",
	"--enable-state-gen-sig-verify",
	"--check-head-state",
	"--enable-initial-sync-queue",
}

E2EBeaconChainFlags contains a list of the beacon chain feature flags to be tested in E2E.

View Source
var E2EValidatorFlags = []string{
	"--protect-attester",
	"--protect-proposer",
	"--enable-domain-data-cache",
}

E2EValidatorFlags contains a list of the validator feature flags to be tested in E2E.

View Source
var ValidatorFlags = append(deprecatedFlags, []cli.Flag{
	minimalConfigFlag,
	protectAttesterFlag,
	protectProposerFlag,
	enableDomainDataCacheFlag,
}...)

ValidatorFlags contains a list of all the feature flags that apply to the validator client.

Functions

func ActiveFlags added in v0.3.7

func ActiveFlags(flags []cli.Flag) []cli.Flag

ActiveFlags returns all of the flags that are not Hidden.

func ConfigureBeaconChain

func ConfigureBeaconChain(ctx *cli.Context)

ConfigureBeaconChain sets the global config based on what flags are enabled for the beacon-chain client.

func ConfigureValidator

func ConfigureValidator(ctx *cli.Context)

ConfigureValidator sets the global config based on what flags are enabled for the validator client.

func Init

func Init(c *Flags)

Init sets the global config equal to the config that is passed in.

Types

type Flags added in v0.2.5

type Flags struct {
	NoCustomConfig                             bool   // NoCustomConfigFlag determines whether to launch a beacon chain using real parameters or demo parameters.
	CustomGenesisDelay                         uint64 // CustomGenesisDelay signals how long of a delay to set to start the chain.
	MinimalConfig                              bool   // MinimalConfig as defined in the spec.
	WriteSSZStateTransitions                   bool   // WriteSSZStateTransitions to tmp directory.
	InitSyncNoVerify                           bool   // InitSyncNoVerify when initial syncing w/o verifying block's contents.
	EnableDynamicCommitteeSubnets              bool   // Enables dynamic attestation committee subnets via p2p.
	SkipBLSVerify                              bool   // Skips BLS verification across the runtime.
	EnableBackupWebhook                        bool   // EnableBackupWebhook to allow database backups to trigger from monitoring port /db/backup.
	PruneEpochBoundaryStates                   bool   // PruneEpochBoundaryStates prunes the epoch boundary state before last finalized check point.
	EnableSnappyDBCompression                  bool   // EnableSnappyDBCompression in the database.
	KafkaBootstrapServers                      string // KafkaBootstrapServers to find kafka servers to stream blocks, attestations, etc.
	ProtectProposer                            bool   // ProtectProposer prevents the validator client from signing any proposals that would be considered a slashable offense.
	ProtectAttester                            bool   // ProtectAttester prevents the validator client from signing any attestations that would be considered a slashable offense.
	DisableStrictAttestationPubsubVerification bool   // DisableStrictAttestationPubsubVerification will disabling strict signature verification in pubsub.
	DisableUpdateHeadPerAttestation            bool   // DisableUpdateHeadPerAttestation will disabling update head on per attestation basis.
	EnableByteMempool                          bool   // EnaableByteMempool memory management.
	EnableDomainDataCache                      bool   // EnableDomainDataCache caches validator calls to DomainData per epoch.
	EnableStateGenSigVerify                    bool   // EnableStateGenSigVerify verifies proposer and randao signatures during state gen.
	CheckHeadState                             bool   // CheckHeadState checks the current headstate before retrieving the desired state from the db.
	EnableNoise                                bool   // EnableNoise enables the beacon node to use NOISE instead of SECIO when performing a handshake with another peer.
	DontPruneStateStartUp                      bool   // DontPruneStateStartUp disables pruning state upon beacon node start up.
	NewStateMgmt                               bool   // NewStateMgmt enables the new experimental state mgmt service.
	EnableInitSyncQueue                        bool   // EnableInitSyncQueue enables the new initial sync implementation.
	EnableFieldTrie                            bool   // EnableFieldTrie enables the state from using field specific tries when computing the root.
	// DisableForkChoice disables using LMD-GHOST fork choice to update
	// the head of the chain based on attestations and instead accepts any valid received block
	// as the chain head. UNSAFE, use with caution.
	DisableForkChoice bool

	// BroadcastSlashings enables p2p broadcasting of proposer or attester slashing.
	BroadcastSlashings bool

	// Cache toggles.
	EnableSSZCache          bool // EnableSSZCache see https://github.com/prysmaticlabs/prysm/pull/4558.
	EnableEth1DataVoteCache bool // EnableEth1DataVoteCache; see https://github.com/prysmaticlabs/prysm/issues/3106.
	EnableSkipSlotsCache    bool // EnableSkipSlotsCache caches the state in skipped slots.
	EnableSlasherConnection bool // EnableSlasher enable retrieval of slashing events from a slasher instance.
	EnableBlockTreeCache    bool // EnableBlockTreeCache enable fork choice service to maintain latest filtered block tree.
}

Flags is a struct to represent which features the client will perform on runtime.

func Get

func Get() *Flags

Get retrieves feature config.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL