@lodestar/params 1.35.0-dev.feed916580 → 1.35.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,48 @@
1
+ import {presetFromJson} from "./json.js";
2
+ import {PresetName} from "./presetName.js";
3
+ import {presetStatus} from "./presetStatus.js";
4
+ import {BeaconPreset} from "./types.js";
5
+
6
+ export {PresetName, presetFromJson};
7
+
8
+ /**
9
+ * The preset name currently exported by this library
10
+ *
11
+ * The `LODESTAR_PRESET` environment variable is used to select the active preset
12
+ * If `LODESTAR_PRESET` is not set, the default is `mainnet`.
13
+ *
14
+ * The active preset can be manually overridden with `setActivePreset`
15
+ */
16
+ export let userSelectedPreset: PresetName | null = null;
17
+
18
+ export let userOverrides: Partial<BeaconPreset> | undefined = undefined;
19
+
20
+ /**
21
+ * Override the active preset
22
+ *
23
+ * WARNING: Lodestar libraries rely on preset values being _constant_, so the active preset must be set _before_ loading any other lodestar libraries.
24
+ *
25
+ * Only call this function if you _really_ know what you are doing.
26
+ *
27
+ * @param presetName - the preset to use as a base
28
+ * @param overrides - customized fields
29
+ */
30
+ export function setActivePreset(presetName: PresetName | null, overrides?: Partial<BeaconPreset>): void {
31
+ if (presetStatus.frozen) {
32
+ throw Error(`Lodestar preset is already frozen. You must call setActivePreset() at the top of your
33
+ application entry point, before importing @lodestar/params, or any library that may import it.
34
+
35
+ \`\`\`
36
+ // index.ts
37
+ import {setActivePreset, PresetName} from "@lodestar/params/setPreset"
38
+ setActivePreset(PresetName.minimal)
39
+ // Now you can safely import from other paths and consume params
40
+ import {SLOTS_PER_EPOCH} from "@lodestar/params"
41
+ console.log({SLOTS_PER_EPOCH})
42
+ \`\`\`
43
+ `);
44
+ }
45
+
46
+ userSelectedPreset = presetName;
47
+ userOverrides = overrides;
48
+ }
package/src/types.ts ADDED
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Compile-time chain configuration
3
+ */
4
+ export type BeaconPreset = {
5
+ // Misc
6
+ MAX_COMMITTEES_PER_SLOT: number;
7
+ TARGET_COMMITTEE_SIZE: number;
8
+ MAX_VALIDATORS_PER_COMMITTEE: number;
9
+
10
+ SHUFFLE_ROUND_COUNT: number;
11
+
12
+ HYSTERESIS_QUOTIENT: number;
13
+ HYSTERESIS_DOWNWARD_MULTIPLIER: number;
14
+ HYSTERESIS_UPWARD_MULTIPLIER: number;
15
+
16
+ // Gwei Values
17
+ MIN_DEPOSIT_AMOUNT: number;
18
+ MAX_EFFECTIVE_BALANCE: number;
19
+ EFFECTIVE_BALANCE_INCREMENT: number;
20
+
21
+ // Time parameters
22
+ MIN_ATTESTATION_INCLUSION_DELAY: number;
23
+ SLOTS_PER_EPOCH: number;
24
+ MIN_SEED_LOOKAHEAD: number;
25
+ MAX_SEED_LOOKAHEAD: number;
26
+ EPOCHS_PER_ETH1_VOTING_PERIOD: number;
27
+ SLOTS_PER_HISTORICAL_ROOT: number;
28
+ MIN_EPOCHS_TO_INACTIVITY_PENALTY: number;
29
+
30
+ // State vector lengths
31
+ EPOCHS_PER_HISTORICAL_VECTOR: number;
32
+ EPOCHS_PER_SLASHINGS_VECTOR: number;
33
+ HISTORICAL_ROOTS_LIMIT: number;
34
+ VALIDATOR_REGISTRY_LIMIT: number;
35
+
36
+ // Reward and penalty quotients
37
+ BASE_REWARD_FACTOR: number;
38
+ WHISTLEBLOWER_REWARD_QUOTIENT: number;
39
+ PROPOSER_REWARD_QUOTIENT: number;
40
+ INACTIVITY_PENALTY_QUOTIENT: number;
41
+ MIN_SLASHING_PENALTY_QUOTIENT: number;
42
+ PROPORTIONAL_SLASHING_MULTIPLIER: number;
43
+
44
+ // Max operations per block
45
+ MAX_PROPOSER_SLASHINGS: number;
46
+ MAX_ATTESTER_SLASHINGS: number;
47
+ MAX_ATTESTATIONS: number;
48
+ MAX_DEPOSITS: number;
49
+ MAX_VOLUNTARY_EXITS: number;
50
+
51
+ // ALTAIR
52
+ /////////
53
+ SYNC_COMMITTEE_SIZE: number;
54
+ EPOCHS_PER_SYNC_COMMITTEE_PERIOD: number;
55
+ INACTIVITY_PENALTY_QUOTIENT_ALTAIR: number;
56
+ MIN_SLASHING_PENALTY_QUOTIENT_ALTAIR: number;
57
+ PROPORTIONAL_SLASHING_MULTIPLIER_ALTAIR: number;
58
+ MIN_SYNC_COMMITTEE_PARTICIPANTS: number;
59
+ UPDATE_TIMEOUT: number;
60
+
61
+ // BELLATRIX
62
+ ////////////
63
+ INACTIVITY_PENALTY_QUOTIENT_BELLATRIX: number;
64
+ MIN_SLASHING_PENALTY_QUOTIENT_BELLATRIX: number;
65
+ PROPORTIONAL_SLASHING_MULTIPLIER_BELLATRIX: number;
66
+ MAX_BYTES_PER_TRANSACTION: number;
67
+ MAX_TRANSACTIONS_PER_PAYLOAD: number;
68
+ BYTES_PER_LOGS_BLOOM: number;
69
+ MAX_EXTRA_DATA_BYTES: number;
70
+
71
+ // CAPELLA
72
+ //////////
73
+ MAX_BLS_TO_EXECUTION_CHANGES: number;
74
+ MAX_WITHDRAWALS_PER_PAYLOAD: number;
75
+ MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP: number;
76
+
77
+ // DENEB
78
+ ///////////
79
+ FIELD_ELEMENTS_PER_BLOB: number;
80
+ MAX_BLOB_COMMITMENTS_PER_BLOCK: number;
81
+ KZG_COMMITMENT_INCLUSION_PROOF_DEPTH: number;
82
+
83
+ // ELECTRA
84
+ MAX_DEPOSIT_REQUESTS_PER_PAYLOAD: number;
85
+ MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD: number;
86
+ MAX_ATTESTER_SLASHINGS_ELECTRA: number;
87
+ MAX_ATTESTATIONS_ELECTRA: number;
88
+ MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEP: number;
89
+ MAX_PENDING_DEPOSITS_PER_EPOCH: number;
90
+ MAX_EFFECTIVE_BALANCE_ELECTRA: number;
91
+ MIN_SLASHING_PENALTY_QUOTIENT_ELECTRA: number;
92
+ MIN_ACTIVATION_BALANCE: number;
93
+ PENDING_DEPOSITS_LIMIT: number;
94
+ PENDING_PARTIAL_WITHDRAWALS_LIMIT: number;
95
+ PENDING_CONSOLIDATIONS_LIMIT: number;
96
+ MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD: number;
97
+ WHISTLEBLOWER_REWARD_QUOTIENT_ELECTRA: number;
98
+
99
+ // FULU
100
+ ///////////
101
+ NUMBER_OF_COLUMNS: number;
102
+ CELLS_PER_EXT_BLOB: number;
103
+ FIELD_ELEMENTS_PER_CELL: number;
104
+ FIELD_ELEMENTS_PER_EXT_BLOB: number;
105
+ KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH: number;
106
+
107
+ // GLOAS
108
+ PTC_SIZE: number;
109
+ MAX_PAYLOAD_ATTESTATIONS: number;
110
+ BUILDER_PENDING_WITHDRAWALS_LIMIT: number;
111
+ };
112
+
113
+ /**
114
+ * Presets only contain numbers, just used to filter out extraneous keys
115
+ * when overriding the active preset with custom values from file
116
+ */
117
+ export const beaconPresetTypes: BeaconPresetTypes = {
118
+ // Misc
119
+ MAX_COMMITTEES_PER_SLOT: "number",
120
+ TARGET_COMMITTEE_SIZE: "number",
121
+ MAX_VALIDATORS_PER_COMMITTEE: "number",
122
+
123
+ SHUFFLE_ROUND_COUNT: "number",
124
+
125
+ HYSTERESIS_QUOTIENT: "number",
126
+ HYSTERESIS_DOWNWARD_MULTIPLIER: "number",
127
+ HYSTERESIS_UPWARD_MULTIPLIER: "number",
128
+
129
+ // Gwei Values
130
+ MIN_DEPOSIT_AMOUNT: "number",
131
+ MAX_EFFECTIVE_BALANCE: "number",
132
+ EFFECTIVE_BALANCE_INCREMENT: "number",
133
+
134
+ // Time parameters
135
+ MIN_ATTESTATION_INCLUSION_DELAY: "number",
136
+ SLOTS_PER_EPOCH: "number",
137
+ MIN_SEED_LOOKAHEAD: "number",
138
+ MAX_SEED_LOOKAHEAD: "number",
139
+ EPOCHS_PER_ETH1_VOTING_PERIOD: "number",
140
+ SLOTS_PER_HISTORICAL_ROOT: "number",
141
+ MIN_EPOCHS_TO_INACTIVITY_PENALTY: "number",
142
+
143
+ // State vector lengths
144
+ EPOCHS_PER_HISTORICAL_VECTOR: "number",
145
+ EPOCHS_PER_SLASHINGS_VECTOR: "number",
146
+ HISTORICAL_ROOTS_LIMIT: "number",
147
+ VALIDATOR_REGISTRY_LIMIT: "number",
148
+
149
+ // Reward and penalty quotients
150
+ BASE_REWARD_FACTOR: "number",
151
+ WHISTLEBLOWER_REWARD_QUOTIENT: "number",
152
+ PROPOSER_REWARD_QUOTIENT: "number",
153
+ INACTIVITY_PENALTY_QUOTIENT: "number",
154
+ MIN_SLASHING_PENALTY_QUOTIENT: "number",
155
+ PROPORTIONAL_SLASHING_MULTIPLIER: "number",
156
+
157
+ // Max operations per block
158
+ MAX_PROPOSER_SLASHINGS: "number",
159
+ MAX_ATTESTER_SLASHINGS: "number",
160
+ MAX_ATTESTATIONS: "number",
161
+ MAX_DEPOSITS: "number",
162
+ MAX_VOLUNTARY_EXITS: "number",
163
+
164
+ // ALTAIR
165
+ /////////
166
+ SYNC_COMMITTEE_SIZE: "number",
167
+ EPOCHS_PER_SYNC_COMMITTEE_PERIOD: "number",
168
+ INACTIVITY_PENALTY_QUOTIENT_ALTAIR: "number",
169
+ MIN_SLASHING_PENALTY_QUOTIENT_ALTAIR: "number",
170
+ PROPORTIONAL_SLASHING_MULTIPLIER_ALTAIR: "number",
171
+ MIN_SYNC_COMMITTEE_PARTICIPANTS: "number",
172
+ UPDATE_TIMEOUT: "number",
173
+
174
+ // BELLATRIX
175
+ ////////////
176
+ INACTIVITY_PENALTY_QUOTIENT_BELLATRIX: "number",
177
+ MIN_SLASHING_PENALTY_QUOTIENT_BELLATRIX: "number",
178
+ PROPORTIONAL_SLASHING_MULTIPLIER_BELLATRIX: "number",
179
+ MAX_BYTES_PER_TRANSACTION: "number",
180
+ MAX_TRANSACTIONS_PER_PAYLOAD: "number",
181
+ BYTES_PER_LOGS_BLOOM: "number",
182
+ MAX_EXTRA_DATA_BYTES: "number",
183
+
184
+ // CAPELLA
185
+ //////////
186
+ MAX_BLS_TO_EXECUTION_CHANGES: "number",
187
+ MAX_WITHDRAWALS_PER_PAYLOAD: "number",
188
+ MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP: "number",
189
+
190
+ // DENEB
191
+ ///////////
192
+ FIELD_ELEMENTS_PER_BLOB: "number",
193
+ MAX_BLOB_COMMITMENTS_PER_BLOCK: "number",
194
+ KZG_COMMITMENT_INCLUSION_PROOF_DEPTH: "number",
195
+
196
+ // ELECTRA
197
+ MAX_DEPOSIT_REQUESTS_PER_PAYLOAD: "number",
198
+ MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD: "number",
199
+ MAX_ATTESTER_SLASHINGS_ELECTRA: "number",
200
+ MAX_ATTESTATIONS_ELECTRA: "number",
201
+ MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEP: "number",
202
+ MAX_PENDING_DEPOSITS_PER_EPOCH: "number",
203
+ MAX_EFFECTIVE_BALANCE_ELECTRA: "number",
204
+ MIN_SLASHING_PENALTY_QUOTIENT_ELECTRA: "number",
205
+ MIN_ACTIVATION_BALANCE: "number",
206
+ PENDING_DEPOSITS_LIMIT: "number",
207
+ PENDING_PARTIAL_WITHDRAWALS_LIMIT: "number",
208
+ PENDING_CONSOLIDATIONS_LIMIT: "number",
209
+ MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD: "number",
210
+ WHISTLEBLOWER_REWARD_QUOTIENT_ELECTRA: "number",
211
+
212
+ // FULU
213
+ ///////////
214
+ NUMBER_OF_COLUMNS: "number",
215
+ CELLS_PER_EXT_BLOB: "number",
216
+ FIELD_ELEMENTS_PER_CELL: "number",
217
+ FIELD_ELEMENTS_PER_EXT_BLOB: "number",
218
+ KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH: "number",
219
+
220
+ // GLOAS
221
+ PTC_SIZE: "number",
222
+ MAX_PAYLOAD_ATTESTATIONS: "number",
223
+ BUILDER_PENDING_WITHDRAWALS_LIMIT: "number",
224
+ };
225
+
226
+ type BeaconPresetTypes = {
227
+ [K in keyof BeaconPreset]: "number";
228
+ };