@lodestar/validator 1.35.0-dev.91dadf81de → 1.35.0-dev.955e9f89ed

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 (173) hide show
  1. package/lib/index.d.ts +7 -7
  2. package/lib/index.js +5 -5
  3. package/lib/index.js.map +1 -1
  4. package/lib/metrics.js +14 -14
  5. package/lib/metrics.js.map +1 -1
  6. package/lib/repositories/metaDataRepository.js +3 -4
  7. package/lib/repositories/metaDataRepository.js.map +1 -1
  8. package/lib/services/attestation.js +60 -77
  9. package/lib/services/attestation.js.map +1 -1
  10. package/lib/services/attestationDuties.js +98 -105
  11. package/lib/services/attestationDuties.js.map +1 -1
  12. package/lib/services/block.js +56 -64
  13. package/lib/services/block.js.map +1 -1
  14. package/lib/services/blockDuties.d.ts +2 -2
  15. package/lib/services/blockDuties.js +26 -35
  16. package/lib/services/blockDuties.js.map +1 -1
  17. package/lib/services/chainHeaderTracker.js +27 -30
  18. package/lib/services/chainHeaderTracker.js.map +1 -1
  19. package/lib/services/doppelgangerService.js +45 -52
  20. package/lib/services/doppelgangerService.js.map +1 -1
  21. package/lib/services/emitter.d.ts +1 -1
  22. package/lib/services/externalSignerSync.js.map +1 -1
  23. package/lib/services/indices.js +5 -8
  24. package/lib/services/indices.js.map +1 -1
  25. package/lib/services/prepareBeaconProposer.js.map +1 -1
  26. package/lib/services/syncCommittee.js +61 -80
  27. package/lib/services/syncCommittee.js.map +1 -1
  28. package/lib/services/syncCommitteeDuties.js +23 -28
  29. package/lib/services/syncCommitteeDuties.js.map +1 -1
  30. package/lib/services/syncingStatusTracker.js +27 -32
  31. package/lib/services/syncingStatusTracker.js.map +1 -1
  32. package/lib/services/validatorStore.js +3 -9
  33. package/lib/services/validatorStore.js.map +1 -1
  34. package/lib/slashingProtection/attestation/attestationByTargetRepository.js +3 -7
  35. package/lib/slashingProtection/attestation/attestationByTargetRepository.js.map +1 -1
  36. package/lib/slashingProtection/attestation/attestationLowerBoundRepository.js +3 -5
  37. package/lib/slashingProtection/attestation/attestationLowerBoundRepository.js.map +1 -1
  38. package/lib/slashingProtection/attestation/index.js +0 -3
  39. package/lib/slashingProtection/attestation/index.js.map +1 -1
  40. package/lib/slashingProtection/block/blockBySlotRepository.js +3 -7
  41. package/lib/slashingProtection/block/blockBySlotRepository.js.map +1 -1
  42. package/lib/slashingProtection/block/index.js +0 -1
  43. package/lib/slashingProtection/block/index.js.map +1 -1
  44. package/lib/slashingProtection/index.d.ts +1 -1
  45. package/lib/slashingProtection/index.js +0 -3
  46. package/lib/slashingProtection/index.js.map +1 -1
  47. package/lib/slashingProtection/minMaxSurround/distanceStoreRepository.js +0 -8
  48. package/lib/slashingProtection/minMaxSurround/distanceStoreRepository.js.map +1 -1
  49. package/lib/slashingProtection/minMaxSurround/minMaxSurround.js +0 -2
  50. package/lib/slashingProtection/minMaxSurround/minMaxSurround.js.map +1 -1
  51. package/lib/slashingProtection/utils.d.ts +1 -1
  52. package/lib/util/clock.d.ts +0 -3
  53. package/lib/util/clock.js +1 -9
  54. package/lib/util/clock.js.map +1 -1
  55. package/lib/util/params.js +1 -17
  56. package/lib/util/params.js.map +1 -1
  57. package/lib/validator.js +0 -15
  58. package/lib/validator.js.map +1 -1
  59. package/package.json +16 -19
  60. package/lib/buckets.d.ts.map +0 -1
  61. package/lib/defaults.d.ts.map +0 -1
  62. package/lib/genesis.d.ts.map +0 -1
  63. package/lib/index.d.ts.map +0 -1
  64. package/lib/metrics.d.ts.map +0 -1
  65. package/lib/repositories/index.d.ts.map +0 -1
  66. package/lib/repositories/metaDataRepository.d.ts.map +0 -1
  67. package/lib/services/attestation.d.ts.map +0 -1
  68. package/lib/services/attestationDuties.d.ts.map +0 -1
  69. package/lib/services/block.d.ts.map +0 -1
  70. package/lib/services/blockDuties.d.ts.map +0 -1
  71. package/lib/services/chainHeaderTracker.d.ts.map +0 -1
  72. package/lib/services/doppelgangerService.d.ts.map +0 -1
  73. package/lib/services/emitter.d.ts.map +0 -1
  74. package/lib/services/externalSignerSync.d.ts.map +0 -1
  75. package/lib/services/indices.d.ts.map +0 -1
  76. package/lib/services/prepareBeaconProposer.d.ts.map +0 -1
  77. package/lib/services/syncCommittee.d.ts.map +0 -1
  78. package/lib/services/syncCommitteeDuties.d.ts.map +0 -1
  79. package/lib/services/syncingStatusTracker.d.ts.map +0 -1
  80. package/lib/services/utils.d.ts.map +0 -1
  81. package/lib/services/validatorStore.d.ts.map +0 -1
  82. package/lib/slashingProtection/attestation/attestationByTargetRepository.d.ts.map +0 -1
  83. package/lib/slashingProtection/attestation/attestationLowerBoundRepository.d.ts.map +0 -1
  84. package/lib/slashingProtection/attestation/errors.d.ts.map +0 -1
  85. package/lib/slashingProtection/attestation/index.d.ts.map +0 -1
  86. package/lib/slashingProtection/block/blockBySlotRepository.d.ts.map +0 -1
  87. package/lib/slashingProtection/block/errors.d.ts.map +0 -1
  88. package/lib/slashingProtection/block/index.d.ts.map +0 -1
  89. package/lib/slashingProtection/index.d.ts.map +0 -1
  90. package/lib/slashingProtection/interchange/errors.d.ts.map +0 -1
  91. package/lib/slashingProtection/interchange/formats/completeV4.d.ts.map +0 -1
  92. package/lib/slashingProtection/interchange/formats/index.d.ts.map +0 -1
  93. package/lib/slashingProtection/interchange/formats/v5.d.ts.map +0 -1
  94. package/lib/slashingProtection/interchange/index.d.ts.map +0 -1
  95. package/lib/slashingProtection/interchange/parseInterchange.d.ts.map +0 -1
  96. package/lib/slashingProtection/interchange/serializeInterchange.d.ts.map +0 -1
  97. package/lib/slashingProtection/interchange/types.d.ts.map +0 -1
  98. package/lib/slashingProtection/interface.d.ts.map +0 -1
  99. package/lib/slashingProtection/minMaxSurround/distanceStoreRepository.d.ts.map +0 -1
  100. package/lib/slashingProtection/minMaxSurround/errors.d.ts.map +0 -1
  101. package/lib/slashingProtection/minMaxSurround/index.d.ts.map +0 -1
  102. package/lib/slashingProtection/minMaxSurround/interface.d.ts.map +0 -1
  103. package/lib/slashingProtection/minMaxSurround/minMaxSurround.d.ts.map +0 -1
  104. package/lib/slashingProtection/types.d.ts.map +0 -1
  105. package/lib/slashingProtection/utils.d.ts.map +0 -1
  106. package/lib/types.d.ts.map +0 -1
  107. package/lib/util/batch.d.ts.map +0 -1
  108. package/lib/util/clock.d.ts.map +0 -1
  109. package/lib/util/difference.d.ts.map +0 -1
  110. package/lib/util/externalSignerClient.d.ts.map +0 -1
  111. package/lib/util/format.d.ts.map +0 -1
  112. package/lib/util/index.d.ts.map +0 -1
  113. package/lib/util/logger.d.ts.map +0 -1
  114. package/lib/util/params.d.ts.map +0 -1
  115. package/lib/util/url.d.ts.map +0 -1
  116. package/lib/validator.d.ts.map +0 -1
  117. package/src/buckets.ts +0 -30
  118. package/src/defaults.ts +0 -8
  119. package/src/genesis.ts +0 -19
  120. package/src/index.ts +0 -22
  121. package/src/metrics.ts +0 -417
  122. package/src/repositories/index.ts +0 -1
  123. package/src/repositories/metaDataRepository.ts +0 -42
  124. package/src/services/attestation.ts +0 -362
  125. package/src/services/attestationDuties.ts +0 -406
  126. package/src/services/block.ts +0 -261
  127. package/src/services/blockDuties.ts +0 -217
  128. package/src/services/chainHeaderTracker.ts +0 -89
  129. package/src/services/doppelgangerService.ts +0 -286
  130. package/src/services/emitter.ts +0 -43
  131. package/src/services/externalSignerSync.ts +0 -81
  132. package/src/services/indices.ts +0 -165
  133. package/src/services/prepareBeaconProposer.ts +0 -119
  134. package/src/services/syncCommittee.ts +0 -338
  135. package/src/services/syncCommitteeDuties.ts +0 -337
  136. package/src/services/syncingStatusTracker.ts +0 -74
  137. package/src/services/utils.ts +0 -58
  138. package/src/services/validatorStore.ts +0 -830
  139. package/src/slashingProtection/attestation/attestationByTargetRepository.ts +0 -77
  140. package/src/slashingProtection/attestation/attestationLowerBoundRepository.ts +0 -44
  141. package/src/slashingProtection/attestation/errors.ts +0 -66
  142. package/src/slashingProtection/attestation/index.ts +0 -171
  143. package/src/slashingProtection/block/blockBySlotRepository.ts +0 -78
  144. package/src/slashingProtection/block/errors.ts +0 -28
  145. package/src/slashingProtection/block/index.ts +0 -94
  146. package/src/slashingProtection/index.ts +0 -95
  147. package/src/slashingProtection/interchange/errors.ts +0 -15
  148. package/src/slashingProtection/interchange/formats/completeV4.ts +0 -125
  149. package/src/slashingProtection/interchange/formats/index.ts +0 -7
  150. package/src/slashingProtection/interchange/formats/v5.ts +0 -120
  151. package/src/slashingProtection/interchange/index.ts +0 -5
  152. package/src/slashingProtection/interchange/parseInterchange.ts +0 -55
  153. package/src/slashingProtection/interchange/serializeInterchange.ts +0 -35
  154. package/src/slashingProtection/interchange/types.ts +0 -18
  155. package/src/slashingProtection/interface.ts +0 -28
  156. package/src/slashingProtection/minMaxSurround/distanceStoreRepository.ts +0 -57
  157. package/src/slashingProtection/minMaxSurround/errors.ts +0 -27
  158. package/src/slashingProtection/minMaxSurround/index.ts +0 -4
  159. package/src/slashingProtection/minMaxSurround/interface.ts +0 -23
  160. package/src/slashingProtection/minMaxSurround/minMaxSurround.ts +0 -104
  161. package/src/slashingProtection/types.ts +0 -12
  162. package/src/slashingProtection/utils.ts +0 -42
  163. package/src/types.ts +0 -31
  164. package/src/util/batch.ts +0 -15
  165. package/src/util/clock.ts +0 -170
  166. package/src/util/difference.ts +0 -10
  167. package/src/util/externalSignerClient.ts +0 -277
  168. package/src/util/format.ts +0 -3
  169. package/src/util/index.ts +0 -6
  170. package/src/util/logger.ts +0 -51
  171. package/src/util/params.ts +0 -320
  172. package/src/util/url.ts +0 -16
  173. package/src/validator.ts +0 -418
