@lodestar/beacon-node 1.51.0-dev.aa1ecb7c18 → 1.51.0-dev.ab8f3f6381

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.
Files changed (167) hide show
  1. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/pool/index.js +17 -0
  3. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  4. package/lib/chain/GetBlobsTracker.d.ts +2 -2
  5. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  6. package/lib/chain/GetBlobsTracker.js.map +1 -1
  7. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  8. package/lib/chain/blocks/importBlock.js +35 -47
  9. package/lib/chain/blocks/importBlock.js.map +1 -1
  10. package/lib/chain/blocks/importExecutionPayload.d.ts +4 -0
  11. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  12. package/lib/chain/blocks/importExecutionPayload.js +24 -3
  13. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  14. package/lib/chain/blocks/index.d.ts.map +1 -1
  15. package/lib/chain/blocks/index.js +2 -2
  16. package/lib/chain/blocks/index.js.map +1 -1
  17. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +1 -1
  18. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  19. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  20. package/lib/chain/blocks/verifyBlocksSanityChecks.js +4 -0
  21. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  22. package/lib/chain/chain.d.ts +24 -2
  23. package/lib/chain/chain.d.ts.map +1 -1
  24. package/lib/chain/chain.js +119 -6
  25. package/lib/chain/chain.js.map +1 -1
  26. package/lib/chain/emitter.d.ts +6 -0
  27. package/lib/chain/emitter.d.ts.map +1 -1
  28. package/lib/chain/emitter.js +5 -0
  29. package/lib/chain/emitter.js.map +1 -1
  30. package/lib/chain/forkChoice/index.d.ts +11 -1
  31. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  32. package/lib/chain/forkChoice/index.js +11 -0
  33. package/lib/chain/forkChoice/index.js.map +1 -1
  34. package/lib/chain/forkChoiceExecutionEngine.d.ts +53 -0
  35. package/lib/chain/forkChoiceExecutionEngine.d.ts.map +1 -0
  36. package/lib/chain/forkChoiceExecutionEngine.js +121 -0
  37. package/lib/chain/forkChoiceExecutionEngine.js.map +1 -0
  38. package/lib/chain/interface.d.ts +7 -3
  39. package/lib/chain/interface.d.ts.map +1 -1
  40. package/lib/chain/interface.js.map +1 -1
  41. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +17 -4
  42. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  43. package/lib/chain/opPools/aggregatedAttestationPool.js +177 -37
  44. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  45. package/lib/chain/opPools/index.d.ts +1 -0
  46. package/lib/chain/opPools/index.d.ts.map +1 -1
  47. package/lib/chain/opPools/index.js +1 -0
  48. package/lib/chain/opPools/index.js.map +1 -1
  49. package/lib/chain/opPools/singleAttestationPool.d.ts +77 -0
  50. package/lib/chain/opPools/singleAttestationPool.d.ts.map +1 -0
  51. package/lib/chain/opPools/singleAttestationPool.js +209 -0
  52. package/lib/chain/opPools/singleAttestationPool.js.map +1 -0
  53. package/lib/chain/options.d.ts +5 -0
  54. package/lib/chain/options.d.ts.map +1 -1
  55. package/lib/chain/options.js.map +1 -1
  56. package/lib/chain/produceBlock/produceBlockBody.d.ts +3 -2
  57. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  58. package/lib/chain/produceBlock/produceBlockBody.js +3 -2
  59. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  60. package/lib/chain/proposerTracker.d.ts +31 -0
  61. package/lib/chain/proposerTracker.d.ts.map +1 -0
  62. package/lib/chain/proposerTracker.js +75 -0
  63. package/lib/chain/proposerTracker.js.map +1 -0
  64. package/lib/chain/regen/interface.d.ts +1 -1
  65. package/lib/chain/regen/interface.d.ts.map +1 -1
  66. package/lib/chain/regen/queued.d.ts +1 -1
  67. package/lib/chain/regen/queued.d.ts.map +1 -1
  68. package/lib/chain/regen/queued.js +5 -3
  69. package/lib/chain/regen/queued.js.map +1 -1
  70. package/lib/execution/engine/http.d.ts +2 -2
  71. package/lib/execution/engine/http.d.ts.map +1 -1
  72. package/lib/execution/engine/http.js +5 -4
  73. package/lib/execution/engine/http.js.map +1 -1
  74. package/lib/execution/engine/interface.d.ts +16 -2
  75. package/lib/execution/engine/interface.d.ts.map +1 -1
  76. package/lib/execution/engine/jsonRpcTransport.d.ts +2 -2
  77. package/lib/execution/engine/jsonRpcTransport.d.ts.map +1 -1
  78. package/lib/execution/engine/jsonRpcTransport.js +1 -1
  79. package/lib/execution/engine/jsonRpcTransport.js.map +1 -1
  80. package/lib/execution/engine/restTransport.d.ts +2 -2
  81. package/lib/execution/engine/restTransport.d.ts.map +1 -1
  82. package/lib/execution/engine/restTransport.js.map +1 -1
  83. package/lib/execution/engine/transport.d.ts +1 -12
  84. package/lib/execution/engine/transport.d.ts.map +1 -1
  85. package/lib/index.d.ts +1 -1
  86. package/lib/index.d.ts.map +1 -1
  87. package/lib/index.js +1 -1
  88. package/lib/index.js.map +1 -1
  89. package/lib/metrics/metrics/lodestar.d.ts +26 -0
  90. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  91. package/lib/metrics/metrics/lodestar.js +69 -0
  92. package/lib/metrics/metrics/lodestar.js.map +1 -1
  93. package/lib/network/core/networkCore.d.ts +2 -1
  94. package/lib/network/core/networkCore.d.ts.map +1 -1
  95. package/lib/network/core/networkCore.js +4 -0
  96. package/lib/network/core/networkCore.js.map +1 -1
  97. package/lib/network/core/networkCoreWorker.js +1 -0
  98. package/lib/network/core/networkCoreWorker.js.map +1 -1
  99. package/lib/network/core/networkCoreWorkerHandler.d.ts +2 -1
  100. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  101. package/lib/network/core/networkCoreWorkerHandler.js +3 -0
  102. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  103. package/lib/network/core/types.d.ts +4 -1
  104. package/lib/network/core/types.d.ts.map +1 -1
  105. package/lib/network/network.d.ts +2 -0
  106. package/lib/network/network.d.ts.map +1 -1
  107. package/lib/network/network.js +8 -0
  108. package/lib/network/network.js.map +1 -1
  109. package/lib/network/options.d.ts.map +1 -1
  110. package/lib/network/options.js +2 -0
  111. package/lib/network/options.js.map +1 -1
  112. package/lib/network/peers/utils/subnetMap.d.ts +5 -2
  113. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
  114. package/lib/network/peers/utils/subnetMap.js +6 -3
  115. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  116. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  117. package/lib/network/processor/gossipHandlers.js +20 -0
  118. package/lib/network/processor/gossipHandlers.js.map +1 -1
  119. package/lib/network/subnets/attnetsService.d.ts +35 -5
  120. package/lib/network/subnets/attnetsService.d.ts.map +1 -1
  121. package/lib/network/subnets/attnetsService.js +84 -6
  122. package/lib/network/subnets/attnetsService.js.map +1 -1
  123. package/lib/network/subnets/interface.d.ts +7 -0
  124. package/lib/network/subnets/interface.d.ts.map +1 -1
  125. package/lib/network/subnets/interface.js.map +1 -1
  126. package/lib/util/execution.d.ts +4 -4
  127. package/lib/util/execution.d.ts.map +1 -1
  128. package/lib/util/execution.js.map +1 -1
  129. package/package.json +16 -16
  130. package/src/api/impl/beacon/pool/index.ts +26 -0
  131. package/src/chain/GetBlobsTracker.ts +2 -2
  132. package/src/chain/blocks/importBlock.ts +55 -67
  133. package/src/chain/blocks/importExecutionPayload.ts +42 -13
  134. package/src/chain/blocks/index.ts +5 -2
  135. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +1 -1
  136. package/src/chain/blocks/verifyBlocksSanityChecks.ts +4 -1
  137. package/src/chain/chain.ts +134 -3
  138. package/src/chain/emitter.ts +7 -0
  139. package/src/chain/forkChoice/index.ts +11 -0
  140. package/src/chain/forkChoiceExecutionEngine.ts +197 -0
  141. package/src/chain/interface.ts +7 -2
  142. package/src/chain/opPools/aggregatedAttestationPool.ts +222 -35
  143. package/src/chain/opPools/index.ts +1 -0
  144. package/src/chain/opPools/singleAttestationPool.ts +287 -0
  145. package/src/chain/options.ts +5 -0
  146. package/src/chain/produceBlock/produceBlockBody.ts +7 -3
  147. package/src/chain/proposerTracker.ts +94 -0
  148. package/src/chain/regen/interface.ts +1 -1
  149. package/src/chain/regen/queued.ts +6 -4
  150. package/src/execution/engine/http.ts +12 -13
  151. package/src/execution/engine/interface.ts +18 -2
  152. package/src/execution/engine/jsonRpcTransport.ts +10 -2
  153. package/src/execution/engine/restTransport.ts +3 -1
  154. package/src/execution/engine/transport.ts +8 -14
  155. package/src/index.ts +1 -1
  156. package/src/metrics/metrics/lodestar.ts +70 -0
  157. package/src/network/core/networkCore.ts +6 -1
  158. package/src/network/core/networkCoreWorker.ts +1 -0
  159. package/src/network/core/networkCoreWorkerHandler.ts +4 -1
  160. package/src/network/core/types.ts +4 -1
  161. package/src/network/network.ts +10 -0
  162. package/src/network/options.ts +2 -0
  163. package/src/network/peers/utils/subnetMap.ts +6 -3
  164. package/src/network/processor/gossipHandlers.ts +29 -0
  165. package/src/network/subnets/attnetsService.ts +94 -6
  166. package/src/network/subnets/interface.ts +7 -0
  167. package/src/util/execution.ts +6 -6
