-
Notifications
You must be signed in to change notification settings - Fork 951
/
flags.go
213 lines (204 loc) · 7.96 KB
/
flags.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
package featureconfig
import (
"time"
"github.com/urfave/cli/v2"
)
var (
// ToledoTestnet flag for the multiclient Ethereum consensus testnet.
ToledoTestnet = &cli.BoolFlag{
Name: "toledo",
Usage: "This defines the flag through which we can run on the Toledo Multiclient Testnet",
}
// PyrmontTestnet flag for the multiclient Ethereum consensus testnet.
PyrmontTestnet = &cli.BoolFlag{
Name: "pyrmont",
Usage: "This defines the flag through which we can run on the Pyrmont Multiclient Testnet",
}
// PraterTestnet flag for the multiclient Ethereum consensus testnet.
PraterTestnet = &cli.BoolFlag{
Name: "prater",
Usage: "Run Prysm configured for the Prater test network",
}
// Mainnet flag for easier tooling, no-op
Mainnet = &cli.BoolFlag{
Value: true,
Name: "mainnet",
Usage: "Run on Ethereum Beacon Chain Main Net. This is the default and can be omitted.",
}
devModeFlag = &cli.BoolFlag{
Name: "dev",
Usage: "Enable experimental features still in development. These features may not be stable.",
}
writeSSZStateTransitionsFlag = &cli.BoolFlag{
Name: "interop-write-ssz-state-transitions",
Usage: "Write ssz states to disk after attempted state transition",
}
kafkaBootstrapServersFlag = &cli.StringFlag{
Name: "kafka-url",
Usage: "Stream attestations and blocks to specified kafka servers. This field is used for bootstrap.servers kafka config field.",
}
enableExternalSlasherProtectionFlag = &cli.BoolFlag{
Name: "enable-external-slasher-protection",
Usage: "Enables the validator to connect to external slasher to prevent it from " +
"transmitting a slashable offence over the network.",
}
disableLookbackFlag = &cli.BoolFlag{
Name: "disable-lookback",
Usage: "Disables use of the lookback feature and updates attestation history for validators from head to epoch 0",
}
disableGRPCConnectionLogging = &cli.BoolFlag{
Name: "disable-grpc-connection-logging",
Usage: "Disables displaying logs for newly connected grpc clients",
}
attestationAggregationStrategy = &cli.StringFlag{
Name: "attestation-aggregation-strategy",
Usage: "Which strategy to use when aggregating attestations, one of: naive, max_cover, opt_max_cover.",
Value: "max_cover",
}
forceOptMaxCoverAggregationStategy = &cli.BoolFlag{
Name: "attestation-aggregation-force-opt-maxcover",
Usage: "When enabled, forces --attestation-aggregation-strategy=opt_max_cover setting.",
}
disableAccountsV2 = &cli.BoolFlag{
Name: "disable-accounts-v2",
Usage: "Disables usage of v2 for Prysm validator accounts",
}
enablePeerScorer = &cli.BoolFlag{
Name: "enable-peer-scorer",
Usage: "Enable experimental P2P peer scorer",
}
checkPtInfoCache = &cli.BoolFlag{
Name: "use-check-point-cache",
Usage: "Enables check point info caching",
}
enableLargerGossipHistory = &cli.BoolFlag{
Name: "enable-larger-gossip-history",
Usage: "Enables the node to store a larger amount of gossip messages in its cache.",
}
writeWalletPasswordOnWebOnboarding = &cli.BoolFlag{
Name: "write-wallet-password-on-web-onboarding",
Usage: "(Danger): Writes the wallet password to the wallet directory on completing Prysm web onboarding. " +
"We recommend against this flag unless you are an advanced user.",
}
disableAttestingHistoryDBCache = &cli.BoolFlag{
Name: "disable-attesting-history-db-cache",
Usage: "(Danger): Disables the cache for attesting history in the validator DB, greatly increasing " +
"disk reads and writes as well as increasing time required for attestations to be produced",
}
dynamicKeyReloadDebounceInterval = &cli.DurationFlag{
Name: "dynamic-key-reload-debounce-interval",
Usage: "(Advanced): Specifies the time duration the validator waits to reload new keys if they have " +
"changed on disk. Default 1s, can be any type of duration such as 1.5s, 1000ms, 1m.",
Value: time.Second,
}
disableBroadcastSlashingFlag = &cli.BoolFlag{
Name: "disable-broadcast-slashings",
Usage: "Disables broadcasting slashings submitted to the beacon node.",
}
attestTimely = &cli.BoolFlag{
Name: "attest-timely",
Usage: "Fixes validator can attest timely after current block processes. See #8185 for more details",
}
enableNextSlotStateCache = &cli.BoolFlag{
Name: "enable-next-slot-state-cache",
Usage: "Improves attesting and proposing efficiency by caching the next slot state at the end of the current slot",
}
disableUpdateHeadTimely = &cli.BoolFlag{
Name: "disable-update-head-timely",
Usage: "Disables updating head right after state transition",
}
disableProposerAttsSelectionUsingMaxCover = &cli.BoolFlag{
Name: "disable-proposer-atts-selection-using-max-cover",
Usage: "Disable max-cover algorithm when selecting attestations for proposer",
}
enableSlashingProtectionPruning = &cli.BoolFlag{
Name: "enable-slashing-protection-pruning",
Usage: "Enables the pruning of the validator client's slashing protectin database",
}
disableOptimizedBalanceUpdate = &cli.BoolFlag{
Name: "disable-optimized-balance-update",
Usage: "Disable the optimized method of updating validator balances.",
}
enableDoppelGangerProtection = &cli.BoolFlag{
Name: "enable-doppelganger",
Usage: "Enables the validator to perform a doppelganger check. (Warning): This is not " +
"a foolproof method to find duplicate instances in the network. Your validator will still be" +
" vulnerable if it is being run in unsafe configurations.",
}
correctlyInsertOrphanedAtts = &cli.BoolFlag{
Name: "correctly-insert-orphaned-atts",
Usage: "This fixes a bug where orphaned attestations don't get reinserted back to mem pool. This improves validator profitability and overall network health," +
"see issue #9441 for further detail",
}
correctlyPruneCanonicalAtts = &cli.BoolFlag{
Name: "correctly-prune-canonical-atts",
Usage: "This fixes a bug where any block attestations can get incorrectly pruned. This improves validator profitability and overall network health," +
"see issue #9443 for further detail",
}
)
// devModeFlags holds list of flags that are set when development mode is on.
var devModeFlags = []cli.Flag{
enableLargerGossipHistory,
enableNextSlotStateCache,
forceOptMaxCoverAggregationStategy,
correctlyInsertOrphanedAtts,
correctlyPruneCanonicalAtts,
}
// ValidatorFlags contains a list of all the feature flags that apply to the validator client.
var ValidatorFlags = append(deprecatedFlags, []cli.Flag{
writeWalletPasswordOnWebOnboarding,
enableExternalSlasherProtectionFlag,
disableAttestingHistoryDBCache,
ToledoTestnet,
PyrmontTestnet,
PraterTestnet,
Mainnet,
disableAccountsV2,
dynamicKeyReloadDebounceInterval,
attestTimely,
enableSlashingProtectionPruning,
enableDoppelGangerProtection,
}...)
// SlasherFlags contains a list of all the feature flags that apply to the slasher client.
var SlasherFlags = append(deprecatedFlags, []cli.Flag{
disableLookbackFlag,
ToledoTestnet,
PyrmontTestnet,
PraterTestnet,
Mainnet,
}...)
// E2EValidatorFlags contains a list of the validator feature flags to be tested in E2E.
var E2EValidatorFlags = []string{
"--enable-doppelganger",
}
// BeaconChainFlags contains a list of all the feature flags that apply to the beacon-chain client.
var BeaconChainFlags = append(deprecatedFlags, []cli.Flag{
devModeFlag,
writeSSZStateTransitionsFlag,
kafkaBootstrapServersFlag,
disableGRPCConnectionLogging,
attestationAggregationStrategy,
ToledoTestnet,
PyrmontTestnet,
PraterTestnet,
Mainnet,
enablePeerScorer,
enableLargerGossipHistory,
checkPtInfoCache,
disableBroadcastSlashingFlag,
enableNextSlotStateCache,
forceOptMaxCoverAggregationStategy,
disableUpdateHeadTimely,
disableProposerAttsSelectionUsingMaxCover,
disableOptimizedBalanceUpdate,
correctlyInsertOrphanedAtts,
correctlyPruneCanonicalAtts,
}...)
// E2EBeaconChainFlags contains a list of the beacon chain feature flags to be tested in E2E.
var E2EBeaconChainFlags = []string{
"--attestation-aggregation-strategy=opt_max_cover",
"--dev",
"--use-check-point-cache",
"--correctly-insert-orphaned-atts",
"--correctly-prune-canonical-atts",
}