@lodestar/beacon-node 1.46.0-dev.e00bf67333 → 1.46.0-dev.fcf0b94a96

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.
@@ -1,4 +1,4 @@
1
- import { GENESIS_SLOT, MIN_SEED_LOOKAHEAD, SLOTS_PER_EPOCH } from "@lodestar/params";
1
+ import { GENESIS_EPOCH, GENESIS_SLOT, MIN_SEED_LOOKAHEAD, SLOTS_PER_EPOCH } from "@lodestar/params";
2
2
  import { computeEpochAtSlot, computeStartSlotAtEpoch, createSingleSignatureSetFromComponents, getProposerPreferencesSigningRoot, } from "@lodestar/state-transition";
3
3
  import { toRootHex } from "@lodestar/utils";
4
4
  import { GossipAction, ProposerPreferencesError, ProposerPreferencesErrorCode } from "../errors/index.js";
@@ -11,9 +11,10 @@ export async function validateGossipProposerPreferences(chain, signedProposerPre
11
11
  const { proposalSlot, validatorIndex, dependentRoot } = preferences;
12
12
  const dependentRootHex = toRootHex(dependentRoot);
13
13
  const proposalEpoch = computeEpochAtSlot(proposalSlot);
14
- // [IGNORE] `preferences.proposal_slot` is within the proposer lookahead.
15
- const currentEpoch = chain.clock.currentEpoch;
16
- if (proposalEpoch < currentEpoch || proposalEpoch > currentEpoch + MIN_SEED_LOOKAHEAD) {
14
+ // [IGNORE] `preferences.proposal_slot` is within the proposer lookahead,
15
+ // allowing for `MAXIMUM_GOSSIP_CLOCK_DISPARITY`.
16
+ const currentEpoch = computeEpochAtSlot(chain.clock.currentSlotWithGossipDisparity);
17
+ if (proposalEpoch > currentEpoch + MIN_SEED_LOOKAHEAD) {
17
18
  throw new ProposerPreferencesError(GossipAction.IGNORE, {
18
19
  code: ProposerPreferencesErrorCode.INVALID_EPOCH,
19
20
  proposalSlot,
@@ -22,12 +23,11 @@ export async function validateGossipProposerPreferences(chain, signedProposerPre
22
23
  }
23
24
  // [IGNORE] `preferences.proposal_slot` has not already passed, i.e. `proposal_slot > current_slot`,
24
25
  // allowing for `MAXIMUM_GOSSIP_CLOCK_DISPARITY`.
25
- const currentSlot = chain.clock.currentSlotWithGossipDisparity;
26
- if (proposalSlot <= currentSlot) {
26
+ if (chain.clock.msFromSlot(proposalSlot) > chain.config.MAXIMUM_GOSSIP_CLOCK_DISPARITY) {
27
27
  throw new ProposerPreferencesError(GossipAction.IGNORE, {
28
28
  code: ProposerPreferencesErrorCode.PROPOSAL_SLOT_PASSED,
29
29
  proposalSlot,
30
- currentSlot,
30
+ currentSlot: chain.clock.currentSlot,
31
31
  });
32
32
  }
33
33
  // [IGNORE] The block with root `dependent_root` has been seen by the node.
@@ -39,7 +39,7 @@ export async function validateGossipProposerPreferences(chain, signedProposerPre
39
39
  dependentRoot: dependentRootHex,
40
40
  });
41
41
  }
42
- const dependentEpoch = proposalEpoch - MIN_SEED_LOOKAHEAD;
42
+ const dependentEpoch = Math.max(GENESIS_EPOCH, proposalEpoch - MIN_SEED_LOOKAHEAD);
43
43
  const dependentRootSlot = getDependentRootSlot(dependentEpoch);
44
44
  // [REJECT] The slot of the block with root `preferences.dependent_root` is strictly less than
45
45
  // `compute_start_slot_at_epoch(compute_epoch_at_slot(preferences.proposal_slot) - MIN_SEED_LOOKAHEAD)`.
@@ -1 +1 @@
1
- {"version":3,"file":"proposerPreferences.js","sourceRoot":"","sources":["../../../src/chain/validation/proposerPreferences.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proposerPreferences.js","sourceRoot":"","sources":["../../../src/chain/validation/proposerPreferences.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAClG,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,sCAAsC,EACtC,iCAAiC,GAClC,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAE,wBAAwB,EAAE,4BAA4B,EAAC,MAAM,oBAAoB,CAAC;AAGxG;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,KAAmB,EACnB,yBAA0D,EAC3C;IACf,MAAM,WAAW,GAAG,yBAAyB,CAAC,OAAO,CAAC;IACtD,MAAM,EAAC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAC,GAAG,WAAW,CAAC;IAClE,MAAM,gBAAgB,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAEvD,yEAAyE;IACzE,iDAAiD;IACjD,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACpF,IAAI,aAAa,GAAG,YAAY,GAAG,kBAAkB,EAAE,CAAC;QACtD,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,aAAa;YAChD,YAAY;YACZ,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED,oGAAoG;IACpG,iDAAiD;IACjD,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,8BAA8B,EAAE,CAAC;QACvF,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,oBAAoB;YACvD,YAAY;YACZ,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW;SACrC,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;IACnF,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAC5B,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,sBAAsB;YACzD,YAAY;YACZ,aAAa,EAAE,gBAAgB;SAChC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,GAAG,kBAAkB,CAAC,CAAC;IACnF,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAE/D,8FAA8F;IAC9F,wGAAwG;IACxG,IAAI,cAAc,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC;QAC5C,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,2BAA2B;YAC9D,aAAa,EAAE,gBAAgB;YAC/B,kBAAkB,EAAE,cAAc,CAAC,IAAI;YACvC,iBAAiB;YACjB,cAAc;SACf,CAAC,CAAC;IACL,CAAC;IAED,+FAA+F;IAC/F,4FAA4F;IAC5F,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,sBAAsB;YACzD,aAAa,EAAE,gBAAgB;YAC/B,kBAAkB,EAAE,cAAc,CAAC,IAAI;YACvC,cAAc;SACf,CAAC,CAAC;IACL,CAAC;IAED,wFAAwF;IACxF,yFAAyF;IACzF,wFAAwF;IACxF,wEAAwE;IACxE,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IACvC,IAAI,SAAS,GAA4B,IAAI,CAAC;IAC9C,IAAI,SAAS,CAAC,KAAK,KAAK,aAAa,IAAI,SAAS,CAAC,mBAAmB,KAAK,gBAAgB,EAAE,CAAC;QAC5F,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC;IACzC,CAAC;SAAM,IAAI,SAAS,CAAC,KAAK,KAAK,cAAc,IAAI,SAAS,CAAC,gBAAgB,KAAK,gBAAgB,EAAE,CAAC;QACjG,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,iEAAiE;QACjE,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,EAAC,CAAC,CAAC;QAC/G,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;YAC7B,iFAAiF;YACjF,oDAAoD;YACpD,SAAS,GAAG,eAAe,CAAC,aAAa,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,sBAAsB;YACzD,YAAY;YACZ,aAAa,EAAE,gBAAgB;SAChC,CAAC,CAAC;IACL,CAAC;IAED,sEAAsE;IACtE,IAAI,SAAS,CAAC,YAAY,GAAG,eAAe,CAAC,KAAK,cAAc,EAAE,CAAC;QACjE,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,gBAAgB;YACnD,YAAY;YACZ,cAAc;YACd,aAAa,EAAE,gBAAgB;SAChC,CAAC,CAAC;IACL,CAAC;IAED,qFAAqF;IACrF,IAAI,KAAK,CAAC,uBAAuB,CAAC,OAAO,CAAC,YAAY,EAAE,gBAAgB,EAAE,cAAc,CAAC,EAAE,CAAC;QAC1F,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,aAAa;YAChD,YAAY;YACZ,cAAc;YACd,aAAa,EAAE,gBAAgB;SAChC,CAAC,CAAC;IACL,CAAC;IAED,wGAAwG;IACxG,MAAM,YAAY,GAAG,sCAAsC,CACzD,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,EAC5C,iCAAiC,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,EAC5D,yBAAyB,CAAC,SAAS,CACpC,CAAC;IAEF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,iBAAiB;YACpD,YAAY;YACZ,cAAc;SACf,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,IAAI,KAAK,CAAC,uBAAuB,CAAC,OAAO,CAAC,YAAY,EAAE,gBAAgB,EAAE,cAAc,CAAC,EAAE,CAAC;QAC1F,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,aAAa;YAChD,YAAY;YACZ,cAAc;YACd,aAAa,EAAE,gBAAgB;SAChC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAAA,CAC9D;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAuB,EAAE,cAA0B,EAAE,KAAY,EAAW;IAC/G,MAAM,cAAc,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,cAAc,CAAC,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,6BAA6B,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QACvF,IAAI,KAAK,CAAC,IAAI,IAAI,cAAc,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAC,SAAS,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC;AAAA,CAC9D;AAED,uFAAuF;AACvF,SAAS,oBAAoB,CAAC,KAAY,EAAQ;IAChD,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,uBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,CACnE"}
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.46.0-dev.e00bf67333",
14
+ "version": "1.46.0-dev.fcf0b94a96",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -126,17 +126,17 @@
126
126
  "@libp2p/peer-id": "^6.0.4",
127
127
  "@libp2p/prometheus-metrics": "^5.0.14",
128
128
  "@libp2p/tcp": "^11.0.13",
129
- "@lodestar/api": "^1.46.0-dev.e00bf67333",
130
- "@lodestar/config": "^1.46.0-dev.e00bf67333",
131
- "@lodestar/db": "^1.46.0-dev.e00bf67333",
132
- "@lodestar/fork-choice": "^1.46.0-dev.e00bf67333",
133
- "@lodestar/logger": "^1.46.0-dev.e00bf67333",
134
- "@lodestar/params": "^1.46.0-dev.e00bf67333",
135
- "@lodestar/reqresp": "^1.46.0-dev.e00bf67333",
136
- "@lodestar/state-transition": "^1.46.0-dev.e00bf67333",
137
- "@lodestar/types": "^1.46.0-dev.e00bf67333",
138
- "@lodestar/utils": "^1.46.0-dev.e00bf67333",
139
- "@lodestar/validator": "^1.46.0-dev.e00bf67333",
129
+ "@lodestar/api": "^1.46.0-dev.fcf0b94a96",
130
+ "@lodestar/config": "^1.46.0-dev.fcf0b94a96",
131
+ "@lodestar/db": "^1.46.0-dev.fcf0b94a96",
132
+ "@lodestar/fork-choice": "^1.46.0-dev.fcf0b94a96",
133
+ "@lodestar/logger": "^1.46.0-dev.fcf0b94a96",
134
+ "@lodestar/params": "^1.46.0-dev.fcf0b94a96",
135
+ "@lodestar/reqresp": "^1.46.0-dev.fcf0b94a96",
136
+ "@lodestar/state-transition": "^1.46.0-dev.fcf0b94a96",
137
+ "@lodestar/types": "^1.46.0-dev.fcf0b94a96",
138
+ "@lodestar/utils": "^1.46.0-dev.fcf0b94a96",
139
+ "@lodestar/validator": "^1.46.0-dev.fcf0b94a96",
140
140
  "@multiformats/multiaddr": "^13.0.1",
141
141
  "datastore-core": "^11.0.2",
142
142
  "datastore-level": "^12.0.2",
@@ -158,7 +158,7 @@
158
158
  "@libp2p/interface-internal": "^3.0.13",
159
159
  "@libp2p/logger": "^6.2.2",
160
160
  "@libp2p/utils": "^7.0.13",
161
- "@lodestar/spec-test-util": "^1.46.0-dev.e00bf67333",
161
+ "@lodestar/spec-test-util": "^1.46.0-dev.fcf0b94a96",
162
162
  "@types/js-yaml": "^4.0.5",
163
163
  "@types/qs": "^6.9.7",
164
164
  "@types/tmp": "^0.2.3",
@@ -175,5 +175,5 @@
175
175
  "beacon",
176
176
  "blockchain"
177
177
  ],
178
- "gitHead": "c03abfa3c4febb9e3a50618806c41259addbdbbb"
178
+ "gitHead": "19226b8d273400d2ef9155f5e9738aa78ca69c8c"
179
179
  }
@@ -1,5 +1,5 @@
1
1
  import {IForkChoice, ProtoBlock} from "@lodestar/fork-choice";
2
- import {GENESIS_SLOT, MIN_SEED_LOOKAHEAD, SLOTS_PER_EPOCH} from "@lodestar/params";
2
+ import {GENESIS_EPOCH, GENESIS_SLOT, MIN_SEED_LOOKAHEAD, SLOTS_PER_EPOCH} from "@lodestar/params";
3
3
  import {
4
4
  computeEpochAtSlot,
5
5
  computeStartSlotAtEpoch,
@@ -24,9 +24,10 @@ export async function validateGossipProposerPreferences(
24
24
  const dependentRootHex = toRootHex(dependentRoot);
25
25
  const proposalEpoch = computeEpochAtSlot(proposalSlot);
26
26
 
27
- // [IGNORE] `preferences.proposal_slot` is within the proposer lookahead.
28
- const currentEpoch = chain.clock.currentEpoch;
29
- if (proposalEpoch < currentEpoch || proposalEpoch > currentEpoch + MIN_SEED_LOOKAHEAD) {
27
+ // [IGNORE] `preferences.proposal_slot` is within the proposer lookahead,
28
+ // allowing for `MAXIMUM_GOSSIP_CLOCK_DISPARITY`.
29
+ const currentEpoch = computeEpochAtSlot(chain.clock.currentSlotWithGossipDisparity);
30
+ if (proposalEpoch > currentEpoch + MIN_SEED_LOOKAHEAD) {
30
31
  throw new ProposerPreferencesError(GossipAction.IGNORE, {
31
32
  code: ProposerPreferencesErrorCode.INVALID_EPOCH,
32
33
  proposalSlot,
@@ -36,12 +37,11 @@ export async function validateGossipProposerPreferences(
36
37
 
37
38
  // [IGNORE] `preferences.proposal_slot` has not already passed, i.e. `proposal_slot > current_slot`,
38
39
  // allowing for `MAXIMUM_GOSSIP_CLOCK_DISPARITY`.
39
- const currentSlot = chain.clock.currentSlotWithGossipDisparity;
40
- if (proposalSlot <= currentSlot) {
40
+ if (chain.clock.msFromSlot(proposalSlot) > chain.config.MAXIMUM_GOSSIP_CLOCK_DISPARITY) {
41
41
  throw new ProposerPreferencesError(GossipAction.IGNORE, {
42
42
  code: ProposerPreferencesErrorCode.PROPOSAL_SLOT_PASSED,
43
43
  proposalSlot,
44
- currentSlot,
44
+ currentSlot: chain.clock.currentSlot,
45
45
  });
46
46
  }
47
47
 
@@ -55,7 +55,7 @@ export async function validateGossipProposerPreferences(
55
55
  });
56
56
  }
57
57
 
58
- const dependentEpoch = proposalEpoch - MIN_SEED_LOOKAHEAD;
58
+ const dependentEpoch = Math.max(GENESIS_EPOCH, proposalEpoch - MIN_SEED_LOOKAHEAD);
59
59
  const dependentRootSlot = getDependentRootSlot(dependentEpoch);
60
60
 
61
61
  // [REJECT] The slot of the block with root `preferences.dependent_root` is strictly less than