@@ -43,6 +43,13 @@ const MAX_RETAINED_ATTESTATIONS_PER_GROUP_ELECTRA = 8;
43
43
  * than MAX_RETAINED_ATTESTATIONS_PER_GROUP_ELECTRA or MAX_ATTESTATIONS_ELECTRA.
44
44
  */
45
45
  const MAX_ATTESTATIONS_PER_GROUP_ELECTRA = Math.min(MAX_RETAINED_ATTESTATIONS_PER_GROUP_ELECTRA, MAX_ATTESTATIONS_ELECTRA);
46
+ /**
47
+ * Bounds the single attestation signatures decoded and aggregated synchronously in block production. Without
48
+ * aggregates (e.g. during non-finality) the pool can hold far more uncovered singles than a block needs.
49
+ * The budget is spent in scan order, also by candidates that later miss the top MAX_ATTESTATIONS_ELECTRA
50
+ * As tested on Nov 2026, we never this many not-seen attesters on mainnet.
51
+ */
52
+ const MAX_SINGLE_ATTESTATIONS_PER_BLOCK = 1024;
46
53
  /** Same to https://github.com/ethereum/consensus-specs/blob/v1.5.0/specs/altair/beacon-chain.md#has_flag */
47
54
  const TIMELY_SOURCE = 1 << TIMELY_SOURCE_FLAG_INDEX;
