@lodestar/types 1.45.0 → 1.46.0-dev.13423cff6d

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.
@@ -1,21 +1,24 @@
1
1
  import {
2
2
  BitVectorType,
3
- ByteListType,
4
3
  ContainerType,
5
4
  ListBasicType,
6
5
  ListCompositeType,
6
+ ProgressiveBitListType,
7
+ ProgressiveByteListType,
8
+ ProgressiveContainerType,
9
+ ProgressiveListBasicType,
10
+ ProgressiveListCompositeType,
7
11
  VectorBasicType,
8
12
  VectorCompositeType,
9
13
  } from "@chainsafe/ssz";
10
14
  import {
11
- BUILDER_PENDING_WITHDRAWALS_LIMIT,
12
- BUILDER_REGISTRY_LIMIT,
15
+ CURRENT_SYNC_COMMITTEE_DEPTH_GLOAS,
16
+ EPOCHS_PER_SYNC_COMMITTEE_PERIOD,
17
+ EXECUTION_BLOCK_HASH_DEPTH_GLOAS,
18
+ FINALIZED_ROOT_DEPTH_GLOAS,
13
19
  HISTORICAL_ROOTS_LIMIT,
14
- MAX_BUILDER_DEPOSIT_REQUESTS_PER_PAYLOAD,
15
- MAX_BUILDER_EXIT_REQUESTS_PER_PAYLOAD,
16
- MAX_BYTES_PER_TRANSACTION,
17
- MAX_PAYLOAD_ATTESTATIONS,
18
20
  MIN_SEED_LOOKAHEAD,
21
+ NEXT_SYNC_COMMITTEE_DEPTH_GLOAS,
19
22
  NUMBER_OF_COLUMNS,
20
23
  PTC_SIZE,
21
24
  SLOTS_PER_EPOCH,
@@ -47,38 +50,101 @@ const {
47
50
  Uint8,
48
51
  BuilderIndex,
49
52
  EpochInf,
53
+ ParticipationFlags,
50
54
  } = primitiveSsz;
51
55
 
52
- export const Builder = new ContainerType(
56
+ function activeFields(count: number): boolean[] {
57
+ return Array.from({length: count}, () => true);
58
+ }
59
+
60
+ export const ExecutionBranch = new VectorCompositeType(Bytes32, EXECUTION_BLOCK_HASH_DEPTH_GLOAS);
61
+
62
+ export const CurrentSyncCommitteeBranch = new VectorCompositeType(Bytes32, CURRENT_SYNC_COMMITTEE_DEPTH_GLOAS);
63
+
64
+ export const FinalityBranch = new VectorCompositeType(Bytes32, FINALIZED_ROOT_DEPTH_GLOAS);
65
+
66
+ export const NextSyncCommitteeBranch = new VectorCompositeType(Bytes32, NEXT_SYNC_COMMITTEE_DEPTH_GLOAS);
67
+
68
+ export const AggregationBits = new ProgressiveBitListType({typeName: "AggregationBits"});
69
+ export const AttestingIndices = new ProgressiveListBasicType(ValidatorIndex, {typeName: "AttestingIndices"});
70
+ export const Transaction = new ProgressiveByteListType({typeName: "Transaction"});
71
+ export const Transactions = new ProgressiveListCompositeType(Transaction, {typeName: "Transactions"});
72
+ export const Withdrawals = new ProgressiveListCompositeType(capellaSsz.Withdrawal, {typeName: "Withdrawals"});
73
+ export const BlobKzgCommitments = new ProgressiveListCompositeType(denebSsz.KZGCommitment, {
74
+ typeName: "BlobKzgCommitments",
75
+ });
76
+ export const KZGProofs = new ProgressiveListCompositeType(denebSsz.KZGProof, {typeName: "KZGProofs"});
77
+ export const DataColumn = new ProgressiveListCompositeType(fuluSsz.Cell, {typeName: "DataColumn"});
78
+
79
+ export const Attestation = new ProgressiveContainerType(
53
80
  {
54
- pubkey: BLSPubkey,
55
- version: Uint8,
56
- executionAddress: ExecutionAddress,
57
- balance: UintNum64,
58
- depositEpoch: EpochInf,
59
- withdrawableEpoch: EpochInf,
81
+ aggregationBits: AggregationBits,
82
+ data: phase0Ssz.AttestationData,
83
+ signature: BLSSignature,
84
+ committeeBits: electraSsz.CommitteeBits,
60
85
  },
61
- {typeName: "Builder", jsonCase: "eth2"}
86
+ activeFields(4),
87
+ {typeName: "Attestation", jsonCase: "eth2"}
62
88
  );
63
89
 
64
- export const BuilderPendingWithdrawal = new ContainerType(
90
+ export const IndexedAttestation = new ProgressiveContainerType(
65
91
  {
66
- feeRecipient: ExecutionAddress,
67
- amount: UintNum64,
68
- builderIndex: BuilderIndex,
92
+ attestingIndices: AttestingIndices,
93
+ data: phase0Ssz.AttestationData,
94
+ signature: BLSSignature,
69
95
  },
70
- {typeName: "BuilderPendingWithdrawal", jsonCase: "eth2"}
96
+ activeFields(3),
97
+ {typeName: "IndexedAttestation", jsonCase: "eth2"}
71
98
  );
72
99
 
73
- export const BuilderPendingPayment = new ContainerType(
100
+ /** Same as `IndexedAttestation` but epoch, slot and index are not bounded and must be a bigint */
101
+ export const IndexedAttestationBigint = new ProgressiveContainerType(
74
102
  {
75
- weight: UintNum64,
76
- withdrawal: BuilderPendingWithdrawal,
77
- proposerIndex: ValidatorIndex,
103
+ attestingIndices: AttestingIndices,
104
+ data: phase0Ssz.AttestationDataBigint,
105
+ signature: BLSSignature,
78
106
  },
79
- {typeName: "BuilderPendingPayment", jsonCase: "eth2"}
107
+ activeFields(3),
108
+ {typeName: "IndexedAttestation", jsonCase: "eth2"}
80
109
  );
81
110
 
111
+ export const AttesterSlashing = new ContainerType(
112
+ {
113
+ attestation1: IndexedAttestationBigint,
114
+ attestation2: IndexedAttestationBigint,
115
+ },
116
+ {typeName: "AttesterSlashing", jsonCase: "eth2"}
117
+ );
118
+
119
+ export const AggregateAndProof = new ContainerType(
120
+ {
121
+ aggregatorIndex: ValidatorIndex,
122
+ aggregate: Attestation,
123
+ selectionProof: BLSSignature,
124
+ },
125
+ {typeName: "AggregateAndProof", jsonCase: "eth2", cachePermanentRootStruct: true}
126
+ );
127
+
128
+ export const SignedAggregateAndProof = new ContainerType(
129
+ {
130
+ message: AggregateAndProof,
131
+ signature: BLSSignature,
132
+ },
133
+ {typeName: "SignedAggregateAndProof", jsonCase: "eth2"}
134
+ );
135
+
136
+ export const DepositRequest = electraSsz.DepositRequest;
137
+ export const DepositRequests = new ProgressiveListCompositeType(DepositRequest, {typeName: "DepositRequests"});
138
+ export const WithdrawalRequest = electraSsz.WithdrawalRequest;
139
+ export const WithdrawalRequests = new ProgressiveListCompositeType(WithdrawalRequest, {
140
+ typeName: "WithdrawalRequests",
141
+ });
142
+ export const ConsolidationRequest = electraSsz.ConsolidationRequest;
143
+ export const ConsolidationRequests = new ProgressiveListCompositeType(ConsolidationRequest, {
144
+ typeName: "ConsolidationRequests",
145
+ });
146
+
147
+ // New in GLOAS:EIP8282
82
148
  export const BuilderDepositRequest = new ContainerType(
83
149
  {
84
150
  pubkey: BLSPubkey,
@@ -88,12 +154,11 @@ export const BuilderDepositRequest = new ContainerType(
88
154
  },
89
155
  {typeName: "BuilderDepositRequest", jsonCase: "eth2"}
90
156
  );
157
+ export const BuilderDepositRequests = new ProgressiveListCompositeType(BuilderDepositRequest, {
158
+ typeName: "BuilderDepositRequests",
159
+ });
91
160
 
92
- export const BuilderDepositRequests = new ListCompositeType(
93
- BuilderDepositRequest,
94
- MAX_BUILDER_DEPOSIT_REQUESTS_PER_PAYLOAD
95
- );
96
-
161
+ // New in GLOAS:EIP8282
97
162
  export const BuilderExitRequest = new ContainerType(
98
163
  {
99
164
  sourceAddress: ExecutionAddress,
@@ -101,21 +166,88 @@ export const BuilderExitRequest = new ContainerType(
101
166
  },
102
167
  {typeName: "BuilderExitRequest", jsonCase: "eth2"}
103
168
  );
169
+ export const BuilderExitRequests = new ProgressiveListCompositeType(BuilderExitRequest, {
170
+ typeName: "BuilderExitRequests",
171
+ });
104
172
 
105
- export const BuilderExitRequests = new ListCompositeType(BuilderExitRequest, MAX_BUILDER_EXIT_REQUESTS_PER_PAYLOAD);
106
-
107
- // New in GLOAS:EIP8282 — extends electra ExecutionRequests with builder deposits and exits
108
- export const ExecutionRequests = new ContainerType(
173
+ export const ExecutionRequests = new ProgressiveContainerType(
109
174
  {
110
- deposits: electraSsz.DepositRequests,
111
- withdrawals: electraSsz.WithdrawalRequests,
112
- consolidations: electraSsz.ConsolidationRequests,
113
- builderDeposits: BuilderDepositRequests,
114
- builderExits: BuilderExitRequests,
175
+ deposits: DepositRequests,
176
+ withdrawals: WithdrawalRequests,
177
+ consolidations: ConsolidationRequests,
178
+ builderDeposits: BuilderDepositRequests, // New in GLOAS:EIP8282
179
+ builderExits: BuilderExitRequests, // New in GLOAS:EIP8282
115
180
  },
181
+ activeFields(5),
116
182
  {typeName: "ExecutionRequests", jsonCase: "eth2"}
117
183
  );
118
184
 
185
+ export const ProposerSlashings = new ProgressiveListCompositeType(phase0Ssz.ProposerSlashing, {
186
+ typeName: "ProposerSlashings",
187
+ });
188
+ export const AttesterSlashings = new ProgressiveListCompositeType(AttesterSlashing, {
189
+ typeName: "AttesterSlashings",
190
+ });
191
+ export const Attestations = new ProgressiveListCompositeType(Attestation, {typeName: "Attestations"});
192
+ export const Deposits = new ProgressiveListCompositeType(phase0Ssz.Deposit, {typeName: "Deposits"});
193
+ export const VoluntaryExits = new ProgressiveListCompositeType(phase0Ssz.SignedVoluntaryExit, {
194
+ typeName: "VoluntaryExits",
195
+ });
196
+ export const BlsToExecutionChanges = new ProgressiveListCompositeType(capellaSsz.SignedBLSToExecutionChange, {
197
+ typeName: "BLSToExecutionChanges",
198
+ });
199
+
200
+ export const Validators = new ProgressiveListCompositeType(phase0Ssz.Validator, {typeName: "Validators"});
201
+ export const Balances = new ProgressiveListBasicType(UintNum64, {typeName: "Balances"});
202
+ export const EpochParticipation = new ProgressiveListBasicType(ParticipationFlags, {
203
+ typeName: "EpochParticipation",
204
+ });
205
+ export const InactivityScores = new ProgressiveListBasicType(UintNum64, {typeName: "InactivityScores"});
206
+ export const PendingDeposits = new ProgressiveListCompositeType(electraSsz.PendingDeposit, {
207
+ typeName: "PendingDeposits",
208
+ });
209
+ export const PendingPartialWithdrawals = new ProgressiveListCompositeType(electraSsz.PendingPartialWithdrawal, {
210
+ typeName: "PendingPartialWithdrawals",
211
+ });
212
+ export const PendingConsolidations = new ProgressiveListCompositeType(electraSsz.PendingConsolidation, {
213
+ typeName: "PendingConsolidations",
214
+ });
215
+
216
+ export const Builder = new ContainerType(
217
+ {
218
+ pubkey: BLSPubkey,
219
+ version: Uint8,
220
+ executionAddress: ExecutionAddress,
221
+ balance: UintNum64,
222
+ depositEpoch: EpochInf,
223
+ withdrawableEpoch: EpochInf,
224
+ },
225
+ {typeName: "Builder", jsonCase: "eth2"}
226
+ );
227
+
228
+ export const BuilderPendingWithdrawal = new ContainerType(
229
+ {
230
+ feeRecipient: ExecutionAddress,
231
+ amount: UintNum64,
232
+ builderIndex: BuilderIndex,
233
+ },
234
+ {typeName: "BuilderPendingWithdrawal", jsonCase: "eth2"}
235
+ );
236
+
237
+ export const BuilderPendingPayment = new ContainerType(
238
+ {
239
+ weight: UintNum64,
240
+ withdrawal: BuilderPendingWithdrawal,
241
+ proposerIndex: ValidatorIndex,
242
+ },
243
+ {typeName: "BuilderPendingPayment", jsonCase: "eth2"}
244
+ );
245
+
246
+ export const Builders = new ProgressiveListCompositeType(Builder, {typeName: "Builders"});
247
+ export const BuilderPendingWithdrawals = new ProgressiveListCompositeType(BuilderPendingWithdrawal, {
248
+ typeName: "BuilderPendingWithdrawals",
249
+ });
250
+
119
251
  export const PayloadTimelinessCommittee = new VectorBasicType(ValidatorIndex, PTC_SIZE);
120
252
  export const PtcWindow = new VectorCompositeType(
121
253
  PayloadTimelinessCommittee,
@@ -132,15 +264,20 @@ export const PayloadAttestationData = new ContainerType(
132
264
  {typeName: "PayloadAttestationData", jsonCase: "eth2"}
133
265
  );
134
266
 
135
- export const PayloadAttestation = new ContainerType(
267
+ export const PayloadAttestation = new ProgressiveContainerType(
136
268
  {
137
269
  aggregationBits: new BitVectorType(PTC_SIZE),
138
270
  data: PayloadAttestationData,
139
271
  signature: BLSSignature,
140
272
  },
273
+ activeFields(3),
141
274
  {typeName: "PayloadAttestation", jsonCase: "eth2"}
142
275
  );
143
276
 
277
+ export const PayloadAttestations = new ProgressiveListCompositeType(PayloadAttestation, {
278
+ typeName: "PayloadAttestations",
279
+ });
280
+
144
281
  export const PayloadAttestationMessage = new ContainerType(
145
282
  {
146
283
  validatorIndex: ValidatorIndex,
@@ -150,12 +287,13 @@ export const PayloadAttestationMessage = new ContainerType(
150
287
  {typeName: "PayloadAttestationMessage", jsonCase: "eth2"}
151
288
  );
152
289
 
153
- export const IndexedPayloadAttestation = new ContainerType(
290
+ export const IndexedPayloadAttestation = new ProgressiveContainerType(
154
291
  {
155
292
  attestingIndices: new ListBasicType(ValidatorIndex, PTC_SIZE),
156
293
  data: PayloadAttestationData,
157
294
  signature: BLSSignature,
158
295
  },
296
+ activeFields(3),
159
297
  {typeName: "IndexedPayloadAttestation", jsonCase: "eth2"}
160
298
  );
161
299
 
@@ -178,21 +316,25 @@ export const SignedProposerPreferences = new ContainerType(
178
316
  {typeName: "SignedProposerPreferences", jsonCase: "eth2"}
179
317
  );
180
318
 
181
- export const ExecutionPayloadBid = new ContainerType(
319
+ export const ExecutionPayloadBid = new ProgressiveContainerType(
182
320
  {
183
321
  parentBlockHash: Bytes32,
184
322
  parentBlockRoot: Root,
185
323
  blockHash: Bytes32,
186
324
  prevRandao: Bytes32,
187
325
  feeRecipient: ExecutionAddress,
188
- gasLimit: UintNum64,
326
+ // gasLimit is a uint64 with no bound in process_execution_payload_bid (the gas-limit target
327
+ // check is gossip-only), so a block can carry any value; use UintBn64 so the bid hashTreeRoot
328
+ // matches exact-uint64 clients for values above 2**53.
329
+ gasLimit: UintBn64,
189
330
  builderIndex: BuilderIndex,
190
331
  slot: Slot,
191
332
  value: UintNum64,
192
333
  executionPayment: UintNum64,
193
- blobKzgCommitments: denebSsz.BlobKzgCommitments,
334
+ blobKzgCommitments: BlobKzgCommitments,
194
335
  executionRequestsRoot: Root,
195
336
  },
337
+ activeFields(12),
196
338
  {typeName: "ExecutionPayloadBid", jsonCase: "eth2"}
197
339
  );
198
340
 
@@ -204,18 +346,21 @@ export const SignedExecutionPayloadBid = new ContainerType(
204
346
  {typeName: "SignedExecutionPayloadBid", jsonCase: "eth2"}
205
347
  );
206
348
 
207
- export const BlockAccessList = new ByteListType(MAX_BYTES_PER_TRANSACTION);
349
+ export const BlockAccessList = new ProgressiveByteListType({typeName: "BlockAccessList"});
208
350
 
209
- export const ExecutionPayload = new ContainerType(
351
+ export const ExecutionPayload = new ProgressiveContainerType(
210
352
  {
211
353
  ...electraSsz.ExecutionPayload.fields,
354
+ transactions: Transactions,
355
+ withdrawals: Withdrawals,
212
356
  blockAccessList: BlockAccessList, // New in GLOAS:EIP-7928
213
357
  slotNumber: Slot, // New in GLOAS:EIP-7843
214
358
  },
359
+ activeFields(19),
215
360
  {typeName: "ExecutionPayload", jsonCase: "eth2"}
216
361
  );
217
362
 
218
- export const ExecutionPayloadEnvelope = new ContainerType(
363
+ export const ExecutionPayloadEnvelope = new ProgressiveContainerType(
219
364
  {
220
365
  payload: ExecutionPayload,
221
366
  executionRequests: ExecutionRequests,
@@ -223,6 +368,7 @@ export const ExecutionPayloadEnvelope = new ContainerType(
223
368
  beaconBlockRoot: Root,
224
369
  parentBeaconBlockRoot: Root,
225
370
  },
371
+ activeFields(5),
226
372
  {typeName: "ExecutionPayloadEnvelope", jsonCase: "eth2"}
227
373
  );
228
374
 
@@ -234,25 +380,35 @@ export const SignedExecutionPayloadEnvelope = new ContainerType(
234
380
  {typeName: "SignedExecutionPayloadEnvelope", jsonCase: "eth2"}
235
381
  );
236
382
 
237
- export const BeaconBlockBody = new ContainerType(
383
+ export const SignedExecutionPayloadEnvelopeContents = new ContainerType(
384
+ {
385
+ signedExecutionPayloadEnvelope: SignedExecutionPayloadEnvelope,
386
+ kzgProofs: fuluSsz.KZGProofs,
387
+ blobs: denebSsz.Blobs,
388
+ },
389
+ {typeName: "SignedExecutionPayloadEnvelopeContents", jsonCase: "eth2"}
390
+ );
391
+
392
+ export const BeaconBlockBody = new ProgressiveContainerType(
238
393
  {
239
394
  randaoReveal: phase0Ssz.BeaconBlockBody.fields.randaoReveal,
240
395
  eth1Data: phase0Ssz.BeaconBlockBody.fields.eth1Data,
241
396
  graffiti: phase0Ssz.BeaconBlockBody.fields.graffiti,
242
- proposerSlashings: phase0Ssz.BeaconBlockBody.fields.proposerSlashings,
243
- attesterSlashings: electraSsz.BeaconBlockBody.fields.attesterSlashings,
244
- attestations: electraSsz.BeaconBlockBody.fields.attestations,
245
- deposits: phase0Ssz.BeaconBlockBody.fields.deposits,
246
- voluntaryExits: phase0Ssz.BeaconBlockBody.fields.voluntaryExits,
397
+ proposerSlashings: ProposerSlashings,
398
+ attesterSlashings: AttesterSlashings,
399
+ attestations: Attestations,
400
+ deposits: Deposits,
401
+ voluntaryExits: VoluntaryExits,
247
402
  syncAggregate: altairSsz.BeaconBlockBody.fields.syncAggregate,
248
403
  // executionPayload: ExecutionPayload, // Removed in GLOAS:EIP7732
249
- blsToExecutionChanges: capellaSsz.BeaconBlockBody.fields.blsToExecutionChanges,
404
+ blsToExecutionChanges: BlsToExecutionChanges,
250
405
  // blobKzgCommitments: denebSsz.BeaconBlockBody.fields.blobKzgCommitments, // Removed in GLOAS:EIP7732
251
406
  // executionRequests: ExecutionRequests, // Removed in GLOAS:EIP7732
252
407
  signedExecutionPayloadBid: SignedExecutionPayloadBid, // New in GLOAS:EIP7732
253
- payloadAttestations: new ListCompositeType(PayloadAttestation, MAX_PAYLOAD_ATTESTATIONS), // New in GLOAS:EIP7732
408
+ payloadAttestations: PayloadAttestations, // New in GLOAS:EIP7732
254
409
  parentExecutionRequests: ExecutionRequests, // New in GLOAS:EIP7732
255
410
  },
411
+ activeFields(13),
256
412
  {typeName: "BeaconBlockBody", jsonCase: "eth2", cachePermanentRootStruct: true}
257
413
  );
258
414
 
@@ -272,7 +428,77 @@ export const SignedBeaconBlock = new ContainerType(
272
428
  {typeName: "SignedBeaconBlock", jsonCase: "eth2"}
273
429
  );
274
430
 
275
- export const BeaconState = new ContainerType(
431
+ // Full block production response for self-builds, enables stateless envelope publishing
432
+ export const BlockContents = new ContainerType(
433
+ {
434
+ block: BeaconBlock,
435
+ executionPayloadEnvelope: ExecutionPayloadEnvelope,
436
+ kzgProofs: fuluSsz.KZGProofs,
437
+ blobs: denebSsz.Blobs,
438
+ },
439
+ {typeName: "BlockContents", jsonCase: "eth2"}
440
+ );
441
+
442
+ export const LightClientHeader = new ContainerType(
443
+ {
444
+ beacon: phase0Ssz.BeaconBlockHeader,
445
+ executionBlockHash: Bytes32,
446
+ executionBranch: ExecutionBranch,
447
+ },
448
+ {typeName: "LightClientHeader", jsonCase: "eth2"}
449
+ );
450
+
451
+ export const LightClientBootstrap = new ContainerType(
452
+ {
453
+ header: LightClientHeader,
454
+ currentSyncCommittee: altairSsz.SyncCommittee,
455
+ currentSyncCommitteeBranch: CurrentSyncCommitteeBranch,
456
+ },
457
+ {typeName: "LightClientBootstrap", jsonCase: "eth2"}
458
+ );
459
+
460
+ export const LightClientUpdate = new ContainerType(
461
+ {
462
+ attestedHeader: LightClientHeader,
463
+ nextSyncCommittee: altairSsz.SyncCommittee,
464
+ nextSyncCommitteeBranch: NextSyncCommitteeBranch,
465
+ finalizedHeader: LightClientHeader,
466
+ finalityBranch: FinalityBranch,
467
+ syncAggregate: altairSsz.SyncAggregate,
468
+ signatureSlot: Slot,
469
+ },
470
+ {typeName: "LightClientUpdate", jsonCase: "eth2"}
471
+ );
472
+
473
+ export const LightClientFinalityUpdate = new ContainerType(
474
+ {
475
+ attestedHeader: LightClientHeader,
476
+ finalizedHeader: LightClientHeader,
477
+ finalityBranch: FinalityBranch,
478
+ syncAggregate: altairSsz.SyncAggregate,
479
+ signatureSlot: Slot,
480
+ },
481
+ {typeName: "LightClientFinalityUpdate", jsonCase: "eth2"}
482
+ );
483
+
484
+ export const LightClientOptimisticUpdate = new ContainerType(
485
+ {
486
+ attestedHeader: LightClientHeader,
487
+ syncAggregate: altairSsz.SyncAggregate,
488
+ signatureSlot: Slot,
489
+ },
490
+ {typeName: "LightClientOptimisticUpdate", jsonCase: "eth2"}
491
+ );
492
+
493
+ export const LightClientStore = new ContainerType(
494
+ {
495
+ snapshot: LightClientBootstrap,
496
+ validUpdates: new ListCompositeType(LightClientUpdate, EPOCHS_PER_SYNC_COMMITTEE_PERIOD * SLOTS_PER_EPOCH),
497
+ },
498
+ {typeName: "LightClientStore", jsonCase: "eth2"}
499
+ );
500
+
501
+ export const BeaconState = new ProgressiveContainerType(
276
502
  {
277
503
  genesisTime: UintNum64,
278
504
  genesisValidatorsRoot: Root,
@@ -289,21 +515,21 @@ export const BeaconState = new ContainerType(
289
515
  eth1DataVotes: phase0Ssz.Eth1DataVotes,
290
516
  eth1DepositIndex: UintNum64,
291
517
  // Registry
292
- validators: phase0Ssz.Validators,
293
- balances: phase0Ssz.Balances,
518
+ validators: Validators,
519
+ balances: Balances,
294
520
  randaoMixes: phase0Ssz.RandaoMixes,
295
521
  // Slashings
296
522
  slashings: phase0Ssz.Slashings,
297
523
  // Participation
298
- previousEpochParticipation: altairSsz.EpochParticipation,
299
- currentEpochParticipation: altairSsz.EpochParticipation,
524
+ previousEpochParticipation: EpochParticipation,
525
+ currentEpochParticipation: EpochParticipation,
300
526
  // Finality
301
527
  justificationBits: phase0Ssz.JustificationBits,
302
528
  previousJustifiedCheckpoint: phase0Ssz.Checkpoint,
303
529
  currentJustifiedCheckpoint: phase0Ssz.Checkpoint,
304
530
  finalizedCheckpoint: phase0Ssz.Checkpoint,
305
531
  // Inactivity
306
- inactivityScores: altairSsz.InactivityScores,
532
+ inactivityScores: InactivityScores,
307
533
  // Sync
308
534
  currentSyncCommittee: altairSsz.SyncCommittee,
309
535
  nextSyncCommittee: altairSsz.SyncCommittee,
@@ -321,28 +547,29 @@ export const BeaconState = new ContainerType(
321
547
  earliestExitEpoch: Epoch,
322
548
  consolidationBalanceToConsume: Gwei,
323
549
  earliestConsolidationEpoch: Epoch,
324
- pendingDeposits: electraSsz.BeaconState.fields.pendingDeposits,
325
- pendingPartialWithdrawals: electraSsz.BeaconState.fields.pendingPartialWithdrawals,
326
- pendingConsolidations: electraSsz.BeaconState.fields.pendingConsolidations,
550
+ pendingDeposits: PendingDeposits,
551
+ pendingPartialWithdrawals: PendingPartialWithdrawals,
552
+ pendingConsolidations: PendingConsolidations,
327
553
  proposerLookahead: fuluSsz.BeaconState.fields.proposerLookahead,
328
- builders: new ListCompositeType(Builder, BUILDER_REGISTRY_LIMIT), // New in GLOAS:EIP7732
554
+ builders: Builders, // New in GLOAS:EIP7732
329
555
  nextWithdrawalBuilderIndex: BuilderIndex, // New in GLOAS:EIP7732
330
556
  executionPayloadAvailability: new BitVectorType(SLOTS_PER_HISTORICAL_ROOT), // New in GLOAS:EIP7732
331
557
  builderPendingPayments: new VectorCompositeType(BuilderPendingPayment, 2 * SLOTS_PER_EPOCH), // New in GLOAS:EIP7732
332
- builderPendingWithdrawals: new ListCompositeType(BuilderPendingWithdrawal, BUILDER_PENDING_WITHDRAWALS_LIMIT), // New in GLOAS:EIP7732
558
+ builderPendingWithdrawals: BuilderPendingWithdrawals, // New in GLOAS:EIP7732
333
559
  latestExecutionPayloadBid: ExecutionPayloadBid, // New in GLOAS:EIP7732
334
- payloadExpectedWithdrawals: capellaSsz.Withdrawals, // New in GLOAS:EIP7732
560
+ payloadExpectedWithdrawals: Withdrawals, // New in GLOAS:EIP7732
335
561
  ptcWindow: PtcWindow, // New in GLOAS:EIP7732
336
562
  },
563
+ activeFields(46),
337
564
  {typeName: "BeaconState", jsonCase: "eth2"}
338
565
  );
339
566
 
340
567
  export const DataColumnSidecar = new ContainerType(
341
568
  {
342
569
  index: fuluSsz.DataColumnSidecar.fields.index,
343
- column: fuluSsz.DataColumnSidecar.fields.column,
570
+ column: DataColumn,
344
571
  // kzgCommitments: denebSsz.BlobKzgCommitments, // Removed in GLOAS:EIP7732
345
- kzgProofs: fuluSsz.DataColumnSidecar.fields.kzgProofs,
572
+ kzgProofs: KZGProofs,
346
573
  // signedBlockHeader: phase0Ssz.SignedBeaconBlockHeader, // Removed in GLOAS:EIP7732
347
574
  // kzgCommitmentsInclusionProof: KzgCommitmentsInclusionProof, // Removed in GLOAS:EIP7732
348
575
  slot: Slot, // New in GLOAS:EIP7732
@@ -1,6 +1,31 @@
1
1
  import {ValueOf} from "@chainsafe/ssz";
2
2
  import * as ssz from "./sszTypes.js";
3
3
 
4
+ export type AggregationBits = ValueOf<typeof ssz.AggregationBits>;
5
+ export type AttestingIndices = ValueOf<typeof ssz.AttestingIndices>;
6
+ export type Transaction = ValueOf<typeof ssz.Transaction>;
7
+ export type Transactions = ValueOf<typeof ssz.Transactions>;
8
+ export type Withdrawals = ValueOf<typeof ssz.Withdrawals>;
9
+ export type BlobKzgCommitments = ValueOf<typeof ssz.BlobKzgCommitments>;
10
+ export type KZGProofs = ValueOf<typeof ssz.KZGProofs>;
11
+ export type DataColumn = ValueOf<typeof ssz.DataColumn>;
12
+
13
+ export type Attestation = ValueOf<typeof ssz.Attestation>;
14
+ export type IndexedAttestation = ValueOf<typeof ssz.IndexedAttestation>;
15
+ export type IndexedAttestationBigint = ValueOf<typeof ssz.IndexedAttestationBigint>;
16
+ export type AttesterSlashing = ValueOf<typeof ssz.AttesterSlashing>;
17
+
18
+ export type AggregateAndProof = ValueOf<typeof ssz.AggregateAndProof>;
19
+ export type SignedAggregateAndProof = ValueOf<typeof ssz.SignedAggregateAndProof>;
20
+
21
+ export type DepositRequest = ValueOf<typeof ssz.DepositRequest>;
22
+ export type DepositRequests = ValueOf<typeof ssz.DepositRequests>;
23
+ export type WithdrawalRequest = ValueOf<typeof ssz.WithdrawalRequest>;
24
+ export type WithdrawalRequests = ValueOf<typeof ssz.WithdrawalRequests>;
25
+ export type ConsolidationRequest = ValueOf<typeof ssz.ConsolidationRequest>;
26
+ export type ConsolidationRequests = ValueOf<typeof ssz.ConsolidationRequests>;
27
+ export type ExecutionRequests = ValueOf<typeof ssz.ExecutionRequests>;
28
+
4
29
  export type Builder = ValueOf<typeof ssz.Builder>;
5
30
  export type BuilderPendingWithdrawal = ValueOf<typeof ssz.BuilderPendingWithdrawal>;
6
31
  export type BuilderPendingPayment = ValueOf<typeof ssz.BuilderPendingPayment>;
@@ -8,7 +33,6 @@ export type BuilderDepositRequest = ValueOf<typeof ssz.BuilderDepositRequest>;
8
33
  export type BuilderDepositRequests = ValueOf<typeof ssz.BuilderDepositRequests>;
9
34
  export type BuilderExitRequest = ValueOf<typeof ssz.BuilderExitRequest>;
10
35
  export type BuilderExitRequests = ValueOf<typeof ssz.BuilderExitRequests>;
11
- export type ExecutionRequests = ValueOf<typeof ssz.ExecutionRequests>;
12
36
  export type PayloadTimelinessCommittee = ValueOf<typeof ssz.PayloadTimelinessCommittee>;
13
37
  export type PtcWindow = ValueOf<typeof ssz.PtcWindow>;
14
38
  export type PayloadAttestationData = ValueOf<typeof ssz.PayloadAttestationData>;
@@ -23,9 +47,17 @@ export type SignedExecutionPayloadBid = ValueOf<typeof ssz.SignedExecutionPayloa
23
47
  export type BlockAccessList = ValueOf<typeof ssz.BlockAccessList>;
24
48
  export type ExecutionPayloadEnvelope = ValueOf<typeof ssz.ExecutionPayloadEnvelope>;
25
49
  export type SignedExecutionPayloadEnvelope = ValueOf<typeof ssz.SignedExecutionPayloadEnvelope>;
50
+ export type SignedExecutionPayloadEnvelopeContents = ValueOf<typeof ssz.SignedExecutionPayloadEnvelopeContents>;
26
51
  export type BeaconBlockBody = ValueOf<typeof ssz.BeaconBlockBody>;
27
52
  export type BeaconBlock = ValueOf<typeof ssz.BeaconBlock>;
28
53
  export type SignedBeaconBlock = ValueOf<typeof ssz.SignedBeaconBlock>;
54
+ export type BlockContents = ValueOf<typeof ssz.BlockContents>;
55
+ export type LightClientHeader = ValueOf<typeof ssz.LightClientHeader>;
56
+ export type LightClientBootstrap = ValueOf<typeof ssz.LightClientBootstrap>;
57
+ export type LightClientUpdate = ValueOf<typeof ssz.LightClientUpdate>;
58
+ export type LightClientFinalityUpdate = ValueOf<typeof ssz.LightClientFinalityUpdate>;
59
+ export type LightClientOptimisticUpdate = ValueOf<typeof ssz.LightClientOptimisticUpdate>;
60
+ export type LightClientStore = ValueOf<typeof ssz.LightClientStore>;
29
61
  export type BeaconState = ValueOf<typeof ssz.BeaconState>;
30
62
 
31
63
  export type DataColumnSidecar = ValueOf<typeof ssz.DataColumnSidecar>;
package/src/types.ts CHANGED
@@ -294,12 +294,12 @@ type TypesByFork = {
294
294
  SignedBeaconBlock: gloas.SignedBeaconBlock;
295
295
  Metadata: fulu.Metadata;
296
296
  Status: fulu.Status;
297
- LightClientHeader: deneb.LightClientHeader;
298
- LightClientBootstrap: electra.LightClientBootstrap;
299
- LightClientUpdate: electra.LightClientUpdate;
300
- LightClientFinalityUpdate: electra.LightClientFinalityUpdate;
301
- LightClientOptimisticUpdate: electra.LightClientOptimisticUpdate;
302
- LightClientStore: electra.LightClientStore;
297
+ LightClientHeader: gloas.LightClientHeader;
298
+ LightClientBootstrap: gloas.LightClientBootstrap;
299
+ LightClientUpdate: gloas.LightClientUpdate;
300
+ LightClientFinalityUpdate: gloas.LightClientFinalityUpdate;
301
+ LightClientOptimisticUpdate: gloas.LightClientOptimisticUpdate;
302
+ LightClientStore: gloas.LightClientStore;
303
303
  BlindedBeaconBlock: electra.BlindedBeaconBlock;
304
304
  BlindedBeaconBlockBody: electra.BlindedBeaconBlockBody;
305
305
  SignedBlindedBeaconBlock: electra.SignedBlindedBeaconBlock;
@@ -308,19 +308,19 @@ type TypesByFork = {
308
308
  BuilderBid: electra.BuilderBid;
309
309
  SignedBuilderBid: electra.SignedBuilderBid;
310
310
  SSEPayloadAttributes: gloas.SSEPayloadAttributes;
311
- BlockContents: fulu.BlockContents;
311
+ BlockContents: gloas.BlockContents;
312
312
  SignedBlockContents: fulu.SignedBlockContents;
313
313
  ExecutionPayloadAndBlobsBundle: fulu.ExecutionPayloadAndBlobsBundle;
314
314
  BlobsBundle: fulu.BlobsBundle;
315
315
  SyncCommittee: altair.SyncCommittee;
316
316
  SyncAggregate: altair.SyncAggregate;
317
317
  SingleAttestation: electra.SingleAttestation;
318
- Attestation: electra.Attestation;
319
- IndexedAttestation: electra.IndexedAttestation;
320
- IndexedAttestationBigint: electra.IndexedAttestationBigint;
321
- AttesterSlashing: electra.AttesterSlashing;
322
- AggregateAndProof: electra.AggregateAndProof;
323
- SignedAggregateAndProof: electra.SignedAggregateAndProof;
318
+ Attestation: gloas.Attestation;
319
+ IndexedAttestation: gloas.IndexedAttestation;
320
+ IndexedAttestationBigint: gloas.IndexedAttestationBigint;
321
+ AttesterSlashing: gloas.AttesterSlashing;
322
+ AggregateAndProof: gloas.AggregateAndProof;
323
+ SignedAggregateAndProof: gloas.SignedAggregateAndProof;
324
324
  ExecutionRequests: gloas.ExecutionRequests;
325
325
  ExecutionPayloadBid: gloas.ExecutionPayloadBid;
326
326
  DataColumnSidecar: gloas.DataColumnSidecar;