@lodestar/state-transition 1.40.0 → 1.41.0-dev.0087e7a664

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 (216) hide show
  1. package/lib/block/externalData.d.ts +2 -1
  2. package/lib/block/externalData.d.ts.map +1 -1
  3. package/lib/block/externalData.js +2 -0
  4. package/lib/block/externalData.js.map +1 -1
  5. package/lib/block/index.d.ts +3 -3
  6. package/lib/block/isValidIndexedAttestation.d.ts +3 -3
  7. package/lib/block/isValidIndexedAttestation.d.ts.map +1 -1
  8. package/lib/block/isValidIndexedAttestation.js +4 -4
  9. package/lib/block/isValidIndexedAttestation.js.map +1 -1
  10. package/lib/block/isValidIndexedPayloadAttestation.js +1 -1
  11. package/lib/block/isValidIndexedPayloadAttestation.js.map +1 -1
  12. package/lib/block/processAttestationPhase0.js +1 -1
  13. package/lib/block/processAttestationPhase0.js.map +1 -1
  14. package/lib/block/processAttestationsAltair.js +1 -1
  15. package/lib/block/processAttestationsAltair.js.map +1 -1
  16. package/lib/block/processAttesterSlashing.d.ts +2 -2
  17. package/lib/block/processAttesterSlashing.d.ts.map +1 -1
  18. package/lib/block/processAttesterSlashing.js +3 -3
  19. package/lib/block/processAttesterSlashing.js.map +1 -1
  20. package/lib/block/processDepositRequest.d.ts +1 -1
  21. package/lib/block/processDepositRequest.d.ts.map +1 -1
  22. package/lib/block/processDepositRequest.js +6 -5
  23. package/lib/block/processDepositRequest.js.map +1 -1
  24. package/lib/block/processExecutionPayloadBid.d.ts +1 -1
  25. package/lib/block/processExecutionPayloadBid.d.ts.map +1 -1
  26. package/lib/block/processExecutionPayloadBid.js +5 -0
  27. package/lib/block/processExecutionPayloadBid.js.map +1 -1
  28. package/lib/block/processExecutionPayloadEnvelope.d.ts +5 -2
  29. package/lib/block/processExecutionPayloadEnvelope.d.ts.map +1 -1
  30. package/lib/block/processExecutionPayloadEnvelope.js +25 -24
  31. package/lib/block/processExecutionPayloadEnvelope.js.map +1 -1
  32. package/lib/block/processPayloadAttestation.d.ts +1 -1
  33. package/lib/block/processProposerSlashing.d.ts +2 -2
  34. package/lib/block/processProposerSlashing.d.ts.map +1 -1
  35. package/lib/block/processProposerSlashing.js +3 -3
  36. package/lib/block/processProposerSlashing.js.map +1 -1
  37. package/lib/block/processRandao.js +1 -1
  38. package/lib/block/processRandao.js.map +1 -1
  39. package/lib/block/processSyncCommittee.js +1 -1
  40. package/lib/block/processSyncCommittee.js.map +1 -1
  41. package/lib/block/processVoluntaryExit.js +1 -1
  42. package/lib/block/processVoluntaryExit.js.map +1 -1
  43. package/lib/block/processWithdrawalRequest.js +2 -2
  44. package/lib/block/processWithdrawalRequest.js.map +1 -1
  45. package/lib/block/processWithdrawals.d.ts.map +1 -1
  46. package/lib/block/processWithdrawals.js +9 -1
  47. package/lib/block/processWithdrawals.js.map +1 -1
  48. package/lib/cache/epochCache.d.ts +11 -18
  49. package/lib/cache/epochCache.d.ts.map +1 -1
  50. package/lib/cache/epochCache.js +41 -40
  51. package/lib/cache/epochCache.js.map +1 -1
  52. package/lib/cache/pubkeyCache.d.ts +21 -6
  53. package/lib/cache/pubkeyCache.d.ts.map +1 -1
  54. package/lib/cache/pubkeyCache.js +39 -14
  55. package/lib/cache/pubkeyCache.js.map +1 -1
  56. package/lib/cache/stateCache.d.ts +1 -1
  57. package/lib/cache/stateCache.d.ts.map +1 -1
  58. package/lib/cache/stateCache.js +3 -7
  59. package/lib/cache/stateCache.js.map +1 -1
  60. package/lib/cache/syncCommitteeCache.d.ts +3 -2
  61. package/lib/cache/syncCommitteeCache.d.ts.map +1 -1
  62. package/lib/cache/syncCommitteeCache.js +4 -4
  63. package/lib/cache/syncCommitteeCache.js.map +1 -1
  64. package/lib/epoch/index.d.ts +1 -1
  65. package/lib/epoch/processBuilderPendingPayments.d.ts +1 -1
  66. package/lib/index.d.ts +3 -1
  67. package/lib/index.d.ts.map +1 -1
  68. package/lib/index.js +2 -1
  69. package/lib/index.js.map +1 -1
  70. package/lib/lightClient/proofs.d.ts +10 -0
  71. package/lib/lightClient/proofs.d.ts.map +1 -0
  72. package/lib/lightClient/proofs.js +63 -0
  73. package/lib/lightClient/proofs.js.map +1 -0
  74. package/lib/lightClient/types.d.ts +34 -0
  75. package/lib/lightClient/types.d.ts.map +1 -0
  76. package/lib/lightClient/types.js +2 -0
  77. package/lib/lightClient/types.js.map +1 -0
  78. package/lib/rewards/attestationsRewards.d.ts +2 -2
  79. package/lib/rewards/attestationsRewards.d.ts.map +1 -1
  80. package/lib/rewards/attestationsRewards.js +4 -4
  81. package/lib/rewards/attestationsRewards.js.map +1 -1
  82. package/lib/rewards/syncCommitteeRewards.d.ts +2 -2
  83. package/lib/rewards/syncCommitteeRewards.d.ts.map +1 -1
  84. package/lib/rewards/syncCommitteeRewards.js +5 -2
  85. package/lib/rewards/syncCommitteeRewards.js.map +1 -1
  86. package/lib/signatureSets/indexedPayloadAttestation.d.ts +3 -4
  87. package/lib/signatureSets/indexedPayloadAttestation.d.ts.map +1 -1
  88. package/lib/signatureSets/indexedPayloadAttestation.js +4 -4
  89. package/lib/signatureSets/indexedPayloadAttestation.js.map +1 -1
  90. package/lib/signatureSets/proposer.d.ts +2 -2
  91. package/lib/signatureSets/proposer.d.ts.map +1 -1
  92. package/lib/signatureSets/proposer.js +2 -2
  93. package/lib/signatureSets/proposer.js.map +1 -1
  94. package/lib/signatureSets/randao.d.ts +2 -2
  95. package/lib/signatureSets/randao.d.ts.map +1 -1
  96. package/lib/signatureSets/randao.js +2 -2
  97. package/lib/signatureSets/randao.js.map +1 -1
  98. package/lib/signatureSets/voluntaryExits.d.ts +2 -2
  99. package/lib/signatureSets/voluntaryExits.d.ts.map +1 -1
  100. package/lib/signatureSets/voluntaryExits.js +2 -2
  101. package/lib/signatureSets/voluntaryExits.js.map +1 -1
  102. package/lib/slot/upgradeStateToGloas.d.ts.map +1 -1
  103. package/lib/slot/upgradeStateToGloas.js +50 -0
  104. package/lib/slot/upgradeStateToGloas.js.map +1 -1
  105. package/lib/stateTransition.d.ts +2 -1
  106. package/lib/stateTransition.d.ts.map +1 -1
  107. package/lib/stateTransition.js +2 -1
  108. package/lib/stateTransition.js.map +1 -1
  109. package/lib/stateView/beaconStateView.d.ts +144 -0
  110. package/lib/stateView/beaconStateView.d.ts.map +1 -0
  111. package/lib/stateView/beaconStateView.js +496 -0
  112. package/lib/stateView/beaconStateView.js.map +1 -0
  113. package/lib/stateView/index.d.ts +3 -0
  114. package/lib/stateView/index.d.ts.map +1 -0
  115. package/lib/stateView/index.js +3 -0
  116. package/lib/stateView/index.js.map +1 -0
  117. package/lib/stateView/interface.d.ts +118 -0
  118. package/lib/stateView/interface.d.ts.map +1 -0
  119. package/lib/stateView/interface.js +2 -0
  120. package/lib/stateView/interface.js.map +1 -0
  121. package/lib/testUtils/cache.d.ts +2 -0
  122. package/lib/testUtils/cache.d.ts.map +1 -0
  123. package/lib/testUtils/cache.js +7 -0
  124. package/lib/testUtils/cache.js.map +1 -0
  125. package/lib/testUtils/index.d.ts +6 -0
  126. package/lib/testUtils/index.d.ts.map +1 -0
  127. package/lib/testUtils/index.js +6 -0
  128. package/lib/testUtils/index.js.map +1 -0
  129. package/lib/testUtils/infura.d.ts +3 -0
  130. package/lib/testUtils/infura.d.ts.map +1 -0
  131. package/lib/testUtils/infura.js +8 -0
  132. package/lib/testUtils/infura.js.map +1 -0
  133. package/lib/testUtils/interop.d.ts +2 -0
  134. package/lib/testUtils/interop.d.ts.map +1 -0
  135. package/lib/testUtils/interop.js +24 -0
  136. package/lib/testUtils/interop.js.map +1 -0
  137. package/lib/testUtils/params.d.ts +18 -0
  138. package/lib/testUtils/params.d.ts.map +1 -0
  139. package/lib/testUtils/params.js +20 -0
  140. package/lib/testUtils/params.js.map +1 -0
  141. package/lib/testUtils/state.d.ts +20 -0
  142. package/lib/testUtils/state.d.ts.map +1 -0
  143. package/lib/testUtils/state.js +78 -0
  144. package/lib/testUtils/state.js.map +1 -0
  145. package/lib/testUtils/testFileCache.d.ts +17 -0
  146. package/lib/testUtils/testFileCache.d.ts.map +1 -0
  147. package/lib/testUtils/testFileCache.js +96 -0
  148. package/lib/testUtils/testFileCache.js.map +1 -0
  149. package/lib/testUtils/util.d.ts +50 -0
  150. package/lib/testUtils/util.d.ts.map +1 -0
  151. package/lib/testUtils/util.js +329 -0
  152. package/lib/testUtils/util.js.map +1 -0
  153. package/lib/util/gloas.d.ts.map +1 -1
  154. package/lib/util/gloas.js +10 -3
  155. package/lib/util/gloas.js.map +1 -1
  156. package/lib/util/seed.d.ts +20 -12
  157. package/lib/util/seed.d.ts.map +1 -1
  158. package/lib/util/seed.js +80 -72
  159. package/lib/util/seed.js.map +1 -1
  160. package/lib/util/signatureSets.d.ts +7 -7
  161. package/lib/util/signatureSets.d.ts.map +1 -1
  162. package/lib/util/signatureSets.js +18 -12
  163. package/lib/util/signatureSets.js.map +1 -1
  164. package/lib/util/weakSubjectivity.js +1 -1
  165. package/lib/util/weakSubjectivity.js.map +1 -1
  166. package/package.json +12 -7
  167. package/src/block/externalData.ts +2 -0
  168. package/src/block/index.ts +3 -3
  169. package/src/block/isValidIndexedAttestation.ts +5 -5
  170. package/src/block/isValidIndexedPayloadAttestation.ts +4 -4
  171. package/src/block/processAttestationPhase0.ts +1 -1
  172. package/src/block/processAttestationsAltair.ts +2 -2
  173. package/src/block/processAttesterSlashing.ts +4 -4
  174. package/src/block/processDepositRequest.ts +8 -5
  175. package/src/block/processExecutionPayloadBid.ts +12 -4
  176. package/src/block/processExecutionPayloadEnvelope.ts +40 -37
  177. package/src/block/processOperations.ts +1 -1
  178. package/src/block/processPayloadAttestation.ts +2 -2
  179. package/src/block/processProposerSlashing.ts +4 -4
  180. package/src/block/processRandao.ts +1 -1
  181. package/src/block/processSyncCommittee.ts +1 -1
  182. package/src/block/processVoluntaryExit.ts +1 -1
  183. package/src/block/processWithdrawalRequest.ts +2 -2
  184. package/src/block/processWithdrawals.ts +11 -2
  185. package/src/cache/epochCache.ts +62 -54
  186. package/src/cache/pubkeyCache.ts +62 -21
  187. package/src/cache/stateCache.ts +4 -8
  188. package/src/cache/syncCommitteeCache.ts +4 -5
  189. package/src/epoch/index.ts +1 -1
  190. package/src/epoch/processBuilderPendingPayments.ts +2 -2
  191. package/src/index.ts +3 -1
  192. package/src/lightClient/proofs.ts +83 -0
  193. package/src/lightClient/types.ts +33 -0
  194. package/src/rewards/attestationsRewards.ts +5 -5
  195. package/src/rewards/syncCommitteeRewards.ts +6 -5
  196. package/src/signatureSets/indexedPayloadAttestation.ts +4 -6
  197. package/src/signatureSets/proposer.ts +3 -3
  198. package/src/signatureSets/randao.ts +3 -7
  199. package/src/signatureSets/voluntaryExits.ts +3 -3
  200. package/src/slot/upgradeStateToGloas.ts +74 -0
  201. package/src/stateTransition.ts +2 -1
  202. package/src/stateView/beaconStateView.ts +744 -0
  203. package/src/stateView/index.ts +2 -0
  204. package/src/stateView/interface.ts +196 -0
  205. package/src/testUtils/cache.ts +8 -0
  206. package/src/testUtils/index.ts +5 -0
  207. package/src/testUtils/infura.ts +10 -0
  208. package/src/testUtils/interop.ts +29 -0
  209. package/src/testUtils/params.ts +23 -0
  210. package/src/testUtils/state.ts +110 -0
  211. package/src/testUtils/testFileCache.ts +127 -0
  212. package/src/testUtils/util.ts +429 -0
  213. package/src/util/gloas.ts +11 -3
  214. package/src/util/seed.ts +106 -89
  215. package/src/util/signatureSets.ts +23 -17
  216. package/src/util/weakSubjectivity.ts +1 -1