48
55
  const TIMELY_TARGET = 1 << TIMELY_TARGET_FLAG_INDEX;
@@ -125,17 +132,18 @@ export class AggregatedAttestationPool {
125
132
  pruneBySlot(this.attestationGroupByIndexByDataHexBySlot, clockSlot, slotsToRetain);
126
133
  this.lowestPermissibleSlot = Math.max(clockSlot - slotsToRetain, 0);
127
134
  }
128
- getAttestationsForBlock(fork, forkChoice, shufflingCache, state) {
135
+ getAttestationsForBlock(fork, forkChoice, shufflingCache, state, singleAttestationPool) {
129
136
  const forkSeq = ForkSeq[fork];
130
137
  if (forkSeq < ForkSeq.electra) {
131
138
  throw new Error("Does not support producing blocks for pre-electra forks anymore");
132
139
  }
133
- return this.getAttestationsForBlockElectra(fork, forkChoice, shufflingCache, state);
140
+ return this.getAttestationsForBlockElectra(fork, forkChoice, shufflingCache, state, singleAttestationPool);
134
141
  }
135
142
  /**
136
- * Get attestations to be included in an electra block. Returns up to $MAX_ATTESTATIONS_ELECTRA items
143
+ * Get attestations to be included in an electra block. Returns up to $MAX_ATTESTATIONS_ELECTRA items.
144
+ * Single attestations fill committee members that no picked aggregate covers, see `addSinglesToConsolidation`
137
145
  */
138
- getAttestationsForBlockElectra(fork, forkChoice, shufflingCache, state) {
146
+ getAttestationsForBlockElectra(fork, forkChoice, shufflingCache, state, singleAttestationPool) {
139
147
  const stateSlot = state.slot;
140
148
  const stateEpoch = state.epoch;
141
149
  const statePrevEpoch = stateEpoch - 1;
@@ -143,18 +151,23 @@ export class AggregatedAttestationPool {
143
151
  const gloasState = isStatePostGloas(state) ? state : null;
144
152
  const notSeenValidatorsFn = getNotSeenValidatorsFn(this.config, shufflingCache, state);
145
153
  const validateAttestationDataFn = getValidateAttestationDataFn(forkChoice, state);
146
- const slots = Array.from(this.attestationGroupByIndexByDataHexBySlot.keys()).sort((a, b) => b - a);
154
+ const slots = Array.from(new Set([...this.attestationGroupByIndexByDataHexBySlot.keys(), ...singleAttestationPool.getStoredSlots()])).sort((a, b) => b - a);
147
155
  // Track score of each `AttestationsConsolidation`
148
156
  const consolidations = new Map();
157
+ let remainingSingles = MAX_SINGLE_ATTESTATIONS_PER_BLOCK;
149
158
  let scannedSlots = 0;
150
159
  let stopReason = null;
151
160
  const missingShufflingCommitteesByEpoch = new Map();
161
+ // reset so that inclusion distances not scanned for this block do not keep values of a previous block
162
+ this.metrics?.opPool.aggregatedAttestationPool.packedAttestations.returnedAttestations.reset();
163
+ this.metrics?.opPool.aggregatedAttestationPool.packedAttestations.scannedAttestations.reset();
152
164
  slot: for (const slot of slots) {
153
- const attestationGroupByIndexByDataHash = this.attestationGroupByIndexByDataHexBySlot.get(slot);
154
- // should not happen
155
- if (!attestationGroupByIndexByDataHash) {
156
- throw Error(`No aggregated attestation pool for slot=${slot}`);
157
- }
165
+ // a slot may only have single attestations, e.g. votes for a minority head that nobody aggregated
166
+ const attestationGroupByIndexByDataHash = this.attestationGroupByIndexByDataHexBySlot.get(slot) ??
167
+ new Map();
168
+ const singlesDataBySlot = remainingSingles > 0
169
+ ? singleAttestationPool.getDataRoots(slot)
170
+ : new Map();
158
171
  const epoch = computeEpochAtSlot(slot);
159
172
  if (epoch < statePrevEpoch) {
160
173
  // we process slot in desc order, this means next slot is not eligible, we should stop
@@ -177,21 +190,28 @@ export class AggregatedAttestationPool {
177
190
  // Attestations att00 --- att10 --- att20 --- 0 (att 00 10 20)
178
191
  // att01 --- - --- att21 --- 1 (att 01 __ 21)
179
192
  // - --- - --- att22 --- 2 (att __ __ 22)
180
- for (const attestationGroupByIndex of attestationGroupByIndexByDataHash.values()) {
193
+ const dataRootHexes = new Set([...attestationGroupByIndexByDataHash.keys(), ...singlesDataBySlot.keys()]);
194
+ for (const dataRootHex of dataRootHexes) {
195
+ if (remainingSingles === 0 && !attestationGroupByIndexByDataHash.has(dataRootHex)) {
196
+ continue;
197
+ }
198
+ const attestationGroupByIndex = attestationGroupByIndexByDataHash.get(dataRootHex) ?? new Map();
181
199
  // sameAttDataCons could be up to MAX_ATTESTATIONS_PER_GROUP_ELECTRA
182
200
  const sameAttDataCons = [];
183
- const allAttestationGroups = Array.from(attestationGroupByIndex.values());
184
- if (allAttestationGroups.length === 0) {
201
+ const attData = attestationGroupByIndex.values().next().value?.data ?? singlesDataBySlot.get(dataRootHex);
202
+ if (attData === undefined) {
185
203
  this.metrics?.opPool.aggregatedAttestationPool.packedAttestations.emptyAttestationData.inc();
186
204
  continue;
187
205
  }
188
- const invalidAttDataReason = validateAttestationDataFn(allAttestationGroups[0].data);
206
+ const invalidAttDataReason = validateAttestationDataFn(attData);
189
207
  if (invalidAttDataReason !== null) {
190
208
  this.metrics?.opPool.aggregatedAttestationPool.packedAttestations.invalidAttestationData.inc({
191
209
  reason: invalidAttDataReason,
192
210
  });
193
211
  continue;
194
212
  }
213
+ // committee members not on chain and not covered by any picked aggregate, owned by this loop
214
+ const remainingNotSeenByCommittee = new Map();
195
215
  for (const [committeeIndex, attestationGroup] of attestationGroupByIndex.entries()) {
196
216
  const notSeenCommitteeMembers = notSeenValidatorsFn(epoch, slot, committeeIndex);
197
217
  if (notSeenCommitteeMembers === null) {
@@ -216,17 +236,12 @@ export class AggregatedAttestationPool {
216
236
  const attestationsSameGroup = getAttestationGroupResult.result;
217
237
  returnedAttestationsPerSlot += attestationsSameGroup.length;
218
238
  totalAttestationsPerSlot += getAttestationGroupResult.totalAttestations;
239
+ // notSeenCommitteeMembers of the last pick are the ones no pick covers, it's a new Set (not the cached one)
240
+ remainingNotSeenByCommittee.set(committeeIndex, attestationsSameGroup.at(-1)?.notSeenCommitteeMembers ?? notSeenCommitteeMembers);
219
241
  for (const [i, attestationNonParticipation] of attestationsSameGroup.entries()) {
220
242
  // sameAttDataCons shares the same index for different committees so we use index `i` here
221
243
  if (sameAttDataCons[i] === undefined) {
222
- sameAttDataCons[i] = {
223
- byCommittee: new Map(),
224
- attData: attestationNonParticipation.attestation.data,
225
- totalNewSeenEffectiveBalance: 0,
226
- newSeenAttesters: 0,
227
- notSeenAttesters: 0,
228
- totalAttesters: 0,
229
- };
244
+ sameAttDataCons[i] = newConsolidation(attestationNonParticipation.attestation.data);
230
245
  }
231
246
  const sameAttDataCon = sameAttDataCons[i];
232
247
  // committeeIndex was from a map so it should be unique, but just in case
@@ -239,19 +254,38 @@ export class AggregatedAttestationPool {
239
254
  }
240
255
  }
241
256
  } // all committees are processed
257
+ for (const committeeIndex of singleAttestationPool.getCommitteeIndices(slot, dataRootHex)) {
258
+ if (remainingSingles === 0) {
259
+ break;
260
+ }
261
+ // a committee with no aggregate for this data starts from on chain participation (cached set, read only)
262
+ const notSeenCommitteeMembers = remainingNotSeenByCommittee.get(committeeIndex) ?? notSeenValidatorsFn(epoch, slot, committeeIndex);
263
+ if (notSeenCommitteeMembers === null || notSeenCommitteeMembers.size === 0) {
264
+ continue;
265
+ }
266
+ const singles = singleAttestationPool.getUncovered(slot, dataRootHex, committeeIndex, notSeenCommitteeMembers, state.effectiveBalanceIncrements, remainingSingles);
267
+ if (singles !== null) {
268
+ // the first consolidation holds the best aggregate of every committee, adding singles to it costs no
269
+ // extra attestation in the block. It's created if this data has no aggregate at all
270
+ sameAttDataCons[0] ??= newConsolidation(attData);
271
+ addSinglesToConsolidation(sameAttDataCons[0], committeeIndex, singles, notSeenCommitteeMembers.size);
272
+ remainingSingles -= singles.newSeenAttesters;
273
+ }
274
+ }
242
275
  this.metrics?.opPool.aggregatedAttestationPool.packedAttestations.returnedAttestations.set({ inclusionDistance }, returnedAttestationsPerSlot);
243
276
  this.metrics?.opPool.aggregatedAttestationPool.packedAttestations.scannedAttestations.set({ inclusionDistance }, totalAttestationsPerSlot);
244
277
  // after all committees are processed, we have a list of sameAttDataCons
245
278
  for (const consolidation of sameAttDataCons) {
246
279
  // Score attestations by profitability to maximize proposer reward
247
280
  const { flags } = getAttestationParticipationStatus(ForkSeq[fork], consolidation.attData, inclusionDistance, stateEpoch, rootCache, gloasState?.executionPayloadAvailability ?? null, gloasState?.latestBlockHeader.slot ?? null);
248
- const weight = ((flags & TIMELY_SOURCE) === TIMELY_SOURCE ? TIMELY_SOURCE_WEIGHT : 0) +
249
- ((flags & TIMELY_TARGET) === TIMELY_TARGET ? TIMELY_TARGET_WEIGHT : 0) +
250
- ((flags & TIMELY_HEAD) === TIMELY_HEAD ? TIMELY_HEAD_WEIGHT : 0);
251
- const score = consolidation.totalNewSeenEffectiveBalance * weight;
281
+ consolidation.weight =
282
+ ((flags & TIMELY_SOURCE) === TIMELY_SOURCE ? TIMELY_SOURCE_WEIGHT : 0) +
283
+ ((flags & TIMELY_TARGET) === TIMELY_TARGET ? TIMELY_TARGET_WEIGHT : 0) +
284
+ ((flags & TIMELY_HEAD) === TIMELY_HEAD ? TIMELY_HEAD_WEIGHT : 0);
285
+ const score = consolidation.totalNewSeenEffectiveBalance * consolidation.weight;
252
286
  consolidations.set(consolidation, score);
253
- // Stop accumulating attestations there are enough that may have good scoring
254
- if (consolidations.size >= MAX_ATTESTATIONS_ELECTRA * 2) {
287
+ // bound the max consolidation candidates, does not likely happen on mainnet through
288
+ if (consolidations.size >= MAX_ATTESTATIONS_ELECTRA * 4) {
255
289
  stopReason = ScannedSlotsTerminationReason.MaxConsolidationReached;
256
290
  break slot;
257
291
  }
@@ -276,32 +310,91 @@ export class AggregatedAttestationPool {
276
310
  // on chain aggregation is expensive, only do it after all
277
311
  const packedAttestationsMetrics = this.metrics?.opPool.aggregatedAttestationPool.packedAttestations;
278
312
  const packedAttestations = [];
313
+ const packedConsolidations = [];
314
+ // reset so that indexes beyond the packed attestations of this block do not keep values of a previous block
315
+ packedAttestationsMetrics?.committeeCount.reset();
316
+ packedAttestationsMetrics?.totalAttesters.reset();
317
+ packedAttestationsMetrics?.nonParticipation.reset();
318
+ packedAttestationsMetrics?.inclusionDistance.reset();
319
+ packedAttestationsMetrics?.newSeenAttesters.reset();
320
+ packedAttestationsMetrics?.totalEffectiveBalance.reset();
279
321
  for (const consolidation of sortedConsolidationsByScore) {
280
322
  if (packedAttestations.length >= MAX_ATTESTATIONS_ELECTRA) {
281
323
  break;
282
324
  }
283
325
  const attestation = aggregateConsolidation(consolidation);
326
+ const committeeCount = attestation.committeeBits.getTrueBitIndexes().length;
284
327
  // The point at infinity is not a valid aggregate signature, exclude it from the block
285
328
  if (byteArrayEquals(attestation.signature, G2_POINT_AT_INFINITY)) {
286
329
  this.logger?.debug("Excluding aggregate with infinity signature", {
287
330
  slot: stateSlot,
288
331
  attestationSlot: attestation.data.slot,
289
- committees: consolidation.byCommittee.size,
332
+ committees: committeeCount,
290
333
  });
291
334
  continue;
292
335
  }
293
336
  const i = packedAttestations.push(attestation) - 1;
337
+ packedConsolidations.push(consolidation);
294
338
  // record metrics of packed attestations
295
- packedAttestationsMetrics?.committeeCount.set({ index: i }, consolidation.byCommittee.size);
339
+ packedAttestationsMetrics?.committeeCount.set({ index: i }, committeeCount);
296
340
  packedAttestationsMetrics?.totalAttesters.set({ index: i }, consolidation.totalAttesters);
297
341
  packedAttestationsMetrics?.nonParticipation.set({ index: i }, consolidation.notSeenAttesters);
298
342
  packedAttestationsMetrics?.inclusionDistance.set({ index: i }, stateSlot - attestation.data.slot);
299
343
  packedAttestationsMetrics?.newSeenAttesters.set({ index: i }, consolidation.newSeenAttesters);
300
344
  packedAttestationsMetrics?.totalEffectiveBalance.set({ index: i }, consolidation.totalNewSeenEffectiveBalance);
301
345
  }
346
+ // value is proportional to the proposer reward of the attestations, singles are disjoint from aggregates
347
+ // so their part is exactly what they add on top of an aggregates only block
348
+ let totalValue = 0;
349
+ let singlesValue = 0;
350
+ let newSeenAttesters = 0;
351
+ let singlesNewSeenAttesters = 0;
352
+ let singlesNewSeenEffectiveBalance = 0;
353
+ let singlesOnlyConsolidations = 0;
354
+ let singlesCommittees = 0;
355
+ const singlesNewSeenAttestersByInclusionDistance = new Map();
356
+ for (const consolidation of packedConsolidations) {
357
+ totalValue += consolidation.totalNewSeenEffectiveBalance * consolidation.weight;
358
+ singlesValue += consolidation.singlesNewSeenEffectiveBalance * consolidation.weight;
359
+ newSeenAttesters += consolidation.newSeenAttesters;
360
+ singlesNewSeenAttesters += consolidation.singlesNewSeenAttesters;
361
+ if (consolidation.singlesNewSeenAttesters > 0) {
362
+ const inclusionDistance = stateSlot - consolidation.attData.slot;
363
+ singlesNewSeenAttestersByInclusionDistance.set(inclusionDistance, (singlesNewSeenAttestersByInclusionDistance.get(inclusionDistance) ?? 0) +
364
+ consolidation.singlesNewSeenAttesters);
365
+ }
366
+ singlesNewSeenEffectiveBalance += consolidation.singlesNewSeenEffectiveBalance;
367
+ singlesCommittees += consolidation.singlesByCommittee.size;
368
+ if (consolidation.byCommittee.size === 0) {
369
+ singlesOnlyConsolidations++;
370
+ }
371
+ }
372
+ packedAttestationsMetrics?.attestationValue.inc({ source: "aggregate" }, totalValue - singlesValue);
373
+ packedAttestationsMetrics?.attestationValue.inc({ source: "single" }, singlesValue);
374
+ packedAttestationsMetrics?.blockNewSeenAttesters.set(newSeenAttesters);
375
+ packedAttestationsMetrics?.singlesValueRatio.observe(totalValue > 0 ? singlesValue / totalValue : 0);
376
+ packedAttestationsMetrics?.singlesNewSeenAttesters.observe(singlesNewSeenAttesters);
377
+ // reset so that distances of a previous block do not keep stale values, the gauge then sums to the last block
378
+ packedAttestationsMetrics?.singlesNewSeenAttestersByInclusionDistance.reset();
379
+ for (const [inclusionDistance, count] of singlesNewSeenAttestersByInclusionDistance) {
380
+ packedAttestationsMetrics?.singlesNewSeenAttestersByInclusionDistance.set({ inclusionDistance }, count);
381
+ }
382
+ packedAttestationsMetrics?.singlesNewSeenEffectiveBalance.observe(singlesNewSeenEffectiveBalance);
383
+ packedAttestationsMetrics?.singlesOnlyConsolidations.observe(singlesOnlyConsolidations);
384
+ packedAttestationsMetrics?.singlesFoldedCommittees.observe(singlesCommittees);
385
+ this.logger?.debug("Packed single attestations into block", {
386
+ slot: stateSlot,
387
+ singlesNewSeenAttesters,
388
+ singlesNewSeenEffectiveBalance,
389
+ singlesCommittees,
390
+ singlesOnlyConsolidations,
391
+ packedAttestations: packedAttestations.length,
392
+ });
302
393
  if (stopReason === null) {
303
394
  stopReason = ScannedSlotsTerminationReason.ScannedAllSlots;
304
395
  }
396
+ // only one reason per block, reset so that other reasons do not keep values of a previous block
397
+ packedAttestationsMetrics?.scannedSlots.reset();
305
398
  packedAttestationsMetrics?.scannedSlots.set({ reason: stopReason }, scannedSlots);
306
399
  packedAttestationsMetrics?.poolSlots.set(slots.length);
307
400
  return packedAttestations;
@@ -527,20 +620,33 @@ export function aggregateInto(attestation1, attestation2) {
527
620
  * attestation data from different committee into a single attestation
528
621
  * https://github.com/ethereum/consensus-specs/blob/aba6345776aa876dad368cab27fbbb23fae20455/specs/_features/eip7549/validator.md?plain=1#L39
529
622
  */
530
- export function aggregateConsolidation({ byCommittee, attData }) {
623
+ export function aggregateConsolidation({ byCommittee, singlesByCommittee, attData, }) {
531
624
  const committeeBits = BitArray.fromBitLen(MAX_COMMITTEES_PER_SLOT);
532
625
  // TODO: can we improve this?
533
626
  let aggregationBits = [];
534
627
  const signatures = [];
535
- const sortedCommittees = Array.from(byCommittee.keys()).sort((a, b) => a - b);
628
+ const sortedCommittees = Array.from(new Set([...byCommittee.keys(), ...singlesByCommittee.keys()])).sort((a, b) => a - b);
536
629
  for (const committeeIndex of sortedCommittees) {
537
- const attestationNonParticipation = byCommittee.get(committeeIndex);
538
- if (attestationNonParticipation !== undefined) {
539
- const { attestation } = attestationNonParticipation;
540
- committeeBits.set(committeeIndex, true);
541
- aggregationBits = [...aggregationBits, ...attestation.aggregationBits.toBoolArray()];
630
+ const attestation = byCommittee.get(committeeIndex)?.attestation;
631
+ const singles = singlesByCommittee.get(committeeIndex);
632
+ let committeeAggregationBits;
633
+ if (attestation !== undefined) {
634
+ committeeAggregationBits = attestation.aggregationBits.toBoolArray();
542
635
  signatures.push(signatureFromBytesNoCheck(attestation.signature));
543
636
  }
637
+ else if (singles !== undefined) {
638
+ committeeAggregationBits = new Array(singles.committeeSize).fill(false);
639
+ }
640
+ else {
641
+ continue;
642
+ }
643
+ // singles are disjoint from the aggregate of the same committee, see addSinglesToConsolidation
644
+ for (const { validatorCommitteeIndex, single } of singles?.singles ?? []) {
645
+ committeeAggregationBits[validatorCommitteeIndex] = true;
646
+ signatures.push(signatureFromBytesNoCheck(single.signature));
647
+ }
648
+ committeeBits.set(committeeIndex, true);
649
+ aggregationBits = [...aggregationBits, ...committeeAggregationBits];
544
650
  }
545
651
  return {
546
652
  aggregationBits: BitArray.fromBoolArray(aggregationBits),
@@ -549,6 +655,40 @@ export function aggregateConsolidation({ byCommittee, attData }) {
549
655
  signature: aggregateSignatures(signatures).toBytes(),
550
656
  };
551
657
  }
658
+ function newConsolidation(attData) {
659
+ return {
660
+ byCommittee: new Map(),
661
+ singlesByCommittee: new Map(),
662
+ attData,
663
+ totalNewSeenEffectiveBalance: 0,
664
+ newSeenAttesters: 0,
665
+ notSeenAttesters: 0,
666
+ totalAttesters: 0,
667
+ singlesNewSeenEffectiveBalance: 0,
668
+ singlesNewSeenAttesters: 0,
669
+ weight: 0,
670
+ };
671
+ }
672
+ /**
673
+ * Add single attestations of committee members that no picked aggregate covers. They are disjoint from every picked
674
+ * aggregate of the same committee, so their signatures can be aggregated with the committee's aggregate.
675
+ * @param notSeenCommitteeMembersCount committee members still not seen before adding these singles
676
+ */
677
+ function addSinglesToConsolidation(consolidation, committeeIndex, singles, notSeenCommitteeMembersCount) {
678
+ consolidation.singlesByCommittee.set(committeeIndex, singles);
679
+ consolidation.totalNewSeenEffectiveBalance += singles.newSeenEffectiveBalance;
680
+ consolidation.newSeenAttesters += singles.newSeenAttesters;
681
+ consolidation.singlesNewSeenEffectiveBalance += singles.newSeenEffectiveBalance;
682
+ consolidation.singlesNewSeenAttesters += singles.newSeenAttesters;
683
+ if (consolidation.byCommittee.has(committeeIndex)) {
684
+ // these members were counted as not seen by the aggregate of this committee
685
+ consolidation.notSeenAttesters -= singles.newSeenAttesters;
686
+ }
687
+ else {
688
+ consolidation.totalAttesters += singles.committeeSize;
689
+ consolidation.notSeenAttesters += notSeenCommitteeMembersCount - singles.newSeenAttesters;
690
+ }
691
+ }
552
692
  /**
553
693
  * Pre-compute participation from a IBeaconStateView, for use to check if an attestation's committee
554
694
  * has already attested or not.
@@ -1 +1 @@
1
- {"version":3,"file":"aggregatedAttestationPool.js","sourceRoot":"","sources":["../../../src/chain/opPools/aggregatedAttestationPool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aggregatedAttestationPool.js","sourceRoot":"","sources":["../../../src/chain/opPools/aggregatedAttestationPool.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export { InclusionListInsertOutcome, InclusionListStore } from "./inclusionListS
6
6
  export { OpPool } from "./opPool.js";
7
7
  export { PayloadAttestationPool } from "./payloadAttestationPool.js";
8
8
  export { ProposerPreferencesPool } from "./proposerPreferencesPool.js";
9
+ export { SingleAttestationPool } from "./singleAttestationPool.js";
9
10
  export { SyncCommitteeMessagePool } from "./syncCommitteeMessagePool.js";
10
11
  export { SyncContributionAndProofPool } from "./syncContributionAndProofPool.js";
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chain/opPools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,yBAAyB,EAAC,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAC,yBAAyB,EAAC,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAC,uBAAuB,EAAE,KAAK,yBAAyB,EAAC,MAAM,8BAA8B,CAAC;AACrG,OAAO,EAAC,0BAA0B,EAAE,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACnC,OAAO,EAAC,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAC,wBAAwB,EAAC,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAC,4BAA4B,EAAC,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chain/opPools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,yBAAyB,EAAC,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAC,yBAAyB,EAAC,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAC,uBAAuB,EAAE,KAAK,yBAAyB,EAAC,MAAM,8BAA8B,CAAC;AACrG,OAAO,EAAC,0BAA0B,EAAE,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACnC,OAAO,EAAC,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAC,wBAAwB,EAAC,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAC,4BAA4B,EAAC,MAAM,mCAAmC,CAAC"}
@@ -6,6 +6,7 @@ export { InclusionListInsertOutcome, InclusionListStore } from "./inclusionListS
6
6
  export { OpPool } from "./opPool.js";
7
7
  export { PayloadAttestationPool } from "./payloadAttestationPool.js";
8
8
  export { ProposerPreferencesPool } from "./proposerPreferencesPool.js";
9
+ export { SingleAttestationPool } from "./singleAttestationPool.js";
9
10
  export { SyncCommitteeMessagePool } from "./syncCommitteeMessagePool.js";
10
11
  export { SyncContributionAndProofPool } from "./syncContributionAndProofPool.js";
11
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chain/opPools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,yBAAyB,EAAC,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAC,yBAAyB,EAAC,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAC,uBAAuB,EAAiC,MAAM,8BAA8B,CAAC;AACrG,OAAO,EAAC,0BAA0B,EAAE,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACnC,OAAO,EAAC,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAC,wBAAwB,EAAC,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAC,4BAA4B,EAAC,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chain/opPools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,yBAAyB,EAAC,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAC,yBAAyB,EAAC,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAC,uBAAuB,EAAiC,MAAM,8BAA8B,CAAC;AACrG,OAAO,EAAC,0BAA0B,EAAE,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACnC,OAAO,EAAC,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAC,wBAAwB,EAAC,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAC,4BAA4B,EAAC,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,77 @@
1
+ import { ForkPostElectra } from "@lodestar/params";
2
+ import { EffectiveBalanceIncrements } from "@lodestar/state-transition";
3
+ import { BLSSignature, CommitteeIndex, RootHex, SingleAttestation, Slot, ValidatorIndex, phase0 } from "@lodestar/types";
4
+ import { Metrics } from "../../metrics/metrics.js";
5
+ import { ProposerTracker } from "../proposerTracker.js";
6
+ import { InsertOutcome } from "./types.js";
7
+ type DataRootHex = string;
8
+ /** Position of a validator in its committee, i.e. its bit in `aggregationBits` */
9
+ type ValidatorCommitteeIndex = number;
10
+ /** `data` and `committeeIndex` are shared per data root and committee, only keep what packing reads */
11
+ type StoredSingle = {
12
+ attesterIndex: ValidatorIndex;
13
+ signature: BLSSignature;
14
+ };
15
+ /** Single attestations of not yet included committee members, signatures are not aggregated yet */
16
+ export type SinglesForCommittee = {
17
+ committeeSize: number;
18
+ singles: {
19
+ validatorCommitteeIndex: ValidatorCommitteeIndex;
20
+ single: StoredSingle;
21
+ }[];
22
+ newSeenEffectiveBalance: number;
23
+ newSeenAttesters: number;
24
+ };
25
+ /** Attesters of an attestation included in a block, `attestingIndices` is not sorted */
26
+ export type IncludedAttesters = {
27
+ slot: Slot;
28
+ attDataRootHex: DataRootHex;
29
+ attestingIndices: ValidatorIndex[];
30
+ };
31
+ /**
32
+ * Single attestations to be packed into a block produced by this node, for votes that no aggregate covers.
33
+ * Callers only add to it for vote slots of an upcoming local proposal, see `ProposerTracker.shouldCollect()`.
34
+ * They are kept even if an aggregate covers them since proposers may not include that aggregate, until a canonical
35
+ * block includes them.
36
+ */
37
+ export declare class SingleAttestationPool {
38
+ private readonly singlesByCommitteeByDataRootBySlot;
39
+ private size;
40
+ /** Attesters included by the head block, deleted once a child of it becomes head */
41
+ private pendingPrune;
42
+ constructor(metrics?: Metrics | null);
43
+ /**
44
+ * @param validatorCommitteeIndex position of the attester in its committee, computed by gossip validation
45
+ */
46
+ add(attestation: SingleAttestation<ForkPostElectra>, attDataRootHex: DataRootHex, validatorCommitteeIndex: ValidatorCommitteeIndex, committeeSize: number): InsertOutcome;
47
+ /**
48
+ * Delete single attestations included by the parent of the new head. Not the ones of the head itself: a proposer
49
+ * boost reorg of a weak head must keep them, once a child of it is the head that reorg can no longer happen.
50
+ * @param included attesters of the attestations included in the new head block
51
+ * @returns number of deleted single attestations
52
+ */
53
+ onHead(blockRoot: RootHex, parentRoot: RootHex, included: IncludedAttesters[]): number;
54
+ /** Drop vote slots that no upcoming local proposal can include */
55
+ prune(proposerTracker: ProposerTracker): void;
56
+ isEmpty(): boolean;
57
+ getStoredSlots(): Slot[];
58
+ getDataRoots(slot: Slot): Map<DataRootHex, phase0.AttestationData>;
59
+ getCommitteeIndices(slot: Slot, attDataRootHex: DataRootHex): CommitteeIndex[];
60
+ /**
61
+ * Single attestations of a committee whose attesters are in `notSeenCommitteeMembers`, i.e. not on chain and not
62
+ * covered by the aggregates picked for the block. `notSeenCommitteeMembers` is only read.
63
+ * Returns at most `maxCount` single attestations with the highest effective balances, without removing them from the
64
+ * pool.
65
+ */
66
+ getUncovered(slot: Slot, attDataRootHex: DataRootHex, committeeIndex: CommitteeIndex, notSeenCommitteeMembers: ReadonlySet<ValidatorCommitteeIndex>, effectiveBalanceIncrements: EffectiveBalanceIncrements, maxCount: number): SinglesForCommittee | null;
67
+ /**
68
+ * Delete single attestations whose votes are already on chain, they add nothing to a block built on top of it.
69
+ * @param includedAttestations one entry per attestation in the body of a canonical block (the parent of the new
70
+ * head): the attestation slot and data root, and the validators it covers. A single attestation is included if its
71
+ * attester is in `attestingIndices` of an entry with the same slot and data root.
72
+ * @returns number of deleted single attestations
73
+ */
74
+ private deleteIncluded;
75
+ }
76
+ export {};
77
+ //# sourceMappingURL=singleAttestationPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"singleAttestationPool.d.ts","sourceRoot":"","sources":["../../../src/chain/opPools/singleAttestationPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAC,0BAA0B,EAAC,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAC,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvH,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAEzC,KAAK,WAAW,GAAG,MAAM,CAAC;AAE1B,kFAAkF;AAClF,KAAK,uBAAuB,GAAG,MAAM,CAAC;AAEtC,uGAAuG;AACvG,KAAK,YAAY,GAAG;IAAC,aAAa,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,YAAY,CAAA;CAAC,CAAC;AAc7E,mGAAmG;AACnG,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE;QAAC,uBAAuB,EAAE,uBAAuB,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAC,EAAE,CAAC;IACpF,uBAAuB,EAAE,MAAM,CAAC;IAChC,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,wFAAwF;AACxF,MAAM,MAAM,iBAAiB,GAAG;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,cAAc,EAAE,WAAW,CAAC;IAAC,gBAAgB,EAAE,cAAc,EAAE,CAAA;CAAC,CAAC;AAU9G;;;;;GAKG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,kCAAkC,CAAsD;IACzG,OAAO,CAAC,IAAI,CAAK;IACjB,oFAAoF;IACpF,OAAO,CAAC,YAAY,CAAoE;IAExF,YAAY,OAAO,GAAE,OAAO,GAAG,IAAW,EAIzC;IAED;;OAEG;IACH,GAAG,CACD,WAAW,EAAE,iBAAiB,CAAC,eAAe,CAAC,EAC/C,cAAc,EAAE,WAAW,EAC3B,uBAAuB,EAAE,uBAAuB,EAChD,aAAa,EAAE,MAAM,GACpB,aAAa,CA+Bf;IAED;;;;;OAKG;IACH,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAUrF;IAED,kEAAkE;IAClE,KAAK,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI,CAiB5C;IAED,OAAO,IAAI,OAAO,CAEjB;IAED,cAAc,IAAI,IAAI,EAAE,CAEvB;IAED,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC,CAMjE;IAED,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,GAAG,cAAc,EAAE,CAE7E;IAED;;;;;OAKG;IACH,YAAY,CACV,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,WAAW,EAC3B,cAAc,EAAE,cAAc,EAC9B,uBAAuB,EAAE,WAAW,CAAC,uBAAuB,CAAC,EAC7D,0BAA0B,EAAE,0BAA0B,EACtD,QAAQ,EAAE,MAAM,GACf,mBAAmB,GAAG,IAAI,CAyC5B;IAED;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;CA4DvB"}