@lodestar/state-transition 1.50.0 → 1.51.0-dev.15ecdb3b27

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 (153) hide show
  1. package/lib/block/index.d.ts.map +1 -1
  2. package/lib/block/index.js +1 -1
  3. package/lib/block/index.js.map +1 -1
  4. package/lib/block/processAttestationsAltair.d.ts.map +1 -1
  5. package/lib/block/processAttestationsAltair.js +3 -1
  6. package/lib/block/processAttestationsAltair.js.map +1 -1
  7. package/lib/block/processDeposit.d.ts +2 -2
  8. package/lib/block/processDeposit.d.ts.map +1 -1
  9. package/lib/block/processDeposit.js.map +1 -1
  10. package/lib/block/processEth1Data.d.ts +3 -3
  11. package/lib/block/processEth1Data.d.ts.map +1 -1
  12. package/lib/block/processEth1Data.js.map +1 -1
  13. package/lib/block/processOperations.d.ts.map +1 -1
  14. package/lib/block/processOperations.js +8 -6
  15. package/lib/block/processOperations.js.map +1 -1
  16. package/lib/cache/epochCache.d.ts +3 -0
  17. package/lib/cache/epochCache.d.ts.map +1 -1
  18. package/lib/cache/epochCache.js +11 -4
  19. package/lib/cache/epochCache.js.map +1 -1
  20. package/lib/cache/epochTransitionCache.d.ts.map +1 -1
  21. package/lib/cache/epochTransitionCache.js +2 -1
  22. package/lib/cache/epochTransitionCache.js.map +1 -1
  23. package/lib/cache/stateCache.d.ts +2 -1
  24. package/lib/cache/stateCache.d.ts.map +1 -1
  25. package/lib/cache/stateCache.js.map +1 -1
  26. package/lib/cache/types.d.ts +2 -1
  27. package/lib/cache/types.d.ts.map +1 -1
  28. package/lib/epoch/getRewardsAndPenalties.d.ts.map +1 -1
  29. package/lib/epoch/getRewardsAndPenalties.js +9 -2
  30. package/lib/epoch/getRewardsAndPenalties.js.map +1 -1
  31. package/lib/epoch/index.d.ts.map +1 -1
  32. package/lib/epoch/index.js +3 -1
  33. package/lib/epoch/index.js.map +1 -1
  34. package/lib/epoch/processEth1DataReset.d.ts +2 -2
  35. package/lib/epoch/processEth1DataReset.d.ts.map +1 -1
  36. package/lib/epoch/processEth1DataReset.js.map +1 -1
  37. package/lib/index.d.ts +1 -1
  38. package/lib/index.d.ts.map +1 -1
  39. package/lib/index.js.map +1 -1
  40. package/lib/metrics.d.ts +1 -1
  41. package/lib/metrics.d.ts.map +1 -1
  42. package/lib/metrics.js +4 -4
  43. package/lib/metrics.js.map +1 -1
  44. package/lib/rewards/attestationsRewards.d.ts.map +1 -1
  45. package/lib/rewards/attestationsRewards.js +10 -3
  46. package/lib/rewards/attestationsRewards.js.map +1 -1
  47. package/lib/signatureSets/inclusionList.d.ts +5 -0
  48. package/lib/signatureSets/inclusionList.d.ts.map +1 -0
  49. package/lib/signatureSets/inclusionList.js +14 -0
  50. package/lib/signatureSets/inclusionList.js.map +1 -0
  51. package/lib/signatureSets/index.d.ts +1 -0
  52. package/lib/signatureSets/index.d.ts.map +1 -1
  53. package/lib/signatureSets/index.js +1 -0
  54. package/lib/signatureSets/index.js.map +1 -1
  55. package/lib/slot/upgradeStateToHeze.d.ts.map +1 -1
  56. package/lib/slot/upgradeStateToHeze.js +4 -4
  57. package/lib/slot/upgradeStateToHeze.js.map +1 -1
  58. package/lib/stateTransition.js +2 -2
  59. package/lib/stateTransition.js.map +1 -1
  60. package/lib/stateView/beaconStateView.d.ts +1 -0
  61. package/lib/stateView/beaconStateView.d.ts.map +1 -1
  62. package/lib/stateView/beaconStateView.js +6 -0
  63. package/lib/stateView/beaconStateView.js.map +1 -1
  64. package/lib/stateView/interface.d.ts +4 -1
  65. package/lib/stateView/interface.d.ts.map +1 -1
  66. package/lib/stateView/interface.js.map +1 -1
  67. package/lib/stateView/nativeBeaconStateView.d.ts +2 -0
  68. package/lib/stateView/nativeBeaconStateView.d.ts.map +1 -1
  69. package/lib/stateView/nativeBeaconStateView.js +14 -0
  70. package/lib/stateView/nativeBeaconStateView.js.map +1 -1
  71. package/lib/types.d.ts +2 -2
  72. package/lib/types.d.ts.map +1 -1
  73. package/lib/util/altair.d.ts +3 -1
  74. package/lib/util/altair.d.ts.map +1 -1
  75. package/lib/util/altair.js +7 -4
  76. package/lib/util/altair.js.map +1 -1
  77. package/lib/util/blindedBlock.d.ts +1 -1
  78. package/lib/util/blindedBlock.d.ts.map +1 -1
  79. package/lib/util/blindedBlock.js +5 -2
  80. package/lib/util/blindedBlock.js.map +1 -1
  81. package/lib/util/clock.d.ts +5 -0
  82. package/lib/util/clock.d.ts.map +1 -1
  83. package/lib/util/clock.js +20 -17
  84. package/lib/util/clock.js.map +1 -1
  85. package/lib/util/deposit.d.ts +2 -2
  86. package/lib/util/deposit.d.ts.map +1 -1
  87. package/lib/util/deposit.js.map +1 -1
  88. package/lib/util/genesis.d.ts.map +1 -1
  89. package/lib/util/genesis.js +46 -23
  90. package/lib/util/genesis.js.map +1 -1
  91. package/lib/util/inclusionListCommittee.d.ts +9 -0
  92. package/lib/util/inclusionListCommittee.d.ts.map +1 -0
  93. package/lib/util/inclusionListCommittee.js +18 -0
  94. package/lib/util/inclusionListCommittee.js.map +1 -0
  95. package/lib/util/index.d.ts +1 -0
  96. package/lib/util/index.d.ts.map +1 -1
  97. package/lib/util/index.js +1 -0
  98. package/lib/util/index.js.map +1 -1
  99. package/lib/util/shuffling.d.ts +3 -0
  100. package/lib/util/shuffling.d.ts.map +1 -1
  101. package/lib/util/shuffling.js +41 -1
  102. package/lib/util/shuffling.js.map +1 -1
  103. package/lib/util/slot.d.ts +18 -2
  104. package/lib/util/slot.d.ts.map +1 -1
  105. package/lib/util/slot.js +70 -6
  106. package/lib/util/slot.js.map +1 -1
  107. package/lib/util/syncCommittee.d.ts +4 -3
  108. package/lib/util/syncCommittee.d.ts.map +1 -1
  109. package/lib/util/syncCommittee.js +9 -7
  110. package/lib/util/syncCommittee.js.map +1 -1
  111. package/lib/util/validator.d.ts +1 -1
  112. package/lib/util/validator.d.ts.map +1 -1
  113. package/lib/util/validator.js +32 -11
  114. package/lib/util/validator.js.map +1 -1
  115. package/lib/util/weakSubjectivity.d.ts.map +1 -1
  116. package/lib/util/weakSubjectivity.js +4 -3
  117. package/lib/util/weakSubjectivity.js.map +1 -1
  118. package/package.json +7 -7
  119. package/src/block/index.ts +4 -3
  120. package/src/block/processAttestationsAltair.ts +4 -1
  121. package/src/block/processDeposit.ts +7 -2
  122. package/src/block/processEth1Data.ts +3 -3
  123. package/src/block/processOperations.ts +14 -11
  124. package/src/cache/epochCache.ts +28 -4
  125. package/src/cache/epochTransitionCache.ts +2 -1
  126. package/src/cache/stateCache.ts +2 -0
  127. package/src/cache/types.ts +2 -1
  128. package/src/epoch/getRewardsAndPenalties.ts +11 -1
  129. package/src/epoch/index.ts +4 -1
  130. package/src/epoch/processEth1DataReset.ts +2 -2
  131. package/src/index.ts +2 -0
  132. package/src/metrics.ts +5 -4
  133. package/src/rewards/attestationsRewards.ts +12 -1
  134. package/src/signatureSets/inclusionList.ts +20 -0
  135. package/src/signatureSets/index.ts +1 -0
  136. package/src/slot/upgradeStateToHeze.ts +6 -4
  137. package/src/stateTransition.ts +2 -2
  138. package/src/stateView/beaconStateView.ts +9 -1
  139. package/src/stateView/interface.ts +4 -0
  140. package/src/stateView/nativeBeaconStateView.ts +14 -0
  141. package/src/types.ts +2 -0
  142. package/src/util/altair.ts +15 -4
  143. package/src/util/blindedBlock.ts +8 -3
  144. package/src/util/clock.ts +26 -17
  145. package/src/util/deposit.ts +2 -2
  146. package/src/util/genesis.ts +56 -30
  147. package/src/util/inclusionListCommittee.ts +17 -0
  148. package/src/util/index.ts +1 -0
  149. package/src/util/shuffling.ts +46 -1
  150. package/src/util/slot.ts +78 -8
  151. package/src/util/syncCommittee.ts +21 -9
  152. package/src/util/validator.ts +47 -20
  153. package/src/util/weakSubjectivity.ts +3 -3