@@ -0,0 +1,329 @@
1
+ import { PublicKey } from "@chainsafe/blst";
2
+ import { BitArray, fromHexString } from "@chainsafe/ssz";
3
+ import { createBeaconConfig, createChainForkConfig } from "@lodestar/config";
4
+ import { config } from "@lodestar/config/default";
5
+ import { EPOCHS_PER_ETH1_VOTING_PERIOD, EPOCHS_PER_HISTORICAL_VECTOR, ForkSeq, MAX_ATTESTATIONS, MAX_EFFECTIVE_BALANCE, SLOTS_PER_EPOCH, SLOTS_PER_HISTORICAL_ROOT, } from "@lodestar/params";
6
+ import { ssz } from "@lodestar/types";
7
+ import { getEffectiveBalanceIncrements } from "../cache/effectiveBalanceIncrements.js";
8
+ import { computeCommitteeCount, computeEpochAtSlot, createCachedBeaconState, createPubkeyCache, interopSecretKey, newFilledArray, processSlots, } from "../index.js";
9
+ import { getNextSyncCommittee } from "../util/syncCommittee.js";
10
+ import { getActiveValidatorIndices } from "../util/validator.js";
11
+ import { interopPubkeysCached } from "./interop.js";
12
+ let phase0State = null;
13
+ let phase0CachedState23637 = null;
14
+ let phase0CachedState23638 = null;
15
+ let phase0SignedBlock = null;
16
+ let altairState = null;
17
+ let altairCachedState23637 = null;
18
+ let altairCachedState23638 = null;
19
+ /**
20
+ * Number of validators in prater is 210000 as of May 2021
21
+ */
22
+ export const numValidators = 250000;
23
+ export const keypairsMod = 100;
24
+ /**
25
+ * As of Jul 07 2021, the performance state has
26
+ * out.prevEpochUnslashedStake.targetStake 7750000000000000n
27
+ * out.currEpochUnslashedTargetStake 7750000000000000n
28
+ * This prefix represent the total stake in Peta Wei
29
+ */
30
+ export const perfStateId = `${numValidators} vs - 7PWei`;
31
+ /** Cache interop secret keys */
32
+ const secretKeyByModIndex = new Map();
33
+ const epoch = 23638;
34
+ export const perfStateEpoch = epoch;
35
+ export function getPubkeys(vc = numValidators) {
36
+ const pubkeysMod = interopPubkeysCached(keypairsMod);
37
+ const pubkeysModObj = pubkeysMod.map((pk) => PublicKey.fromBytes(pk));
38
+ const pubkeys = Array.from({ length: vc }, (_, i) => pubkeysMod[i % keypairsMod]);
39
+ return { pubkeysMod, pubkeysModObj, pubkeys };
40
+ }
41
+ /** Get secret key of a validatorIndex, if the pubkeys are generated with `getPubkeys()` */
42
+ export function getSecretKeyFromIndex(validatorIndex) {
43
+ return interopSecretKey(validatorIndex % keypairsMod);
44
+ }
45
+ /** Get secret key of a validatorIndex, if the pubkeys are generated with `getPubkeys()` */
46
+ export function getSecretKeyFromIndexCached(validatorIndex) {
47
+ const keyIndex = validatorIndex % keypairsMod;
48
+ let sk = secretKeyByModIndex.get(keyIndex);
49
+ if (!sk) {
50
+ sk = interopSecretKey(keyIndex);
51
+ secretKeyByModIndex.set(keyIndex, sk);
52
+ }
53
+ return sk;
54
+ }
55
+ function getPubkeyCaches({ pubkeysMod }) {
56
+ // Manually sync pubkeys to prevent doing BLS opts 110_000 times
57
+ const pubkeyCache = createPubkeyCache();
58
+ for (let i = 0; i < numValidators; i++) {
59
+ const pubkey = pubkeysMod[i % keypairsMod];
60
+ pubkeyCache.set(i, pubkey);
61
+ }
62
+ return { pubkeyCache };
63
+ }
64
+ export function generatePerfTestCachedStatePhase0(opts) {
65
+ // Generate only some publicKeys
66
+ const { pubkeys, pubkeysMod, pubkeysModObj } = getPubkeys();
67
+ const { pubkeyCache } = getPubkeyCaches({ pubkeys, pubkeysMod, pubkeysModObj });
68
+ if (!phase0State) {
69
+ const state = buildPerformanceStatePhase0();
70
+ // no justificationBits
71
+ phase0State = ssz.phase0.BeaconState.toViewDU(state);
72
+ // cache roots
73
+ phase0State.hashTreeRoot();
74
+ }
75
+ if (!phase0CachedState23637) {
76
+ const state = phase0State.clone();
77
+ state.slot -= 1;
78
+ phase0CachedState23637 = createCachedBeaconState(state, {
79
+ config: createBeaconConfig(config, state.genesisValidatorsRoot),
80
+ pubkeyCache,
81
+ });
82
+ const currentEpoch = computeEpochAtSlot(state.slot - 1);
83
+ const previousEpoch = currentEpoch - 1;
84
+ // previous epoch attestations
85
+ const numPrevAttestations = SLOTS_PER_EPOCH * MAX_ATTESTATIONS;
86
+ const activeValidatorCount = pubkeys.length;
87
+ const committeesPerSlot = computeCommitteeCount(activeValidatorCount);
88
+ for (let i = 0; i < numPrevAttestations; i++) {
89
+ const slotInEpoch = i % SLOTS_PER_EPOCH;
90
+ const slot = previousEpoch * SLOTS_PER_EPOCH + slotInEpoch;
91
+ const index = i % committeesPerSlot;
92
+ const shuffling = phase0CachedState23637.epochCtx.getShufflingAtEpoch(previousEpoch);
93
+ const committee = shuffling.committees[slotInEpoch][index];
94
+ phase0CachedState23637.previousEpochAttestations.push(ssz.phase0.PendingAttestation.toViewDU({
95
+ aggregationBits: BitArray.fromBoolArray(Array.from({ length: committee.length }, () => true)),
96
+ data: {
97
+ beaconBlockRoot: phase0CachedState23637.blockRoots.get(slotInEpoch % SLOTS_PER_HISTORICAL_ROOT),
98
+ index,
99
+ slot,
100
+ source: state.previousJustifiedCheckpoint,
101
+ target: state.currentJustifiedCheckpoint,
102
+ },
103
+ inclusionDelay: 1,
104
+ proposerIndex: i,
105
+ }));
106
+ }
107
+ // current epoch attestations
108
+ const numCurAttestations = (SLOTS_PER_EPOCH - 1) * MAX_ATTESTATIONS;
109
+ for (let i = 0; i < numCurAttestations; i++) {
110
+ const slotInEpoch = i % SLOTS_PER_EPOCH;
111
+ const slot = currentEpoch * SLOTS_PER_EPOCH + slotInEpoch;
112
+ const index = i % committeesPerSlot;
113
+ const shuffling = phase0CachedState23637.epochCtx.getShufflingAtEpoch(previousEpoch);
114
+ const committee = shuffling.committees[slotInEpoch][index];
115
+ phase0CachedState23637.currentEpochAttestations.push(ssz.phase0.PendingAttestation.toViewDU({
116
+ aggregationBits: BitArray.fromBoolArray(Array.from({ length: committee.length }, () => true)),
117
+ data: {
118
+ beaconBlockRoot: phase0CachedState23637.blockRoots.get(slotInEpoch % SLOTS_PER_HISTORICAL_ROOT),
119
+ index,
120
+ slot,
121
+ source: state.currentJustifiedCheckpoint,
122
+ target: {
123
+ epoch: currentEpoch,
124
+ root: phase0CachedState23637.blockRoots.get((currentEpoch * SLOTS_PER_EPOCH) % SLOTS_PER_HISTORICAL_ROOT),
125
+ },
126
+ },
127
+ inclusionDelay: 1,
128
+ proposerIndex: i,
129
+ }));
130
+ }
131
+ }
132
+ if (!phase0CachedState23638) {
133
+ phase0CachedState23638 = processSlots(phase0CachedState23637, phase0CachedState23637.slot + 1);
134
+ phase0CachedState23638.slot += 1;
135
+ }
136
+ const resultingState = opts?.goBackOneSlot ? phase0CachedState23637 : phase0CachedState23638;
137
+ return resultingState.clone();
138
+ }
139
+ export function cachedStateAltairPopulateCaches(state) {
140
+ // Populate caches
141
+ state.blockRoots.getAllReadonly();
142
+ state.eth1DataVotes.getAllReadonly();
143
+ state.validators.getAllReadonly();
144
+ state.balances.getAll();
145
+ state.previousEpochParticipation.getAll();
146
+ state.currentEpochParticipation.getAll();
147
+ state.inactivityScores.getAll();
148
+ }
149
+ /**
150
+ * Warning: This function has side effects on the cached state
151
+ * The order in which the caches are populated is important and can cause stable tests to fail.
152
+ */
153
+ export function generatePerfTestCachedStateAltair(opts) {
154
+ const { pubkeys, pubkeysMod, pubkeysModObj } = getPubkeys(opts?.vc);
155
+ const { pubkeyCache } = getPubkeyCaches({ pubkeys, pubkeysMod, pubkeysModObj });
156
+ const altairConfig = createChainForkConfig({ ALTAIR_FORK_EPOCH: 0 });
157
+ const origState = generatePerformanceStateAltair(pubkeys);
158
+ if (!altairCachedState23637) {
159
+ const state = origState.clone();
160
+ state.slot -= 1;
161
+ altairCachedState23637 = createCachedBeaconState(state, {
162
+ config: createBeaconConfig(altairConfig, state.genesisValidatorsRoot),
163
+ pubkeyCache,
164
+ });
165
+ }
166
+ if (!altairCachedState23638) {
167
+ altairCachedState23638 = processSlots(altairCachedState23637, altairCachedState23637.slot + 1);
168
+ altairCachedState23638.slot += 1;
169
+ }
170
+ const resultingState = opts?.goBackOneSlot ? altairCachedState23637 : altairCachedState23638;
171
+ return resultingState.clone();
172
+ }
173
+ /**
174
+ * This is generated from Medalla state 756416
175
+ */
176
+ export function generatePerformanceStateAltair(pubkeysArg) {
177
+ if (!altairState) {
178
+ const pubkeys = pubkeysArg || getPubkeys().pubkeys;
179
+ const statePhase0 = buildPerformanceStatePhase0(pubkeys);
180
+ const state = statePhase0;
181
+ state.previousEpochParticipation = newFilledArray(pubkeys.length, 0b111);
182
+ state.currentEpochParticipation = state.previousEpochParticipation;
183
+ state.inactivityScores = Array.from({ length: pubkeys.length }, (_, i) => i % 2);
184
+ // Placeholder syncCommittees
185
+ state.currentSyncCommittee = ssz.altair.SyncCommittee.defaultValue();
186
+ state.nextSyncCommittee = state.currentSyncCommittee;
187
+ // Now the state is fully populated to convert to ViewDU
188
+ altairState = ssz.altair.BeaconState.toViewDU(state);
189
+ // Now set correct syncCommittees
190
+ const epoch = computeEpochAtSlot(state.slot);
191
+ const activeValidatorIndices = getActiveValidatorIndices(altairState, epoch);
192
+ const effectiveBalanceIncrements = getEffectiveBalanceIncrements(altairState);
193
+ const { syncCommittee } = getNextSyncCommittee(ForkSeq.altair, altairState, activeValidatorIndices, effectiveBalanceIncrements);
194
+ state.currentSyncCommittee = syncCommittee;
195
+ state.nextSyncCommittee = syncCommittee;
196
+ altairState = ssz.altair.BeaconState.toViewDU(state);
197
+ // cache roots
198
+ altairState.hashTreeRoot();
199
+ }
200
+ return altairState.clone();
201
+ }
202
+ /**
203
+ * This is generated from Medalla block 756417
204
+ */
205
+ export function generatePerformanceBlockPhase0() {
206
+ if (!phase0SignedBlock) {
207
+ const block = ssz.phase0.SignedBeaconBlock.defaultValue();
208
+ const parentState = generatePerfTestCachedStatePhase0();
209
+ block.message.slot = parentState.slot;
210
+ block.message.proposerIndex = parentState.epochCtx.getBeaconProposer(parentState.slot);
211
+ block.message.parentRoot = ssz.phase0.BeaconBlockHeader.hashTreeRoot(parentState.latestBlockHeader);
212
+ block.message.stateRoot = fromHexString("0x6c86ca3c4c6688cf189421b8a68bf2dbc91521609965e6f4e207d44347061fee");
213
+ block.message.body.randaoReveal = fromHexString("0x8a5d2673c48f22f6ed19462efec35645db490df29eed2f56321dbe4a89b2463b0c902095a7ab74a2dc5b7f67edb1a19507ea3d4361d5af9cb0a524945c91638dfd6568841486813a2c45142659d6d9403f5081febb123a7931edbc248b9d0025");
214
+ // eth1Data, graffiti, attestations
215
+ phase0SignedBlock = block;
216
+ }
217
+ return phase0SignedBlock;
218
+ }
219
+ function buildPerformanceStatePhase0(pubkeysArg) {
220
+ const slot = epoch * SLOTS_PER_EPOCH;
221
+ const pubkeys = pubkeysArg || getPubkeys().pubkeys;
222
+ const currentEpoch = computeEpochAtSlot(slot - 1);
223
+ return {
224
+ // Misc
225
+ genesisTime: 1596546008,
226
+ genesisValidatorsRoot: fromHexString("0x04700007fabc8282644aed6d1c7c9e21d38a03a0c4ba193f3afe428824b3a673"),
227
+ slot: epoch * SLOTS_PER_EPOCH,
228
+ fork: {
229
+ currentVersion: fromHexString("0x00000001"),
230
+ previousVersion: fromHexString("0x00000001"),
231
+ epoch: 0,
232
+ },
233
+ // History
234
+ latestBlockHeader: {
235
+ slot: slot - 1,
236
+ proposerIndex: 80882,
237
+ parentRoot: fromHexString("0x5b83c3078e474b86af60043eda82a34c3c2e5ebf83146b14d9d909aea4163ef2"),
238
+ stateRoot: fromHexString("0x2761ae355e8a53c11e0e37d5e417f8984db0c53fa83f1bc65f89c6af35a196a7"),
239
+ bodyRoot: fromHexString("0x249a1962eef90e122fa2447040bfac102798b1dba9c73e5593bc5aa32eb92bfd"),
240
+ },
241
+ blockRoots: Array.from({ length: SLOTS_PER_HISTORICAL_ROOT }, (_, i) => Buffer.alloc(32, i)),
242
+ stateRoots: Array.from({ length: SLOTS_PER_HISTORICAL_ROOT }, (_, i) => Buffer.alloc(32, i)),
243
+ historicalRoots: [],
244
+ // Eth1
245
+ eth1Data: {
246
+ depositCount: pubkeys.length,
247
+ depositRoot: fromHexString("0xcb1f89a924cfd31224823db5a41b1643f10faa7aedf231f1e28887f6ee98c047"),
248
+ blockHash: fromHexString("0x701fb2869ce16d0f1d14f6705725adb0dec6799da29006dfc6fff83960298f21"),
249
+ },
250
+ // minus one so that inserting 1 from block works
251
+ eth1DataVotes: newFilledArray(EPOCHS_PER_ETH1_VOTING_PERIOD * SLOTS_PER_EPOCH - 1, {
252
+ depositCount: 1,
253
+ depositRoot: Buffer.alloc(32, 1),
254
+ blockHash: Buffer.alloc(32, 1),
255
+ }),
256
+ eth1DepositIndex: pubkeys.length,
257
+ // Registry
258
+ validators: pubkeys.map((_, i) => ({
259
+ pubkey: pubkeys[i],
260
+ withdrawalCredentials: Buffer.alloc(32, i),
261
+ effectiveBalance: 31000000000,
262
+ slashed: false,
263
+ activationEligibilityEpoch: 0,
264
+ activationEpoch: 0,
265
+ exitEpoch: Infinity,
266
+ withdrawableEpoch: Infinity,
267
+ })),
268
+ balances: Array.from({ length: pubkeys.length }, () => 31217089836),
269
+ randaoMixes: Array.from({ length: EPOCHS_PER_HISTORICAL_VECTOR }, (_, i) => Buffer.alloc(32, i)),
270
+ // Slashings
271
+ slashings: ssz.phase0.Slashings.defaultValue(),
272
+ previousEpochAttestations: [],
273
+ currentEpochAttestations: [],
274
+ // Finality
275
+ justificationBits: BitArray.fromBitLen(4),
276
+ previousJustifiedCheckpoint: {
277
+ epoch: currentEpoch - 2,
278
+ root: fromHexString("0x3fe60bf06a57b0956cd1f8181d26649cf8bf79e48bf82f55562e04b33d4785d4"),
279
+ },
280
+ currentJustifiedCheckpoint: {
281
+ epoch: currentEpoch - 1,
282
+ root: fromHexString("0x3ba0913d2fb5e4cbcfb0d39eb15803157c1e769d63b8619285d8fdabbd8181c7"),
283
+ },
284
+ finalizedCheckpoint: {
285
+ epoch: currentEpoch - 3,
286
+ root: fromHexString("0x122b8ff579d0c8f8a8b66326bdfec3f685007d2842f01615a0768870961ccc17"),
287
+ },
288
+ };
289
+ }
290
+ export function generateTestCachedBeaconStateOnlyValidators({ vc, slot, }) {
291
+ // Generate only some publicKeys
292
+ const { pubkeys, pubkeysMod } = getPubkeys(vc);
293
+ // Manually sync pubkeys to prevent doing BLS opts 110_000 times
294
+ const pubkeyCache = createPubkeyCache();
295
+ for (let i = 0; i < vc; i++) {
296
+ const pubkey = pubkeysMod[i % keypairsMod];
297
+ pubkeyCache.set(i, pubkey);
298
+ }
299
+ const state = ssz.phase0.BeaconState.defaultViewDU();
300
+ state.slot = slot;
301
+ const activeValidator = ssz.phase0.Validator.toViewDU({
302
+ pubkey: Buffer.alloc(48, 0),
303
+ withdrawalCredentials: Buffer.alloc(32, 0),
304
+ effectiveBalance: MAX_EFFECTIVE_BALANCE,
305
+ slashed: false,
306
+ activationEligibilityEpoch: 0,
307
+ activationEpoch: 0,
308
+ exitEpoch: Infinity,
309
+ withdrawableEpoch: Infinity,
310
+ });
311
+ for (let i = 0; i < vc; i++) {
312
+ const validator = activeValidator.clone();
313
+ validator.pubkey = pubkeys[i];
314
+ state.validators.push(validator);
315
+ }
316
+ state.balances = ssz.phase0.Balances.toViewDU(newFilledArray(pubkeys.length, MAX_EFFECTIVE_BALANCE));
317
+ state.randaoMixes = ssz.phase0.RandaoMixes.toViewDU(newFilledArray(EPOCHS_PER_HISTORICAL_VECTOR, Buffer.alloc(32, 0xdd)));
318
+ // Commit ViewDU changes
319
+ state.commit();
320
+ // Sanity check for .commit() above
321
+ if (state.validators.length !== vc) {
322
+ throw Error(`Wrong number of validators in the state: ${state.validators.length} !== ${vc}`);
323
+ }
324
+ return createCachedBeaconState(state, {
325
+ config: createBeaconConfig(config, state.genesisValidatorsRoot),
326
+ pubkeyCache,
327
+ }, { skipSyncPubkeys: true });
328
+ }
329
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/testUtils/util.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gloas.d.ts","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"AAUA,OAAO,EAAC,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAC,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAEzC,wBAAgB,6BAA6B,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAExF;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAMtF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,YAAY,EAAE,YAAY,GAAG,cAAc,CAE9F;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,cAAc,EAAE,cAAc,GAAG,YAAY,CAEhG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,GAAG,OAAO,CAEtF;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,sBAAsB,EAC7B,YAAY,EAAE,YAAY,GACzB,MAAM,CAoBR;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,sBAAsB,EAC7B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAUT;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAWnG;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAO/G;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAOnG;AAED,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAOnG;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAExE"}
1
+ {"version":3,"file":"gloas.d.ts","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"AAUA,OAAO,EAAC,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAC,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAEzC,wBAAgB,6BAA6B,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAExF;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAMtF;AAOD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAG9D;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,YAAY,EAAE,YAAY,GAAG,cAAc,CAG9F;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,cAAc,EAAE,cAAc,GAAG,YAAY,CAGhG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,GAAG,OAAO,CAEtF;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,sBAAsB,EAC7B,YAAY,EAAE,YAAY,GACzB,MAAM,CAoBR;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,sBAAsB,EAC7B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAUT;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAWnG;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAO/G;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAOnG;AAED,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAOnG;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAExE"}
package/lib/util/gloas.js CHANGED
@@ -10,26 +10,33 @@ export function getBuilderPaymentQuorumThreshold(state) {
10
10
  BUILDER_PAYMENT_THRESHOLD_NUMERATOR;
11
11
  return Math.floor(quorum / BUILDER_PAYMENT_THRESHOLD_DENOMINATOR);
12
12
  }
13
+ function hasBuilderIndexFlag(index) {
14
+ // Equivalent to `(index & BUILDER_INDEX_FLAG) != 0`
15
+ return Math.floor(index / BUILDER_INDEX_FLAG) % 2 === 1;
16
+ }
13
17
  /**
14
18
  * Check if a validator index represents a builder (has the builder flag set).
15
19
  * Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#new-is_builder_index
16
20
  */
17
21
  export function isBuilderIndex(validatorIndex) {
18
- return (validatorIndex & BUILDER_INDEX_FLAG) !== 0;
22
+ // Note: Can't use bitwise AND (&) because BUILDER_INDEX_FLAG exceeds 32 bits in JS bitwise operations.
23
+ return hasBuilderIndexFlag(validatorIndex);
19
24
  }
20
25
  /**
21
26
  * Convert a builder index to a flagged validator index for use in Withdrawal containers.
22
27
  * Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#new-convert_builder_index_to_validator_index
23
28
  */
24
29
  export function convertBuilderIndexToValidatorIndex(builderIndex) {
25
- return builderIndex | BUILDER_INDEX_FLAG;
30
+ // Note: Can't use bitwise OR (|) because BUILDER_INDEX_FLAG exceeds 32 bits in JS bitwise operations.
31
+ return hasBuilderIndexFlag(builderIndex) ? builderIndex : builderIndex + BUILDER_INDEX_FLAG;
26
32
  }
27
33
  /**
28
34
  * Convert a flagged validator index back to a builder index.
29
35
  * Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#new-convert_validator_index_to_builder_index
30
36
  */
31
37
  export function convertValidatorIndexToBuilderIndex(validatorIndex) {
32
- return validatorIndex & ~BUILDER_INDEX_FLAG;
38
+ // Note: Can't use bitwise AND (&) because BUILDER_INDEX_FLAG exceeds 32 bits in JS bitwise operations.
39
+ return hasBuilderIndexFlag(validatorIndex) ? validatorIndex - BUILDER_INDEX_FLAG : validatorIndex;
33
40
  }
34
41
  /**
35
42
  * Check if a builder is active (deposited and not yet withdrawable).
@@ -1 +1 @@
1
- {"version":3,"file":"gloas.js","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gloas.js","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { ForkSeq } from "@lodestar/params";
2
2
  import { Bytes32, DomainType, Epoch, ValidatorIndex } from "@lodestar/types";
3
3
  import { EffectiveBalanceIncrements } from "../cache/effectiveBalanceIncrements.js";
4
- import { BeaconStateAllForks, BeaconStateGloas, CachedBeaconStateAllForks } from "../types.js";
4
+ import { BeaconStateAllForks, CachedBeaconStateAllForks } from "../types.js";
5
5
  /**
6
6
  * Compute proposer indices for an epoch
7
7
  */
@@ -46,9 +46,25 @@ export declare function naiveGetNextSyncCommitteeIndices(fork: ForkSeq, state: B
46
46
  * In the worse case scenario, this could be >1000x speedup according to the perf test.
47
47
  */
48
48
  export declare function getNextSyncCommitteeIndices(fork: ForkSeq, state: BeaconStateAllForks, activeValidatorIndices: Uint32Array, effectiveBalanceIncrements: EffectiveBalanceIncrements): Uint32Array;
49
- export declare function naiveGetPayloadTimlinessCommitteeIndices(state: BeaconStateGloas, shuffling: {
50
- committees: Uint32Array[][];
51
- }, effectiveBalanceIncrements: EffectiveBalanceIncrements, epoch: Epoch): ValidatorIndex[][];
49
+ /**
50
+ * Compute PTC for all slots in an epoch eagerly.
51
+ */
52
+ export declare function computePayloadTimelinessCommitteesForEpoch(state: BeaconStateAllForks, epoch: number, committees: Uint32Array[][], effectiveBalanceIncrements: EffectiveBalanceIncrements): Uint32Array[];
53
+ /**
54
+ * Compute PTC for a single slot.
55
+ */
56
+ export declare function computePayloadTimelinessCommitteeForSlot(slotSeed: Uint8Array, slotCommittees: Uint32Array[], effectiveBalanceIncrements: EffectiveBalanceIncrements): Uint32Array;
57
+ /**
58
+ * Optimized version of PTC indices computation.
59
+ * Avoids BigInt conversions and uses DataView for efficient byte reading.
60
+ */
61
+ export declare function computePayloadTimelinessCommitteeIndices(effectiveBalanceIncrements: EffectiveBalanceIncrements, indices: Uint32Array, seed: Uint8Array): Uint32Array;
62
+ /**
63
+ * Naive version of PTC indices computation.
64
+ * Used to verify the optimized `computePayloadTimelinessCommitteeIndices`.
65
+ *
66
+ * SLOW CODE - 🐢
67
+ */
52
68
  export declare function naiveComputePayloadTimelinessCommitteeIndices(effectiveBalanceIncrements: EffectiveBalanceIncrements, indices: ArrayLike<ValidatorIndex>, seed: Uint8Array): ValidatorIndex[];
53
69
  /**
54
70
  * Return the shuffled validator index corresponding to ``seed`` (and ``index_count``).
@@ -57,15 +73,8 @@ export declare function naiveComputePayloadTimelinessCommitteeIndices(effectiveB
57
73
  * https://link.springer.com/content/pdf/10.1007%2F978-3-642-32009-5_1.pdf
58
74
  *
59
75
  * See the 'generalized domain' algorithm on page 3.
60
- * This is the naive implementation just to make sure lodestar follows the spec, this is not for production.
61
- * The optimized version is in `getComputeShuffledIndexFn`.
62
76
  */
63
77
  export declare function computeShuffledIndex(index: number, indexCount: number, seed: Bytes32): number;
64
- type ComputeShuffledIndexFn = (index: number) => number;
65
- /**
66
- * An optimized version of `computeShuffledIndex`, this is for production.
67
- */
68
- export declare function getComputeShuffledIndexFn(indexCount: number, seed: Bytes32): ComputeShuffledIndexFn;
69
78
  /**
70
79
  * Return the randao mix at a recent [[epoch]].
71
80
  */
@@ -74,5 +83,4 @@ export declare function getRandaoMix(state: BeaconStateAllForks, epoch: Epoch):
74
83
  * Return the seed at [[epoch]].
75
84
  */
76
85
  export declare function getSeed(state: BeaconStateAllForks, epoch: Epoch, domainType: DomainType): Uint8Array;
77
- export {};
78
86
  //# sourceMappingURL=seed.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/util/seed.ts"],"names":[],"mappings":"AAKA,OAAO,EAML,OAAO,EAQR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAE3E,OAAO,EAAC,0BAA0B,EAAC,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAC,mBAAmB,EAAE,gBAAgB,EAAE,yBAAyB,EAAC,MAAM,aAAa,CAAC;AAG7F;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,aAAa,EAAE,WAAW,CAAA;CAAC,EACrD,0BAA0B,EAAE,0BAA0B,GACrD,MAAM,EAAE,CAeV;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,OAAO,EACb,0BAA0B,EAAE,0BAA0B,EACtD,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,EAClC,IAAI,EAAE,UAAU,GACf,cAAc,CAwChB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,0BAA0B,EAAE,0BAA0B,EACtD,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,UAAU,GACf,cAAc,CAwBhB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,yBAAyB,EAChC,SAAS,EAAE;IAAC,aAAa,EAAE,WAAW,CAAA;CAAC,EACvC,KAAK,EAAE,KAAK,GACX,cAAc,EAAE,CAgBlB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,mBAAmB,EAC1B,sBAAsB,EAAE,SAAS,CAAC,cAAc,CAAC,EACjD,0BAA0B,EAAE,0BAA0B,GACrD,cAAc,EAAE,CAkDlB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,mBAAmB,EAC1B,sBAAsB,EAAE,WAAW,EACnC,0BAA0B,EAAE,0BAA0B,GACrD,WAAW,CAwBb;AAED,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,gBAAgB,EACvB,SAAS,EAAE;IAAC,UAAU,EAAE,WAAW,EAAE,EAAE,CAAA;CAAC,EACxC,0BAA0B,EAAE,0BAA0B,EACtD,KAAK,EAAE,KAAK,GACX,cAAc,EAAE,EAAE,CAgBpB;AAED,wBAAgB,6CAA6C,CAC3D,0BAA0B,EAAE,0BAA0B,EACtD,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,EAClC,IAAI,EAAE,UAAU,GACf,cAAc,EAAE,CAyBlB;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAiB7F;AAED,KAAK,sBAAsB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AAExD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,sBAAsB,CA8DnG;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAE9E;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,CAIpG"}
1
+ {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/util/seed.ts"],"names":[],"mappings":"AAKA,OAAO,EAML,OAAO,EAQR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAE3E,OAAO,EAAC,0BAA0B,EAAC,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAC,mBAAmB,EAAE,yBAAyB,EAAC,MAAM,aAAa,CAAC;AAG3E;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,aAAa,EAAE,WAAW,CAAA;CAAC,EACrD,0BAA0B,EAAE,0BAA0B,GACrD,MAAM,EAAE,CAeV;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,OAAO,EACb,0BAA0B,EAAE,0BAA0B,EACtD,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,EAClC,IAAI,EAAE,UAAU,GACf,cAAc,CAwChB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,0BAA0B,EAAE,0BAA0B,EACtD,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,UAAU,GACf,cAAc,CAwBhB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,yBAAyB,EAChC,SAAS,EAAE;IAAC,aAAa,EAAE,WAAW,CAAA;CAAC,EACvC,KAAK,EAAE,KAAK,GACX,cAAc,EAAE,CAgBlB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,mBAAmB,EAC1B,sBAAsB,EAAE,SAAS,CAAC,cAAc,CAAC,EACjD,0BAA0B,EAAE,0BAA0B,GACrD,cAAc,EAAE,CAkDlB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,mBAAmB,EAC1B,sBAAsB,EAAE,WAAW,EACnC,0BAA0B,EAAE,0BAA0B,GACrD,WAAW,CAwBb;AAED;;GAEG;AACH,wBAAgB,0CAA0C,CACxD,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,WAAW,EAAE,EAAE,EAC3B,0BAA0B,EAAE,0BAA0B,GACrD,WAAW,EAAE,CAoBf;AAED;;GAEG;AACH,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,UAAU,EACpB,cAAc,EAAE,WAAW,EAAE,EAC7B,0BAA0B,EAAE,0BAA0B,GACrD,WAAW,CAUb;AAED;;;GAGG;AACH,wBAAgB,wCAAwC,CACtD,0BAA0B,EAAE,0BAA0B,EACtD,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,UAAU,GACf,WAAW,CA8Cb;AAED;;;;;GAKG;AACH,wBAAgB,6CAA6C,CAC3D,0BAA0B,EAAE,0BAA0B,EACtD,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,EAClC,IAAI,EAAE,UAAU,GACf,cAAc,EAAE,CAyBlB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAiB7F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAE9E;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,CAIpG"}