package/lib/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
+ export { Validator, type ValidatorOptions } from "./validator.js";
2
+ export { ValidatorStore, SignerType, defaultOptions, MAX_BUILDER_BOOST_FACTOR } from "./services/validatorStore.js";
3
+ export type { Signer, SignerLocal, SignerRemote, ValidatorProposerConfig, ProposerConfig, } from "./services/validatorStore.js";
1
4
  export { waitForGenesis } from "./genesis.js";
2
- export { type Metrics, getMetrics } from "./metrics.js";
3
- export * from "./repositories/index.js";
4
- export type { ProposerConfig, Signer, SignerLocal, SignerRemote, ValidatorProposerConfig, } from "./services/validatorStore.js";
5
- export { MAX_BUILDER_BOOST_FACTOR, SignerType, ValidatorStore, defaultOptions } from "./services/validatorStore.js";
6
- export * from "./slashingProtection/index.js";
5
+ export { getMetrics, type Metrics } from "./metrics.js";
6
+ export { externalSignerGetKeys, externalSignerPostSignature, externalSignerUpCheck, SignableMessageType, } from "./util/externalSignerClient.js";
7
7
  export type { ProcessShutdownCallback } from "./types.js";
8
- export { SignableMessageType, externalSignerGetKeys, externalSignerPostSignature, externalSignerUpCheck, } from "./util/externalSignerClient.js";
9
- export { Validator, type ValidatorOptions } from "./validator.js";
8
+ export * from "./slashingProtection/index.js";
9
+ export * from "./repositories/index.js";
10
10
  //# sourceMappingURL=index.d.ts.map
