@lodestar/beacon-node 1.40.0-dev.1cab20c166 → 1.40.0-dev.2ae7375100

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 (253) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +7 -7
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  5. package/lib/api/impl/lodestar/index.js +10 -0
  6. package/lib/api/impl/lodestar/index.js.map +1 -1
  7. package/lib/chain/ColumnReconstructionTracker.d.ts +2 -0
  8. package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -1
  9. package/lib/chain/ColumnReconstructionTracker.js +7 -3
  10. package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
  11. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  12. package/lib/chain/blocks/verifyBlock.js +1 -1
  13. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  14. package/lib/chain/blocks/verifyBlocksSignatures.d.ts +2 -2
  15. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  16. package/lib/chain/blocks/verifyBlocksSignatures.js +2 -2
  17. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  18. package/lib/chain/bls/multithread/index.d.ts +3 -1
  19. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  20. package/lib/chain/bls/multithread/index.js +5 -3
  21. package/lib/chain/bls/multithread/index.js.map +1 -1
  22. package/lib/chain/bls/multithread/jobItem.d.ts +2 -2
  23. package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -1
  24. package/lib/chain/bls/multithread/jobItem.js +2 -2
  25. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  26. package/lib/chain/bls/singleThread.d.ts +4 -2
  27. package/lib/chain/bls/singleThread.d.ts.map +1 -1
  28. package/lib/chain/bls/singleThread.js +4 -2
  29. package/lib/chain/bls/singleThread.js.map +1 -1
  30. package/lib/chain/bls/utils.d.ts +2 -2
  31. package/lib/chain/bls/utils.d.ts.map +1 -1
  32. package/lib/chain/bls/utils.js +9 -6
  33. package/lib/chain/bls/utils.js.map +1 -1
  34. package/lib/chain/chain.d.ts +7 -2
  35. package/lib/chain/chain.d.ts.map +1 -1
  36. package/lib/chain/chain.js +27 -9
  37. package/lib/chain/chain.js.map +1 -1
  38. package/lib/chain/errors/attestationError.d.ts +14 -1
  39. package/lib/chain/errors/attestationError.d.ts.map +1 -1
  40. package/lib/chain/errors/attestationError.js +8 -0
  41. package/lib/chain/errors/attestationError.js.map +1 -1
  42. package/lib/chain/errors/executionPayloadBid.d.ts +48 -0
  43. package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -0
  44. package/lib/chain/errors/executionPayloadBid.js +15 -0
  45. package/lib/chain/errors/executionPayloadBid.js.map +1 -0
  46. package/lib/chain/errors/executionPayloadEnvelope.d.ts +48 -0
  47. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -0
  48. package/lib/chain/errors/executionPayloadEnvelope.js +16 -0
  49. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -0
  50. package/lib/chain/errors/index.d.ts +3 -0
  51. package/lib/chain/errors/index.d.ts.map +1 -1
  52. package/lib/chain/errors/index.js +3 -0
  53. package/lib/chain/errors/index.js.map +1 -1
  54. package/lib/chain/errors/payloadAttestation.d.ts +34 -0
  55. package/lib/chain/errors/payloadAttestation.d.ts.map +1 -0
  56. package/lib/chain/errors/payloadAttestation.js +13 -0
  57. package/lib/chain/errors/payloadAttestation.js.map +1 -0
  58. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  59. package/lib/chain/forkChoice/index.js +18 -0
  60. package/lib/chain/forkChoice/index.js.map +1 -1
  61. package/lib/chain/interface.d.ts +7 -2
  62. package/lib/chain/interface.d.ts.map +1 -1
  63. package/lib/chain/interface.js.map +1 -1
  64. package/lib/chain/opPools/executionPayloadBidPool.d.ts +21 -0
  65. package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -0
  66. package/lib/chain/opPools/executionPayloadBidPool.js +57 -0
  67. package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -0
  68. package/lib/chain/opPools/index.d.ts +2 -0
  69. package/lib/chain/opPools/index.d.ts.map +1 -1
  70. package/lib/chain/opPools/index.js +2 -0
  71. package/lib/chain/opPools/index.js.map +1 -1
  72. package/lib/chain/opPools/payloadAttestationPool.d.ts +24 -0
  73. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -0
  74. package/lib/chain/opPools/payloadAttestationPool.js +109 -0
  75. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -0
  76. package/lib/chain/regen/interface.d.ts +1 -0
  77. package/lib/chain/regen/interface.d.ts.map +1 -1
  78. package/lib/chain/regen/interface.js +1 -0
  79. package/lib/chain/regen/interface.js.map +1 -1
  80. package/lib/chain/regen/regen.d.ts +2 -0
  81. package/lib/chain/regen/regen.d.ts.map +1 -1
  82. package/lib/chain/regen/regen.js +4 -1
  83. package/lib/chain/regen/regen.js.map +1 -1
  84. package/lib/chain/seenCache/index.d.ts +3 -1
  85. package/lib/chain/seenCache/index.d.ts.map +1 -1
  86. package/lib/chain/seenCache/index.js +3 -1
  87. package/lib/chain/seenCache/index.js.map +1 -1
  88. package/lib/chain/seenCache/seenAttesters.d.ts +5 -0
  89. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -1
  90. package/lib/chain/seenCache/seenAttesters.js +5 -0
  91. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  92. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts +12 -0
  93. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts.map +1 -0
  94. package/lib/chain/seenCache/seenExecutionPayloadBids.js +30 -0
  95. package/lib/chain/seenCache/seenExecutionPayloadBids.js.map +1 -0
  96. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts +15 -0
  97. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +1 -0
  98. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js +28 -0
  99. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +1 -0
  100. package/lib/chain/seenCache/seenGossipBlockInput.js +1 -1
  101. package/lib/chain/validation/aggregateAndProof.js +35 -14
  102. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  103. package/lib/chain/validation/attestation.d.ts +2 -2
  104. package/lib/chain/validation/attestation.d.ts.map +1 -1
  105. package/lib/chain/validation/attestation.js +27 -8
  106. package/lib/chain/validation/attestation.js.map +1 -1
  107. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  108. package/lib/chain/validation/attesterSlashing.js +1 -1
  109. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  110. package/lib/chain/validation/blobSidecar.d.ts.map +1 -1
  111. package/lib/chain/validation/blobSidecar.js +2 -2
  112. package/lib/chain/validation/blobSidecar.js.map +1 -1
  113. package/lib/chain/validation/block.d.ts.map +1 -1
  114. package/lib/chain/validation/block.js +5 -4
  115. package/lib/chain/validation/block.js.map +1 -1
  116. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  117. package/lib/chain/validation/dataColumnSidecar.js +2 -2
  118. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  119. package/lib/chain/validation/executionPayloadBid.d.ts +5 -0
  120. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -0
  121. package/lib/chain/validation/executionPayloadBid.js +104 -0
  122. package/lib/chain/validation/executionPayloadBid.js.map +1 -0
  123. package/lib/chain/validation/executionPayloadEnvelope.d.ts +5 -0
  124. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -0
  125. package/lib/chain/validation/executionPayloadEnvelope.js +89 -0
  126. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -0
  127. package/lib/chain/validation/payloadAttestationMessage.d.ts +9 -0
  128. package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -0
  129. package/lib/chain/validation/payloadAttestationMessage.js +72 -0
  130. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -0
  131. package/lib/chain/validation/proposerSlashing.js +1 -1
  132. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  133. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts +2 -3
  134. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +1 -1
  135. package/lib/chain/validation/signatureSets/aggregateAndProof.js +8 -3
  136. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  137. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +2 -2
  138. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  139. package/lib/chain/validation/signatureSets/contributionAndProof.js +3 -3
  140. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  141. package/lib/chain/validation/signatureSets/selectionProof.d.ts +2 -3
  142. package/lib/chain/validation/signatureSets/selectionProof.d.ts.map +1 -1
  143. package/lib/chain/validation/signatureSets/selectionProof.js +8 -3
  144. package/lib/chain/validation/signatureSets/selectionProof.js.map +1 -1
  145. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +2 -2
  146. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  147. package/lib/chain/validation/signatureSets/syncCommittee.js +3 -3
  148. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  149. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +1 -2
  150. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  151. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js +2 -2
  152. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  153. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +2 -2
  154. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  155. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +3 -3
  156. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  157. package/lib/chain/validation/syncCommittee.js +1 -1
  158. package/lib/chain/validation/syncCommittee.js.map +1 -1
  159. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  160. package/lib/chain/validation/syncCommitteeContributionAndProof.js +3 -5
  161. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  162. package/lib/chain/validation/voluntaryExit.js +1 -1
  163. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  164. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  165. package/lib/chain/validatorMonitor.js +7 -4
  166. package/lib/chain/validatorMonitor.js.map +1 -1
  167. package/lib/metrics/metrics/lodestar.d.ts +20 -0
  168. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  169. package/lib/metrics/metrics/lodestar.js +40 -0
  170. package/lib/metrics/metrics/lodestar.js.map +1 -1
  171. package/lib/network/gossip/interface.d.ts +20 -2
  172. package/lib/network/gossip/interface.d.ts.map +1 -1
  173. package/lib/network/gossip/interface.js +3 -0
  174. package/lib/network/gossip/interface.js.map +1 -1
  175. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  176. package/lib/network/gossip/scoringParameters.js +38 -2
  177. package/lib/network/gossip/scoringParameters.js.map +1 -1
  178. package/lib/network/gossip/topic.d.ts +77 -1
  179. package/lib/network/gossip/topic.d.ts.map +1 -1
  180. package/lib/network/gossip/topic.js +20 -0
  181. package/lib/network/gossip/topic.js.map +1 -1
  182. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  183. package/lib/network/processor/gossipHandlers.js +34 -0
  184. package/lib/network/processor/gossipHandlers.js.map +1 -1
  185. package/lib/network/processor/gossipQueues/index.d.ts.map +1 -1
  186. package/lib/network/processor/gossipQueues/index.js +16 -0
  187. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  188. package/lib/network/processor/index.d.ts.map +1 -1
  189. package/lib/network/processor/index.js +3 -0
  190. package/lib/network/processor/index.js.map +1 -1
  191. package/lib/sync/backfill/backfill.js +2 -2
  192. package/lib/sync/backfill/backfill.js.map +1 -1
  193. package/lib/sync/backfill/verify.d.ts +1 -2
  194. package/lib/sync/backfill/verify.d.ts.map +1 -1
  195. package/lib/sync/backfill/verify.js +2 -2
  196. package/lib/sync/backfill/verify.js.map +1 -1
  197. package/package.json +15 -15
  198. package/src/api/impl/beacon/blocks/index.ts +9 -7
  199. package/src/api/impl/lodestar/index.ts +12 -0
  200. package/src/chain/ColumnReconstructionTracker.ts +8 -4
  201. package/src/chain/blocks/verifyBlock.ts +0 -1
  202. package/src/chain/blocks/verifyBlocksSignatures.ts +4 -12
  203. package/src/chain/bls/multithread/index.ts +7 -4
  204. package/src/chain/bls/multithread/jobItem.ts +7 -3
  205. package/src/chain/bls/singleThread.ts +5 -3
  206. package/src/chain/bls/utils.ts +15 -7
  207. package/src/chain/chain.ts +30 -7
  208. package/src/chain/errors/attestationError.ts +11 -1
  209. package/src/chain/errors/executionPayloadBid.ts +35 -0
  210. package/src/chain/errors/executionPayloadEnvelope.ts +34 -0
  211. package/src/chain/errors/index.ts +3 -0
  212. package/src/chain/errors/payloadAttestation.ts +25 -0
  213. package/src/chain/forkChoice/index.ts +19 -0
  214. package/src/chain/interface.ts +16 -1
  215. package/src/chain/opPools/executionPayloadBidPool.ts +77 -0
  216. package/src/chain/opPools/index.ts +2 -0
  217. package/src/chain/opPools/payloadAttestationPool.ts +157 -0
  218. package/src/chain/regen/interface.ts +1 -0
  219. package/src/chain/regen/regen.ts +6 -1
  220. package/src/chain/seenCache/index.ts +3 -1
  221. package/src/chain/seenCache/seenAttesters.ts +5 -0
  222. package/src/chain/seenCache/seenExecutionPayloadBids.ts +35 -0
  223. package/src/chain/seenCache/seenExecutionPayloadEnvelope.ts +34 -0
  224. package/src/chain/seenCache/seenGossipBlockInput.ts +1 -1
  225. package/src/chain/validation/aggregateAndProof.ts +36 -14
  226. package/src/chain/validation/attestation.ts +33 -16
  227. package/src/chain/validation/attesterSlashing.ts +1 -6
  228. package/src/chain/validation/blobSidecar.ts +1 -6
  229. package/src/chain/validation/block.ts +5 -4
  230. package/src/chain/validation/dataColumnSidecar.ts +1 -6
  231. package/src/chain/validation/executionPayloadBid.ts +141 -0
  232. package/src/chain/validation/executionPayloadEnvelope.ts +122 -0
  233. package/src/chain/validation/payloadAttestationMessage.ts +109 -0
  234. package/src/chain/validation/proposerSlashing.ts +1 -6
  235. package/src/chain/validation/signatureSets/aggregateAndProof.ts +9 -14
  236. package/src/chain/validation/signatureSets/contributionAndProof.ts +2 -4
  237. package/src/chain/validation/signatureSets/selectionProof.ts +9 -9
  238. package/src/chain/validation/signatureSets/syncCommittee.ts +2 -4
  239. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +2 -3
  240. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -4
  241. package/src/chain/validation/syncCommittee.ts +1 -1
  242. package/src/chain/validation/syncCommitteeContributionAndProof.ts +3 -5
  243. package/src/chain/validation/voluntaryExit.ts +1 -1
  244. package/src/chain/validatorMonitor.ts +10 -5
  245. package/src/metrics/metrics/lodestar.ts +40 -0
  246. package/src/network/gossip/interface.ts +17 -0
  247. package/src/network/gossip/scoringParameters.ts +44 -2
  248. package/src/network/gossip/topic.ts +21 -0
  249. package/src/network/processor/gossipHandlers.ts +48 -0
  250. package/src/network/processor/gossipQueues/index.ts +16 -0
  251. package/src/network/processor/index.ts +3 -0
  252. package/src/sync/backfill/backfill.ts +2 -2
  253. package/src/sync/backfill/verify.ts +2 -3
