@lodestar/state-transition 1.39.0-rc.4 → 1.40.0-dev.0ae7a89ead

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 (90) hide show
  1. package/lib/block/isValidIndexedAttestation.d.ts +4 -5
  2. package/lib/block/isValidIndexedAttestation.d.ts.map +1 -1
  3. package/lib/block/isValidIndexedAttestation.js +9 -10
  4. package/lib/block/isValidIndexedAttestation.js.map +1 -1
  5. package/lib/block/processAttestationPhase0.d.ts.map +1 -1
  6. package/lib/block/processAttestationPhase0.js +1 -1
  7. package/lib/block/processAttestationPhase0.js.map +1 -1
  8. package/lib/block/processAttesterSlashing.d.ts +3 -2
  9. package/lib/block/processAttesterSlashing.d.ts.map +1 -1
  10. package/lib/block/processAttesterSlashing.js +3 -3
  11. package/lib/block/processAttesterSlashing.js.map +1 -1
  12. package/lib/block/processBlsToExecutionChange.d.ts +3 -1
  13. package/lib/block/processBlsToExecutionChange.d.ts.map +1 -1
  14. package/lib/block/processBlsToExecutionChange.js +7 -11
  15. package/lib/block/processBlsToExecutionChange.js.map +1 -1
  16. package/lib/block/processProposerSlashing.d.ts +5 -2
  17. package/lib/block/processProposerSlashing.d.ts.map +1 -1
  18. package/lib/block/processProposerSlashing.js +7 -5
  19. package/lib/block/processProposerSlashing.js.map +1 -1
  20. package/lib/cache/epochCache.d.ts +8 -28
  21. package/lib/cache/epochCache.d.ts.map +1 -1
  22. package/lib/cache/epochCache.js +40 -180
  23. package/lib/cache/epochCache.js.map +1 -1
  24. package/lib/cache/epochTransitionCache.d.ts +5 -12
  25. package/lib/cache/epochTransitionCache.d.ts.map +1 -1
  26. package/lib/cache/epochTransitionCache.js +4 -14
  27. package/lib/cache/epochTransitionCache.js.map +1 -1
  28. package/lib/cache/stateCache.d.ts.map +1 -1
  29. package/lib/cache/stateCache.js +1 -2
  30. package/lib/cache/stateCache.js.map +1 -1
  31. package/lib/epoch/processProposerLookahead.d.ts.map +1 -1
  32. package/lib/epoch/processProposerLookahead.js +3 -6
  33. package/lib/epoch/processProposerLookahead.js.map +1 -1
  34. package/lib/index.d.ts +1 -1
  35. package/lib/index.d.ts.map +1 -1
  36. package/lib/index.js +1 -1
  37. package/lib/index.js.map +1 -1
  38. package/lib/rewards/blockRewards.d.ts +2 -1
  39. package/lib/rewards/blockRewards.d.ts.map +1 -1
  40. package/lib/rewards/blockRewards.js +3 -2
  41. package/lib/rewards/blockRewards.js.map +1 -1
  42. package/lib/rewards/syncCommitteeRewards.d.ts.map +1 -1
  43. package/lib/rewards/syncCommitteeRewards.js +10 -11
  44. package/lib/rewards/syncCommitteeRewards.js.map +1 -1
  45. package/lib/signatureSets/blsToExecutionChange.d.ts +1 -2
  46. package/lib/signatureSets/blsToExecutionChange.d.ts.map +1 -1
  47. package/lib/signatureSets/blsToExecutionChange.js +2 -2
  48. package/lib/signatureSets/blsToExecutionChange.js.map +1 -1
  49. package/lib/types.d.ts +1 -1
  50. package/lib/types.d.ts.map +1 -1
  51. package/lib/util/epochShuffling.d.ts +1 -34
  52. package/lib/util/epochShuffling.d.ts.map +1 -1
  53. package/lib/util/epochShuffling.js +1 -1
  54. package/lib/util/epochShuffling.js.map +1 -1
  55. package/lib/util/index.d.ts +1 -2
  56. package/lib/util/index.d.ts.map +1 -1
  57. package/lib/util/index.js +1 -2
  58. package/lib/util/index.js.map +1 -1
  59. package/lib/util/shuffling.d.ts +58 -0
  60. package/lib/util/shuffling.d.ts.map +1 -0
  61. package/lib/util/shuffling.js +175 -0
  62. package/lib/util/shuffling.js.map +1 -0
  63. package/package.json +7 -7
  64. package/src/block/isValidIndexedAttestation.ts +17 -12
  65. package/src/block/processAttestationPhase0.ts +2 -1
  66. package/src/block/processAttesterSlashing.ts +16 -4
  67. package/src/block/processBlsToExecutionChange.ts +13 -14
  68. package/src/block/processProposerSlashing.ts +21 -11
  69. package/src/cache/epochCache.ts +52 -214
  70. package/src/cache/epochTransitionCache.ts +9 -34
  71. package/src/cache/stateCache.ts +1 -2
  72. package/src/epoch/processProposerLookahead.ts +3 -7
  73. package/src/index.ts +0 -2
  74. package/src/rewards/blockRewards.ts +6 -3
  75. package/src/rewards/syncCommitteeRewards.ts +10 -13
  76. package/src/signatureSets/blsToExecutionChange.ts +2 -3
  77. package/src/types.ts +1 -0
  78. package/src/util/epochShuffling.ts +2 -43
  79. package/src/util/index.ts +1 -2
  80. package/src/util/shuffling.ts +234 -0
  81. package/lib/util/calculateCommitteeAssignments.d.ts +0 -12
  82. package/lib/util/calculateCommitteeAssignments.d.ts.map +0 -1
  83. package/lib/util/calculateCommitteeAssignments.js +0 -26
  84. package/lib/util/calculateCommitteeAssignments.js.map +0 -1
  85. package/lib/util/shufflingDecisionRoot.d.ts +0 -20
  86. package/lib/util/shufflingDecisionRoot.d.ts.map +0 -1
  87. package/lib/util/shufflingDecisionRoot.js +0 -76
  88. package/lib/util/shufflingDecisionRoot.js.map +0 -1
  89. package/src/util/calculateCommitteeAssignments.ts +0 -43
  90. package/src/util/shufflingDecisionRoot.ts +0 -81