package/lib/index.js CHANGED
@@ -1,9 +1,9 @@
1
+ export { Validator } from "./validator.js";
2
+ export { ValidatorStore, SignerType, defaultOptions, MAX_BUILDER_BOOST_FACTOR } from "./services/validatorStore.js";
1
3
  export { waitForGenesis } from "./genesis.js";
2
4
  export { getMetrics } from "./metrics.js";
3
- export * from "./repositories/index.js";
4
- export { MAX_BUILDER_BOOST_FACTOR, SignerType, ValidatorStore, defaultOptions } from "./services/validatorStore.js";
5
- export * from "./slashingProtection/index.js";
6
5
  // Remote signer client
7
- export { SignableMessageType, externalSignerGetKeys, externalSignerPostSignature, externalSignerUpCheck, } from "./util/externalSignerClient.js";
8
- export { Validator } from "./validator.js";
6
+ export { externalSignerGetKeys, externalSignerPostSignature, externalSignerUpCheck, SignableMessageType, } from "./util/externalSignerClient.js";
7
+ export * from "./slashingProtection/index.js";
8
+ export * from "./repositories/index.js";
9
9
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAe,UAAU,EAAC,MAAM,cAAc,CAAC;AACtD,cAAc,yBAAyB,CAAC;AAQxC,OAAO,EAAC,wBAAwB,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAC,MAAM,8BAA8B,CAAC;AAClH,cAAc,+BAA+B,CAAC;AAG9C,uBAAuB;AACvB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAC,SAAS,EAAwB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAwB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAC,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,wBAAwB,EAAC,MAAM,8BAA8B,CAAC;AAQlH,OAAO,EAAC,cAAc,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAC,UAAU,EAAe,MAAM,cAAc,CAAC;AAEtD,uBAAuB;AACvB,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AAKxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC"}
package/lib/metrics.js CHANGED
@@ -29,54 +29,54 @@ export function getMetrics(register, gitData) {
29
29
  labelNames: ["builderSelection", "broadcastValidation"],
30
30
  }),
