@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,14 +1,13 @@
1
1
  import { BeaconConfig } from "@lodestar/config";
2
- import { IndexedAttestation, IndexedAttestationBigint } from "@lodestar/types";
2
+ import { IndexedAttestation, IndexedAttestationBigint, Slot } from "@lodestar/types";
3
3
  import { Index2PubkeyCache } from "../cache/pubkeyCache.js";
4
- import { CachedBeaconStateAllForks } from "../types.js";
5
4
  /**
6
5
  * Check if `indexedAttestation` has sorted and unique indices and a valid aggregate signature.
7
6
  */
8
- export declare function isValidIndexedAttestation(config: BeaconConfig, index2pubkey: Index2PubkeyCache, state: CachedBeaconStateAllForks, indexedAttestation: IndexedAttestation, verifySignature: boolean): boolean;
9
- export declare function isValidIndexedAttestationBigint(config: BeaconConfig, index2pubkey: Index2PubkeyCache, state: CachedBeaconStateAllForks, indexedAttestation: IndexedAttestationBigint, verifySignature: boolean): boolean;
7
+ export declare function isValidIndexedAttestation(config: BeaconConfig, index2pubkey: Index2PubkeyCache, stateSlot: Slot, validatorsLen: number, indexedAttestation: IndexedAttestation, verifySignature: boolean): boolean;
8
+ export declare function isValidIndexedAttestationBigint(config: BeaconConfig, index2pubkey: Index2PubkeyCache, stateSlot: Slot, validatorsLen: number, indexedAttestation: IndexedAttestationBigint, verifySignature: boolean): boolean;
10
9
  /**
11
10
  * Check if `indexedAttestation` has sorted and unique indices and a valid aggregate signature.
12
11
  */
13
- export declare function isValidIndexedAttestationIndices(state: CachedBeaconStateAllForks, indices: number[]): boolean;
12
+ export declare function isValidIndexedAttestationIndices(config: BeaconConfig, stateSlot: Slot, validatorsLen: number, indices: number[]): boolean;
14
13
  //# sourceMappingURL=isValidIndexedAttestation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"isValidIndexedAttestation.d.ts","sourceRoot":"","sources":["../../src/block/isValidIndexedAttestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,kBAAkB,EAAE,wBAAwB,EAAC,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAC,yBAAyB,EAAC,MAAM,aAAa,CAAC;AAGtD;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,yBAAyB,EAChC,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,OAAO,GACvB,OAAO,CAST;AAED,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,yBAAyB,EAChC,kBAAkB,EAAE,wBAAwB,EAC5C,eAAe,EAAE,OAAO,GACvB,OAAO,CAWT;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CA2B7G"}