@@ -1 +1 @@
1
- {"version":3,"file":"stateCache.js","sourceRoot":"","sources":["../../src/cache/stateCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stateCache.js","sourceRoot":"","sources":["../../src/cache/stateCache.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"processProposerLookahead.d.ts","sourceRoot":"","sources":["../../src/epoch/processProposerLookahead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAsC,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAC,qBAAqB,EAAE,oBAAoB,EAAC,MAAM,aAAa,CAAC;AAIxE;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,qBAAqB,EAC5B,KAAK,EAAE,oBAAoB,GAC1B,IAAI,CAqBN"}
1
+ {"version":3,"file":"processProposerLookahead.d.ts","sourceRoot":"","sources":["../../src/epoch/processProposerLookahead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAsC,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAC,qBAAqB,EAAE,oBAAoB,EAAC,MAAM,aAAa,CAAC;AAIxE;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,qBAAqB,EAC5B,KAAK,EAAE,oBAAoB,GAC1B,IAAI,CAiBN"}
@@ -14,12 +14,9 @@ export function processProposerLookahead(fork, state, cache) {
14
14
  const remainingProposerLookahead = state.proposerLookahead.getAll().slice(SLOTS_PER_EPOCH);
15
15
  // Fill in the last epoch with new proposer indices
16
16
  const epoch = state.epochCtx.epoch + MIN_SEED_LOOKAHEAD + 1;
17
- const shuffling = state.epochCtx.shufflingCache?.getSync(epoch, cache.nextShufflingDecisionRoot, {
18
- state,
19
- activeIndices: cache.nextShufflingActiveIndices,
20
- }) ??
21
- // Only for testing. shufflingCache should always be available in prod
22
- computeEpochShuffling(state, cache.nextShufflingActiveIndices, epoch);
17
+ const shuffling = computeEpochShuffling(state, cache.nextShufflingActiveIndices, epoch);
18
+ // Save shuffling to cache so afterProcessEpoch can reuse it instead of recomputing
19
+ cache.nextShuffling = shuffling;
23
20
  const lastEpochProposerLookahead = computeProposerIndices(fork, state, shuffling, epoch);
24
21
  state.proposerLookahead = ssz.fulu.ProposerLookahead.toViewDU([
25
22
  ...remainingProposerLookahead,
@@ -1 +1 @@
1
- {"version":3,"file":"processProposerLookahead.js","sourceRoot":"","sources":["../../src/epoch/processProposerLookahead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,kBAAkB,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEpC,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAC,sBAAsB,EAAC,MAAM,iBAAiB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAa,EACb,KAA4B,EAC5B,KAA2B;IAE3B,yCAAyC;IACzC,MAAM,0BAA0B,GAAG,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAE3F,mDAAmD;IACnD,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,kBAAkB,GAAG,CAAC,CAAC;IAE5D,MAAM,SAAS,GACb,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,yBAAyB,EAAE;QAC7E,KAAK;QACL,aAAa,EAAE,KAAK,CAAC,0BAA0B;KAChD,CAAC;QACF,sEAAsE;QACtE,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;IAExE,MAAM,0BAA0B,GAAG,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAEzF,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAC5D,GAAG,0BAA0B;QAC7B,GAAG,0BAA0B;KAC9B,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"processProposerLookahead.js","sourceRoot":"","sources":["../../src/epoch/processProposerLookahead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,kBAAkB,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEpC,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAC,sBAAsB,EAAC,MAAM,iBAAiB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAa,EACb,KAA4B,EAC5B,KAA2B;IAE3B,yCAAyC;IACzC,MAAM,0BAA0B,GAAG,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAE3F,mDAAmD;IACnD,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,kBAAkB,GAAG,CAAC,CAAC;IAE5D,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;IACxF,mFAAmF;IACnF,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;IAEhC,MAAM,0BAA0B,GAAG,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAEzF,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAC5D,GAAG,0BAA0B;QAC7B,GAAG,0BAA0B;KAC9B,CAAC,CAAC;AACL,CAAC"}
package/lib/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export { VoluntaryExitValidity, getVoluntaryExitValidity, isValidVoluntaryExit }
8
8
  export { getExpectedWithdrawals } from "./block/processWithdrawals.js";
9
9
  export { ProposerRewardType } from "./block/types.js";
10
10
  export { type EffectiveBalanceIncrements, getEffectiveBalanceIncrementsWithLen, getEffectiveBalanceIncrementsZeroed, } from "./cache/effectiveBalanceIncrements.js";
11
- export { EpochCache, EpochCacheError, EpochCacheErrorCode, type EpochCacheImmutableData, createEmptyEpochCacheImmutableData, } from "./cache/epochCache.js";
11
+ export { EpochCache, type EpochCacheImmutableData, createEmptyEpochCacheImmutableData, } from "./cache/epochCache.js";
12
12
  export { type EpochTransitionCache, beforeProcessEpoch } from "./cache/epochTransitionCache.js";
13
13
  export { type Index2PubkeyCache, syncPubkeys } from "./cache/pubkeyCache.js";
14
14
  export { type BeaconStateCache, createCachedBeaconState, isCachedBeaconState, isStateBalancesNodesPopulated, isStateValidatorsNodesPopulated, loadCachedBeaconState, } from "./cache/stateCache.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,iCAAiC,EAAE,yBAAyB,EAAC,MAAM,sCAAsC,CAAC;AAClH,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAC,2BAA2B,EAAC,MAAM,wCAAwC,CAAC;AAEnF,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAE/E,OAAO,EAAC,qBAAqB,EAAE,wBAAwB,EAAE,oBAAoB,EAAC,MAAM,iCAAiC,CAAC;AAEtH,OAAO,EAAC,sBAAsB,EAAC,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,KAAK,0BAA0B,EAC/B,oCAAoC,EACpC,mCAAmC,GACpC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,KAAK,uBAAuB,EAC5B,kCAAkC,GACnC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,KAAK,oBAAoB,EAAE,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AAC9F,OAAO,EAAC,KAAK,iBAAiB,EAAE,WAAW,EAAC,MAAM,wBAAwB,CAAC;AAE3E,OAAO,EACL,KAAK,gBAAgB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,EAC/B,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,YAAY,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAC,KAAK,4BAA4B,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AAC3E,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAEhB,iBAAiB,EACjB,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,iCAAiC,EAAE,yBAAyB,EAAC,MAAM,sCAAsC,CAAC;AAClH,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAC,2BAA2B,EAAC,MAAM,wCAAwC,CAAC;AAEnF,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAE/E,OAAO,EAAC,qBAAqB,EAAE,wBAAwB,EAAE,oBAAoB,EAAC,MAAM,iCAAiC,CAAC;AAEtH,OAAO,EAAC,sBAAsB,EAAC,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,KAAK,0BAA0B,EAC/B,oCAAoC,EACpC,mCAAmC,GACpC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,UAAU,EACV,KAAK,uBAAuB,EAC5B,kCAAkC,GACnC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,KAAK,oBAAoB,EAAE,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AAC9F,OAAO,EAAC,KAAK,iBAAiB,EAAE,WAAW,EAAC,MAAM,wBAAwB,CAAC;AAE3E,OAAO,EACL,KAAK,gBAAgB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,EAC/B,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,YAAY,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAC,KAAK,4BAA4B,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AAC3E,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAEhB,iBAAiB,EACjB,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,cAAc,iBAAiB,CAAC"}
package/lib/index.js CHANGED
@@ -11,7 +11,7 @@ export { VoluntaryExitValidity, getVoluntaryExitValidity, isValidVoluntaryExit }
11
11
  export { getExpectedWithdrawals } from "./block/processWithdrawals.js";
12
12
  export { ProposerRewardType } from "./block/types.js";
13
13
  export { getEffectiveBalanceIncrementsWithLen, getEffectiveBalanceIncrementsZeroed, } from "./cache/effectiveBalanceIncrements.js";
14
- export { EpochCache, EpochCacheError, EpochCacheErrorCode, createEmptyEpochCacheImmutableData, } from "./cache/epochCache.js";
14
+ export { EpochCache, createEmptyEpochCacheImmutableData, } from "./cache/epochCache.js";
15
15
  export { beforeProcessEpoch } from "./cache/epochTransitionCache.js";
16
16
  export { syncPubkeys } from "./cache/pubkeyCache.js";
17
17
  // Main state caches
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,iCAAiC,EAAE,yBAAyB,EAAC,MAAM,sCAAsC,CAAC;AAClH,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAC,2BAA2B,EAAC,MAAM,wCAAwC,CAAC;AACnF,qCAAqC;AACrC,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,yBAAyB;AACzB,OAAO,EAAC,qBAAqB,EAAE,wBAAwB,EAAE,oBAAoB,EAAC,MAAM,iCAAiC,CAAC;AACtH,6BAA6B;AAC7B,OAAO,EAAC,sBAAsB,EAAC,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAEL,oCAAoC,EACpC,mCAAmC,GACpC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,UAAU,EACV,eAAe,EACf,mBAAmB,EAEnB,kCAAkC,GACnC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAA4B,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AAC9F,OAAO,EAAyB,WAAW,EAAC,MAAM,wBAAwB,CAAC;AAC3E,oBAAoB;AACpB,OAAO,EAEL,uBAAuB,EACvB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,EAC/B,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AAErC,OAAO,EAAoC,UAAU,EAAC,MAAM,cAAc,CAAC;AAC3E,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AAwBrC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,iCAAiC,EAAE,yBAAyB,EAAC,MAAM,sCAAsC,CAAC;AAClH,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAC,2BAA2B,EAAC,MAAM,wCAAwC,CAAC;AACnF,qCAAqC;AACrC,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,yBAAyB;AACzB,OAAO,EAAC,qBAAqB,EAAE,wBAAwB,EAAE,oBAAoB,EAAC,MAAM,iCAAiC,CAAC;AACtH,6BAA6B;AAC7B,OAAO,EAAC,sBAAsB,EAAC,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAEL,oCAAoC,EACpC,mCAAmC,GACpC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,UAAU,EAEV,kCAAkC,GACnC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAA4B,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AAC9F,OAAO,EAAyB,WAAW,EAAC,MAAM,wBAAwB,CAAC;AAC3E,oBAAoB;AACpB,OAAO,EAEL,uBAAuB,EACvB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,EAC/B,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AAErC,OAAO,EAAoC,UAAU,EAAC,MAAM,cAAc,CAAC;AAC3E,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AAwBrC,cAAc,iBAAiB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { BeaconConfig } from "@lodestar/config";
2
2
  import { BeaconBlock, rewards } from "@lodestar/types";
3
+ import { RewardCache } from "../cache/rewardCache.js";
3
4
  import { CachedBeaconStateAllForks } from "../cache/stateCache.js";
4
5
  /**
5
6
  * Calculate total proposer block rewards given block and the beacon state of the same slot before the block is applied (preState)
@@ -9,5 +10,5 @@ import { CachedBeaconStateAllForks } from "../cache/stateCache.js";
9
10
  * 2) Including attestations from sync committee
10
11
  * 3) Reporting slashable behaviours from proposer and attester
11
12
  */
12
- export declare function computeBlockRewards(config: BeaconConfig, block: BeaconBlock, preState: CachedBeaconStateAllForks, postState?: CachedBeaconStateAllForks): Promise<rewards.BlockRewards>;
13
+ export declare function computeBlockRewards(config: BeaconConfig, block: BeaconBlock, preStateIn: CachedBeaconStateAllForks, proposerRewards?: RewardCache): Promise<rewards.BlockRewards>;
13
14
  //# sourceMappingURL=blockRewards.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blockRewards.d.ts","sourceRoot":"","sources":["../../src/rewards/blockRewards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAO9C,OAAO,EAAC,WAAW,EAAkB,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAC,yBAAyB,EAAmD,MAAM,wBAAwB,CAAC;AAKnH;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,yBAAyB,EACnC,SAAS,CAAC,EAAE,yBAAyB,GACpC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAgC/B"}
1
+ {"version":3,"file":"blockRewards.d.ts","sourceRoot":"","sources":["../../src/rewards/blockRewards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAO9C,OAAO,EAAC,WAAW,EAAkB,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAC,yBAAyB,EAAmD,MAAM,wBAAwB,CAAC;AAKnH;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,yBAAyB,EACrC,eAAe,CAAC,EAAE,WAAW,GAC5B,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAkC/B"}
@@ -9,9 +9,10 @@ import { getAttesterSlashableIndices } from "../util/attestation.js";
9
9
  * 2) Including attestations from sync committee
10
10
  * 3) Reporting slashable behaviours from proposer and attester
11
11
  */
12
- export async function computeBlockRewards(config, block, preState, postState) {
12
+ export async function computeBlockRewards(config, block, preStateIn, proposerRewards) {
13
+ const preState = preStateIn.clone();
13
14
  const fork = config.getForkName(block.slot);
14
- const { attestations: cachedAttestationsReward = 0, syncAggregate: cachedSyncAggregateReward = 0 } = postState?.proposerRewards ?? {};
15
+ const { attestations: cachedAttestationsReward = 0, syncAggregate: cachedSyncAggregateReward = 0 } = proposerRewards ?? {};
15
16
  let blockAttestationReward = cachedAttestationsReward;
16
17
  let syncAggregateReward = cachedSyncAggregateReward;
17
18
  if (blockAttestationReward === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"blockRewards.js","sourceRoot":"","sources":["../../src/rewards/blockRewards.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blockRewards.js","sourceRoot":"","sources":["../../src/rewards/blockRewards.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommitteeRewards.d.ts","sourceRoot":"","sources":["../../src/rewards/syncCommitteeRewards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,WAAW,EAAE,cAAc,EAAU,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,yBAAyB,EAA0B,MAAM,wBAAwB,CAAC;AAI1F,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,yBAAyB,EACnC,YAAY,GAAE,CAAC,cAAc,GAAG,MAAM,CAAC,EAAO,GAC7C,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CA4CvC"}
1
+ {"version":3,"file":"syncCommitteeRewards.d.ts","sourceRoot":"","sources":["../../src/rewards/syncCommitteeRewards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,WAAW,EAAE,cAAc,EAAU,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,yBAAyB,EAA0B,MAAM,wBAAwB,CAAC;AAE1F,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,yBAAyB,EACnC,YAAY,GAAE,CAAC,cAAc,GAAG,MAAM,CAAC,EAAO,GAC7C,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CA2CvC"}
@@ -5,28 +5,27 @@ export async function computeSyncCommitteeRewards(config, index2pubkey, block, p
5
5
  throw Error("Cannot get sync rewards as phase0 block does not have sync committee");
6
6
  }
7
7
  const altairBlock = block;
8
- const preStateAltair = preState;
8
+ const preStateAltair = preState.clone();
9
9
  // Bound syncCommitteeValidatorIndices in case it goes beyond SYNC_COMMITTEE_SIZE just to be safe
10
10
  const syncCommitteeValidatorIndices = preStateAltair.epochCtx.currentSyncCommitteeIndexed.validatorIndices.slice(0, SYNC_COMMITTEE_SIZE);
11
11
  const { syncParticipantReward } = preStateAltair.epochCtx;
12
12
  const { syncCommitteeBits } = altairBlock.body.syncAggregate;
13
- // Use balance of each committee as starting point such that we cap the penalty to avoid balance dropping below 0
14
- const balances = new Map();
15
- for (const i of syncCommitteeValidatorIndices) {
16
- balances.set(i, { val: preStateAltair.balances.get(i) });
17
- }
18
- for (const i of syncCommitteeValidatorIndices) {
19
- const balanceRecord = balances.get(i);
13
+ // Track reward deltas per validator (can appear multiple times in sync committee)
14
+ const rewardDeltas = new Map();
15
+ // Iterate by position index to correctly access syncCommitteeBits
16
+ for (let i = 0; i < syncCommitteeValidatorIndices.length; i++) {
17
+ const validatorIndex = syncCommitteeValidatorIndices[i];
18
+ const currentDelta = rewardDeltas.get(validatorIndex) ?? 0;
20
19
  if (syncCommitteeBits.get(i)) {
21
20
  // Positive rewards for participants
22
- balanceRecord.val += syncParticipantReward;
21
+ rewardDeltas.set(validatorIndex, currentDelta + syncParticipantReward);
23
22
  }
24
23
  else {
25
24
  // Negative rewards for non participants
26
- balanceRecord.val = Math.max(0, balanceRecord.val - syncParticipantReward);
25
+ rewardDeltas.set(validatorIndex, currentDelta - syncParticipantReward);
27
26
  }
28
27
  }
29
- const rewards = Array.from(balances, ([validatorIndex, v]) => ({ validatorIndex, reward: v.val }));
28
+ const rewards = Array.from(rewardDeltas, ([validatorIndex, reward]) => ({ validatorIndex, reward }));
30
29
  if (validatorIds.length) {
31
30
  const filtersSet = new Set(validatorIds);
32
31
  return rewards.filter((reward) => filtersSet.has(reward.validatorIndex) || filtersSet.has(index2pubkey[reward.validatorIndex].toHex()));
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommitteeRewards.js","sourceRoot":"","sources":["../../src/rewards/syncCommitteeRewards.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAO/D,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,MAAoB,EACpB,YAA+B,EAC/B,KAAkB,EAClB,QAAmC,EACnC,eAA4C,EAAE;IAE9C,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,IAAI,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,KAAK,CAAC,sEAAsE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,WAAW,GAAG,KAA2B,CAAC;IAChD,MAAM,cAAc,GAAG,QAAmC,CAAC;IAE3D,iGAAiG;IACjG,MAAM,6BAA6B,GAAG,cAAc,CAAC,QAAQ,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,KAAK,CAC9G,CAAC,EACD,mBAAmB,CACpB,CAAC;IACF,MAAM,EAAC,qBAAqB,EAAC,GAAG,cAAc,CAAC,QAAQ,CAAC;IACxD,MAAM,EAAC,iBAAiB,EAAC,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;IAE3D,iHAAiH;IACjH,MAAM,QAAQ,GAAuC,IAAI,GAAG,EAAE,CAAC;IAC/D,KAAK,MAAM,CAAC,IAAI,6BAA6B,EAAE,CAAC;QAC9C,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAC,GAAG,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,6BAA6B,EAAE,CAAC;QAC9C,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAkB,CAAC;QACvD,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,oCAAoC;YACpC,aAAa,CAAC,GAAG,IAAI,qBAAqB,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,wCAAwC;YACxC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,GAAG,qBAAqB,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAC,CAAC,CAAC,CAAC;IAEjG,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QACzC,OAAO,OAAO,CAAC,MAAM,CACnB,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC,CACjH,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"syncCommitteeRewards.js","sourceRoot":"","sources":["../../src/rewards/syncCommitteeRewards.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAK/D,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,MAAoB,EACpB,YAA+B,EAC/B,KAAkB,EAClB,QAAmC,EACnC,eAA4C,EAAE;IAE9C,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,IAAI,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,KAAK,CAAC,sEAAsE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,WAAW,GAAG,KAA2B,CAAC;IAChD,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,EAA6B,CAAC;IAEnE,iGAAiG;IACjG,MAAM,6BAA6B,GAAG,cAAc,CAAC,QAAQ,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,KAAK,CAC9G,CAAC,EACD,mBAAmB,CACpB,CAAC;IACF,MAAM,EAAC,qBAAqB,EAAC,GAAG,cAAc,CAAC,QAAQ,CAAC;IACxD,MAAM,EAAC,iBAAiB,EAAC,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;IAE3D,kFAAkF;IAClF,MAAM,YAAY,GAAgC,IAAI,GAAG,EAAE,CAAC;IAE5D,kEAAkE;IAClE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,6BAA6B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9D,MAAM,cAAc,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,oCAAoC;YACpC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,GAAG,qBAAqB,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,wCAAwC;YACxC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,GAAG,qBAAqB,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,cAAc,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC;IAEnG,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QACzC,OAAO,OAAO,CAAC,MAAM,CACnB,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC,CACjH,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,8 +1,7 @@
1
1
  import { BeaconConfig } from "@lodestar/config";
2
2
  import { capella } from "@lodestar/types";
3
- import { CachedBeaconStateAllForks } from "../types.js";
4
3
  import { ISignatureSet } from "../util/index.js";
5
- export declare function verifyBlsToExecutionChangeSignature(state: CachedBeaconStateAllForks, signedBLSToExecutionChange: capella.SignedBLSToExecutionChange): boolean;
4
+ export declare function verifyBlsToExecutionChangeSignature(config: BeaconConfig, signedBLSToExecutionChange: capella.SignedBLSToExecutionChange): boolean;
6
5
  /**
7
6
  * Extract signatures to allow validating all block signatures at once
8
7
  */
@@ -1 +1 @@
1
- {"version":3,"file":"blsToExecutionChange.d.ts","sourceRoot":"","sources":["../../src/signatureSets/blsToExecutionChange.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,OAAO,EAAM,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,yBAAyB,EAAC,MAAM,aAAa,CAAC;AACtD,OAAO,EAAC,aAAa,EAA2D,MAAM,kBAAkB,CAAC;AAEzG,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,yBAAyB,EAChC,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,GAC7D,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,YAAY,EACpB,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,GAC7D,aAAa,CAaf;AAED,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,OAAO,CAAC,iBAAiB,GACrC,aAAa,EAAE,CAIjB"}
1
+ {"version":3,"file":"blsToExecutionChange.d.ts","sourceRoot":"","sources":["../../src/signatureSets/blsToExecutionChange.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,OAAO,EAAM,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,aAAa,EAA2D,MAAM,kBAAkB,CAAC;AAEzG,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,YAAY,EACpB,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,GAC7D,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,YAAY,EACpB,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,GAC7D,aAAa,CAaf;AAED,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,OAAO,CAAC,iBAAiB,GACrC,aAAa,EAAE,CAIjB"}
@@ -2,8 +2,8 @@ import { PublicKey } from "@chainsafe/blst";
2
2
  import { DOMAIN_BLS_TO_EXECUTION_CHANGE, ForkName } from "@lodestar/params";
3
3
  import { ssz } from "@lodestar/types";
4
4
  import { SignatureSetType, computeSigningRoot, verifySignatureSet } from "../util/index.js";
5
- export function verifyBlsToExecutionChangeSignature(state, signedBLSToExecutionChange) {
6
- return verifySignatureSet(getBlsToExecutionChangeSignatureSet(state.config, signedBLSToExecutionChange));
5
+ export function verifyBlsToExecutionChangeSignature(config, signedBLSToExecutionChange) {
6
+ return verifySignatureSet(getBlsToExecutionChangeSignatureSet(config, signedBLSToExecutionChange));
7
7
  }
8
8
  /**
9
9
  * Extract signatures to allow validating all block signatures at once
@@ -1 +1 @@
1
- {"version":3,"file":"blsToExecutionChange.js","sourceRoot":"","sources":["../../src/signatureSets/blsToExecutionChange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAC,8BAA8B,EAAE,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAU,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAgB,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAEzG,MAAM,UAAU,mCAAmC,CACjD,KAAgC,EAChC,0BAA8D;IAE9D,OAAO,kBAAkB,CAAC,mCAAmC,CAAC,KAAK,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC;AAC3G,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mCAAmC,CACjD,MAAoB,EACpB,0BAA8D;IAE9D,4CAA4C;IAC5C,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,8BAA8B,CAAC,CAAC;IAErF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,MAAM;QAC7B,+FAA+F;QAC/F,yDAAyD;QACzD,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,0BAA0B,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC;QACnF,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC;QAC7G,SAAS,EAAE,0BAA0B,CAAC,SAAS;KAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,MAAoB,EACpB,WAAsC;IAEtC,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,EAAE,CACjF,mCAAmC,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAClE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"blsToExecutionChange.js","sourceRoot":"","sources":["../../src/signatureSets/blsToExecutionChange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAC,8BAA8B,EAAE,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAU,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAgB,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAEzG,MAAM,UAAU,mCAAmC,CACjD,MAAoB,EACpB,0BAA8D;IAE9D,OAAO,kBAAkB,CAAC,mCAAmC,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC;AACrG,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mCAAmC,CACjD,MAAoB,EACpB,0BAA8D;IAE9D,4CAA4C;IAC5C,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,8BAA8B,CAAC,CAAC;IAErF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,MAAM;QAC7B,+FAA+F;QAC/F,yDAAyD;QACzD,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,0BAA0B,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC;QACnF,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC;QAC7G,SAAS,EAAE,0BAA0B,CAAC,SAAS;KAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,MAAoB,EACpB,WAAsC;IAEtC,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,EAAE,CACjF,mCAAmC,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAClE,CAAC;AACJ,CAAC"}
package/lib/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { EpochCache } from "./cache/epochCache.js";
2
2
  export type { EpochTransitionCache } from "./cache/epochTransitionCache.js";
3
3
  export type { CachedBeaconStateAllForks, CachedBeaconStateAltair, CachedBeaconStateBellatrix, CachedBeaconStateCapella, CachedBeaconStateDeneb, CachedBeaconStateElectra, CachedBeaconStateExecutions, CachedBeaconStateFulu, CachedBeaconStateGloas, CachedBeaconStatePhase0, } from "./cache/stateCache.js";
4
- export type { BeaconStateAllForks, BeaconStateAltair, BeaconStateBellatrix, BeaconStateCapella, BeaconStateDeneb, BeaconStateElectra, BeaconStateExecutions, BeaconStateFulu, BeaconStateGloas, BeaconStatePhase0, } from "./cache/types.js";
4
+ export type { BeaconStateAllForks, BeaconStateAltair, BeaconStateBellatrix, BeaconStateCapella, BeaconStateDeneb, BeaconStateElectra, BeaconStateExecutions, BeaconStateFulu, BeaconStateGloas, BeaconStatePhase0, ShufflingGetter, } from "./cache/types.js";
5
5
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AACjD,YAAY,EAAC,oBAAoB,EAAC,MAAM,iCAAiC,CAAC;AAC1E,YAAY,EACV,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AACjD,YAAY,EAAC,oBAAoB,EAAC,MAAM,iCAAiC,CAAC;AAC1E,YAAY,EACV,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,GAChB,MAAM,kBAAkB,CAAC"}
@@ -1,40 +1,6 @@
1
1
  import { BeaconConfig } from "@lodestar/config";
2
2
  import { Epoch, RootHex, ValidatorIndex } from "@lodestar/types";
3
- import { GaugeExtra, Logger, NoLabels } from "@lodestar/utils";
4
3
  import { BeaconStateAllForks } from "../types.js";
5
- export interface ShufflingBuildProps {
6
- state: BeaconStateAllForks;
7
- activeIndices: Uint32Array;
8
- }
9
- export interface PublicShufflingCacheMetrics {
10
- shufflingCache: {
11
- nextShufflingNotOnEpochCache: GaugeExtra<NoLabels>;
12
- };
13
- }
14
- export interface IShufflingCache {
15
- metrics: PublicShufflingCacheMetrics | null;
16
- logger: Logger | null;
17
- /**
18
- * Gets a cached shuffling via the epoch and decision root. If the state and
19
- * activeIndices are passed and a shuffling is not available it will be built
20
- * synchronously. If the state is not passed and the shuffling is not available
21
- * nothing will be returned.
22
- *
23
- * NOTE: If a shuffling is already queued and not calculated it will build and resolve
24
- * the promise but the already queued build will happen at some later time
25
- */
26
- getSync<T extends ShufflingBuildProps | undefined>(epoch: Epoch, decisionRoot: RootHex, buildProps?: T): T extends ShufflingBuildProps ? EpochShuffling : EpochShuffling | null;
27
- /**
28
- * Gets a cached shuffling via the epoch and decision root. Returns a promise
29
- * for the shuffling if it hs not calculated yet. Returns null if a build has
30
- * not been queued nor a shuffling was calculated.
31
- */
32
- get(epoch: Epoch, decisionRoot: RootHex): Promise<EpochShuffling | null>;
33
- /**
34
- * Queue asynchronous build for an EpochShuffling
35
- */
36
- build(epoch: Epoch, decisionRoot: RootHex, state: BeaconStateAllForks, activeIndices: Uint32Array): void;
37
- }
38
4
  /**
39
5
  * Readonly interface for EpochShuffling.
40
6
  */
@@ -72,6 +38,7 @@ export type EpochShuffling = {
72
38
  export declare function computeCommitteeCount(activeValidatorCount: number): number;
73
39
  export declare function computeEpochShuffling(state: BeaconStateAllForks, activeIndices: Uint32Array, epoch: Epoch): EpochShuffling;
74
40
  export declare function computeEpochShufflingAsync(state: BeaconStateAllForks, activeIndices: Uint32Array, epoch: Epoch): Promise<EpochShuffling>;
41
+ export declare function calculateDecisionRoot(state: BeaconStateAllForks, epoch: Epoch): RootHex;
75
42
  /**
76
43
  * Get the shuffling decision block root for the given epoch of given state
77
44
  * - Special case close to genesis block, return the genesis block root
@@ -1 +1 @@
1
- {"version":3,"file":"epochShuffling.d.ts","sourceRoot":"","sources":["../../src/util/epochShuffling.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAS9C,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAM,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAoB,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAMhD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,aAAa,EAAE,WAAW,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,cAAc,EAAE;QACd,4BAA4B,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;KACpD,CAAC;CACH;AACD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,2BAA2B,GAAG,IAAI,CAAC;IAC5C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;;;;;OAQG;IACH,OAAO,CAAC,CAAC,SAAS,mBAAmB,GAAG,SAAS,EAC/C,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,OAAO,EACrB,UAAU,CAAC,EAAE,CAAC,GACb,CAAC,SAAS,mBAAmB,GAAG,cAAc,GAAG,cAAc,GAAG,IAAI,CAAC;IAE1E;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAEzE;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,WAAW,GAAG,IAAI,CAAC;CAC1G;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,aAAa,EAAE,WAAW,CAAC;IAE3B;;OAEG;IACH,SAAS,EAAE,WAAW,CAAC;IAEvB;;;;;;;OAOG;IACH,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC;IAE5B;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAI1E;AA2BD,wBAAgB,qBAAqB,CAEnC,KAAK,EAAE,mBAAmB,EAC1B,aAAa,EAAE,WAAW,EAC1B,KAAK,EAAE,KAAK,GACX,cAAc,CAWhB;AAED,wBAAsB,0BAA0B,CAE9C,KAAK,EAAE,mBAAmB,EAC1B,aAAa,EAAE,WAAW,EAC1B,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,cAAc,CAAC,CAWzB;AAOD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,KAAK,GACX,OAAO,CAIT"}
1
+ {"version":3,"file":"epochShuffling.d.ts","sourceRoot":"","sources":["../../src/util/epochShuffling.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAS9C,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAM,MAAM,iBAAiB,CAAC;AAEpE,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAMhD;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,aAAa,EAAE,WAAW,CAAC;IAE3B;;OAEG;IACH,SAAS,EAAE,WAAW,CAAC;IAEvB;;;;;;;OAOG;IACH,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC;IAE5B;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAI1E;AA2BD,wBAAgB,qBAAqB,CAEnC,KAAK,EAAE,mBAAmB,EAC1B,aAAa,EAAE,WAAW,EAC1B,KAAK,EAAE,KAAK,GACX,cAAc,CAWhB;AAED,wBAAsB,0BAA0B,CAE9C,KAAK,EAAE,mBAAmB,EAC1B,aAAa,EAAE,WAAW,EAC1B,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,cAAc,CAAC,CAWzB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAGvF;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,KAAK,GACX,OAAO,CAIT"}
@@ -59,7 +59,7 @@ state, activeIndices, epoch) {
59
59
  committeesPerSlot: committees[0].length,
60
60
  };
61
61
  }
62
- function calculateDecisionRoot(state, epoch) {
62
+ export function calculateDecisionRoot(state, epoch) {
63
63
  const pivotSlot = computeStartSlotAtEpoch(epoch - 1) - 1;
64
64
  return toRootHex(getBlockRootAtSlot(state, pivotSlot));
65
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"epochShuffling.js","sourceRoot":"","sources":["../../src/util/epochShuffling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"epochShuffling.js","sourceRoot":"","sources":["../../src/util/epochShuffling.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,6 @@ export * from "./attesterStatus.js";
5
5
  export * from "./balance.js";
6
6
  export * from "./blindedBlock.js";
7
7
  export * from "./blockRoot.js";
8
- export * from "./calculateCommitteeAssignments.js";
9
8
  export * from "./capella.js";
10
9
  export * from "./computeAnchorCheckpoint.js";
11
10
  export * from "./deposit.js";
@@ -20,7 +19,7 @@ export * from "./interop.js";
20
19
  export * from "./loadState/index.js";
21
20
  export * from "./rootCache.js";
22
21
  export * from "./seed.js";
23
- export * from "./shufflingDecisionRoot.js";
22
+ export * from "./shuffling.js";
24
23
  export * from "./signatureSets.js";
25
24
  export * from "./signingRoot.js";
26
25
  export * from "./slot.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oCAAoC,CAAC;AACnD,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
package/lib/util/index.js CHANGED
@@ -5,7 +5,6 @@ export * from "./attesterStatus.js";
5
5
  export * from "./balance.js";
6
6
  export * from "./blindedBlock.js";
7
7
  export * from "./blockRoot.js";
8
- export * from "./calculateCommitteeAssignments.js";
9
8
  export * from "./capella.js";
10
9
  export * from "./computeAnchorCheckpoint.js";
11
10
  export * from "./deposit.js";
@@ -20,7 +19,7 @@ export * from "./interop.js";
20
19
  export * from "./loadState/index.js";
21
20
  export * from "./rootCache.js";
22
21
  export * from "./seed.js";
23
- export * from "./shufflingDecisionRoot.js";
22
+ export * from "./shuffling.js";
24
23
  export * from "./signatureSets.js";
25
24
  export * from "./signingRoot.js";
26
25
  export * from "./slot.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oCAAoC,CAAC;AACnD,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { ForkName, ForkSeq } from "@lodestar/params";
2
+ import { Attestation, CommitteeIndex, Epoch, IndexedAttestation, Root, Slot, ValidatorIndex } from "@lodestar/types";
3
+ import { LodestarError } from "@lodestar/utils";
4
+ import { CachedBeaconStateAllForks } from "../cache/stateCache.js";
5
+ import { EpochShuffling } from "./epochShuffling.js";
6
+ /**
7
+ * Returns the block root which decided the proposer shuffling for the current epoch. This root
8
+ * can be used to key this proposer shuffling.
9
+ *
10
+ * Returns `null` on the one-off scenario where the genesis block decides its own shuffling.
11
+ * It should be set to the latest block applied to this `state` or the genesis block root.
12
+ */
13
+ export declare function proposerShufflingDecisionRoot(fork: ForkName, state: CachedBeaconStateAllForks): Root | null;
14
+ /**
15
+ * Returns the block root which decided the attester shuffling for the given `requestedEpoch`.
16
+ * This root can be used to key that attester shuffling.
17
+ *
18
+ * Returns `null` on the one-off scenario where the genesis block decides its own shuffling.
19
+ * It should be set to the latest block applied to this `state` or the genesis block root.
20
+ */
21
+ export declare function attesterShufflingDecisionRoot(state: CachedBeaconStateAllForks, requestedEpoch: Epoch): Root | null;
22
+ export interface AttesterDuty {
23
+ validatorIndex: ValidatorIndex;
24
+ committeeIndex: CommitteeIndex;
25
+ committeeLength: number;
26
+ committeesAtSlot: number;
27
+ validatorCommitteeIndex: number;
28
+ slot: Slot;
29
+ }
30
+ export declare function calculateCommitteeAssignments(epochShuffling: EpochShuffling, requestedValidatorIndices: ValidatorIndex[]): Map<ValidatorIndex, AttesterDuty>;
31
+ /**
32
+ * Return the indexed attestation corresponding to ``attestation``.
33
+ */
34
+ export declare function getIndexedAttestation(epochShuffling: EpochShuffling, fork: ForkSeq, attestation: Attestation): IndexedAttestation;
35
+ /**
36
+ * Return indices of validators who attestested in `attestation`
37
+ */
38
+ export declare function getAttestingIndices(epochShuffling: EpochShuffling, fork: ForkSeq, attestation: Attestation): number[];
39
+ /**
40
+ * Return the beacon committee at slot for index.
41
+ */
42
+ export declare function getBeaconCommittee(epochShuffling: EpochShuffling, slot: Slot, index: CommitteeIndex): Uint32Array;
43
+ /**
44
+ * Return a Uint32Array[] representing committees validator indices
45
+ */
46
+ export declare function getBeaconCommittees(epochShuffling: EpochShuffling, slot: Slot, indices: CommitteeIndex[]): Uint32Array[];
47
+ export declare enum ShufflingErrorCode {
48
+ COMMITTEE_INDEX_OUT_OF_RANGE = "SHUFFLING_ERROR_COMMITTEE_INDEX_OUT_OF_RANGE"
49
+ }
50
+ type ShufflingErrorType = {
51
+ code: ShufflingErrorCode.COMMITTEE_INDEX_OUT_OF_RANGE;
52
+ index: number;
53
+ maxIndex: number;
54
+ };
55
+ export declare class ShufflingError extends LodestarError<ShufflingErrorType> {
56
+ }
57
+ export {};
58
+ //# sourceMappingURL=shuffling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shuffling.d.ts","sourceRoot":"","sources":["../../src/util/shuffling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,OAAO,EAAkC,MAAM,kBAAkB,CAAC;AACpF,OAAO,EACL,WAAW,EACX,cAAc,EACd,KAAK,EACL,kBAAkB,EAClB,IAAI,EACJ,IAAI,EACJ,cAAc,EAEf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,yBAAyB,EAAC,MAAM,wBAAwB,CAAC;AAGjE,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAEnD;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,yBAAyB,GAAG,IAAI,GAAG,IAAI,CAM3G;AAaD;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,yBAAyB,EAAE,cAAc,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,CAMlH;AAsCD,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,uBAAuB,EAAE,MAAM,CAAC;IAChC,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,cAAc,EAC9B,yBAAyB,EAAE,cAAc,EAAE,GAC1C,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAyBnC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,WAAW,GACvB,kBAAkB,CAWpB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,GAAG,MAAM,EAAE,CA6BrH;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,GAAG,WAAW,CAEjH;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,cAAc,EAAE,GACxB,WAAW,EAAE,CAoBf;AAED,oBAAY,kBAAkB;IAC5B,4BAA4B,iDAAiD;CAC9E;AAED,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,kBAAkB,CAAC,4BAA4B,CAAC;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,qBAAa,cAAe,SAAQ,aAAa,CAAC,kBAAkB,CAAC;CAAG"}