31
31
  // Attestation journey:
32
- // - Wait for block or ATTESTATION_DUE_BPS, call prepare attestation
32
+ // - Wait for block or 1/3, call prepare attestation
33
33
  // - Get attestation, sign, call publish
34
- // - Wait AGGREGATE_DUE_BPS, call prepare aggregate
34
+ // - Wait 2/3, call prepare aggregate
35
35
  // - Get aggregate, sign, call publish
36
36
  attesterStepCallProduceAttestation: register.histogram({
37
37
  name: "vc_attester_step_call_produce_attestation_seconds",
38
- help: "Time between ATTESTATION_DUE_BPS of slot and call produce attestation",
39
- // Attester flow can start early if block is imported before ATTESTATION_DUE_BPS of the slot
38
+ help: "Time between 1/3 of slot and call produce attestation",
39
+ // Attester flow can start early if block is imported before 1/3 of the slot
40
40
  // This measure is critical so we need very good resolution around the 0 second mark
41
41
  buckets: [-3, -1, 0, 1, 2, 3, 6, 12],
42
42
  }),
43
43
  attesterStepCallPublishAttestation: register.histogram({
44
44
  name: "vc_attester_step_call_publish_attestation_seconds",
45
- help: "Time between ATTESTATION_DUE_BPS of slot and call publish attestation",
45
+ help: "Time between 1/3 of slot and call publish attestation",
46
46
  buckets: [-3, -1, 0, 1, 2, 3, 6, 12],
47
47
  }),
48
48
  attesterStepCallProduceAggregate: register.histogram({
49
49
  name: "vc_attester_step_call_produce_aggregate_seconds",
50
- help: "Time between AGGREGATE_DUE_BPS of slot and call produce aggregate",
51
- // Aggregate production starts at AGGREGATE_DUE_BPS the earliest.
50
+ help: "Time between 2/3 of slot and call produce aggregate",
51
+ // Aggregate production starts at 2/3 the earliest.
52
52
  // Track values close to 0 (expected) in greater resolution, values over 12 overflow into the next slot.
53
53
  buckets: [0.5, 1, 2, 3, 6, 12],
54
54
  }),
55
55
  attesterStepCallPublishAggregate: register.histogram({
56
56
  name: "vc_attester_step_call_publish_aggregate_seconds",
57
- help: "Time between AGGREGATE_DUE_BPS of slot and call publish aggregate",
57
+ help: "Time between 2/3 of slot and call publish aggregate",
58
58
  buckets: [0.5, 1, 2, 3, 6, 12],
59
59
  }),
60
60
  syncCommitteeStepCallProduceMessage: register.histogram({
61
61
  name: "vc_sync_committee_step_call_produce_message_seconds",
62
- help: "Time between SYNC_MESSAGE_DUE_BPS of slot and call produce message",
63
- // Max wait time is SYNC_MESSAGE_DUE_BPS of slot
62
+ help: "Time between 1/3 of slot and call produce message",
63
+ // Max wait time is 1 / 3 of slot
64
64
  buckets: [0.5, 1, 2, 3, 6, 12],
65
65
  }),
66
66
  syncCommitteeStepCallPublishMessage: register.histogram({
67
67
  name: "vc_sync_committee_step_call_publish_message_seconds",
68
- help: "Time between SYNC_MESSAGE_DUE_BPS of slot and call publish message",
68
+ help: "Time between 1/3 of slot and call publish message",
69
69
  buckets: [0.5, 1, 2, 3, 6, 12],
70
70
  }),