package/lib/util/clock.js CHANGED
@@ -1,7 +1,7 @@
1
- import { GENESIS_SLOT, SLOTS_PER_EPOCH } from "@lodestar/params";
1
+ import { SLOTS_PER_EPOCH } from "@lodestar/params";
2
2
  import { ErrorAborted, isErrorAborted, sleep } from "@lodestar/utils";
3
3
  import { computeEpochAtSlot } from "./epoch.js";
4
- import { computeTimeAtSlot, getCurrentSlot } from "./slot.js";
4
+ import { computeTimeAtSlot, getCurrentSlot, getSlotDurationMs } from "./slot.js";
5
5
  export var TimeItem;
6
6
  (function (TimeItem) {
7
7
  TimeItem[TimeItem["Slot"] = 0] = "Slot";
@@ -57,6 +57,10 @@ export class Clock {
57
57
  secFromSlot(slot) {
58
58
  return Date.now() / 1000 - computeTimeAtSlot(this.config, slot, this.genesisTime);
59
59
  }
60
+ /** Slot duration in ms for a given slot */
61
+ getSlotDurationMs(slot) {
62
+ return getSlotDurationMs(this.config, slot);
63
+ }
60
64
  /**
61
65
  * If a task happens to take more than one slot to run, we might skip a slot. This is unfortunate,
62
66
  * however the alternative is to *always* process every slot, which has the chance of creating a
@@ -85,7 +89,7 @@ export class Clock {
85
89
  if (timeItem === TimeItem.Slot) {
86
90
  if (nextSlot > slot + 1) {
87
91
  // It's not very likely that we skip more than one slot as HTTP timeout is set
88
- // to SLOT_DURATION_MS so we will fail task before skipping another slot.
92
+ // to at most one slot duration so we will fail task before skipping another slot.
89
93
  this.logger.warn("Skipped slot due to task taking more than one slot to run", {
90
94
  skippedSlot: slot + 1,
91
95
  });
@@ -106,28 +110,27 @@ export class Clock {
106
110
  }
107
111
  }
108
112
  timeUntilNext(timeItem) {
109
- const milliSecondsPerSlot = this.config.SLOT_DURATION_MS;
110
- const msFromGenesis = Date.now() - this.genesisTime * 1000;
113
+ const currentSlot = getCurrentSlot(this.config, this.genesisTime);
111
114
  if (timeItem === TimeItem.Slot) {
112
- if (msFromGenesis >= 0) {
113
- return milliSecondsPerSlot - (msFromGenesis % milliSecondsPerSlot);
114
- }
115
- return Math.abs(msFromGenesis) % milliSecondsPerSlot;
116
- }
117
- const milliSecondsPerEpoch = SLOTS_PER_EPOCH * milliSecondsPerSlot;
118
- if (msFromGenesis >= 0) {
119
- return milliSecondsPerEpoch - (msFromGenesis % milliSecondsPerEpoch);
115
+ const nextSlotTimeSec = computeTimeAtSlot(this.config, currentSlot + 1, this.genesisTime);
116
+ return Math.max(0, nextSlotTimeSec * 1000 - Date.now());
120
117
  }
121
- return Math.abs(msFromGenesis) % milliSecondsPerEpoch;
118
+ const currentEpoch = computeEpochAtSlot(currentSlot);
119
+ const nextEpochSlot = (currentEpoch + 1) * SLOTS_PER_EPOCH;
120
+ const nextEpochTimeSec = computeTimeAtSlot(this.config, nextEpochSlot, this.genesisTime);
121
+ return Math.max(0, nextEpochTimeSec * 1000 - Date.now());
122
122
  }
123
123
  }
124
124
  /**
125
125
  * Same to the spec but we use Math.round instead of Math.floor.
126
126
  */
127
127
  export function getCurrentSlotAround(config, genesisTime) {
128
- const diffInSeconds = Date.now() / 1000 - genesisTime;
129
- const slotsSinceGenesis = Math.round((diffInSeconds * 1000) / config.SLOT_DURATION_MS);
130
- return GENESIS_SLOT + slotsSinceGenesis;
128
+ const floorSlot = getCurrentSlot(config, genesisTime);
129
+ const slotStartSec = computeTimeAtSlot(config, floorSlot, genesisTime);
130
+ const slotDurationMs = getSlotDurationMs(config, floorSlot);
131
+ const slotDurationSec = slotDurationMs / 1000;
132
+ const elapsed = Date.now() / 1000 - slotStartSec;
133
+ return elapsed >= slotDurationSec / 2 ? floorSlot + 1 : floorSlot;
131
134
  }
132
135
  // function useEventStream() {
133
136
  // this.stream = this.events.getEventStream([BeaconEventType.BLOCK, BeaconEventType.HEAD, BeaconEventType.CHAIN_REORG]);
@@ -1 +1 @@
1
- {"version":3,"file":"clock.js","sourceRoot":"","sources":["../../src/util/clock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clock.js","sourceRoot":"","sources":["../../src/util/clock.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { UintNum64, phase0 } from "@lodestar/types";
2
- import { CachedBeaconStateAllForks } from "../types.js";
3
- export declare function getEth1DepositCount(state: CachedBeaconStateAllForks, eth1Data?: phase0.Eth1Data): UintNum64;
2
+ import { CachedBeaconStatePreHeze } from "../types.js";
3
+ export declare function getEth1DepositCount(state: CachedBeaconStatePreHeze, eth1Data?: phase0.Eth1Data): UintNum64;
4
4
  //# sourceMappingURL=deposit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deposit.d.ts","sourceRoot":"","sources":["../../src/util/deposit.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAC,yBAAyB,EAA2B,MAAM,aAAa,CAAC;AAEhF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,yBAAyB,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,GAAG,SAAS,CAmB3G"}
1
+ {"version":3,"file":"deposit.d.ts","sourceRoot":"","sources":["../../src/util/deposit.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAA2B,wBAAwB,EAAC,MAAM,aAAa,CAAC;AAE/E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,GAAG,SAAS,CAmB1G"}
@@ -1 +1 @@
1
- {"version":3,"file":"deposit.js","sourceRoot":"","sources":["../../src/util/deposit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAIvD,MAAM,UAAU,mBAAmB,CAAC,KAAgC,EAAE,QAA0B;IAC9F,MAAM,aAAa,GAAG,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;IACjD,wFAAwF;IACxF,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;IAChD,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3D,MAAM,YAAY,GAAG,KAAiC,CAAC;QACvD,MAAM,kBAAkB,GACtB,YAAY,GAAG,YAAY,CAAC,yBAAyB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,yBAAyB,CAAC;QAEhH,IAAI,gBAAgB,GAAG,kBAAkB,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,kBAAkB,GAAG,gBAAgB,CAAC;YACxD,OAAO,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,SAAS,GAAG,YAAY,GAAG,gBAAgB,CAAC;IAClD,OAAO,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"deposit.js","sourceRoot":"","sources":["../../src/util/deposit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAIvD,MAAM,UAAU,mBAAmB,CAAC,KAA+B,EAAE,QAA0B;IAC7F,MAAM,aAAa,GAAG,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;IACjD,wFAAwF;IACxF,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;IAChD,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3D,MAAM,YAAY,GAAG,KAAiC,CAAC;QACvD,MAAM,kBAAkB,GACtB,YAAY,GAAG,YAAY,CAAC,yBAAyB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,yBAAyB,CAAC;QAEhH,IAAI,gBAAgB,GAAG,kBAAkB,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,kBAAkB,GAAG,gBAAgB,CAAC;YACxD,OAAO,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,SAAS,GAAG,YAAY,GAAG,gBAAgB,CAAC;IAClD,OAAO,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AACnE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"genesis.d.ts","sourceRoot":"","sources":["../../src/util/genesis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAWjD,OAAO,EAAC,OAAO,EAAQ,WAAW,EAAE,MAAM,EAAE,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAC,uBAAuB,EAAC,MAAM,wBAAwB,CAAC;AAG/D,OAAO,EAAC,mBAAmB,EAAE,yBAAyB,EAA2B,MAAM,aAAa,CAAC;AAOrG,KAAK,uBAAuB,GAAG,iBAAiB,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;AAClE,KAAK,qBAAqB,GAAG,eAAe,CAAC,uBAAuB,CAAC,CAAC;AAItE;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAEhG;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAKrG;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,eAAe,EACvB,eAAe,EAAE,MAAM,CAAC,QAAQ,EAChC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,GAC1C,mBAAmB,CAkCrB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,yBAAyB,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI,CAGjG;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAErH;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,yBAAyB,EAChC,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,EAC7B,uBAAuB,CAAC,EAAE,qBAAqB,GAC9C;IAAC,uBAAuB,EAAE,MAAM,CAAA;CAAC,CAqFnC;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,uBAAuB,EACtC,aAAa,EAAE,OAAO,EACtB,aAAa,EAAE,WAAW,EAC1B,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,EAC1B,uBAAuB,CAAC,EAAE,qBAAqB,EAC/C,sBAAsB,CAAC,EAAE,eAAe,CACpC,OAAO,GAAG,CAAC,SAAS,CAAC,sBAAsB,GAC3C,OAAO,GAAG,CAAC,OAAO,CAAC,sBAAsB,GACzC,OAAO,GAAG,CAAC,KAAK,CAAC,sBAAsB,GACvC,OAAO,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAC5C,GACA,yBAAyB,CA0G3B"}
1
+ {"version":3,"file":"genesis.d.ts","sourceRoot":"","sources":["../../src/util/genesis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAWjD,OAAO,EAAC,OAAO,EAAQ,WAAW,EAAE,MAAM,EAAE,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAC,uBAAuB,EAAC,MAAM,wBAAwB,CAAC;AAG/D,OAAO,EACL,mBAAmB,EAEnB,yBAAyB,EAI1B,MAAM,aAAa,CAAC;AAOrB,KAAK,uBAAuB,GAAG,iBAAiB,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;AAClE,KAAK,qBAAqB,GAAG,eAAe,CAAC,uBAAuB,CAAC,CAAC;AAItE;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAEhG;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAKrG;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,eAAe,EACvB,eAAe,EAAE,MAAM,CAAC,QAAQ,EAChC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,GAC1C,mBAAmB,CAoCrB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,yBAAyB,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI,CAKjG;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAErH;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,yBAAyB,EAChC,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,EAC7B,uBAAuB,CAAC,EAAE,qBAAqB,GAC9C;IAAC,uBAAuB,EAAE,MAAM,CAAA;CAAC,CA8FnC;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,uBAAuB,EACtC,aAAa,EAAE,OAAO,EACtB,aAAa,EAAE,WAAW,EAC1B,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,EAC1B,uBAAuB,CAAC,EAAE,qBAAqB,EAC/C,sBAAsB,CAAC,EAAE,eAAe,CACpC,OAAO,GAAG,CAAC,SAAS,CAAC,sBAAsB,GAC3C,OAAO,GAAG,CAAC,OAAO,CAAC,sBAAsB,GACzC,OAAO,GAAG,CAAC,KAAK,CAAC,sBAAsB,GACvC,OAAO,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAC5C,GACA,yBAAyB,CAgH3B"}
@@ -1,6 +1,6 @@
1
1
  import { EFFECTIVE_BALANCE_INCREMENT, EPOCHS_PER_HISTORICAL_VECTOR, ForkSeq, GENESIS_EPOCH, GENESIS_SLOT, MAX_EFFECTIVE_BALANCE, UNSET_DEPOSIT_REQUESTS_START_INDEX, } from "@lodestar/params";
2
2
  import { ssz } from "@lodestar/types";
3
- import { processDeposit } from "../block/processDeposit.js";
3
+ import { applyDeposit, processDeposit } from "../block/processDeposit.js";
4
4
  import { createCachedBeaconState } from "../cache/stateCache.js";
5
5
  import { increaseBalance } from "../index.js";
6
6
  import { newFilledArray } from "./array.js";
@@ -55,7 +55,9 @@ export function getGenesisBeaconState(config, genesisEth1Data, latestBlockHeader
55
55
  // Randomness and committees
56
56
  state.latestBlockHeader = ssz.phase0.BeaconBlockHeader.toViewDU(latestBlockHeader);
57
57
  // Ethereum 1.0 chain data
58
- state.eth1Data = ssz.phase0.Eth1Data.toViewDU(genesisEth1Data);
58
+ if (config.getForkSeq(GENESIS_SLOT) < ForkSeq.heze) {
59
+ state.eth1Data = ssz.phase0.Eth1Data.toViewDU(genesisEth1Data);
60
+ }
59
61
  state.randaoMixes = ssz.phase0.RandaoMixes.toViewDU(randaoMixes);
60
62
  return state;
61
63
  }
@@ -66,7 +68,9 @@ export function getGenesisBeaconState(config, genesisEth1Data, latestBlockHeader
66
68
  * @param eth1BlockHash eth1 block hash
67
69
  */
68
70
  export function applyEth1BlockHash(state, eth1BlockHash) {
69
- state.eth1Data.blockHash = eth1BlockHash;
71
+ if (state.config.getForkSeq(state.slot) < ForkSeq.heze) {
72
+ state.eth1Data.blockHash = eth1BlockHash;
73
+ }
70
74
  state.randaoMixes = ssz.phase0.RandaoMixes.toViewDU(newFilledArray(EPOCHS_PER_HISTORICAL_VECTOR, eth1BlockHash));
71
75
  }
72
76
  /**
@@ -93,29 +97,37 @@ export function applyTimestamp(config, state, eth1Timestamp) {
93
97
  */
94
98
  export function applyDeposits(config, state, newDeposits, fullDepositDataRootList) {
95
99
  const fork = config.getForkSeq(state.slot);
96
- const depositDataRootList = [];
97
- const fullDepositDataRootArr = fullDepositDataRootList ? fullDepositDataRootList.getAllReadonlyValues() : null;
98
- if (fullDepositDataRootArr) {
99
- const depositCount = Number(state.eth1Data.depositCount);
100
- for (let index = 0; index < depositCount; index++) {
101
- depositDataRootList.push(fullDepositDataRootArr[index]);
100
+ if (fork >= ForkSeq.heze) {
101
+ // Genesis deposits do not use the removed legacy deposit tree.
102
+ for (const deposit of newDeposits) {
103
+ applyDeposit(fork, state, deposit.data);
102
104
  }
103
105
  }
104
- const initDepositCount = depositDataRootList.length;
105
- const depositDatas = fullDepositDataRootList ? null : newDeposits.map((deposit) => deposit.data);
106
- const { DepositData, DepositDataRootList } = ssz.phase0;
107
- for (const [index, deposit] of newDeposits.entries()) {
106
+ else {
107
+ const statePreHeze = state;
108
+ const depositDataRootList = [];
109
+ const fullDepositDataRootArr = fullDepositDataRootList ? fullDepositDataRootList.getAllReadonlyValues() : null;
108
110
  if (fullDepositDataRootArr) {
109
- depositDataRootList.push(fullDepositDataRootArr[index + initDepositCount]);
110
- state.eth1Data.depositRoot = DepositDataRootList.hashTreeRoot(depositDataRootList);
111
+ const depositCount = Number(statePreHeze.eth1Data.depositCount);
112
+ for (let index = 0; index < depositCount; index++) {
113
+ depositDataRootList.push(fullDepositDataRootArr[index]);
114
+ }
111
115
  }
112
- else if (depositDatas) {
113
- const depositDataList = depositDatas.slice(0, index + 1);
114
- state.eth1Data.depositRoot = DepositDataRootList.hashTreeRoot(depositDataList.map((d) => DepositData.hashTreeRoot(d)));
116
+ const initDepositCount = depositDataRootList.length;
117
+ const depositDatas = fullDepositDataRootList ? null : newDeposits.map((deposit) => deposit.data);
118
+ const { DepositData, DepositDataRootList } = ssz.phase0;
119
+ for (const [index, deposit] of newDeposits.entries()) {
120
+ if (fullDepositDataRootArr) {
121
+ depositDataRootList.push(fullDepositDataRootArr[index + initDepositCount]);
122
+ statePreHeze.eth1Data.depositRoot = DepositDataRootList.hashTreeRoot(depositDataRootList);
123
+ }
124
+ else if (depositDatas) {
125
+ const depositDataList = depositDatas.slice(0, index + 1);
126
+ statePreHeze.eth1Data.depositRoot = DepositDataRootList.hashTreeRoot(depositDataList.map((d) => DepositData.hashTreeRoot(d)));
127
+ }
128
+ statePreHeze.eth1Data.depositCount += 1n;
129
+ processDeposit(fork, statePreHeze, deposit);
115
130
  }
116
- state.eth1Data.depositCount += 1n;
117
- const fork = config.getForkSeq(GENESIS_SLOT);
118
- processDeposit(fork, state, deposit);
119
131
  }
120
132
  // Process deposit balance updates
121
133
  if (fork >= ForkSeq.electra) {
@@ -129,7 +141,12 @@ export function applyDeposits(config, state, newDeposits, fullDepositDataRootLis
129
141
  }
130
142
  increaseBalance(state, validatorIndex, amount);
131
143
  }
132
- stateElectra.pendingDeposits = ssz.electra.PendingDeposits.defaultViewDU();
144
+ if (fork >= ForkSeq.gloas) {
145
+ state.pendingDeposits = ssz.gloas.PendingDeposits.defaultViewDU();
146
+ }
147
+ else {
148
+ stateElectra.pendingDeposits = ssz.electra.PendingDeposits.defaultViewDU();
149
+ }
133
150
  }
134
151
  // Process activations
135
152
  const { epochCtx } = state;
@@ -224,7 +241,9 @@ export function initializeBeaconStateFromEth1(config, immutableData, eth1BlockHa
224
241
  stateElectra.latestExecutionPayloadHeader =
225
242
  executionPayloadHeader ??
226
243
  ssz.electra.ExecutionPayloadHeader.defaultViewDU();
227
- stateElectra.depositRequestsStartIndex = UNSET_DEPOSIT_REQUESTS_START_INDEX;
244
+ if (fork < ForkSeq.heze) {
245
+ stateElectra.depositRequestsStartIndex = UNSET_DEPOSIT_REQUESTS_START_INDEX;
246
+ }
228
247
  }
229
248
  if (fork >= ForkSeq.fulu) {
230
249
  const stateFulu = state;
@@ -233,6 +252,10 @@ export function initializeBeaconStateFromEth1(config, immutableData, eth1BlockHa
233
252
  stateFulu.latestExecutionPayloadHeader =
234
253
  executionPayloadHeader ??
235
254
  ssz.fulu.ExecutionPayloadHeader.defaultViewDU();
255
+ if (fork < ForkSeq.heze) {
256
+ // Fulu retires the legacy bridge after the genesis deposits.
257
+ stateFulu.depositRequestsStartIndex = BigInt(stateFulu.eth1DepositIndex);
258
+ }
236
259
  }
237
260
  if (fork >= ForkSeq.gloas) {
238
261
  const stateGloas = state;
@@ -1 +1 @@
1
- {"version":3,"file":"genesis.js","sourceRoot":"","sources":["../../src/util/genesis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"genesis.js","sourceRoot":"","sources":["../../src/util/genesis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { ValidatorIndex } from "@lodestar/types";
2
+ /** Spec `InclusionListCommittee` of one slot */
3
+ export declare class InclusionListCommittee {
4
+ readonly validatorIndices: Uint32Array;
5
+ constructor(validatorIndices: Uint32Array);
6
+ /** Positions of `validatorIndex`, several when the committee cycles over a slot with fewer validators than its size */
7
+ getCommitteeIndices(validatorIndex: ValidatorIndex): number[];
8
+ }
9
+ //# sourceMappingURL=inclusionListCommittee.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inclusionListCommittee.d.ts","sourceRoot":"","sources":["../../src/util/inclusionListCommittee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAE/C,gDAAgD;AAChD,qBAAa,sBAAsB;IACrB,QAAQ,CAAC,gBAAgB,EAAE,WAAW;IAAlD,YAAqB,gBAAgB,EAAE,WAAW,EAAI;IAEtD,uHAAuH;IACvH,mBAAmB,CAAC,cAAc,EAAE,cAAc,GAAG,MAAM,EAAE,CAQ5D;CACF"}
@@ -0,0 +1,18 @@
1
+ /** Spec `InclusionListCommittee` of one slot */
2
+ export class InclusionListCommittee {
3
+ validatorIndices;
4
+ constructor(validatorIndices) {
5
+ this.validatorIndices = validatorIndices;
6
+ }
7
+ /** Positions of `validatorIndex`, several when the committee cycles over a slot with fewer validators than its size */
8
+ getCommitteeIndices(validatorIndex) {
9
+ const committeeIndices = [];
10
+ for (let i = 0; i < this.validatorIndices.length; i++) {
11
+ if (this.validatorIndices[i] === validatorIndex) {
12
+ committeeIndices.push(i);
13
+ }
14
+ }
15
+ return committeeIndices;
16
+ }
17
+ }
18
+ //# sourceMappingURL=inclusionListCommittee.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inclusionListCommittee.js","sourceRoot":"","sources":["../../src/util/inclusionListCommittee.ts"],"names":[],"mappings":"AAEA,gDAAgD;AAChD,MAAM,OAAO,sBAAsB;IACZ,gBAAgB;IAArC,YAAqB,gBAA6B;gCAA7B,gBAAgB;IAAgB,CAAC;IAEtD,uHAAuH;IACvH,mBAAmB,CAAC,cAA8B;QAChD,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,cAAc,EAAE,CAAC;gBAChD,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CACF"}
@@ -17,6 +17,7 @@ export * from "./execution.js";
17
17
  export * from "./finality.js";
18
18
  export * from "./genesis.js";
19
19
  export * from "./gloas.js";
20
+ export * from "./inclusionListCommittee.js";
20
21
  export * from "./interop.js";
21
22
  export * from "./loadState/index.js";
22
23
  export * from "./pendingDepositsLookup.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,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,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,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,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,UAAU,CAAC;AACzB,OAAO,EACL,KAAK,kBAAkB,EACvB,+BAA+B,EAC/B,gCAAgC,EAChC,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AACvB,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,YAAY,CAAC;AAC3B,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,YAAY,CAAC;AAC3B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,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,UAAU,CAAC;AACzB,OAAO,EACL,KAAK,kBAAkB,EACvB,+BAA+B,EAC/B,gCAAgC,EAChC,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AACvB,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
package/lib/util/index.js CHANGED
@@ -17,6 +17,7 @@ export * from "./execution.js";
17
17
  export * from "./finality.js";
18
18
  export * from "./genesis.js";
19
19
  export * from "./gloas.js";
20
+ export * from "./inclusionListCommittee.js";
20
21
  export * from "./interop.js";
21
22
  export * from "./loadState/index.js";
22
23
  export * from "./pendingDepositsLookup.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,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,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,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,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,UAAU,CAAC;AACzB,OAAO,EAEL,+BAA+B,EAC/B,gCAAgC,EAChC,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AACvB,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,YAAY,CAAC;AAC3B,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,YAAY,CAAC;AAC3B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,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,UAAU,CAAC;AACzB,OAAO,EAEL,+BAA+B,EAC/B,gCAAgC,EAChC,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AACvB,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
@@ -4,6 +4,7 @@ import { LodestarError } from "@lodestar/utils";
4
4
  import { CachedBeaconStateAllForks } from "../cache/stateCache.js";
5
5
  import { IBeaconStateView } from "../stateView/interface.js";
6
6
  import { EpochShuffling } from "./epochShuffling.js";
7
+ import { InclusionListCommittee } from "./inclusionListCommittee.js";
7
8
  /**
8
9
  * Block root that decided the proposer shuffling for `proposalEpoch` (keys that shuffling).
9
10
  * Computed for the requested epoch, not `state.epoch`, so it is correct when `state` is one
@@ -42,6 +43,8 @@ export declare function getAttestingIndices(epochShuffling: EpochShuffling, fork
42
43
  * Return the beacon committee at slot for index.
43
44
  */
44
45
  export declare function getBeaconCommittee(epochShuffling: EpochShuffling, slot: Slot, index: CommitteeIndex): Uint32Array;
46
+ /** Spec get_inclusion_list_committee: cycle over the slot's concatenated beacon committees */
47
+ export declare function getInclusionListCommittee(epochShuffling: EpochShuffling, slot: Slot): InclusionListCommittee;
45
48
  /**
46
49
  * Return a Uint32Array[] representing committees validator indices
47
50
  */
@@ -1 +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;AACjE,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAG3D,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAEnD;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,gBAAgB,EACvB,aAAa,EAAE,KAAK,GACnB,IAAI,GAAG,IAAI,CAOb;AAUD;;;;;;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"}
1
+ {"version":3,"file":"shuffling.d.ts","sourceRoot":"","sources":["../../src/util/shuffling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,OAAO,EAAiE,MAAM,kBAAkB,CAAC;AACnH,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;AACjE,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAG3D,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAC,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AAEnE;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,gBAAgB,EACvB,aAAa,EAAE,KAAK,GACnB,IAAI,GAAG,IAAI,CAOb;AAUD;;;;;;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;AAMD,8FAA8F;AAC9F,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,GAAG,sBAAsB,CAa5G;AA0BD;;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"}
@@ -1,7 +1,8 @@
1
- import { ForkSeq, SLOTS_PER_EPOCH, isForkPostFulu } from "@lodestar/params";
1
+ import { ForkSeq, INCLUSION_LIST_COMMITTEE_SIZE, SLOTS_PER_EPOCH, isForkPostFulu } from "@lodestar/params";
2
2
  import { LodestarError } from "@lodestar/utils";
3
3
  import { getBlockRootAtSlot } from "./blockRoot.js";
4
4
  import { computeStartSlotAtEpoch } from "./epoch.js";
5
+ import { InclusionListCommittee } from "./inclusionListCommittee.js";
5
6
  /**
6
7
  * Block root that decided the proposer shuffling for `proposalEpoch` (keys that shuffling).
7
8
  * Computed for the requested epoch, not `state.epoch`, so it is correct when `state` is one
@@ -144,6 +145,45 @@ export function getAttestingIndices(epochShuffling, fork, attestation) {
144
145
  export function getBeaconCommittee(epochShuffling, slot, index) {
145
146
  return getBeaconCommittees(epochShuffling, slot, [index])[0];
146
147
  }
148
+ /** Inclusion list committees of a shuffling by slot index, computed on first use and freed with the shuffling */
149
+ // TODO HEZE: replace this module-level map with an extended EpochShuffling tracked by the beacon-node ShufflingCache
150
+ const inclusionListCommitteesByShuffling = new WeakMap();
151
+ /** Spec get_inclusion_list_committee: cycle over the slot's concatenated beacon committees */
152
+ export function getInclusionListCommittee(epochShuffling, slot) {
153
+ let committees = inclusionListCommitteesByShuffling.get(epochShuffling);
154
+ if (committees === undefined) {
155
+ committees = [];
156
+ inclusionListCommitteesByShuffling.set(epochShuffling, committees);
157
+ }
158
+ const slotIndex = slot % SLOTS_PER_EPOCH;
159
+ let committee = committees[slotIndex];
160
+ if (committee === undefined) {
161
+ committee = new InclusionListCommittee(computeInclusionListCommittee(epochShuffling.committees[slotIndex]));
162
+ committees[slotIndex] = committee;
163
+ }
164
+ return committee;
165
+ }
166
+ function computeInclusionListCommittee(slotCommittees) {
167
+ let totalLen = 0;
168
+ for (const committee of slotCommittees) {
169
+ totalLen += committee.length;
170
+ }
171
+ const result = new Uint32Array(INCLUSION_LIST_COMMITTEE_SIZE);
172
+ if (totalLen === 0) {
173
+ return result;
174
+ }
175
+ for (let i = 0; i < INCLUSION_LIST_COMMITTEE_SIZE; i++) {
176
+ let offset = i % totalLen;
177
+ for (const committee of slotCommittees) {
178
+ if (offset < committee.length) {
179
+ result[i] = committee[offset];
180
+ break;
181
+ }
182
+ offset -= committee.length;
183
+ }
184
+ }
185
+ return result;
186
+ }
147
187
  /**
148
188
  * Return a Uint32Array[] representing committees validator indices
149
189
  */
@@ -1 +1 @@
1
- {"version":3,"file":"shuffling.js","sourceRoot":"","sources":["../../src/util/shuffling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAE,eAAe,EAAE,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAWpF,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAC,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAC,uBAAuB,EAAC,MAAM,YAAY,CAAC;AAGnD;;;;;;;GAOG;AACH,MAAM,UAAU,6BAA6B,CAC3C,IAAc,EACd,KAAuB,EACvB,aAAoB;IAEpB,MAAM,YAAY,GAAG,6BAA6B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACxE,4GAA4G;IAC5G,IAAI,YAAY,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAChD,CAAC;AAED,6EAA6E;AAC7E,SAAS,6BAA6B,CAAC,IAAc,EAAE,aAAoB;IACzE,0FAA0F;IAC1F,iFAAiF;IACjF,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;IAC/E,OAAO,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAAgC,EAAE,cAAqB;IACnG,MAAM,YAAY,GAAG,6BAA6B,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC1E,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,SAAS,6BAA6B,CAAC,KAAgC,EAAE,cAAqB;IAC5F,MAAM,KAAK,GAAG,8BAA8B,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,8BAA8B,CAAC,KAAgC,EAAE,cAAqB;IAC7F,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IAE1C,OAAO;IACP,IAAI,cAAc,KAAK,YAAY,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IAC7D,UAAU;IACV,IAAI,cAAc,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,WAAW;IACX,IAAI,cAAc,KAAK,YAAY,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAE9E,IAAI,cAAc,GAAG,YAAY,EAAE,CAAC;QAClC,MAAM,KAAK,CAAC,wBAAwB,YAAY,cAAc,cAAc,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,KAAK,CAAC,yBAAyB,YAAY,cAAc,cAAc,EAAE,CAAC,CAAC;AACnF,CAAC;AAYD,MAAM,UAAU,6BAA6B,CAC3C,cAA8B,EAC9B,yBAA2C;IAE3C,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgC,CAAC;IAEvD,MAAM,eAAe,GAAG,cAAc,CAAC,UAAU,CAAC;IAClD,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC;QACjE,MAAM,cAAc,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,gBAAgB,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC;YACpF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,eAAe,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrF,MAAM,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,IAAI,4BAA4B,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;oBACrD,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE;wBACzB,cAAc;wBACd,eAAe;wBACf,gBAAgB;wBAChB,uBAAuB,EAAE,CAAC;wBAC1B,cAAc,EAAE,CAAC;wBACjB,IAAI,EAAE,cAAc,CAAC,KAAK,GAAG,eAAe,GAAG,SAAS;qBACzD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,cAA8B,EAC9B,IAAa,EACb,WAAwB;IAExB,MAAM,EAAC,IAAI,EAAC,GAAG,WAAW,CAAC;IAC3B,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,cAAc,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAEhF,gBAAgB;IAChB,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,OAAO;QACL,gBAAgB,EAAE,gBAAgB;QAClC,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,WAAW,CAAC,SAAS;KACjC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,cAA8B,EAAE,IAAa,EAAE,WAAwB;IACzG,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,MAAM,EAAC,eAAe,EAAE,IAAI,EAAC,GAAG,WAAW,CAAC;QAC5C,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnF,OAAO,eAAe,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,EAAC,eAAe,EAAE,aAAa,EAAE,IAAI,EAAC,GAAG,WAAkC,CAAC;IAElF,4DAA4D;IAC5D,0FAA0F;IAC1F,8EAA8E;IAC9E,+CAA+C;IAC/C,6CAA6C;IAC7C,MAAM,gBAAgB,GAAG,aAAa,CAAC,iBAAiB,EAAE,CAAC;IAE3D,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAE/F,8DAA8D;IAC9D,MAAM,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtF,MAAM,mBAAmB,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;IAEzD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,SAAS,IAAI,qBAAqB,EAAE,CAAC;QAC9C,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,OAAO,eAAe,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,cAA8B,EAAE,IAAU,EAAE,KAAqB;IAClG,OAAO,mBAAmB,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,cAA8B,EAC9B,IAAU,EACV,OAAyB;IAEzB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,GAAG,eAAe,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,EAAE,CAAC;IAEtB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,cAAc,CAAC;gBACvB,IAAI,EAAE,kBAAkB,CAAC,4BAA4B;gBACrD,KAAK;gBACL,QAAQ,EAAE,cAAc,CAAC,MAAM;aAChC,CAAC,CAAC;QACL,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAN,IAAY,kBAEX;AAFD,WAAY,kBAAkB;IAC5B,mGAA6E,CAAA;AAC/E,CAAC,EAFW,kBAAkB,KAAlB,kBAAkB,QAE7B;AAQD,MAAM,OAAO,cAAe,SAAQ,aAAiC;CAAG"}
1
+ {"version":3,"file":"shuffling.js","sourceRoot":"","sources":["../../src/util/shuffling.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,23 @@
1
- import { ChainConfig } from "@lodestar/config";
1
+ import { ChainConfig, ChainForkConfig } from "@lodestar/config";
2
2
  import { Epoch, Slot, TimeSeconds } from "@lodestar/types";
3
+ /**
4
+ * Slot durations with their activation epochs, derived from the configuration.
5
+ * A fork that changes the slot duration must add an entry here and in `ForkConfig.getSlotDurationMs`.
6
+ */
7
+ export declare function getSlotDurations(config: ChainConfig): [Epoch, number][];
8
+ /** Slot duration in ms in effect at a given epoch */
9
+ export declare function getSlotDurationMsAtEpoch(config: ChainConfig, epoch: Epoch): number;
10
+ /** Slot duration in ms for a given slot */
11
+ export declare function getSlotDurationMs(config: ChainForkConfig, slot: Slot): number;
12
+ export declare function computeTimeAtSlotMs(config: ChainConfig, slot: Slot, genesisTimeMs: number): number;
13
+ export declare function computeTimeAtSlot(config: ChainConfig, slot: Slot, genesisTime: TimeSeconds): TimeSeconds;
14
+ export declare function computeSlotAtTimeMs(config: ChainConfig, timeMs: number, genesisTimeMs: number): Slot;
3
15
  export declare function getSlotsSinceGenesis(config: ChainConfig, genesisTime: TimeSeconds): Slot;
4
16
  export declare function getCurrentSlot(config: ChainConfig, genesisTime: TimeSeconds): Slot;
17
+ /**
18
+ * Start epoch of the blob data retention window, preserving its wall-clock length
19
+ * across slot duration changes
20
+ */
21
+ export declare function getBlobDataRetentionStartEpoch(config: ChainConfig, epoch: Epoch): Epoch;
5
22
  export declare function computeSlotsSinceEpochStart(slot: Slot, epoch?: Epoch): Slot;
6
- export declare function computeTimeAtSlot(config: ChainConfig, slot: Slot, genesisTime: TimeSeconds): TimeSeconds;
7
23
  //# sourceMappingURL=slot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"slot.d.ts","sourceRoot":"","sources":["../../src/util/slot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAGzD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI,CAGxF;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI,CAElF;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAG3E;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,GAAG,WAAW,CAExG"}
1
+ {"version":3,"file":"slot.d.ts","sourceRoot":"","sources":["../../src/util/slot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAGzD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAMvE;AAED,qDAAqD;AACrD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAQlF;AAED,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAE7E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAYlG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,GAAG,WAAW,CAExG;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAcpG;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI,CAExF;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI,CAElF;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAOvF;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAG3E"}
package/lib/util/slot.js CHANGED
@@ -1,17 +1,81 @@
1
- import { GENESIS_SLOT } from "@lodestar/params";
1
+ import { GENESIS_EPOCH, GENESIS_SLOT } from "@lodestar/params";
2
2
  import { computeEpochAtSlot, computeStartSlotAtEpoch } from "./epoch.js";
3
+ /**
4
+ * Slot durations with their activation epochs, derived from the configuration.
5
+ * A fork that changes the slot duration must add an entry here and in `ForkConfig.getSlotDurationMs`.
6
+ */
7
+ export function getSlotDurations(config) {
8
+ const durations = [[GENESIS_EPOCH, config.SLOT_DURATION_MS]];
9
+ if (config.HEZE_FORK_EPOCH !== Infinity) {
10
+ durations.push([config.HEZE_FORK_EPOCH, config.SLOT_DURATION_MS_HEZE]);
11
+ }
12
+ return durations;
13
+ }
14
+ /** Slot duration in ms in effect at a given epoch */
15
+ export function getSlotDurationMsAtEpoch(config, epoch) {
16
+ let slotDurationMs = config.SLOT_DURATION_MS;
17
+ for (const [forkEpoch, forkSlotDurationMs] of getSlotDurations(config)) {
18
+ if (epoch >= forkEpoch) {
19
+ slotDurationMs = forkSlotDurationMs;
20
+ }
21
+ }
22
+ return slotDurationMs;
23
+ }
24
+ /** Slot duration in ms for a given slot */
25
+ export function getSlotDurationMs(config, slot) {
26
+ return config.getSlotDurationMs(config.getForkName(slot));
27
+ }
28
+ export function computeTimeAtSlotMs(config, slot, genesisTimeMs) {
29
+ let endSlot = slot;
30
+ let timeMs = genesisTimeMs;
31
+ for (const [forkEpoch, slotDurationMs] of getSlotDurations(config).reverse()) {
32
+ const forkSlot = computeStartSlotAtEpoch(forkEpoch);
33
+ if (forkSlot < endSlot) {
34
+ timeMs += (endSlot - forkSlot) * slotDurationMs;
35
+ endSlot = forkSlot;
36
+ }
37
+ }
38
+ // Pre-genesis slots extrapolate linearly so the clock keeps ticking before genesis
39
+ return timeMs + (endSlot - GENESIS_SLOT) * getSlotDurationMsAtEpoch(config, GENESIS_EPOCH);
40
+ }
41
+ export function computeTimeAtSlot(config, slot, genesisTime) {
42
+ return computeTimeAtSlotMs(config, slot, genesisTime * 1000) / 1000;
43
+ }
44
+ export function computeSlotAtTimeMs(config, timeMs, genesisTimeMs) {
45
+ let startSlot = GENESIS_SLOT;
46
+ let startTimeMs = genesisTimeMs;
47
+ let slotDurationMs = getSlotDurationMsAtEpoch(config, GENESIS_EPOCH);
48
+ for (const [forkEpoch, forkSlotDurationMs] of getSlotDurations(config)) {
49
+ const forkSlot = computeStartSlotAtEpoch(forkEpoch);
50
+ const forkTimeMs = computeTimeAtSlotMs(config, forkSlot, genesisTimeMs);
51
+ if (timeMs >= forkTimeMs) {
52
+ startSlot = forkSlot;
53
+ startTimeMs = forkTimeMs;
54
+ slotDurationMs = forkSlotDurationMs;
55
+ }
56
+ }
57
+ return startSlot + Math.floor((timeMs - startTimeMs) / slotDurationMs);
58
+ }
3
59
  export function getSlotsSinceGenesis(config, genesisTime) {
4
- const diffInSeconds = Date.now() / 1000 - genesisTime;
5
- return Math.floor(diffInSeconds / (config.SLOT_DURATION_MS / 1000));
60
+ return computeSlotAtTimeMs(config, Date.now(), genesisTime * 1000) - GENESIS_SLOT;
6
61
  }
7
62
  export function getCurrentSlot(config, genesisTime) {
8
63
  return GENESIS_SLOT + getSlotsSinceGenesis(config, genesisTime);
9
64
  }
65
+ /**
66
+ * Start epoch of the blob data retention window, preserving its wall-clock length
67
+ * across slot duration changes
68
+ */
69
+ export function getBlobDataRetentionStartEpoch(config, epoch) {
70
+ const windowMs = config.MIN_BLOB_DATA_RETENTION_MS;
71
+ const currentStartMs = computeTimeAtSlotMs(config, computeStartSlotAtEpoch(epoch), 0);
72
+ if (currentStartMs < windowMs) {
73
+ return GENESIS_EPOCH;
74
+ }
75
+ return computeEpochAtSlot(computeSlotAtTimeMs(config, currentStartMs - windowMs, 0));
76
+ }
10
77
  export function computeSlotsSinceEpochStart(slot, epoch) {
11
78
  const computeEpoch = epoch ?? computeEpochAtSlot(slot);
12
79
  return slot - computeStartSlotAtEpoch(computeEpoch);
13
80
  }
14
- export function computeTimeAtSlot(config, slot, genesisTime) {
15
- return genesisTime + slot * (config.SLOT_DURATION_MS / 1000);
16
- }
17
81
  //# sourceMappingURL=slot.js.map