@@ -0,0 +1,89 @@
1
+ import { PublicKey } from "@chainsafe/blst";
2
+ import { computeStartSlotAtEpoch, createSingleSignatureSetFromComponents, getExecutionPayloadEnvelopeSigningRoot, } from "@lodestar/state-transition";
3
+ import { toRootHex } from "@lodestar/utils";
4
+ import { ExecutionPayloadEnvelopeError, ExecutionPayloadEnvelopeErrorCode, GossipAction } from "../errors/index.js";
5
+ export async function validateApiExecutionPayloadEnvelope(chain, executionPayloadEnvelope) {
6
+ return validateExecutionPayloadEnvelope(chain, executionPayloadEnvelope);
7
+ }
8
+ export async function validateGossipExecutionPayloadEnvelope(chain, executionPayloadEnvelope) {
9
+ return validateExecutionPayloadEnvelope(chain, executionPayloadEnvelope);
10
+ }
11
+ async function validateExecutionPayloadEnvelope(chain, executionPayloadEnvelope) {
12
+ const envelope = executionPayloadEnvelope.message;
13
+ const { payload } = envelope;
14
+ const blockRootHex = toRootHex(envelope.beaconBlockRoot);
15
+ // [IGNORE] The envelope's block root `envelope.block_root` has been seen (via
16
+ // gossip or non-gossip sources) (a client MAY queue payload for processing once
17
+ // the block is retrieved).
18
+ // TODO GLOAS: Need to review this
19
+ const block = chain.forkChoice.getBlock(envelope.beaconBlockRoot);
20
+ if (block === null) {
21
+ throw new ExecutionPayloadEnvelopeError(GossipAction.IGNORE, {
22
+ code: ExecutionPayloadEnvelopeErrorCode.BLOCK_ROOT_UNKNOWN,
23
+ blockRoot: blockRootHex,
24
+ });
25
+ }
26
+ // [IGNORE] The node has not seen another valid
27
+ // `SignedExecutionPayloadEnvelope` for this block root from this builder.
28
+ if (chain.seenExecutionPayloadEnvelopes.isKnown(blockRootHex)) {
29
+ throw new ExecutionPayloadEnvelopeError(GossipAction.IGNORE, {
30
+ code: ExecutionPayloadEnvelopeErrorCode.ENVELOPE_ALREADY_KNOWN,
31
+ blockRoot: blockRootHex,
32
+ slot: envelope.slot,
33
+ });
34
+ }
35
+ // [IGNORE] The envelope is from a slot greater than or equal to the latest finalized slot -- i.e. validate that `envelope.slot >= compute_start_slot_at_epoch(store.finalized_checkpoint.epoch)`
36
+ const finalizedCheckpoint = chain.forkChoice.getFinalizedCheckpoint();
37
+ const finalizedSlot = computeStartSlotAtEpoch(finalizedCheckpoint.epoch);
38
+ if (envelope.slot < finalizedSlot) {
39
+ throw new ExecutionPayloadEnvelopeError(GossipAction.IGNORE, {
40
+ code: ExecutionPayloadEnvelopeErrorCode.BELONG_TO_FINALIZED_BLOCK,
41
+ envelopeSlot: envelope.slot,
42
+ finalizedSlot,
43
+ });
44
+ }
45
+ // [REJECT] `block` passes validation.
46
+ // TODO GLOAS: implement this. Technically if we cannot get proto block from fork choice,
47
+ // it is possible that the block didn't pass the validation
48
+ // [REJECT] `block.slot` equals `envelope.slot`.
49
+ if (block.slot !== envelope.slot) {
50
+ throw new ExecutionPayloadEnvelopeError(GossipAction.REJECT, {
51
+ code: ExecutionPayloadEnvelopeErrorCode.SLOT_MISMATCH,
52
+ envelopeSlot: envelope.slot,
53
+ blockSlot: block.slot,
54
+ });
55
+ }
56
+ if (block.builderIndex === undefined || block.blockHashHex === undefined) {
57
+ // This indicates this block is a pre-gloas block which is wrong
58
+ throw new ExecutionPayloadEnvelopeError(GossipAction.IGNORE, {
59
+ code: ExecutionPayloadEnvelopeErrorCode.CACHE_FAIL,
60
+ blockRoot: blockRootHex,
61
+ });
62
+ }
63
+ // [REJECT] `envelope.builder_index == bid.builder_index`
64
+ if (envelope.builderIndex !== block.builderIndex) {
65
+ throw new ExecutionPayloadEnvelopeError(GossipAction.REJECT, {
66
+ code: ExecutionPayloadEnvelopeErrorCode.BUILDER_INDEX_MISMATCH,
67
+ envelopeBuilderIndex: envelope.builderIndex,
68
+ bidBuilderIndex: block.builderIndex,
69
+ });
70
+ }
71
+ // [REJECT] `payload.block_hash == bid.block_hash`
72
+ if (toRootHex(payload.blockHash) !== block.blockHashHex) {
73
+ throw new ExecutionPayloadEnvelopeError(GossipAction.REJECT, {
74
+ code: ExecutionPayloadEnvelopeErrorCode.BLOCK_HASH_MISMATCH,
75
+ envelopeBlockHash: toRootHex(payload.blockHash),
76
+ bidBlockHash: block.blockHashHex,
77
+ });
78
+ }
79
+ // [REJECT] `signed_execution_payload_envelope.signature` is valid with respect to the builder's public key.
80
+ const state = chain.getHeadState();
81
+ const signatureSet = createSingleSignatureSetFromComponents(PublicKey.fromBytes(state.builders.getReadonly(envelope.builderIndex).pubkey), getExecutionPayloadEnvelopeSigningRoot(chain.config, envelope), executionPayloadEnvelope.signature);
82
+ if (!(await chain.bls.verifySignatureSets([signatureSet]))) {
83
+ throw new ExecutionPayloadEnvelopeError(GossipAction.REJECT, {
84
+ code: ExecutionPayloadEnvelopeErrorCode.INVALID_SIGNATURE,
85
+ });
86
+ }
87
+ chain.seenExecutionPayloadEnvelopes.add(blockRootHex, envelope.slot);
88
+ }
89
+ //# sourceMappingURL=executionPayloadEnvelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executionPayloadEnvelope.js","sourceRoot":"","sources":["../../../src/chain/validation/executionPayloadEnvelope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { RootHex, gloas } from "@lodestar/types";
2
+ import { IBeaconChain } from "../index.js";
3
+ export type PayloadAttestationValidationResult = {
4
+ attDataRootHex: RootHex;
5
+ validatorCommitteeIndex: number;
6
+ };
7
+ export declare function validateApiPayloadAttestationMessage(chain: IBeaconChain, payloadAttestationMessage: gloas.PayloadAttestationMessage): Promise<PayloadAttestationValidationResult>;
8
+ export declare function validateGossipPayloadAttestationMessage(chain: IBeaconChain, payloadAttestationMessage: gloas.PayloadAttestationMessage): Promise<PayloadAttestationValidationResult>;
9
+ //# sourceMappingURL=payloadAttestationMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payloadAttestationMessage.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/payloadAttestationMessage.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,OAAO,EAAE,KAAK,EAAM,MAAM,iBAAiB,CAAC;AAGpD,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAEzC,MAAM,MAAM,kCAAkC,GAAG;IAC/C,cAAc,EAAE,OAAO,CAAC;IACxB,uBAAuB,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,wBAAsB,oCAAoC,CACxD,KAAK,EAAE,YAAY,EACnB,yBAAyB,EAAE,KAAK,CAAC,yBAAyB,GACzD,OAAO,CAAC,kCAAkC,CAAC,CAE7C;AAED,wBAAsB,uCAAuC,CAC3D,KAAK,EAAE,YAAY,EACnB,yBAAyB,EAAE,KAAK,CAAC,yBAAyB,GACzD,OAAO,CAAC,kCAAkC,CAAC,CAE7C"}
@@ -0,0 +1,72 @@
1
+ import { computeEpochAtSlot, createSingleSignatureSetFromComponents, getPayloadAttestationDataSigningRoot, } from "@lodestar/state-transition";
2
+ import { ssz } from "@lodestar/types";
3
+ import { toRootHex } from "@lodestar/utils";
4
+ import { GossipAction, PayloadAttestationError, PayloadAttestationErrorCode } from "../errors/index.js";
5
+ export async function validateApiPayloadAttestationMessage(chain, payloadAttestationMessage) {
6
+ return validatePayloadAttestationMessage(chain, payloadAttestationMessage);
7
+ }
8
+ export async function validateGossipPayloadAttestationMessage(chain, payloadAttestationMessage) {
9
+ return validatePayloadAttestationMessage(chain, payloadAttestationMessage);
10
+ }
11
+ async function validatePayloadAttestationMessage(chain, payloadAttestationMessage) {
12
+ const { data, validatorIndex } = payloadAttestationMessage;
13
+ const epoch = computeEpochAtSlot(data.slot);
14
+ // [IGNORE] The message's slot is for the current slot (with a `MAXIMUM_GOSSIP_CLOCK_DISPARITY` allowance), i.e. `data.slot == current_slot`.
15
+ if (!chain.clock.isCurrentSlotGivenGossipDisparity(data.slot)) {
16
+ throw new PayloadAttestationError(GossipAction.IGNORE, {
17
+ code: PayloadAttestationErrorCode.NOT_CURRENT_SLOT,
18
+ currentSlot: chain.clock.currentSlot,
19
+ slot: data.slot,
20
+ });
21
+ }
22
+ // [IGNORE] The `payload_attestation_message` is the first valid message received
23
+ // from the validator with index `payload_attestation_message.validator_index`.
24
+ // A single validator can participate PTC at most once per epoch
25
+ if (chain.seenPayloadAttesters.isKnown(epoch, validatorIndex)) {
26
+ throw new PayloadAttestationError(GossipAction.IGNORE, {
27
+ code: PayloadAttestationErrorCode.PAYLOAD_ATTESTATION_ALREADY_KNOWN,
28
+ validatorIndex,
29
+ slot: data.slot,
30
+ blockRoot: toRootHex(data.beaconBlockRoot),
31
+ });
32
+ }
33
+ // [IGNORE] The message's block `data.beacon_block_root` has been seen (via
34
+ // gossip or non-gossip sources) (a client MAY queue attestation for processing
35
+ // once the block is retrieved. Note a client might want to request payload after).
36
+ const block = chain.forkChoice.getBlock(data.beaconBlockRoot);
37
+ if (block === null) {
38
+ throw new PayloadAttestationError(GossipAction.IGNORE, {
39
+ code: PayloadAttestationErrorCode.UNKNOWN_BLOCK_ROOT,
40
+ blockRoot: toRootHex(data.beaconBlockRoot),
41
+ });
42
+ }
43
+ const state = chain.getHeadState();
44
+ // [REJECT] The message's block `data.beacon_block_root` passes validation.
45
+ // TODO GLOAS: implement this. Technically if we cannot get proto block from fork choice,
46
+ // it is possible that the block didn't pass the validation
47
+ // [REJECT] The message's validator index is within the payload committee in
48
+ // `get_ptc(state, data.slot)`. The `state` is the head state corresponding to
49
+ // processing the block up to the current slot as determined by the fork choice.
50
+ const ptc = state.epochCtx.getPayloadTimelinessCommittee(data.slot);
51
+ const validatorCommitteeIndex = ptc.indexOf(validatorIndex);
52
+ if (validatorCommitteeIndex === -1) {
53
+ throw new PayloadAttestationError(GossipAction.REJECT, {
54
+ code: PayloadAttestationErrorCode.INVALID_ATTESTER,
55
+ attesterIndex: validatorIndex,
56
+ });
57
+ }
58
+ // [REJECT] `payload_attestation_message.signature` is valid with respect to the validator's public key.
59
+ const signatureSet = createSingleSignatureSetFromComponents(chain.index2pubkey[validatorIndex], getPayloadAttestationDataSigningRoot(chain.config, state.slot, data), payloadAttestationMessage.signature);
60
+ if (!(await chain.bls.verifySignatureSets([signatureSet]))) {
61
+ throw new PayloadAttestationError(GossipAction.REJECT, {
62
+ code: PayloadAttestationErrorCode.INVALID_SIGNATURE,
63
+ });
64
+ }
65
+ // Valid
66
+ chain.seenPayloadAttesters.add(epoch, validatorIndex);
67
+ return {
68
+ attDataRootHex: toRootHex(ssz.gloas.PayloadAttestationData.hashTreeRoot(data)),
69
+ validatorCommitteeIndex,
70
+ };
71
+ }
72
+ //# sourceMappingURL=payloadAttestationMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payloadAttestationMessage.js","sourceRoot":"","sources":["../../../src/chain/validation/payloadAttestationMessage.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@ async function validateProposerSlashing(chain, proposerSlashing, prioritizeBls =
28
28
  error: e,