71
71
  syncCommitteeStepCallProduceAggregate: register.histogram({
72
72
  name: "vc_sync_committee_step_call_produce_aggregate_seconds",
73
- help: "Time between CONTRIBUTION_DUE_BPS of slot and call produce aggregate",
74
- // Min wait time is CONTRIBUTION_DUE_BPS of slot
73
+ help: "Time between 2/3 of slot and call produce aggregate",
74
+ // Min wait time is 2 / 3 of slot
75
75
  buckets: [0.5, 1, 2, 3, 6, 12],
76
76
  }),
77
77
  syncCommitteeStepCallPublishAggregate: register.histogram({
78
78
  name: "vc_sync_committee_step_call_publish_aggregate_seconds",
79
- help: "Time between CONTRIBUTION_DUE_BPS of slot and call publish aggregate",
79
+ help: "Time between 2/3 of slot and call publish aggregate",
80
80
  buckets: [0.5, 1, 2, 3, 6, 12],
81
81
  }),
82
82
  // Min wait time it 0. CallProduceBlock step is a bit redundant since it must be 0, but let's check
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,11 @@ const GENESIS_TIME = Buffer.from("GENESIS_TIME");
7
7
  * Store MetaData of validator.
8
8
  */
9
9
  export class MetaDataRepository {
10
- db;
11
- bucket = Bucket.validator_metaData;
12
- bucketId = getBucketNameByValue(this.bucket);
13
- dbReqOpts = { bucketId: this.bucketId };
14
10
  constructor(db) {
15
11
  this.db = db;
12
+ this.bucket = Bucket.validator_metaData;
13
+ this.bucketId = getBucketNameByValue(this.bucket);
14
+ this.dbReqOpts = { bucketId: this.bucketId };
16
15
  this.dbReqOpts = { bucketId: this.bucketId };
17
16
  }
18
17
  async getGenesisValidatorsRoot() {
@@ -1 +1 @@
1
- {"version":3,"file":"metaDataRepository.js","sourceRoot":"","sources":["../../src/repositories/metaDataRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAC,MAAM,cAAc,CAAC;AAClD,OAAO,EAAkB,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAC,MAAM,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAG3D,MAAM,uBAAuB,GAAG,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACvE,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAEjD;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAMP;IALZ,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAE5B,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,SAAS,GAAc,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC;IAElE,YAAsB,EAAuC;QAAvC,OAAE,GAAF,EAAE,CAAqC;QAC3D,IAAI,CAAC,SAAS,GAAG,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,qBAA2B;QACxD,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACpG,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9E,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,WAAsB;QACzC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACxG,CAAC;IAEO,SAAS,CAAC,GAAe;QAC/B,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;CACF"}
1
+ {"version":3,"file":"metaDataRepository.js","sourceRoot":"","sources":["../../src/repositories/metaDataRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAC,MAAM,cAAc,CAAC;AAElD,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpC,OAAO,EAAC,MAAM,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAG3D,MAAM,uBAAuB,GAAG,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACvE,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAEjD;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAM7B,YAAsB,EAAuC;QAAvC,OAAE,GAAF,EAAE,CAAqC;QALnD,WAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAE5B,aAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,cAAS,GAAc,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC;QAGhE,IAAI,CAAC,SAAS,GAAG,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,qBAA2B;QACxD,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACpG,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9E,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,WAAsB;QACzC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACxG,CAAC;IAEO,SAAS,CAAC,GAAe;QAC/B,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { isForkPostElectra } from "@lodestar/params";
1
+ import { ForkSeq } from "@lodestar/params";
2
2
  import { computeEpochAtSlot, isAggregatorFromCommitteeLength } from "@lodestar/state-transition";
3
3
  import { ssz } from "@lodestar/types";
4
4
  import { prettyBytes, sleep, toRootHex } from "@lodestar/utils";
@@ -16,15 +16,6 @@ const DEFAULT_AFTER_BLOCK_DELAY_SLOT_FRACTION = 0;
16
16
  * Service that sets up and handles validator attester duties.
17
17
  */
18
18
  export class AttestationService {
19
- logger;
20
- api;
21
- clock;
22
- validatorStore;
23
- emitter;
24
- metrics;
25
- config;
26
- opts;
27
- dutiesService;
28
19
  constructor(logger, api, clock, validatorStore, emitter, chainHeadTracker, syncingStatusTracker, metrics, config, opts) {
29
20
  this.logger = logger;
30
21
  this.api = api;
@@ -34,6 +25,50 @@ export class AttestationService {
34
25
  this.metrics = metrics;
35
26
  this.config = config;
36
27
  this.opts = opts;
28
+ this.runAttestationTasks = async (slot, signal) => {
29
+ // Fetch info first so a potential delay is absorbed by the sleep() below
30
+ const duties = this.dutiesService.getDutiesAtSlot(slot);
31
+ if (duties.length === 0) {
32
+ return;
33
+ }
34
+ if (this.opts?.distributedAggregationSelection) {
35
+ // Validator in distributed cluster only has a key share, not the full private key.
36
+ // The partial selection proofs must be exchanged for combined selection proofs by
37
+ // calling submitBeaconCommitteeSelections on the distributed validator middleware client.
38
+ // This will run in parallel to other attestation tasks but must be finished before starting
39
+ // attestation aggregation as it is required to correctly determine if validator is aggregator
40
+ // and to produce a AggregateAndProof that can be threshold aggregated by the middleware client.
41
+ this.runDistributedAggregationSelectionTasks(duties, slot, signal).catch((e) => this.logger.error("Error on attestation aggregation selection", { slot }, e));
42
+ }
43
+ // A validator should create and broadcast the attestation to the associated attestation subnet when either
44
+ // (a) the validator has received a valid block from the expected block proposer for the assigned slot or
45
+ // (b) one-third of the slot has transpired (SECONDS_PER_SLOT / 3 seconds after the start of slot) -- whichever comes first.
46
+ await Promise.race([sleep(this.clock.msToSlot(slot + 1 / 3), signal), this.emitter.waitForBlockSlot(slot)]);
47
+ this.metrics?.attesterStepCallProduceAttestation.observe(this.clock.secFromSlot(slot + 1 / 3));
48
+ // Beacon node's endpoint produceAttestationData return data is not dependent on committeeIndex.
49
+ // Produce a single attestation for all committees and submit unaggregated attestations in one go.
50
+ try {
51
+ // Produce a single attestation for all committees, and clone mutate before signing
52
+ const attestationNoCommittee = await this.produceAttestation(0, slot);
53
+ // Step 1. Mutate, and sign `Attestation` for each validator. Then publish all `Attestations` in one go
54
+ await this.signAndPublishAttestations(slot, attestationNoCommittee, duties);
55
+ // Step 2. after all attestations are submitted, make an aggregate.
56
+ // First, wait until the `aggregation_production_instant` (2/3rds of the way through the slot)
57
+ await sleep(this.clock.msToSlot(slot + 2 / 3), signal);
58
+ this.metrics?.attesterStepCallProduceAggregate.observe(this.clock.secFromSlot(slot + 2 / 3));
59
+ const dutiesByCommitteeIndex = groupAttDutiesByCommitteeIndex(duties);
60
+ const isPostElectra = this.config.getForkSeq(slot) >= ForkSeq.electra;
61
+ // Then download, sign and publish a `SignedAggregateAndProof` for each
62
+ // validator that is elected to aggregate for this `slot` and `committeeIndex`.
63
+ await Promise.all(Array.from(dutiesByCommitteeIndex.entries()).map(([index, dutiesSameCommittee]) => {
64
+ const attestationData = { ...attestationNoCommittee, index: isPostElectra ? 0 : index };
65
+ return this.produceAndPublishAggregates(attestationData, index, dutiesSameCommittee);
66
+ }));
67
+ }
68
+ catch (e) {
69
+ this.logger.error("Error on attestation routine", { slot }, e);
70
+ }
71
+ };
37
72
  this.dutiesService = new AttestationDutiesService(logger, api, clock, validatorStore, chainHeadTracker, syncingStatusTracker, metrics, {
38
73
  distributedAggregationSelection: opts?.distributedAggregationSelection,
39
74
  });
@@ -43,58 +78,6 @@ export class AttestationService {
43
78
  removeDutiesForKey(pubkey) {
44
79
  this.dutiesService.removeDutiesForKey(pubkey);
45
80
  }
46
- runAttestationTasks = async (slot, signal) => {
47
- // Fetch info first so a potential delay is absorbed by the sleep() below
48
- const duties = this.dutiesService.getDutiesAtSlot(slot);
49
- if (duties.length === 0) {
50
- return;
51
- }
52
- const fork = this.config.getForkName(slot);
53
- if (this.opts?.distributedAggregationSelection) {
54
- // Validator in distributed cluster only has a key share, not the full private key.
55
- // The partial selection proofs must be exchanged for combined selection proofs by
56
- // calling submitBeaconCommitteeSelections on the distributed validator middleware client.
57
- // This will run in parallel to other attestation tasks but must be finished before starting
58
- // attestation aggregation as it is required to correctly determine if validator is aggregator
59
- // and to produce a AggregateAndProof that can be threshold aggregated by the middleware client.
60
- this.runDistributedAggregationSelectionTasks(fork, duties, slot, signal).catch((e) => this.logger.error("Error on attestation aggregation selection", { slot }, e));
61
- }
62
- // A validator should create and broadcast the attestation to the associated attestation subnet when either
63
- // (a) the validator has received a valid block from the expected block proposer for the assigned slot or
64
- // (b) ATTESTATION_DUE_BPS of the slot has transpired -- whichever comes first.
65
- const attestationDueMs = this.config.getAttestationDueMs(fork);
66
- await Promise.race([
67
- sleep(attestationDueMs - this.clock.msFromSlot(slot), signal),
68
- this.emitter.waitForBlockSlot(slot),
69
- ]);
70
- this.metrics?.attesterStepCallProduceAttestation.observe(this.clock.secFromSlot(slot) - attestationDueMs / 1000);
71
- // Beacon node's endpoint produceAttestationData return data is not dependent on committeeIndex.
72
- // Produce a single attestation for all committees and submit unaggregated attestations in one go.
73
- try {
74
- // Produce a single attestation for all committees, and clone mutate before signing
75
- const attestationNoCommittee = await this.produceAttestation(0, slot);
76
- // Step 1. Mutate, and sign `Attestation` for each validator. Then publish all `Attestations` in one go
77
- await this.signAndPublishAttestations(fork, slot, attestationNoCommittee, duties);
78
- // Step 2. after all attestations are submitted, make an aggregate.
79
- // First, wait until the `aggregation_production_instant` (AGGREGATE_DUE_BPS of the way through the slot)
80
- const aggregateDueMs = this.config.getAggregateDueMs(fork);
81
- await sleep(aggregateDueMs - this.clock.msFromSlot(slot), signal);
82
- this.metrics?.attesterStepCallProduceAggregate.observe(this.clock.secFromSlot(slot) - aggregateDueMs / 1000);
83
- const dutiesByCommitteeIndex = groupAttDutiesByCommitteeIndex(duties);
84
- // Then download, sign and publish a `SignedAggregateAndProof` for each
85
- // validator that is elected to aggregate for this `slot` and `committeeIndex`.
86
- await Promise.all(Array.from(dutiesByCommitteeIndex.entries()).map(([index, dutiesSameCommittee]) => {
87
- const attestationData = {
88
- ...attestationNoCommittee,
89
- index: isForkPostElectra(fork) ? 0 : index,
90
- };
91
- return this.produceAndPublishAggregates(fork, attestationData, index, dutiesSameCommittee);
92
- }));
93
- }
94
- catch (e) {
95
- this.logger.error("Error on attestation routine", { slot }, e);
96
- }
97
- };
98
81
  /**
99
82
  * Performs the first step of the attesting process: downloading one `Attestation` object.
100
83
  * Beacon node's endpoint produceAttestationData return data is not dependent on committeeIndex.
@@ -109,12 +92,13 @@ export class AttestationService {
109
92
  * Only one `Attestation` is downloaded from the BN. It is then signed by each
110
93
  * validator and the list of individually-signed `Attestation` objects is returned to the BN.
111
94
  */
112
- async signAndPublishAttestations(fork, slot, attestationNoCommittee, duties) {
95
+ async signAndPublishAttestations(slot, attestationNoCommittee, duties) {
113
96
  const signedAttestations = [];
114
97
  const headRootHex = toRootHex(attestationNoCommittee.beaconBlockRoot);
115
98
  const currentEpoch = computeEpochAtSlot(slot);
99
+ const isPostElectra = this.config.getForkSeq(slot) >= ForkSeq.electra;
116
100
  await Promise.all(duties.map(async ({ duty }) => {
117
- const index = isForkPostElectra(fork) ? 0 : duty.committeeIndex;
101
+ const index = isPostElectra ? 0 : duty.committeeIndex;
118
102
  const attestationData = { ...attestationNoCommittee, index };
119
103
  const logCtxValidator = { slot, index, head: headRootHex, validatorIndex: duty.validatorIndex };
120
104
  try {
@@ -126,19 +110,18 @@ export class AttestationService {
126
110
  this.logger.error("Error signing attestation", logCtxValidator, e);
127
111
  }
128
112
  }));
129
- // signAndPublishAttestations() may be called before the ATTESTATION_DUE_BPS cutoff time if the block was received early.
113
+ // signAndPublishAttestations() may be called before the 1/3 cutoff time if the block was received early.
130
114
  // If we produced the block or we got the block sooner than our peers, our attestations can be dropped because
131
115
  // they reach our peers before the block. To prevent that, we wait 2 extra seconds AFTER block arrival, but
132
- // never beyond the ATTESTATION_DUE_BPS cutoff time.
116
+ // never beyond the 1/3 cutoff time.
133
117
  // https://github.com/status-im/nimbus-eth2/blob/7b64c1dce4392731a4a59ee3a36caef2e0a8357a/beacon_chain/validators/validator_duties.nim#L1123
134
- const attestationDueMs = this.config.getAttestationDueMs(fork);
135
- const msToCutoffTime = attestationDueMs - this.clock.msFromSlot(slot);
136
- // submitting attestations asap to avoid busy time at around ATTESTATION_DUE_BPS of slot
118
+ const msToOneThirdSlot = this.clock.msToSlot(slot + 1 / 3);
119
+ // submitting attestations asap to avoid busy time at around 1/3 of slot
137
120
  const afterBlockDelayMs = 1000 *
138
121
  this.clock.secondsPerSlot *
139
122
  (this.opts?.afterBlockDelaySlotFraction ?? DEFAULT_AFTER_BLOCK_DELAY_SLOT_FRACTION);
140
- await sleep(Math.min(msToCutoffTime, afterBlockDelayMs));
141
- this.metrics?.attesterStepCallPublishAttestation.observe(this.clock.secFromSlot(slot) - attestationDueMs / 1000);
123
+ await sleep(Math.min(msToOneThirdSlot, afterBlockDelayMs));
124
+ this.metrics?.attesterStepCallPublishAttestation.observe(this.clock.secFromSlot(slot + 1 / 3));
142
125
  // Step 2. Publish all `Attestations` in one go
143
126
  try {
144
127
  (await this.api.beacon.submitPoolAttestationsV2({ signedAttestations })).assertOk();
@@ -165,7 +148,7 @@ export class AttestationService {
165
148
  * by each validator and the list of individually-signed `SignedAggregateAndProof` objects is
166
149
  * returned to the BN.
167
150
  */
168
- async produceAndPublishAggregates(fork, attestation, committeeIndex, duties) {
151
+ async produceAndPublishAggregates(attestation, committeeIndex, duties) {
169
152
  const logCtx = { slot: attestation.slot, index: committeeIndex };
170
153
  // No validator is aggregator, skip
171
154
  if (duties.every(({ selectionProof }) => selectionProof === null)) {
@@ -193,7 +176,7 @@ export class AttestationService {
193
176
  this.logger.error("Error signing aggregateAndProofs", logCtxValidator, e);
194
177
  }
195
178
  }));
196
- this.metrics?.attesterStepCallPublishAggregate.observe(this.clock.secFromSlot(attestation.slot) - this.config.getAggregateDueMs(fork) / 1000);
179
+ this.metrics?.attesterStepCallPublishAggregate.observe(this.clock.secFromSlot(attestation.slot + 2 / 3));
197
180
  if (signedAggregateAndProofs.length > 0) {
198
181
  try {
199
182
  (await this.api.validator.publishAggregateAndProofsV2({ signedAggregateAndProofs })).assertOk();
@@ -219,7 +202,7 @@ export class AttestationService {
219
202
  *
220
203
  * See https://docs.google.com/document/d/1q9jOTPcYQa-3L8luRvQJ-M0eegtba4Nmon3dpO79TMk/mobilebasic
221
204
  */
222
- async runDistributedAggregationSelectionTasks(fork, duties, slot, signal) {
205
+ async runDistributedAggregationSelectionTasks(duties, slot, signal) {
223
206
  const partialSelections = duties.map(({ duty, partialSelectionProof }) => ({
224
207
  validatorIndex: duty.validatorIndex,
225
208
  slot,
@@ -228,15 +211,15 @@ export class AttestationService {
228
211
  this.logger.debug("Submitting partial beacon committee selection proofs", { slot, count: partialSelections.length });
229
212
  const res = await Promise.race([
230
213
  this.api.validator.submitBeaconCommitteeSelections({ selections: partialSelections }),
231
- // Exit attestation aggregation flow if there is no response after ATTESTATION_DUE_BPS of the slot as
214
+ // Exit attestation aggregation flow if there is no response after 1/3 of slot as
232
215
  // beacon node would likely not have enough time to prepare an aggregate attestation.
233
216
  // Note that the aggregations flow is not explicitly exited but rather will be skipped
234
217
  // due to the fact that calculation of `is_aggregator` in AttestationDutiesService is not done
235
218
  // and selectionProof is set to null, meaning no validator will be considered an aggregator.
236
- sleep(this.config.getAttestationDueMs(fork) - this.clock.msFromSlot(slot), signal),
219
+ sleep(this.clock.msToSlot(slot + 1 / 3), signal),
237
220
  ]);
238
221
  if (!res) {
239
- throw new Error("Failed to receive combined selection proofs before ATTESTATION_DUE_BPS of the slot");
222
+ throw new Error("Failed to receive combined selection proofs before 1/3 of slot");
240
223
  }
241
224
  const combinedSelections = res.value();
242
225
  this.logger.debug("Received combined beacon committee selection proofs", { slot, count: combinedSelections.length });
@@ -1 +1 @@
1
- {"version":3,"file":"attestation.js","sourceRoot":"","sources":["../../src/services/attestation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attestation.js","sourceRoot":"","sources":["../../src/services/attestation.ts"],"names":[],"mappings":"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"}