1
+ {"version":3,"file":"isValidIndexedAttestation.d.ts","sourceRoot":"","sources":["../../src/block/isValidIndexedAttestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,kBAAkB,EAAE,wBAAwB,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAI1D;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,SAAS,EAAE,IAAI,EACf,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,OAAO,GACvB,OAAO,CAST;AAED,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,SAAS,EAAE,IAAI,EACf,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,wBAAwB,EAC5C,eAAe,EAAE,OAAO,GACvB,OAAO,CAWT;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,IAAI,EACf,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CA0BT"}
@@ -4,30 +4,30 @@ import { verifySignatureSet } from "../util/index.js";
4
4
  /**
5
5
  * Check if `indexedAttestation` has sorted and unique indices and a valid aggregate signature.
6
6
  */
7
- export function isValidIndexedAttestation(config, index2pubkey, state, indexedAttestation, verifySignature) {
8
- if (!isValidIndexedAttestationIndices(state, indexedAttestation.attestingIndices)) {
7
+ export function isValidIndexedAttestation(config, index2pubkey, stateSlot, validatorsLen, indexedAttestation, verifySignature) {
8
+ if (!isValidIndexedAttestationIndices(config, stateSlot, validatorsLen, indexedAttestation.attestingIndices)) {
9
9
  return false;
10
10
  }
11
11
  if (verifySignature) {
12
- return verifySignatureSet(getIndexedAttestationSignatureSet(config, index2pubkey, state.slot, indexedAttestation));
12
+ return verifySignatureSet(getIndexedAttestationSignatureSet(config, index2pubkey, stateSlot, indexedAttestation));
13
13
  }
14
14
  return true;
15
15
  }
16
- export function isValidIndexedAttestationBigint(config, index2pubkey, state, indexedAttestation, verifySignature) {
17
- if (!isValidIndexedAttestationIndices(state, indexedAttestation.attestingIndices)) {
16
+ export function isValidIndexedAttestationBigint(config, index2pubkey, stateSlot, validatorsLen, indexedAttestation, verifySignature) {
17
+ if (!isValidIndexedAttestationIndices(config, stateSlot, validatorsLen, indexedAttestation.attestingIndices)) {
18
18
  return false;
19
19
  }
20
20
  if (verifySignature) {
21
- return verifySignatureSet(getIndexedAttestationBigintSignatureSet(config, index2pubkey, state.slot, indexedAttestation));
21
+ return verifySignatureSet(getIndexedAttestationBigintSignatureSet(config, index2pubkey, stateSlot, indexedAttestation));
22
22
  }
23
23
  return true;
24
24
  }
25
25
  /**
26
26
  * Check if `indexedAttestation` has sorted and unique indices and a valid aggregate signature.
27
27
  */
28
- export function isValidIndexedAttestationIndices(state, indices) {
28
+ export function isValidIndexedAttestationIndices(config, stateSlot, validatorsLen, indices) {
29
29
  // verify max number of indices
30
- const maxIndices = state.config.getForkSeq(state.slot) >= ForkSeq.electra
30
+ const maxIndices = config.getForkSeq(stateSlot) >= ForkSeq.electra
31
31
  ? MAX_VALIDATORS_PER_COMMITTEE * MAX_COMMITTEES_PER_SLOT
32
32
  : MAX_VALIDATORS_PER_COMMITTEE;
33
33
  if (!(indices.length > 0 && indices.length <= maxIndices)) {
@@ -43,9 +43,8 @@ export function isValidIndexedAttestationIndices(state, indices) {
43
43
  prev = index;
44
44
  }
45
45
  // check if indices are out of bounds, by checking the highest index (since it is sorted)
46
- // TODO - SLOW CODE - Does this .length check the tree and is expensive?
47
46
  const lastIndex = indices.at(-1);
48
- if (lastIndex && lastIndex >= state.validators.length) {
47
+ if (lastIndex && lastIndex >= validatorsLen) {
49
48
  return false;
50
49
  }
51
50
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"isValidIndexedAttestation.js","sourceRoot":"","sources":["../../src/block/isValidIndexedAttestation.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,uBAAuB,EAAE,4BAA4B,EAAC,MAAM,kBAAkB,CAAC;AAGhG,OAAO,EAAC,uCAAuC,EAAE,iCAAiC,EAAC,MAAM,2BAA2B,CAAC;AAErH,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAoB,EACpB,YAA+B,EAC/B,KAAgC,EAChC,kBAAsC,EACtC,eAAwB;IAExB,IAAI,CAAC,gCAAgC,CAAC,KAAK,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,kBAAkB,CAAC,iCAAiC,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACrH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,MAAoB,EACpB,YAA+B,EAC/B,KAAgC,EAChC,kBAA4C,EAC5C,eAAwB;IAExB,IAAI,CAAC,gCAAgC,CAAC,KAAK,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,kBAAkB,CACvB,uCAAuC,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAC9F,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gCAAgC,CAAC,KAAgC,EAAE,OAAiB;IAClG,+BAA+B;IAC/B,MAAM,UAAU,GACd,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO;QACpD,CAAC,CAAC,4BAA4B,GAAG,uBAAuB;QACxD,CAAC,CAAC,4BAA4B,CAAC;IACnC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,wCAAwC;IACxC,mDAAmD;IACnD,oFAAoF;IACpF,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,GAAG,KAAK,CAAC;IACf,CAAC;IAED,yFAAyF;IACzF,wEAAwE;IACxE,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,SAAS,IAAI,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"isValidIndexedAttestation.js","sourceRoot":"","sources":["../../src/block/isValidIndexedAttestation.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,uBAAuB,EAAE,4BAA4B,EAAC,MAAM,kBAAkB,CAAC;AAGhG,OAAO,EAAC,uCAAuC,EAAE,iCAAiC,EAAC,MAAM,2BAA2B,CAAC;AACrH,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAoB,EACpB,YAA+B,EAC/B,SAAe,EACf,aAAqB,EACrB,kBAAsC,EACtC,eAAwB;IAExB,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC7G,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,kBAAkB,CAAC,iCAAiC,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACpH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,MAAoB,EACpB,YAA+B,EAC/B,SAAe,EACf,aAAqB,EACrB,kBAA4C,EAC5C,eAAwB;IAExB,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC7G,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,kBAAkB,CACvB,uCAAuC,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAC7F,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gCAAgC,CAC9C,MAAoB,EACpB,SAAe,EACf,aAAqB,EACrB,OAAiB;IAEjB,+BAA+B;IAC/B,MAAM,UAAU,GACd,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,OAAO;QAC7C,CAAC,CAAC,4BAA4B,GAAG,uBAAuB;QACxD,CAAC,CAAC,4BAA4B,CAAC;IACnC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,wCAAwC;IACxC,mDAAmD;IACnD,oFAAoF;IACpF,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,GAAG,KAAK,CAAC;IACf,CAAC;IAED,yFAAyF;IACzF,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,SAAS,IAAI,SAAS,IAAI,aAAa,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"processAttestationPhase0.d.ts","sourceRoot":"","sources":["../../src/block/processAttestationPhase0.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAmD,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAC,WAAW,EAAE,IAAI,EAAW,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAC,yBAAyB,EAAE,uBAAuB,EAAC,MAAM,aAAa,CAAC;AAI/E;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,uBAAuB,EAC9B,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,eAAe,UAAO,GACrB,IAAI,CA6CN;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI,CA2FnH;AAGD,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,GAAG,OAAO,CAM9E;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAErE"}
1
+ {"version":3,"file":"processAttestationPhase0.d.ts","sourceRoot":"","sources":["../../src/block/processAttestationPhase0.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAmD,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAC,WAAW,EAAE,IAAI,EAAW,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAC,yBAAyB,EAAE,uBAAuB,EAAC,MAAM,aAAa,CAAC;AAI/E;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,uBAAuB,EAC9B,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,eAAe,UAAO,GACrB,IAAI,CA8CN;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI,CA2FnH;AAGD,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,GAAG,OAAO,CAM9E;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAErE"}
@@ -33,7 +33,7 @@ export function processAttestationPhase0(state, attestation, verifySignature = t
33
33
  }
34
34
  state.previousEpochAttestations.push(pendingAttestation);
35
35
  }
36
- if (!isValidIndexedAttestation(state.config, epochCtx.index2pubkey, state, epochCtx.getIndexedAttestation(ForkSeq.phase0, attestation), verifySignature)) {
36
+ if (!isValidIndexedAttestation(state.config, epochCtx.index2pubkey, state.slot, state.validators.length, epochCtx.getIndexedAttestation(ForkSeq.phase0, attestation), verifySignature)) {
37
37
  throw new Error("Attestation is not valid");
38
38
  }
39
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"processAttestationPhase0.js","sourceRoot":"","sources":["../../src/block/processAttestationPhase0.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processAttestationPhase0.js","sourceRoot":"","sources":["../../src/block/processAttestationPhase0.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
+ import { BeaconConfig } from "@lodestar/config";
1
2
  import { ForkSeq } from "@lodestar/params";
2
- import { AttesterSlashing } from "@lodestar/types";
3
+ import { AttesterSlashing, Slot } from "@lodestar/types";
3
4
  import { Index2PubkeyCache } from "../cache/pubkeyCache.js";
4
5
  import { CachedBeaconStateAllForks } from "../types.js";
5
6
  /**
@@ -9,5 +10,5 @@ import { CachedBeaconStateAllForks } from "../types.js";
9
10
  * PERF: Work depends on number of AttesterSlashing per block. On regular networks the average is 0 / block.
10
11
  */
11
12
  export declare function processAttesterSlashing(fork: ForkSeq, state: CachedBeaconStateAllForks, attesterSlashing: AttesterSlashing, verifySignatures?: boolean): void;
12
- export declare function assertValidAttesterSlashing(index2pubkey: Index2PubkeyCache, state: CachedBeaconStateAllForks, attesterSlashing: AttesterSlashing, verifySignatures?: boolean): void;
13
+ export declare function assertValidAttesterSlashing(config: BeaconConfig, index2pubkey: Index2PubkeyCache, stateSlot: Slot, validatorsLen: number, attesterSlashing: AttesterSlashing, verifySignatures?: boolean): void;
13
14
  //# sourceMappingURL=processAttesterSlashing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"processAttesterSlashing.d.ts","sourceRoot":"","sources":["../../src/block/processAttesterSlashing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,yBAAyB,EAAC,MAAM,aAAa,CAAC;AAKtD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,yBAAyB,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,UAAO,GACtB,IAAI,CAmBN;AAED,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,yBAAyB,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,UAAO,GACtB,IAAI,CAgBN"}
1
+ {"version":3,"file":"processAttesterSlashing.d.ts","sourceRoot":"","sources":["../../src/block/processAttesterSlashing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAC,gBAAgB,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,yBAAyB,EAAC,MAAM,aAAa,CAAC;AAKtD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,yBAAyB,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,UAAO,GACtB,IAAI,CA0BN;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,SAAS,EAAE,IAAI,EACf,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,UAAO,GACtB,IAAI,CAkBN"}
@@ -9,7 +9,7 @@ import { slashValidator } from "./slashValidator.js";
9
9
  */
10
10
  export function processAttesterSlashing(fork, state, attesterSlashing, verifySignatures = true) {
11
11
  const { epochCtx } = state;
12
- assertValidAttesterSlashing(epochCtx.index2pubkey, state, attesterSlashing, verifySignatures);
12
+ assertValidAttesterSlashing(state.config, epochCtx.index2pubkey, state.slot, state.validators.length, attesterSlashing, verifySignatures);
13
13
  const intersectingIndices = getAttesterSlashableIndices(attesterSlashing);
14
14
  let slashedAny = false;
15
15
  const validators = state.validators; // Get the validators sub tree once for all indices
@@ -24,7 +24,7 @@ export function processAttesterSlashing(fork, state, attesterSlashing, verifySig
24
24
  throw new Error("AttesterSlashing did not result in any slashings");
25
25
  }
26
26
  }
27
- export function assertValidAttesterSlashing(index2pubkey, state, attesterSlashing, verifySignatures = true) {
27
+ export function assertValidAttesterSlashing(config, index2pubkey, stateSlot, validatorsLen, attesterSlashing, verifySignatures = true) {
28
28
  const attestation1 = attesterSlashing.attestation1;
29
29
  const attestation2 = attesterSlashing.attestation2;
30
30
  if (!isSlashableAttestationData(attestation1.data, attestation2.data)) {
@@ -34,7 +34,7 @@ export function assertValidAttesterSlashing(index2pubkey, state, attesterSlashin
34
34
  // be higher than the clock and the slashing would still be valid. Same applies to attestation data index, which
35
35
  // can be any arbitrary value. Must use bigint variants to hash correctly to all possible values
36
36
  for (const [i, attestation] of [attestation1, attestation2].entries()) {
37
- if (!isValidIndexedAttestationBigint(state.config, index2pubkey, state, attestation, verifySignatures)) {
37
+ if (!isValidIndexedAttestationBigint(config, index2pubkey, stateSlot, validatorsLen, attestation, verifySignatures)) {
38
38
  throw new Error(`AttesterSlashing attestation${i} is invalid`);
39
39
  }
40
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"processAttesterSlashing.js","sourceRoot":"","sources":["../../src/block/processAttesterSlashing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,2BAA2B,EAAE,0BAA0B,EAAE,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AAC/G,OAAO,EAAC,+BAA+B,EAAC,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAa,EACb,KAAgC,EAChC,gBAAkC,EAClC,gBAAgB,GAAG,IAAI;IAEvB,MAAM,EAAC,QAAQ,EAAC,GAAG,KAAK,CAAC;IACzB,2BAA2B,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAE9F,MAAM,mBAAmB,GAAG,2BAA2B,CAAC,gBAAgB,CAAC,CAAC;IAE1E,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,mDAAmD;IACxF,2CAA2C;IAC3C,KAAK,MAAM,KAAK,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9D,IAAI,oBAAoB,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACxE,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACnC,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,YAA+B,EAC/B,KAAgC,EAChC,gBAAkC,EAClC,gBAAgB,GAAG,IAAI;IAEvB,MAAM,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC;IACnD,MAAM,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC;IAEnD,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,8GAA8G;IAC9G,gHAAgH;IAChH,gGAAgG;IAChG,KAAK,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACtE,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAAE,CAAC;YACvG,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,aAAa,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"processAttesterSlashing.js","sourceRoot":"","sources":["../../src/block/processAttesterSlashing.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,2BAA2B,EAAE,0BAA0B,EAAE,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AAC/G,OAAO,EAAC,+BAA+B,EAAC,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAa,EACb,KAAgC,EAChC,gBAAkC,EAClC,gBAAgB,GAAG,IAAI;IAEvB,MAAM,EAAC,QAAQ,EAAC,GAAG,KAAK,CAAC;IACzB,2BAA2B,CACzB,KAAK,CAAC,MAAM,EACZ,QAAQ,CAAC,YAAY,EACrB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,UAAU,CAAC,MAAM,EACvB,gBAAgB,EAChB,gBAAgB,CACjB,CAAC;IAEF,MAAM,mBAAmB,GAAG,2BAA2B,CAAC,gBAAgB,CAAC,CAAC;IAE1E,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,mDAAmD;IACxF,2CAA2C;IAC3C,KAAK,MAAM,KAAK,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9D,IAAI,oBAAoB,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACxE,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACnC,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,MAAoB,EACpB,YAA+B,EAC/B,SAAe,EACf,aAAqB,EACrB,gBAAkC,EAClC,gBAAgB,GAAG,IAAI;IAEvB,MAAM,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC;IACnD,MAAM,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC;IAEnD,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,8GAA8G;IAC9G,gHAAgH;IAChH,gGAAgG;IAChG,KAAK,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACtE,IACE,CAAC,+BAA+B,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAC/G,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,aAAa,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,7 +1,9 @@
1
+ import { BeaconConfig } from "@lodestar/config";
1
2
  import { capella } from "@lodestar/types";
3
+ import { Validator } from "@lodestar/types/phase0";
2
4
  import { CachedBeaconStateCapella } from "../types.js";
3
5
  export declare function processBlsToExecutionChange(state: CachedBeaconStateCapella, signedBlsToExecutionChange: capella.SignedBLSToExecutionChange): void;
4
- export declare function isValidBlsToExecutionChange(state: CachedBeaconStateCapella, signedBLSToExecutionChange: capella.SignedBLSToExecutionChange, verifySignature?: boolean): {
6
+ export declare function isValidBlsToExecutionChange(config: BeaconConfig, validator: Validator, signedBLSToExecutionChange: capella.SignedBLSToExecutionChange, verifySignature?: boolean): {
5
7
  valid: true;
6
8
  } | {
7
9
  valid: false;
@@ -1 +1 @@
1
- {"version":3,"file":"processBlsToExecutionChange.d.ts","sourceRoot":"","sources":["../../src/block/processBlsToExecutionChange.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAGxC,OAAO,EAAC,wBAAwB,EAAC,MAAM,aAAa,CAAC;AAErD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,wBAAwB,EAC/B,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,GAC7D,IAAI,CAeN;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,wBAAwB,EAC/B,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,EAC9D,eAAe,UAAO,GACrB;IAAC,KAAK,EAAE,IAAI,CAAA;CAAC,GAAG;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAC,CA6C9C"}
1
+ {"version":3,"file":"processBlsToExecutionChange.d.ts","sourceRoot":"","sources":["../../src/block/processBlsToExecutionChange.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,OAAO,EAAC,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAC,SAAS,EAAC,MAAM,wBAAwB,CAAC;AAGjD,OAAO,EAAC,wBAAwB,EAAC,MAAM,aAAa,CAAC;AAErD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,wBAAwB,EAC/B,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,GAC7D,IAAI,CAqBN;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,SAAS,EACpB,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,EAC9D,eAAe,UAAO,GACrB;IAAC,KAAK,EAAE,IAAI,CAAA;CAAC,GAAG;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAC,CAmC9C"}
@@ -5,26 +5,22 @@ import { toHex } from "@lodestar/utils";
5
5
  import { verifyBlsToExecutionChangeSignature } from "../signatureSets/index.js";
6
6
  export function processBlsToExecutionChange(state, signedBlsToExecutionChange) {
7
7
  const addressChange = signedBlsToExecutionChange.message;
8
- const validation = isValidBlsToExecutionChange(state, signedBlsToExecutionChange, true);
8
+ if (addressChange.validatorIndex >= state.validators.length) {
9
+ throw Error(`withdrawalValidatorIndex ${addressChange.validatorIndex} >= state.validators len ${state.validators.length}`);
10
+ }
11
+ const validator = state.validators.get(addressChange.validatorIndex);
12
+ const validation = isValidBlsToExecutionChange(state.config, validator, signedBlsToExecutionChange, true);
9
13
  if (!validation.valid) {
10
14
  throw validation.error;
11
15
  }
12
- const validator = state.validators.get(addressChange.validatorIndex);
13
16
  const newWithdrawalCredentials = new Uint8Array(32);
14
17
  newWithdrawalCredentials[0] = ETH1_ADDRESS_WITHDRAWAL_PREFIX;
15
18
  newWithdrawalCredentials.set(addressChange.toExecutionAddress, 12);
16
19
  // Set the new credentials back
17
20
  validator.withdrawalCredentials = newWithdrawalCredentials;
18
21
  }
19
- export function isValidBlsToExecutionChange(state, signedBLSToExecutionChange, verifySignature = true) {
22
+ export function isValidBlsToExecutionChange(config, validator, signedBLSToExecutionChange, verifySignature = true) {
20
23
  const addressChange = signedBLSToExecutionChange.message;
21
- if (addressChange.validatorIndex >= state.validators.length) {
22
- return {
23
- valid: false,
24
- error: Error(`withdrawalValidatorIndex ${addressChange.validatorIndex} > state.validators len ${state.validators.length}`),
25
- };
26
- }
27
- const validator = state.validators.getReadonly(addressChange.validatorIndex);
28
24
  const { withdrawalCredentials } = validator;
29
25
  if (withdrawalCredentials[0] !== BLS_WITHDRAWAL_PREFIX) {
30
26
  return {
@@ -41,7 +37,7 @@ export function isValidBlsToExecutionChange(state, signedBLSToExecutionChange, v
41
37
  error: Error(`Invalid withdrawalCredentials expected=${toHex(withdrawalCredentials)} actual=${toHex(digestCredentials)}`),
42
38
  };
43
39
  }
44
- if (verifySignature && !verifyBlsToExecutionChangeSignature(state, signedBLSToExecutionChange)) {
40
+ if (verifySignature && !verifyBlsToExecutionChangeSignature(config, signedBLSToExecutionChange)) {
45
41
  return {
46
42
  valid: false,
47
43
  error: Error(`Signature could not be verified for BLS to Execution Change for validatorIndex${addressChange.validatorIndex}`),
@@ -1 +1 @@
1
- {"version":3,"file":"processBlsToExecutionChange.js","sourceRoot":"","sources":["../../src/block/processBlsToExecutionChange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAC,qBAAqB,EAAE,8BAA8B,EAAC,MAAM,kBAAkB,CAAC;AAEvF,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,mCAAmC,EAAC,MAAM,2BAA2B,CAAC;AAG9E,MAAM,UAAU,2BAA2B,CACzC,KAA+B,EAC/B,0BAA8D;IAE9D,MAAM,aAAa,GAAG,0BAA0B,CAAC,OAAO,CAAC;IAEzD,MAAM,UAAU,GAAG,2BAA2B,CAAC,KAAK,EAAE,0BAA0B,EAAE,IAAI,CAAC,CAAC;IACxF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,UAAU,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACrE,MAAM,wBAAwB,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACpD,wBAAwB,CAAC,CAAC,CAAC,GAAG,8BAA8B,CAAC;IAC7D,wBAAwB,CAAC,GAAG,CAAC,aAAa,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAEnE,+BAA+B;IAC/B,SAAS,CAAC,qBAAqB,GAAG,wBAAwB,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,KAA+B,EAC/B,0BAA8D,EAC9D,eAAe,GAAG,IAAI;IAEtB,MAAM,aAAa,GAAG,0BAA0B,CAAC,OAAO,CAAC;IAEzD,IAAI,aAAa,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QAC5D,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK,CACV,4BAA4B,aAAa,CAAC,cAAc,2BAA2B,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAC7G;SACF,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7E,MAAM,EAAC,qBAAqB,EAAC,GAAG,SAAS,CAAC;IAC1C,IAAI,qBAAqB,CAAC,CAAC,CAAC,KAAK,qBAAqB,EAAE,CAAC;QACvD,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK,CACV,iDAAiD,qBAAqB,WAAW,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAC5G;SACF,CAAC;IACJ,CAAC;IAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAC9D,0EAA0E;IAC1E,iBAAiB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC;IAC7C,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAC/D,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK,CACV,0CAA0C,KAAK,CAAC,qBAAqB,CAAC,WAAW,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAC5G;SACF,CAAC;IACJ,CAAC;IAED,IAAI,eAAe,IAAI,CAAC,mCAAmC,CAAC,KAAK,EAAE,0BAA0B,CAAC,EAAE,CAAC;QAC/F,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK,CACV,iFAAiF,aAAa,CAAC,cAAc,EAAE,CAChH;SACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"processBlsToExecutionChange.js","sourceRoot":"","sources":["../../src/block/processBlsToExecutionChange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAC,qBAAqB,EAAE,8BAA8B,EAAC,MAAM,kBAAkB,CAAC;AAGvF,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,mCAAmC,EAAC,MAAM,2BAA2B,CAAC;AAG9E,MAAM,UAAU,2BAA2B,CACzC,KAA+B,EAC/B,0BAA8D;IAE9D,MAAM,aAAa,GAAG,0BAA0B,CAAC,OAAO,CAAC;IAEzD,IAAI,aAAa,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QAC5D,MAAM,KAAK,CACT,4BAA4B,aAAa,CAAC,cAAc,4BAA4B,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAC9G,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,2BAA2B,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,0BAA0B,EAAE,IAAI,CAAC,CAAC;IAC1G,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,UAAU,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,MAAM,wBAAwB,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACpD,wBAAwB,CAAC,CAAC,CAAC,GAAG,8BAA8B,CAAC;IAC7D,wBAAwB,CAAC,GAAG,CAAC,aAAa,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAEnE,+BAA+B;IAC/B,SAAS,CAAC,qBAAqB,GAAG,wBAAwB,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,MAAoB,EACpB,SAAoB,EACpB,0BAA8D,EAC9D,eAAe,GAAG,IAAI;IAEtB,MAAM,aAAa,GAAG,0BAA0B,CAAC,OAAO,CAAC;IAEzD,MAAM,EAAC,qBAAqB,EAAC,GAAG,SAAS,CAAC;IAC1C,IAAI,qBAAqB,CAAC,CAAC,CAAC,KAAK,qBAAqB,EAAE,CAAC;QACvD,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK,CACV,iDAAiD,qBAAqB,WAAW,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAC5G;SACF,CAAC;IACJ,CAAC;IAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAC9D,0EAA0E;IAC1E,iBAAiB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC;IAC7C,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAC/D,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK,CACV,0CAA0C,KAAK,CAAC,qBAAqB,CAAC,WAAW,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAC5G;SACF,CAAC;IACJ,CAAC;IAED,IAAI,eAAe,IAAI,CAAC,mCAAmC,CAAC,MAAM,EAAE,0BAA0B,CAAC,EAAE,CAAC;QAChG,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK,CACV,iFAAiF,aAAa,CAAC,cAAc,EAAE,CAChH;SACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC;AACvB,CAAC"}
@@ -1,5 +1,8 @@
1
+ import { BeaconConfig } from "@lodestar/config";
1
2
  import { ForkSeq } from "@lodestar/params";
2
- import { phase0 } from "@lodestar/types";
3
+ import { Slot, phase0 } from "@lodestar/types";
4
+ import { Validator } from "@lodestar/types/phase0";
5
+ import { Index2PubkeyCache } from "../cache/pubkeyCache.js";
3
6
  import { CachedBeaconStateAllForks } from "../types.js";
4
7
  /**
5
8
  * Process a ProposerSlashing operation. Initiates the exit of a validator, decreases the balance of the slashed
@@ -8,5 +11,5 @@ import { CachedBeaconStateAllForks } from "../types.js";
8
11
  * PERF: Work depends on number of ProposerSlashing per block. On regular networks the average is 0 / block.
9
12
  */
10
13
  export declare function processProposerSlashing(fork: ForkSeq, state: CachedBeaconStateAllForks, proposerSlashing: phase0.ProposerSlashing, verifySignatures?: boolean): void;
11
- export declare function assertValidProposerSlashing(state: CachedBeaconStateAllForks, proposerSlashing: phase0.ProposerSlashing, verifySignatures?: boolean): void;
14
+ export declare function assertValidProposerSlashing(config: BeaconConfig, index2pubkey: Index2PubkeyCache, stateSlot: Slot, proposerSlashing: phase0.ProposerSlashing, proposer: Validator, verifySignatures?: boolean): void;
12
15
  //# sourceMappingURL=processProposerSlashing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"processProposerSlashing.d.ts","sourceRoot":"","sources":["../../src/block/processProposerSlashing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAkB,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAC,yBAAyB,EAAyB,MAAM,aAAa,CAAC;AAK9E;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,yBAAyB,EAChC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EACzC,gBAAgB,UAAO,GACtB,IAAI,CAyBN;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,yBAAyB,EAChC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EACzC,gBAAgB,UAAO,GACtB,IAAI,CAyCN"}
1
+ {"version":3,"file":"processProposerSlashing.d.ts","sourceRoot":"","sources":["../../src/block/processProposerSlashing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,OAAO,EAAkB,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAC,IAAI,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAC,SAAS,EAAC,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAC,yBAAyB,EAAyB,MAAM,aAAa,CAAC;AAK9E;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,yBAAyB,EAChC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EACzC,gBAAgB,UAAO,GACtB,IAAI,CAiCN;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,SAAS,EAAE,IAAI,EACf,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EACzC,QAAQ,EAAE,SAAS,EACnB,gBAAgB,UAAO,GACtB,IAAI,CAqCN"}
@@ -11,7 +11,8 @@ import { slashValidator } from "./slashValidator.js";
11
11
  * PERF: Work depends on number of ProposerSlashing per block. On regular networks the average is 0 / block.
12
12
  */
13
13
  export function processProposerSlashing(fork, state, proposerSlashing, verifySignatures = true) {
14
- assertValidProposerSlashing(state, proposerSlashing, verifySignatures);
14
+ const proposer = state.validators.getReadonly(proposerSlashing.signedHeader1.message.proposerIndex);
15
+ assertValidProposerSlashing(state.config, state.epochCtx.index2pubkey, state.slot, proposerSlashing, proposer, verifySignatures);
15
16
  if (fork >= ForkSeq.gloas) {
16
17
  const slot = Number(proposerSlashing.signedHeader1.message.slot);
17
18
  const proposalEpoch = computeEpochAtSlot(slot);
@@ -28,7 +29,7 @@ export function processProposerSlashing(fork, state, proposerSlashing, verifySig
28
29
  }
29
30
  slashValidator(fork, state, proposerSlashing.signedHeader1.message.proposerIndex);
30
31
  }
31
- export function assertValidProposerSlashing(state, proposerSlashing, verifySignatures = true) {
32
+ export function assertValidProposerSlashing(config, index2pubkey, stateSlot, proposerSlashing, proposer, verifySignatures = true) {
32
33
  const header1 = proposerSlashing.signedHeader1.message;
33
34
  const header2 = proposerSlashing.signedHeader2.message;
34
35
  // verify header slots match
@@ -44,13 +45,14 @@ export function assertValidProposerSlashing(state, proposerSlashing, verifySigna
44
45
  throw new Error("ProposerSlashing headers are equal");
45
46
  }
46
47
  // verify the proposer is slashable
47
- const proposer = state.validators.getReadonly(header1.proposerIndex);
48
- if (!isSlashableValidator(proposer, state.epochCtx.epoch)) {
48
+ // ideally we would get the proposer from state.validators using proposerIndex but that requires access to state
49
+ // instead of that we pass in the proposer directly from the consumer side
50
+ if (!isSlashableValidator(proposer, computeEpochAtSlot(stateSlot))) {
49
51
  throw new Error("ProposerSlashing proposer is not slashable");
50
52
  }
51
53
  // verify signatures
52
54
  if (verifySignatures) {
53
- const signatureSets = getProposerSlashingSignatureSets(state.config, state.epochCtx.index2pubkey, state.slot, proposerSlashing);
55
+ const signatureSets = getProposerSlashingSignatureSets(config, index2pubkey, stateSlot, proposerSlashing);
54
56
  for (let i = 0; i < signatureSets.length; i++) {
55
57
  if (!verifySignatureSet(signatureSets[i])) {
56
58
  throw new Error(`ProposerSlashing header${i + 1} signature invalid`);
@@ -1 +1 @@
1
- {"version":3,"file":"processProposerSlashing.js","sourceRoot":"","sources":["../../src/block/processProposerSlashing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processProposerSlashing.js","sourceRoot":"","sources":["../../src/block/processProposerSlashing.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAe,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAGlD,OAAO,EAAC,gCAAgC,EAAC,MAAM,2BAA2B,CAAC;AAE3E,OAAO,EAAC,kBAAkB,EAAE,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAa,EACb,KAAgC,EAChC,gBAAyC,EACzC,gBAAgB,GAAG,IAAI;IAEvB,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACpG,2BAA2B,CACzB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,QAAQ,CAAC,YAAY,EAC3B,KAAK,CAAC,IAAI,EACV,gBAAgB,EAChB,QAAQ,EACR,gBAAgB,CACjB,CAAC;IAEF,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC1C,MAAM,aAAa,GAAG,YAAY,GAAG,CAAC,CAAC;QAEvC,MAAM,YAAY,GAChB,aAAa,KAAK,YAAY;YAC5B,CAAC,CAAC,eAAe,GAAG,CAAC,IAAI,GAAG,eAAe,CAAC;YAC5C,CAAC,CAAC,aAAa,KAAK,aAAa;gBAC/B,CAAC,CAAC,IAAI,GAAG,eAAe;gBACxB,CAAC,CAAC,SAAS,CAAC;QAElB,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC9B,KAAgC,CAAC,sBAAsB,CAAC,GAAG,CAC1D,YAAY,EACZ,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,aAAa,EAAE,CAChD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,MAAoB,EACpB,YAA+B,EAC/B,SAAe,EACf,gBAAyC,EACzC,QAAmB,EACnB,gBAAgB,GAAG,IAAI;IAEvB,MAAM,OAAO,GAAG,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC;IACvD,MAAM,OAAO,GAAG,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC;IAEvD,4BAA4B;IAC5B,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,8CAA8C,OAAO,CAAC,IAAI,UAAU,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACtG,CAAC;IAED,uCAAuC;IACvC,IAAI,OAAO,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,kEAAkE,OAAO,CAAC,aAAa,mBAAmB,OAAO,CAAC,aAAa,EAAE,CAClI,CAAC;IACJ,CAAC;IAED,+BAA+B;IAC/B,IAAI,GAAG,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,mCAAmC;IACnC,gHAAgH;IAChH,0EAA0E;IAC1E,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,oBAAoB;IACpB,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,aAAa,GAAG,gCAAgC,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAC1G,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -2,27 +2,27 @@ import { PublicKey } from "@chainsafe/blst";
2
2
  import { PubkeyIndexMap } from "@chainsafe/pubkey-index-map";
3
3
  import { BeaconConfig, ChainConfig } from "@lodestar/config";
4
4
  import { ForkSeq } from "@lodestar/params";
5
- import { Attestation, BLSSignature, CommitteeIndex, Epoch, IndexedAttestation, RootHex, Slot, SubnetID, SyncPeriod, ValidatorIndex, gloas, phase0 } from "@lodestar/types";
5
+ import { Attestation, BLSSignature, CommitteeIndex, Epoch, IndexedAttestation, RootHex, Slot, SubnetID, SyncPeriod, ValidatorIndex, gloas } from "@lodestar/types";
6
6
  import { LodestarError } from "@lodestar/utils";
7
- import { AttesterDuty } from "../util/calculateCommitteeAssignments.js";
8
- import { EpochShuffling, IShufflingCache } from "../util/epochShuffling.js";
7
+ import { EpochShuffling } from "../util/epochShuffling.js";
8
+ import { AttesterDuty } from "../util/shuffling.js";
9
9
  import { EffectiveBalanceIncrements } from "./effectiveBalanceIncrements.js";
10
10
  import { EpochTransitionCache } from "./epochTransitionCache.js";
11
11
  import { Index2PubkeyCache } from "./pubkeyCache.js";
12
12
  import { CachedBeaconStateAllForks } from "./stateCache.js";
13
13
  import { SyncCommitteeCache } from "./syncCommitteeCache.js";
14
- import { BeaconStateAllForks } from "./types.js";
14
+ import { BeaconStateAllForks, ShufflingGetter } from "./types.js";
15
15
  /** `= PROPOSER_WEIGHT / (WEIGHT_DENOMINATOR - PROPOSER_WEIGHT)` */
16
16
  export declare const PROPOSER_WEIGHT_FACTOR: number;
17
17
  export type EpochCacheImmutableData = {
18
18
  config: BeaconConfig;
19
19
  pubkey2index: PubkeyIndexMap;
20
20
  index2pubkey: Index2PubkeyCache;
21
- shufflingCache?: IShufflingCache;
22
21
  };
23
22
  export type EpochCacheOpts = {
24
23
  skipSyncCommitteeCache?: boolean;
25
24
  skipSyncPubkeys?: boolean;
25
+ shufflingGetter?: ShufflingGetter;
26
26
  };
27
27
  /** Defers computing proposers by persisting only the seed, and dropping it once indexes are computed */
28
28
  type ProposersDeferred = {
@@ -68,11 +68,6 @@ export declare class EpochCache {
68
68
  * $VALIDATOR_COUNT x BLST deserialized pubkey (Jacobian coordinates)
69
69
  */
70
70
  index2pubkey: Index2PubkeyCache;
71
- /**
72
- * ShufflingCache is passed in from `beacon-node` so should be available at runtime but may not be
73
- * present during testing.
74
- */
75
- shufflingCache?: IShufflingCache;
76
71
  /**
77
72
  * Indexes of the block proposers for the current epoch.
78
73
  * For pre-fulu, this is computed and cached from the current shuffling.
@@ -108,7 +103,7 @@ export declare class EpochCache {
108
103
  /** Same as previousShuffling */
109
104
  currentShuffling: EpochShuffling;
110
105
  /** Same as previousShuffling */
111
- nextShuffling: EpochShuffling | null;
106
+ nextShuffling: EpochShuffling;
112
107
  /**
113
108
  * Cache nextActiveIndices so that in afterProcessEpoch the next shuffling can be build synchronously
114
109
  * in case it is not built or the ShufflingCache is not available
@@ -187,7 +182,6 @@ export declare class EpochCache {
187
182
  config: BeaconConfig;
188
183
  pubkey2index: PubkeyIndexMap;
189
184
  index2pubkey: Index2PubkeyCache;
190
- shufflingCache?: IShufflingCache;
191
185
  proposers: number[];
192
186
  proposersPrevEpoch: number[] | null;
193
187
  proposersNextEpoch: ProposersDeferred;
@@ -196,7 +190,7 @@ export declare class EpochCache {
196
190
  nextDecisionRoot: RootHex;
197
191
  previousShuffling: EpochShuffling;
198
192
  currentShuffling: EpochShuffling;
199
- nextShuffling: EpochShuffling | null;
193
+ nextShuffling: EpochShuffling;
200
194
  nextActiveIndices: Uint32Array;
201
195
  effectiveBalanceIncrements: EffectiveBalanceIncrements;
202
196
  totalSlashingsByIncrement: number;
@@ -222,7 +216,7 @@ export declare class EpochCache {
222
216
  *
223
217
  * SLOW CODE - 🐢
224
218
  */
225
- static createFromState(state: BeaconStateAllForks, { config, pubkey2index, index2pubkey, shufflingCache }: EpochCacheImmutableData, opts?: EpochCacheOpts): EpochCache;
219
+ static createFromState(state: BeaconStateAllForks, { config, pubkey2index, index2pubkey }: EpochCacheImmutableData, opts?: EpochCacheOpts): EpochCache;
226
220
  /**
227
221
  * Copies a given EpochCache while avoiding copying its immutable parts.
228
222
  */
@@ -311,15 +305,6 @@ export declare class EpochCache {
311
305
  */
312
306
  getAttestingIndices(fork: ForkSeq, attestation: Attestation): number[];
313
307
  getCommitteeAssignments(epoch: Epoch, requestedValidatorIndices: ValidatorIndex[]): Map<ValidatorIndex, AttesterDuty>;
314
- /**
315
- * Return the committee assignment in the ``epoch`` for ``validator_index``.
316
- * ``assignment`` returned is a tuple of the following form:
317
- * ``assignment[0]`` is the list of validators in the committee
318
- * ``assignment[1]`` is the index to which the committee is assigned
319
- * ``assignment[2]`` is the slot at which the committee is assigned
320
- * Return null if no assignment..
321
- */
322
- getCommitteeAssignment(epoch: Epoch, validatorIndex: ValidatorIndex): phase0.CommitteeAssignment | null;
323
308
  isAggregator(slot: Slot, index: CommitteeIndex, slotSignature: BLSSignature): boolean;
324
309
  /**
325
310
  * Return pubkey given the validator index.
@@ -354,7 +339,6 @@ export declare class EpochCache {
354
339
  getIndexedPayloadAttestation(slot: Slot, payloadAttestation: gloas.PayloadAttestation): gloas.IndexedPayloadAttestation;
355
340
  }
356
341
  export declare enum EpochCacheErrorCode {
357
- COMMITTEE_INDEX_OUT_OF_RANGE = "EPOCH_CONTEXT_ERROR_COMMITTEE_INDEX_OUT_OF_RANGE",
358
342
  COMMITTEE_EPOCH_OUT_OF_RANGE = "EPOCH_CONTEXT_ERROR_COMMITTEE_EPOCH_OUT_OF_RANGE",
359
343
  DECISION_ROOT_EPOCH_OUT_OF_RANGE = "EPOCH_CONTEXT_ERROR_DECISION_ROOT_EPOCH_OUT_OF_RANGE",
360
344
  NEXT_SHUFFLING_NOT_AVAILABLE = "EPOCH_CONTEXT_ERROR_NEXT_SHUFFLING_NOT_AVAILABLE",
@@ -362,10 +346,6 @@ export declare enum EpochCacheErrorCode {
362
346
  PROPOSER_EPOCH_MISMATCH = "EPOCH_CONTEXT_ERROR_PROPOSER_EPOCH_MISMATCH"
363
347
  }
364
348
  type EpochCacheErrorType = {
365
- code: EpochCacheErrorCode.COMMITTEE_INDEX_OUT_OF_RANGE;
366
- index: number;
367
- maxIndex: number;
368
- } | {
369
349
  code: EpochCacheErrorCode.COMMITTEE_EPOCH_OUT_OF_RANGE;
370
350
  requestedEpoch: Epoch;
371
351
  currentEpoch: Epoch;
@@ -1 +1 @@
1
- {"version":3,"file":"epochCache.d.ts","sourceRoot":"","sources":["../../src/cache/epochCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"epochCache.d.ts","sourceRoot":"","sources":["../../src/cache/epochCache.ts"],"names":[],"mappings":"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"}