29
29
  });
30
30
  }
31
- const signatureSets = getProposerSlashingSignatureSets(chain.config, chain.index2pubkey, state.slot, proposerSlashing);
31
+ const signatureSets = getProposerSlashingSignatureSets(chain.config, state.slot, proposerSlashing);
32
32
  if (!(await chain.bls.verifySignatureSets(signatureSets, { batchable: true, priority: prioritizeBls }))) {
33
33
  throw new ProposerSlashingError(GossipAction.REJECT, {
34
34
  code: ProposerSlashingErrorCode.INVALID,
@@ -1 +1 @@
1
- {"version":3,"file":"proposerSlashing.js","sourceRoot":"","sources":["../../../src/chain/validation/proposerSlashing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,2BAA2B,EAAE,gCAAgC,EAAC,MAAM,4BAA4B,CAAC;AAEzG,OAAO,EAAC,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,EAAC,MAAM,oBAAoB,CAAC;AAGlG,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAmB,EACnB,gBAAyC;IAEzC,MAAM,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,KAAmB,EACnB,gBAAyC;IAEzC,OAAO,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,KAAmB,EACnB,gBAAyC,EACzC,aAAa,GAAG,KAAK;IAErB,2GAA2G;IAC3G,4DAA4D;IAC5D,IAAI,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/F,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE;YACnD,IAAI,EAAE,yBAAyB,CAAC,cAAc;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IAEnC,mFAAmF;IACnF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACpG,mDAAmD;QACnD,2BAA2B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/G,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE;YACnD,IAAI,EAAE,yBAAyB,CAAC,OAAO;YACvC,KAAK,EAAE,CAAU;SAClB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,gCAAgC,CACpD,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,IAAI,EACV,gBAAgB,CACjB,CAAC;IACF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAC,CAAC,CAAC,EAAE,CAAC;QACtG,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE;YACnD,IAAI,EAAE,yBAAyB,CAAC,OAAO;YACvC,KAAK,EAAE,KAAK,CAAC,mBAAmB,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"proposerSlashing.js","sourceRoot":"","sources":["../../../src/chain/validation/proposerSlashing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,2BAA2B,EAAE,gCAAgC,EAAC,MAAM,4BAA4B,CAAC;AAEzG,OAAO,EAAC,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,EAAC,MAAM,oBAAoB,CAAC;AAGlG,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAmB,EACnB,gBAAyC;IAEzC,MAAM,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,KAAmB,EACnB,gBAAyC;IAEzC,OAAO,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,KAAmB,EACnB,gBAAyC,EACzC,aAAa,GAAG,KAAK;IAErB,2GAA2G;IAC3G,4DAA4D;IAC5D,IAAI,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/F,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE;YACnD,IAAI,EAAE,yBAAyB,CAAC,cAAc;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IAEnC,mFAAmF;IACnF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACpG,mDAAmD;QACnD,2BAA2B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/G,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE;YACnD,IAAI,EAAE,yBAAyB,CAAC,OAAO;YACvC,KAAK,EAAE,CAAU;SAClB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,gCAAgC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACnG,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAC,CAAC,CAAC,EAAE,CAAC;QACtG,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE;YACnD,IAAI,EAAE,yBAAyB,CAAC,OAAO;YACvC,KAAK,EAAE,KAAK,CAAC,mBAAmB,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -1,7 +1,6 @@
1
- import { PublicKey } from "@chainsafe/blst";
2
1
  import { BeaconConfig } from "@lodestar/config";
3
2
  import { ISignatureSet } from "@lodestar/state-transition";
4
- import { Epoch, SignedAggregateAndProof } from "@lodestar/types";
3
+ import { Epoch, SignedAggregateAndProof, ValidatorIndex } from "@lodestar/types";
5
4
  export declare function getAggregateAndProofSigningRoot(config: BeaconConfig, epoch: Epoch, aggregateAndProof: SignedAggregateAndProof): Uint8Array;
6
- export declare function getAggregateAndProofSignatureSet(config: BeaconConfig, epoch: Epoch, aggregator: PublicKey, aggregateAndProof: SignedAggregateAndProof): ISignatureSet;
5
+ export declare function getAggregateAndProofSignatureSet(config: BeaconConfig, epoch: Epoch, aggregatorIndex: ValidatorIndex, aggregateAndProof: SignedAggregateAndProof): ISignatureSet;
7
6
  //# sourceMappingURL=aggregateAndProof.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"aggregateAndProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/aggregateAndProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,aAAa,EAId,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,KAAK,EAAE,uBAAuB,EAAM,MAAM,iBAAiB,CAAC;AAEpE,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,uBAAuB,GACzC,UAAU,CASZ;AAED,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,SAAS,EACrB,iBAAiB,EAAE,uBAAuB,GACzC,aAAa,CAMf"}
1
+ {"version":3,"file":"aggregateAndProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/aggregateAndProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,aAAa,EAAgE,MAAM,4BAA4B,CAAC;AACxH,OAAO,EAAC,KAAK,EAAE,uBAAuB,EAAE,cAAc,EAAM,MAAM,iBAAiB,CAAC;AAEpF,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,uBAAuB,GACzC,UAAU,CASZ;AAED,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,cAAc,EAC/B,iBAAiB,EAAE,uBAAuB,GACzC,aAAa,CAOf"}
@@ -1,5 +1,5 @@
1
1
  import { DOMAIN_AGGREGATE_AND_PROOF, ForkSeq } from "@lodestar/params";
2
- import { computeSigningRoot, computeStartSlotAtEpoch, createSingleSignatureSetFromComponents, } from "@lodestar/state-transition";
2
+ import { SignatureSetType, computeSigningRoot, computeStartSlotAtEpoch } from "@lodestar/state-transition";
3
3
  import { ssz } from "@lodestar/types";
4
4
  export function getAggregateAndProofSigningRoot(config, epoch, aggregateAndProof) {
5
5
  // previously, we call `const aggregatorDomain = config.getDomain(state.slot, DOMAIN_AGGREGATE_AND_PROOF, slot);`
@@ -11,7 +11,12 @@ export function getAggregateAndProofSigningRoot(config, epoch, aggregateAndProof
11
11
  const sszType = ForkSeq[fork] >= ForkSeq.electra ? ssz.electra.AggregateAndProof : ssz.phase0.AggregateAndProof;
12
12
  return computeSigningRoot(sszType, aggregateAndProof.message, aggregatorDomain);
13
13
  }
14
- export function getAggregateAndProofSignatureSet(config, epoch, aggregator, aggregateAndProof) {
15
- return createSingleSignatureSetFromComponents(aggregator, getAggregateAndProofSigningRoot(config, epoch, aggregateAndProof), aggregateAndProof.signature);
14
+ export function getAggregateAndProofSignatureSet(config, epoch, aggregatorIndex, aggregateAndProof) {
15
+ return {
16
+ type: SignatureSetType.indexed,
17
+ index: aggregatorIndex,
18
+ signingRoot: getAggregateAndProofSigningRoot(config, epoch, aggregateAndProof),
19
+ signature: aggregateAndProof.signature,
20
+ };
16
21
  }
17
22
  //# sourceMappingURL=aggregateAndProof.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"aggregateAndProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/aggregateAndProof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,0BAA0B,EAAE,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAEL,kBAAkB,EAClB,uBAAuB,EACvB,sCAAsC,GACvC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAiC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEpE,MAAM,UAAU,+BAA+B,CAC7C,MAAoB,EACpB,KAAY,EACZ,iBAA0C;IAE1C,iHAAiH;IACjH,2KAA2K;IAC3K,qEAAqE;IACrE,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,0BAA0B,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC;IAChH,OAAO,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,MAAoB,EACpB,KAAY,EACZ,UAAqB,EACrB,iBAA0C;IAE1C,OAAO,sCAAsC,CAC3C,UAAU,EACV,+BAA+B,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC,EACjE,iBAAiB,CAAC,SAAS,CAC5B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"aggregateAndProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/aggregateAndProof.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,0BAA0B,EAAE,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAgB,gBAAgB,EAAE,kBAAkB,EAAE,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AACxH,OAAO,EAAiD,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEpF,MAAM,UAAU,+BAA+B,CAC7C,MAAoB,EACpB,KAAY,EACZ,iBAA0C;IAE1C,iHAAiH;IACjH,2KAA2K;IAC3K,qEAAqE;IACrE,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,0BAA0B,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC;IAChH,OAAO,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,MAAoB,EACpB,KAAY,EACZ,eAA+B,EAC/B,iBAA0C;IAE1C,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,+BAA+B,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC;QAC9E,SAAS,EAAE,iBAAiB,CAAC,SAAS;KACvC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { BeaconConfig } from "@lodestar/config";
2
- import { CachedBeaconStateAllForks, ISignatureSet, Index2PubkeyCache } from "@lodestar/state-transition";
2
+ import { CachedBeaconStateAllForks, ISignatureSet } from "@lodestar/state-transition";
3
3
  import { altair } from "@lodestar/types";
4
- export declare function getContributionAndProofSignatureSet(config: BeaconConfig, index2pubkey: Index2PubkeyCache, state: CachedBeaconStateAllForks, signedContributionAndProof: altair.SignedContributionAndProof): ISignatureSet;
4
+ export declare function getContributionAndProofSignatureSet(config: BeaconConfig, state: CachedBeaconStateAllForks, signedContributionAndProof: altair.SignedContributionAndProof): ISignatureSet;
5
5
  //# sourceMappingURL=contributionAndProof.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contributionAndProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/contributionAndProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,iBAAiB,EAGlB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,yBAAyB,EAChC,0BAA0B,EAAE,MAAM,CAAC,0BAA0B,GAC5D,aAAa,CAaf"}
1
+ {"version":3,"file":"contributionAndProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/contributionAndProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,aAAa,EAGd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,yBAAyB,EAChC,0BAA0B,EAAE,MAAM,CAAC,0BAA0B,GAC5D,aAAa,CAaf"}
@@ -1,12 +1,12 @@
1
1
  import { DOMAIN_CONTRIBUTION_AND_PROOF } from "@lodestar/params";
2
2
  import { SignatureSetType, computeSigningRoot, } from "@lodestar/state-transition";
3
3
  import { ssz } from "@lodestar/types";
4
- export function getContributionAndProofSignatureSet(config, index2pubkey, state, signedContributionAndProof) {
4
+ export function getContributionAndProofSignatureSet(config, state, signedContributionAndProof) {
5
5
  const domain = config.getDomain(state.slot, DOMAIN_CONTRIBUTION_AND_PROOF, signedContributionAndProof.message.contribution.slot);
6
6
  const signingData = signedContributionAndProof.message;
7
7
  return {
8
- type: SignatureSetType.single,
9
- pubkey: index2pubkey[signedContributionAndProof.message.aggregatorIndex],
8
+ type: SignatureSetType.indexed,
9
+ index: signedContributionAndProof.message.aggregatorIndex,
10
10
  signingRoot: computeSigningRoot(ssz.altair.ContributionAndProof, signingData, domain),
11
11
  signature: signedContributionAndProof.signature,
12
12
  };
@@ -1 +1 @@
1
- {"version":3,"file":"contributionAndProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/contributionAndProof.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,6BAA6B,EAAC,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAIL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,mCAAmC,CACjD,MAAoB,EACpB,YAA+B,EAC/B,KAAgC,EAChC,0BAA6D;IAE7D,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAC7B,KAAK,CAAC,IAAI,EACV,6BAA6B,EAC7B,0BAA0B,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CACrD,CAAC;IACF,MAAM,WAAW,GAAG,0BAA0B,CAAC,OAAO,CAAC;IACvD,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,MAAM;QAC7B,MAAM,EAAE,YAAY,CAAC,0BAA0B,CAAC,OAAO,CAAC,eAAe,CAAC;QACxE,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,WAAW,EAAE,MAAM,CAAC;QACrF,SAAS,EAAE,0BAA0B,CAAC,SAAS;KAChD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"contributionAndProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/contributionAndProof.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,6BAA6B,EAAC,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAGL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,mCAAmC,CACjD,MAAoB,EACpB,KAAgC,EAChC,0BAA6D;IAE7D,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAC7B,KAAK,CAAC,IAAI,EACV,6BAA6B,EAC7B,0BAA0B,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CACrD,CAAC;IACF,MAAM,WAAW,GAAG,0BAA0B,CAAC,OAAO,CAAC;IACvD,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,0BAA0B,CAAC,OAAO,CAAC,eAAe;QACzD,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,WAAW,EAAE,MAAM,CAAC;QACrF,SAAS,EAAE,0BAA0B,CAAC,SAAS;KAChD,CAAC;AACJ,CAAC"}
@@ -1,7 +1,6 @@
1
- import { PublicKey } from "@chainsafe/blst";
2
1
  import { BeaconConfig } from "@lodestar/config";
3
2
  import { ISignatureSet } from "@lodestar/state-transition";
4
- import { Slot, phase0 } from "@lodestar/types";
3
+ import { Slot, ValidatorIndex, phase0 } from "@lodestar/types";
5
4
  export declare function getSelectionProofSigningRoot(config: BeaconConfig, slot: Slot): Uint8Array;
6
- export declare function getSelectionProofSignatureSet(config: BeaconConfig, slot: Slot, aggregator: PublicKey, aggregateAndProof: phase0.SignedAggregateAndProof): ISignatureSet;
5
+ export declare function getSelectionProofSignatureSet(config: BeaconConfig, slot: Slot, aggregatorIndex: ValidatorIndex, aggregateAndProof: phase0.SignedAggregateAndProof): ISignatureSet;
7
6
  //# sourceMappingURL=selectionProof.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectionProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/selectionProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,aAAa,EAA6D,MAAM,4BAA4B,CAAC;AACrH,OAAO,EAAC,IAAI,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAElD,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,GAAG,UAAU,CAOzF;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,SAAS,EACrB,iBAAiB,EAAE,MAAM,CAAC,uBAAuB,GAChD,aAAa,CAMf"}
1
+ {"version":3,"file":"selectionProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/selectionProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,aAAa,EAAuC,MAAM,4BAA4B,CAAC;AAC/F,OAAO,EAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAElE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,GAAG,UAAU,CAOzF;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,cAAc,EAC/B,iBAAiB,EAAE,MAAM,CAAC,uBAAuB,GAChD,aAAa,CAOf"}
@@ -1,5 +1,5 @@
1
1
  import { DOMAIN_SELECTION_PROOF } from "@lodestar/params";
2
- import { computeSigningRoot, createSingleSignatureSetFromComponents } from "@lodestar/state-transition";
2
+ import { SignatureSetType, computeSigningRoot } from "@lodestar/state-transition";
3
3
  import { ssz } from "@lodestar/types";
4
4
  export function getSelectionProofSigningRoot(config, slot) {
5
5
  // previously, we call `const selectionProofDomain = config.getDomain(state.slot, DOMAIN_SELECTION_PROOF, slot)`
@@ -9,7 +9,12 @@ export function getSelectionProofSigningRoot(config, slot) {
9
9
  const selectionProofDomain = config.getDomainAtFork(fork, DOMAIN_SELECTION_PROOF);
10
10
  return computeSigningRoot(ssz.Slot, slot, selectionProofDomain);
11
11
  }
12
- export function getSelectionProofSignatureSet(config, slot, aggregator, aggregateAndProof) {
13
- return createSingleSignatureSetFromComponents(aggregator, getSelectionProofSigningRoot(config, slot), aggregateAndProof.message.selectionProof);
12
+ export function getSelectionProofSignatureSet(config, slot, aggregatorIndex, aggregateAndProof) {
13
+ return {
14
+ type: SignatureSetType.indexed,
15
+ index: aggregatorIndex,
16
+ signingRoot: getSelectionProofSigningRoot(config, slot),
17
+ signature: aggregateAndProof.message.selectionProof,
18
+ };
14
19
  }
15
20
  //# sourceMappingURL=selectionProof.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectionProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/selectionProof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAgB,kBAAkB,EAAE,sCAAsC,EAAC,MAAM,4BAA4B,CAAC;AACrH,OAAO,EAAe,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAElD,MAAM,UAAU,4BAA4B,CAAC,MAAoB,EAAE,IAAU;IAC3E,gHAAgH;IAChH,2KAA2K;IAC3K,qEAAqE;IACrE,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,oBAAoB,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IAClF,OAAO,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,MAAoB,EACpB,IAAU,EACV,UAAqB,EACrB,iBAAiD;IAEjD,OAAO,sCAAsC,CAC3C,UAAU,EACV,4BAA4B,CAAC,MAAM,EAAE,IAAI,CAAC,EAC1C,iBAAiB,CAAC,OAAO,CAAC,cAAc,CACzC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"selectionProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/selectionProof.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAgB,gBAAgB,EAAE,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC/F,OAAO,EAA+B,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAElE,MAAM,UAAU,4BAA4B,CAAC,MAAoB,EAAE,IAAU;IAC3E,gHAAgH;IAChH,2KAA2K;IAC3K,qEAAqE;IACrE,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,oBAAoB,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IAClF,OAAO,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,MAAoB,EACpB,IAAU,EACV,eAA+B,EAC/B,iBAAiD;IAEjD,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,4BAA4B,CAAC,MAAM,EAAE,IAAI,CAAC;QACvD,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAAC,cAAc;KACpD,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { BeaconConfig } from "@lodestar/config";
2
- import { CachedBeaconStateAllForks, ISignatureSet, Index2PubkeyCache } from "@lodestar/state-transition";
2
+ import { CachedBeaconStateAllForks, ISignatureSet } from "@lodestar/state-transition";
3
3
  import { altair } from "@lodestar/types";
4
- export declare function getSyncCommitteeSignatureSet(config: BeaconConfig, index2pubkey: Index2PubkeyCache, state: CachedBeaconStateAllForks, syncCommittee: altair.SyncCommitteeMessage): ISignatureSet;
4
+ export declare function getSyncCommitteeSignatureSet(config: BeaconConfig, state: CachedBeaconStateAllForks, syncCommittee: altair.SyncCommitteeMessage): ISignatureSet;
5
5
  //# sourceMappingURL=syncCommittee.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommittee.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommittee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,iBAAiB,EAGlB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,yBAAyB,EAChC,aAAa,EAAE,MAAM,CAAC,oBAAoB,GACzC,aAAa,CASf"}
1
+ {"version":3,"file":"syncCommittee.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommittee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,aAAa,EAGd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,yBAAyB,EAChC,aAAa,EAAE,MAAM,CAAC,oBAAoB,GACzC,aAAa,CASf"}
@@ -1,11 +1,11 @@
1
1
  import { DOMAIN_SYNC_COMMITTEE } from "@lodestar/params";
2
2
  import { SignatureSetType, computeSigningRoot, } from "@lodestar/state-transition";
3
3
  import { ssz } from "@lodestar/types";
4
- export function getSyncCommitteeSignatureSet(config, index2pubkey, state, syncCommittee) {
4
+ export function getSyncCommitteeSignatureSet(config, state, syncCommittee) {
5
5
  const domain = config.getDomain(state.slot, DOMAIN_SYNC_COMMITTEE, syncCommittee.slot);
6
6
  return {
7
- type: SignatureSetType.single,
8
- pubkey: index2pubkey[syncCommittee.validatorIndex],
7
+ type: SignatureSetType.indexed,
8
+ index: syncCommittee.validatorIndex,
9
9
  signingRoot: computeSigningRoot(ssz.Root, syncCommittee.beaconBlockRoot, domain),
10
10
  signature: syncCommittee.signature,
11
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommittee.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommittee.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAIL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,4BAA4B,CAC1C,MAAoB,EACpB,YAA+B,EAC/B,KAAgC,EAChC,aAA0C;IAE1C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,qBAAqB,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAEvF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,MAAM;QAC7B,MAAM,EAAE,YAAY,CAAC,aAAa,CAAC,cAAc,CAAC;QAClD,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,eAAe,EAAE,MAAM,CAAC;QAChF,SAAS,EAAE,aAAa,CAAC,SAAS;KACnC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"syncCommittee.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommittee.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAGL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,4BAA4B,CAC1C,MAAoB,EACpB,KAAgC,EAChC,aAA0C;IAE1C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,qBAAqB,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAEvF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,aAAa,CAAC,cAAc;QACnC,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,eAAe,EAAE,MAAM,CAAC;QAChF,SAAS,EAAE,aAAa,CAAC,SAAS;KACnC,CAAC;AACJ,CAAC"}
@@ -1,6 +1,5 @@
1
- import { PublicKey } from "@chainsafe/blst";
2
1
  import { BeaconConfig } from "@lodestar/config";
3
2
  import { CachedBeaconStateAltair, ISignatureSet } from "@lodestar/state-transition";
4
3
  import { altair } from "@lodestar/types";
5
- export declare function getSyncCommitteeContributionSignatureSet(config: BeaconConfig, state: CachedBeaconStateAltair, contribution: altair.SyncCommitteeContribution, pubkeys: PublicKey[]): ISignatureSet;
4
+ export declare function getSyncCommitteeContributionSignatureSet(config: BeaconConfig, state: CachedBeaconStateAltair, contribution: altair.SyncCommitteeContribution, participantIndices: number[]): ISignatureSet;
6
5
  //# sourceMappingURL=syncCommitteeContribution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommitteeContribution.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeContribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,uBAAuB,EAAE,aAAa,EAAuC,MAAM,4BAA4B,CAAC;AACxH,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,wCAAwC,CACtD,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,uBAAuB,EAC9B,YAAY,EAAE,MAAM,CAAC,yBAAyB,EAC9C,OAAO,EAAE,SAAS,EAAE,GACnB,aAAa,CAQf"}
1
+ {"version":3,"file":"syncCommitteeContribution.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeContribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,uBAAuB,EAAE,aAAa,EAAuC,MAAM,4BAA4B,CAAC;AACxH,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,wCAAwC,CACtD,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,uBAAuB,EAC9B,YAAY,EAAE,MAAM,CAAC,yBAAyB,EAC9C,kBAAkB,EAAE,MAAM,EAAE,GAC3B,aAAa,CAQf"}
@@ -1,11 +1,11 @@
1
1
  import { DOMAIN_SYNC_COMMITTEE } from "@lodestar/params";
2
2
  import { SignatureSetType, computeSigningRoot } from "@lodestar/state-transition";
3
3
  import { ssz } from "@lodestar/types";
4
- export function getSyncCommitteeContributionSignatureSet(config, state, contribution, pubkeys) {
4
+ export function getSyncCommitteeContributionSignatureSet(config, state, contribution, participantIndices) {
5
5
  const domain = config.getDomain(state.slot, DOMAIN_SYNC_COMMITTEE, contribution.slot);
6
6
  return {
7
7
  type: SignatureSetType.aggregate,
8
- pubkeys,
8
+ indices: participantIndices,
9
9
  signingRoot: computeSigningRoot(ssz.Root, contribution.beaconBlockRoot, domain),
10
10
  signature: contribution.signature,
11
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommitteeContribution.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeContribution.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAyC,gBAAgB,EAAE,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AACxH,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,wCAAwC,CACtD,MAAoB,EACpB,KAA8B,EAC9B,YAA8C,EAC9C,OAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,qBAAqB,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IACtF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,SAAS;QAChC,OAAO;QACP,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;QAC/E,SAAS,EAAE,YAAY,CAAC,SAAS;KAClC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"syncCommitteeContribution.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeContribution.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAyC,gBAAgB,EAAE,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AACxH,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,wCAAwC,CACtD,MAAoB,EACpB,KAA8B,EAC9B,YAA8C,EAC9C,kBAA4B;IAE5B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,qBAAqB,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IACtF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,SAAS;QAChC,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;QAC/E,SAAS,EAAE,YAAY,CAAC,SAAS;KAClC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { BeaconConfig } from "@lodestar/config";
2
- import { CachedBeaconStateAllForks, ISignatureSet, Index2PubkeyCache } from "@lodestar/state-transition";
2
+ import { CachedBeaconStateAllForks, ISignatureSet } from "@lodestar/state-transition";
3
3
  import { altair } from "@lodestar/types";
4
- export declare function getSyncCommitteeSelectionProofSignatureSet(config: BeaconConfig, index2pubkey: Index2PubkeyCache, state: CachedBeaconStateAllForks, contributionAndProof: altair.ContributionAndProof): ISignatureSet;
4
+ export declare function getSyncCommitteeSelectionProofSignatureSet(config: BeaconConfig, state: CachedBeaconStateAllForks, contributionAndProof: altair.ContributionAndProof): ISignatureSet;
5
5
  //# sourceMappingURL=syncCommitteeSelectionProof.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommitteeSelectionProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,iBAAiB,EAGlB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,0CAA0C,CACxD,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,yBAAyB,EAChC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,GAChD,aAAa,CAaf"}
1
+ {"version":3,"file":"syncCommitteeSelectionProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,aAAa,EAGd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,0CAA0C,CACxD,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,yBAAyB,EAChC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,GAChD,aAAa,CAaf"}
@@ -1,7 +1,7 @@
1
1
  import { DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF } from "@lodestar/params";
2
2
  import { SignatureSetType, computeSigningRoot, } from "@lodestar/state-transition";
3
3
  import { ssz } from "@lodestar/types";
4
- export function getSyncCommitteeSelectionProofSignatureSet(config, index2pubkey, state, contributionAndProof) {
4
+ export function getSyncCommitteeSelectionProofSignatureSet(config, state, contributionAndProof) {
5
5
  const slot = contributionAndProof.contribution.slot;
6
6
  const domain = config.getDomain(state.slot, DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF, slot);
7
7
  const signingData = {
@@ -9,8 +9,8 @@ export function getSyncCommitteeSelectionProofSignatureSet(config, index2pubkey,
9
9
  subcommitteeIndex: contributionAndProof.contribution.subcommitteeIndex,
10
10
  };
11
11
  return {
12
- type: SignatureSetType.single,
13
- pubkey: index2pubkey[contributionAndProof.aggregatorIndex],
12
+ type: SignatureSetType.indexed,
13
+ index: contributionAndProof.aggregatorIndex,
14
14
  signingRoot: computeSigningRoot(ssz.altair.SyncAggregatorSelectionData, signingData, domain),
15
15
  signature: contributionAndProof.selectionProof,
16
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommitteeSelectionProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qCAAqC,EAAC,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAIL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,0CAA0C,CACxD,MAAoB,EACpB,YAA+B,EAC/B,KAAgC,EAChC,oBAAiD;IAEjD,MAAM,IAAI,GAAG,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,qCAAqC,EAAE,IAAI,CAAC,CAAC;IACzF,MAAM,WAAW,GAAuC;QACtD,IAAI;QACJ,iBAAiB,EAAE,oBAAoB,CAAC,YAAY,CAAC,iBAAiB;KACvE,CAAC;IACF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,MAAM;QAC7B,MAAM,EAAE,YAAY,CAAC,oBAAoB,CAAC,eAAe,CAAC;QAC1D,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,2BAA2B,EAAE,WAAW,EAAE,MAAM,CAAC;QAC5F,SAAS,EAAE,oBAAoB,CAAC,cAAc;KAC/C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"syncCommitteeSelectionProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qCAAqC,EAAC,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAGL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,0CAA0C,CACxD,MAAoB,EACpB,KAAgC,EAChC,oBAAiD;IAEjD,MAAM,IAAI,GAAG,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,qCAAqC,EAAE,IAAI,CAAC,CAAC;IACzF,MAAM,WAAW,GAAuC;QACtD,IAAI;QACJ,iBAAiB,EAAE,oBAAoB,CAAC,YAAY,CAAC,iBAAiB;KACvE,CAAC;IACF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,oBAAoB,CAAC,eAAe;QAC3C,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,2BAA2B,EAAE,WAAW,EAAE,MAAM,CAAC;QAC5F,SAAS,EAAE,oBAAoB,CAAC,cAAc;KAC/C,CAAC;AACJ,CAAC"}
@@ -61,7 +61,7 @@ export async function validateApiSyncCommittee(chain, headState, syncCommittee)
61
61
  * Abstracted so it can be re-used in API validation.
62
62
  */
63
63
  async function validateSyncCommitteeSigOnly(chain, headState, syncCommittee, prioritizeBls = false) {
64
- const signatureSet = getSyncCommitteeSignatureSet(chain.config, chain.index2pubkey, headState, syncCommittee);
64
+ const signatureSet = getSyncCommitteeSignatureSet(chain.config, headState, syncCommittee);
65
65
  if (!(await chain.bls.verifySignatureSets([signatureSet], { batchable: true, priority: prioritizeBls }))) {
66
66
  throw new SyncCommitteeError(GossipAction.REJECT, {
67
67
  code: SyncCommitteeErrorCode.INVALID_SIGNATURE,
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommittee.js","sourceRoot":"","sources":["../../../src/chain/validation/syncCommittee.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syncCommittee.js","sourceRoot":"","sources":["../../../src/chain/validation/syncCommittee.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommitteeContributionAndProof.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/syncCommitteeContributionAndProof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,cAAc,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAQ7C;;GAEG;AACH,wBAAsB,+CAA+C,CACnE,KAAK,EAAE,YAAY,EACnB,0BAA0B,EAAE,MAAM,CAAC,0BAA0B,EAC7D,+BAA+B,UAAQ,GACtC,OAAO,CAAC;IAAC,+BAA+B,EAAE,cAAc,EAAE,CAAA;CAAC,CAAC,CAsF9D"}
1
+ {"version":3,"file":"syncCommitteeContributionAndProof.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/syncCommitteeContributionAndProof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,cAAc,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAQ7C;;GAEG;AACH,wBAAsB,+CAA+C,CACnE,KAAK,EAAE,YAAY,EACnB,0BAA0B,EAAE,MAAM,CAAC,0BAA0B,EAC7D,+BAA+B,UAAQ,GACtC,OAAO,CAAC;IAAC,+BAA+B,EAAE,cAAc,EAAE,CAAA;CAAC,CAAC,CAoF9D"}
@@ -10,7 +10,6 @@ export async function validateSyncCommitteeGossipContributionAndProof(chain, sig
10
10
  const contributionAndProof = signedContributionAndProof.message;
11
11
  const { contribution, aggregatorIndex } = contributionAndProof;
12
12
  const { subcommitteeIndex, slot } = contribution;
13
- const { index2pubkey } = chain;
14
13
  const headState = chain.getHeadState();
15
14
  validateGossipSyncCommitteeExceptSig(chain, headState, subcommitteeIndex, {
16
15
  slot,
@@ -54,16 +53,15 @@ export async function validateSyncCommitteeGossipContributionAndProof(chain, sig
54
53
  // [REJECT] The aggregator's validator index is in the declared subcommittee of the current sync committee --
55
54
  // i.e. state.validators[contribution_and_proof.aggregator_index].pubkey in get_sync_subcommittee_pubkeys(state, contribution.subcommittee_index).
56
55
  // > Checked in validateGossipSyncCommitteeExceptSig()
57
- const participantPubkeys = syncCommitteeParticipantIndices.map((validatorIndex) => index2pubkey[validatorIndex]);
58
56
  const signatureSets = [
59
57
  // [REJECT] The contribution_and_proof.selection_proof is a valid signature of the SyncAggregatorSelectionData
60
58
  // derived from the contribution by the validator with index contribution_and_proof.aggregator_index.
61
- getSyncCommitteeSelectionProofSignatureSet(chain.config, index2pubkey, headState, contributionAndProof),
59
+ getSyncCommitteeSelectionProofSignatureSet(chain.config, headState, contributionAndProof),
62
60
  // [REJECT] The aggregator signature, signed_contribution_and_proof.signature, is valid.
63
- getContributionAndProofSignatureSet(chain.config, index2pubkey, headState, signedContributionAndProof),
61
+ getContributionAndProofSignatureSet(chain.config, headState, signedContributionAndProof),
64
62
  // [REJECT] The aggregate signature is valid for the message beacon_block_root and aggregate pubkey derived from
65
63
  // the participation info in aggregation_bits for the subcommittee specified by the contribution.subcommittee_index.
66
- getSyncCommitteeContributionSignatureSet(chain.config, headState, contribution, participantPubkeys),
64
+ getSyncCommitteeContributionSignatureSet(chain.config, headState, contribution, syncCommitteeParticipantIndices),
67
65
  ];
68
66
  if (!(await chain.bls.verifySignatureSets(signatureSets, { batchable: true }))) {
69
67
  throw new SyncCommitteeError(GossipAction.REJECT, {
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommitteeContributionAndProof.js","sourceRoot":"","sources":["../../../src/chain/validation/syncCommitteeContributionAndProof.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syncCommitteeContributionAndProof.js","sourceRoot":"","sources":["../../../src/chain/validation/syncCommitteeContributionAndProof.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ async function validateVoluntaryExit(chain, voluntaryExit, prioritizeBls = false
32
32
  code: voluntaryExitValidityToErrorCode(validity),
33
33
  });
34
34
  }
35
- const signatureSet = getVoluntaryExitSignatureSet(chain.config, chain.index2pubkey, state.slot, voluntaryExit);
35
+ const signatureSet = getVoluntaryExitSignatureSet(chain.config, state.slot, voluntaryExit);
36
36
  if (!(await chain.bls.verifySignatureSets([signatureSet], { batchable: true, priority: prioritizeBls }))) {
37
37
  throw new VoluntaryExitError(GossipAction.REJECT, {
38
38
  code: VoluntaryExitErrorCode.INVALID_SIGNATURE,
@@ -1 +1 @@
1
- {"version":3,"file":"voluntaryExit.js","sourceRoot":"","sources":["../../../src/chain/validation/voluntaryExit.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,gCAAgC,GACjC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAmB,EACnB,aAAyC;IAEzC,MAAM,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAmB,EACnB,aAAyC;IAEzC,OAAO,qBAAqB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,KAAmB,EACnB,aAAyC,EACzC,aAAa,GAAG,KAAK;IAErB,sGAAsG;IACtG,iDAAiD;IACjD,IAAI,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,cAAc;SAC5C,CAAC,CAAC;IACL,CAAC;IAED,wDAAwD;IACxD,EAAE;IACF,gFAAgF;IAChF,6DAA6D;IAC7D,sGAAsG;IACtG,kGAAkG;IAClG,6CAA6C;IAC7C,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,0BAA0B,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAE9F,gFAAgF;IAChF,mDAAmD;IACnD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAC5G,IAAI,QAAQ,KAAK,qBAAqB,CAAC,KAAK,EAAE,CAAC;QAC7C,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,gCAAgC,CAAC,QAAQ,CAAC;SACjD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,YAAY,GAAG,4BAA4B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC/G,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAC,CAAC,CAAC,EAAE,CAAC;QACvG,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,iBAAiB;SAC/C,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"voluntaryExit.js","sourceRoot":"","sources":["../../../src/chain/validation/voluntaryExit.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,gCAAgC,GACjC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAmB,EACnB,aAAyC;IAEzC,MAAM,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAmB,EACnB,aAAyC;IAEzC,OAAO,qBAAqB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,KAAmB,EACnB,aAAyC,EACzC,aAAa,GAAG,KAAK;IAErB,sGAAsG;IACtG,iDAAiD;IACjD,IAAI,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,cAAc;SAC5C,CAAC,CAAC;IACL,CAAC;IAED,wDAAwD;IACxD,EAAE;IACF,gFAAgF;IAChF,6DAA6D;IAC7D,sGAAsG;IACtG,kGAAkG;IAClG,6CAA6C;IAC7C,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,0BAA0B,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAE9F,gFAAgF;IAChF,mDAAmD;IACnD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAC5G,IAAI,QAAQ,KAAK,qBAAqB,CAAC,KAAK,EAAE,CAAC;QAC7C,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,gCAAgC,CAAC,QAAQ,CAAC;SACjD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,YAAY,GAAG,4BAA4B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC3F,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAC,CAAC,CAAC,EAAE,CAAC;QACvG,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,iBAAiB;SAC/C,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}