@lodestar/beacon-node 1.49.0-dev.cd9f3245c9 → 1.49.0-dev.ee7c2aa8ee

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.
@@ -5,6 +5,7 @@ export declare enum PayloadAttestationErrorCode {
5
5
  PAYLOAD_ATTESTATION_ALREADY_KNOWN = "PAYLOAD_ATTESTATION_ERROR_PAYLOAD_ATTESTATION_ALREADY_KNOWN",
6
6
  UNKNOWN_BLOCK_ROOT = "PAYLOAD_ATTESTATION_ERROR_UNKNOWN_BLOCK_ROOT",
7
7
  INVALID_BLOCK_SLOT = "PAYLOAD_ATTESTATION_ERROR_INVALID_BLOCK_SLOT",
8
+ PRE_GLOAS_SLOT = "PAYLOAD_ATTESTATION_ERROR_PRE_GLOAS_SLOT",
8
9
  INVALID_BLOCK = "PAYLOAD_ATTESTATION_ERROR_INVALID_BLOCK",
9
10
  INVALID_ATTESTER = "PAYLOAD_ATTESTATION_ERROR_INVALID_ATTESTER",
10
11
  INVALID_SIGNATURE = "PAYLOAD_ATTESTATION_ERROR_INVALID_SIGNATURE"
@@ -26,6 +27,9 @@ export type PayloadAttestationErrorType = {
26
27
  blockRoot: RootHex;
27
28
  blockSlot: Slot;
28
29
  slot: Slot;
30
+ } | {
31
+ code: PayloadAttestationErrorCode.PRE_GLOAS_SLOT;
32
+ slot: Slot;
29
33
  } | {
30
34
  code: PayloadAttestationErrorCode.INVALID_BLOCK;
31
35
  blockRoot: RootHex;
@@ -1 +1 @@
1
- {"version":3,"file":"payloadAttestation.d.ts","sourceRoot":"","sources":["../../../src/chain/errors/payloadAttestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAExD,oBAAY,2BAA2B;IACrC,gBAAgB,+CAA+C;IAC/D,iCAAiC,gEAAgE;IACjG,kBAAkB,iDAAiD;IACnE,kBAAkB,iDAAiD;IACnE,aAAa,4CAA4C;IACzD,gBAAgB,+CAA+C;IAC/D,iBAAiB,gDAAgD;CAClE;AACD,MAAM,MAAM,2BAA2B,GACnC;IAAC,IAAI,EAAE,2BAA2B,CAAC,gBAAgB,CAAC;IAAC,WAAW,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAC,GACnF;IACE,IAAI,EAAE,2BAA2B,CAAC,iCAAiC,CAAC;IACpE,cAAc,EAAE,cAAc,CAAC;IAC/B,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;CACpB,GACD;IAAC,IAAI,EAAE,2BAA2B,CAAC,kBAAkB,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAC,GAC1E;IAAC,IAAI,EAAE,2BAA2B,CAAC,kBAAkB,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAC,GACvG;IAAC,IAAI,EAAE,2BAA2B,CAAC,aAAa,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAC,GACrE;IAAC,IAAI,EAAE,2BAA2B,CAAC,gBAAgB,CAAC;IAAC,aAAa,EAAE,cAAc,CAAA;CAAC,GACnF;IAAC,IAAI,EAAE,2BAA2B,CAAC,iBAAiB,CAAA;CAAC,CAAC;AAE1D,qBAAa,uBAAwB,SAAQ,iBAAiB,CAAC,2BAA2B,CAAC;CAAG"}
1
+ {"version":3,"file":"payloadAttestation.d.ts","sourceRoot":"","sources":["../../../src/chain/errors/payloadAttestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAExD,oBAAY,2BAA2B;IACrC,gBAAgB,+CAA+C;IAC/D,iCAAiC,gEAAgE;IACjG,kBAAkB,iDAAiD;IACnE,kBAAkB,iDAAiD;IACnE,cAAc,6CAA6C;IAC3D,aAAa,4CAA4C;IACzD,gBAAgB,+CAA+C;IAC/D,iBAAiB,gDAAgD;CAClE;AACD,MAAM,MAAM,2BAA2B,GACnC;IAAC,IAAI,EAAE,2BAA2B,CAAC,gBAAgB,CAAC;IAAC,WAAW,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAC,GACnF;IACE,IAAI,EAAE,2BAA2B,CAAC,iCAAiC,CAAC;IACpE,cAAc,EAAE,cAAc,CAAC;IAC/B,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;CACpB,GACD;IAAC,IAAI,EAAE,2BAA2B,CAAC,kBAAkB,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAC,GAC1E;IAAC,IAAI,EAAE,2BAA2B,CAAC,kBAAkB,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAC,GACvG;IAAC,IAAI,EAAE,2BAA2B,CAAC,cAAc,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAC,GAC9D;IAAC,IAAI,EAAE,2BAA2B,CAAC,aAAa,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAC,GACrE;IAAC,IAAI,EAAE,2BAA2B,CAAC,gBAAgB,CAAC;IAAC,aAAa,EAAE,cAAc,CAAA;CAAC,GACnF;IAAC,IAAI,EAAE,2BAA2B,CAAC,iBAAiB,CAAA;CAAC,CAAC;AAE1D,qBAAa,uBAAwB,SAAQ,iBAAiB,CAAC,2BAA2B,CAAC;CAAG"}
@@ -5,6 +5,7 @@ export var PayloadAttestationErrorCode;
5
5
  PayloadAttestationErrorCode["PAYLOAD_ATTESTATION_ALREADY_KNOWN"] = "PAYLOAD_ATTESTATION_ERROR_PAYLOAD_ATTESTATION_ALREADY_KNOWN";
6
6
  PayloadAttestationErrorCode["UNKNOWN_BLOCK_ROOT"] = "PAYLOAD_ATTESTATION_ERROR_UNKNOWN_BLOCK_ROOT";
7
7
  PayloadAttestationErrorCode["INVALID_BLOCK_SLOT"] = "PAYLOAD_ATTESTATION_ERROR_INVALID_BLOCK_SLOT";
8
+ PayloadAttestationErrorCode["PRE_GLOAS_SLOT"] = "PAYLOAD_ATTESTATION_ERROR_PRE_GLOAS_SLOT";
8
9
  PayloadAttestationErrorCode["INVALID_BLOCK"] = "PAYLOAD_ATTESTATION_ERROR_INVALID_BLOCK";
9
10
  PayloadAttestationErrorCode["INVALID_ATTESTER"] = "PAYLOAD_ATTESTATION_ERROR_INVALID_ATTESTER";
10
11
  PayloadAttestationErrorCode["INVALID_SIGNATURE"] = "PAYLOAD_ATTESTATION_ERROR_INVALID_SIGNATURE";
@@ -1 +1 @@
1
- {"version":3,"file":"payloadAttestation.js","sourceRoot":"","sources":["../../../src/chain/errors/payloadAttestation.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAExD,MAAM,CAAN,IAAY,2BAQX;AARD,WAAY,2BAA2B;IACrC,8FAA+D,CAAA;IAC/D,gIAAiG,CAAA;IACjG,kGAAmE,CAAA;IACnE,kGAAmE,CAAA;IACnE,wFAAyD,CAAA;IACzD,8FAA+D,CAAA;IAC/D,gGAAiE,CAAA;AACnE,CAAC,EARW,2BAA2B,KAA3B,2BAA2B,QAQtC;AAeD,MAAM,OAAO,uBAAwB,SAAQ,iBAA8C;CAAG"}
1
+ {"version":3,"file":"payloadAttestation.js","sourceRoot":"","sources":["../../../src/chain/errors/payloadAttestation.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAExD,MAAM,CAAN,IAAY,2BASX;AATD,WAAY,2BAA2B;IACrC,8FAA+D,CAAA;IAC/D,gIAAiG,CAAA;IACjG,kGAAmE,CAAA;IACnE,kGAAmE,CAAA;IACnE,0FAA2D,CAAA;IAC3D,wFAAyD,CAAA;IACzD,8FAA+D,CAAA;IAC/D,gGAAiE,CAAA;AACnE,CAAC,EATW,2BAA2B,KAA3B,2BAA2B,QAStC;AAgBD,MAAM,OAAO,uBAAwB,SAAQ,iBAA8C;CAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"payloadAttestationMessage.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/payloadAttestationMessage.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,OAAO,EAAE,KAAK,EAAM,MAAM,iBAAiB,CAAC;AAGpD,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAEzC,MAAM,MAAM,kCAAkC,GAAG;IAC/C,cAAc,EAAE,OAAO,CAAC;IACxB,yBAAyB,EAAE,MAAM,EAAE,CAAC;CACrC,CAAC;AAEF,wBAAsB,oCAAoC,CACxD,KAAK,EAAE,YAAY,EACnB,yBAAyB,EAAE,KAAK,CAAC,yBAAyB,GACzD,OAAO,CAAC,kCAAkC,CAAC,CAG7C;AAED,wBAAsB,uCAAuC,CAC3D,KAAK,EAAE,YAAY,EACnB,yBAAyB,EAAE,KAAK,CAAC,yBAAyB,GACzD,OAAO,CAAC,kCAAkC,CAAC,CAE7C"}
1
+ {"version":3,"file":"payloadAttestationMessage.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/payloadAttestationMessage.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,OAAO,EAAE,KAAK,EAAM,MAAM,iBAAiB,CAAC;AAGpD,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAEzC,MAAM,MAAM,kCAAkC,GAAG;IAC/C,cAAc,EAAE,OAAO,CAAC;IACxB,yBAAyB,EAAE,MAAM,EAAE,CAAC;CACrC,CAAC;AAEF,wBAAsB,oCAAoC,CACxD,KAAK,EAAE,YAAY,EACnB,yBAAyB,EAAE,KAAK,CAAC,yBAAyB,GACzD,OAAO,CAAC,kCAAkC,CAAC,CAG7C;AAED,wBAAsB,uCAAuC,CAC3D,KAAK,EAAE,YAAY,EACnB,yBAAyB,EAAE,KAAK,CAAC,yBAAyB,GACzD,OAAO,CAAC,kCAAkC,CAAC,CAE7C"}
@@ -1,4 +1,4 @@
1
- import { createIndexedSignatureSetFromComponents, getPayloadAttestationDataSigningRoot, isStatePostGloas, } from "@lodestar/state-transition";
1
+ import { computeEpochAtSlot, createIndexedSignatureSetFromComponents, getPayloadAttestationDataSigningRoot, isStatePostGloas, } from "@lodestar/state-transition";
2
2
  import { ssz } from "@lodestar/types";
3
3
  import { toRootHex } from "@lodestar/utils";
4
4
  import { GossipAction, PayloadAttestationError, PayloadAttestationErrorCode } from "../errors/index.js";
@@ -11,6 +11,13 @@ export async function validateGossipPayloadAttestationMessage(chain, payloadAtte
11
11
  }
12
12
  async function validatePayloadAttestationMessage(chain, payloadAttestationMessage, prioritizeBls = false) {
13
13
  const { data, validatorIndex } = payloadAttestationMessage;
14
+ // [REJECT] The payload attestation slot is at or after the Gloas fork.
15
+ if (computeEpochAtSlot(data.slot) < chain.config.GLOAS_FORK_EPOCH) {
16
+ throw new PayloadAttestationError(GossipAction.REJECT, {
17
+ code: PayloadAttestationErrorCode.PRE_GLOAS_SLOT,
18
+ slot: data.slot,
19
+ });
20
+ }
14
21
  // [IGNORE] The message's slot is for the current slot (with a `MAXIMUM_GOSSIP_CLOCK_DISPARITY` allowance), i.e. `data.slot == current_slot`.
15
22
  if (!chain.clock.isCurrentSlotGivenGossipDisparity(data.slot)) {
16
23
  throw new PayloadAttestationError(GossipAction.IGNORE, {
@@ -1 +1 @@
1
- {"version":3,"file":"payloadAttestationMessage.js","sourceRoot":"","sources":["../../../src/chain/validation/payloadAttestationMessage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payloadAttestationMessage.js","sourceRoot":"","sources":["../../../src/chain/validation/payloadAttestationMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,uCAAuC,EACvC,oCAAoC,EACpC,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAiB,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAE,uBAAuB,EAAE,2BAA2B,EAAC,MAAM,oBAAoB,CAAC;AAQtG,MAAM,CAAC,KAAK,UAAU,oCAAoC,CACxD,KAAmB,EACnB,yBAA0D;IAE1D,MAAM,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,iCAAiC,CAAC,KAAK,EAAE,yBAAyB,EAAE,aAAa,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uCAAuC,CAC3D,KAAmB,EACnB,yBAA0D;IAE1D,OAAO,iCAAiC,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;AAC7E,CAAC;AAED,KAAK,UAAU,iCAAiC,CAC9C,KAAmB,EACnB,yBAA0D,EAC1D,aAAa,GAAG,KAAK;IAErB,MAAM,EAAC,IAAI,EAAE,cAAc,EAAC,GAAG,yBAAyB,CAAC;IAEzD,uEAAuE;IACvE,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAClE,MAAM,IAAI,uBAAuB,CAAC,YAAY,CAAC,MAAM,EAAE;YACrD,IAAI,EAAE,2BAA2B,CAAC,cAAc;YAChD,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,6IAA6I;IAC7I,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,uBAAuB,CAAC,YAAY,CAAC,MAAM,EAAE;YACrD,IAAI,EAAE,2BAA2B,CAAC,gBAAgB;YAClD,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW;YACpC,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,iFAAiF;IACjF,4FAA4F;IAC5F,IAAI,KAAK,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,uBAAuB,CAAC,YAAY,CAAC,MAAM,EAAE;YACrD,IAAI,EAAE,2BAA2B,CAAC,iCAAiC;YACnE,cAAc;YACd,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,+EAA+E;IAC/E,mFAAmF;IACnF,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC3E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,uBAAuB,CAAC,YAAY,CAAC,MAAM,EAAE;YACrD,IAAI,EAAE,2BAA2B,CAAC,kBAAkB;YACpD,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,oFAAoF;IACpF,gDAAgD;IAChD,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,uBAAuB,CAAC,YAAY,CAAC,MAAM,EAAE;YACrD,IAAI,EAAE,2BAA2B,CAAC,kBAAkB;YACpD,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;YAC1C,SAAS,EAAE,KAAK,CAAC,IAAI;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,yFAAyF;IACzF,2DAA2D;IAE3D,8FAA8F;IAC9F,8BAA8B;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,uBAAuB,CAAC,YAAY,CAAC,MAAM,EAAE;YACrD,IAAI,EAAE,2BAA2B,CAAC,kBAAkB;YACpD,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,sEAAsE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1G,CAAC;IAED,4EAA4E;IAC5E,8EAA8E;IAC9E,gFAAgF;IAChF,gFAAgF;IAChF,6EAA6E;IAC7E,MAAM,yBAAyB,GAAG,KAAK,CAAC,sCAAsC,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1G,IAAI,yBAAyB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,uBAAuB,CAAC,YAAY,CAAC,MAAM,EAAE;YACrD,IAAI,EAAE,2BAA2B,CAAC,gBAAgB;YAClD,aAAa,EAAE,cAAc;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,wGAAwG;IACxG,MAAM,YAAY,GAAG,uCAAuC,CAC1D,cAAc,EACd,oCAAoC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,EACxD,yBAAyB,CAAC,SAAS,CACpC,CAAC;IAEF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAC,CAAC,CAAC,EAAE,CAAC;QACvG,MAAM,IAAI,uBAAuB,CAAC,YAAY,CAAC,MAAM,EAAE;YACrD,IAAI,EAAE,2BAA2B,CAAC,iBAAiB;SACpD,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;IACR,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAE1D,OAAO;QACL,cAAc,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC9E,yBAAyB;KAC1B,CAAC;AACJ,CAAC"}
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.49.0-dev.cd9f3245c9",
14
+ "version": "1.49.0-dev.ee7c2aa8ee",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -127,17 +127,17 @@
127
127
  "@libp2p/prometheus-metrics": "^5.0.28",
128
128
  "@libp2p/tcp": "^11.0.27",
129
129
  "@libp2p/utils": "^7.4.0",
130
- "@lodestar/api": "^1.49.0-dev.cd9f3245c9",
131
- "@lodestar/config": "^1.49.0-dev.cd9f3245c9",
132
- "@lodestar/db": "^1.49.0-dev.cd9f3245c9",
133
- "@lodestar/fork-choice": "^1.49.0-dev.cd9f3245c9",
134
- "@lodestar/logger": "^1.49.0-dev.cd9f3245c9",
135
- "@lodestar/params": "^1.49.0-dev.cd9f3245c9",
136
- "@lodestar/reqresp": "^1.49.0-dev.cd9f3245c9",
137
- "@lodestar/state-transition": "^1.49.0-dev.cd9f3245c9",
138
- "@lodestar/types": "^1.49.0-dev.cd9f3245c9",
139
- "@lodestar/utils": "^1.49.0-dev.cd9f3245c9",
140
- "@lodestar/validator": "^1.49.0-dev.cd9f3245c9",
130
+ "@lodestar/api": "^1.49.0-dev.ee7c2aa8ee",
131
+ "@lodestar/config": "^1.49.0-dev.ee7c2aa8ee",
132
+ "@lodestar/db": "^1.49.0-dev.ee7c2aa8ee",
133
+ "@lodestar/fork-choice": "^1.49.0-dev.ee7c2aa8ee",
134
+ "@lodestar/logger": "^1.49.0-dev.ee7c2aa8ee",
135
+ "@lodestar/params": "^1.49.0-dev.ee7c2aa8ee",
136
+ "@lodestar/reqresp": "^1.49.0-dev.ee7c2aa8ee",
137
+ "@lodestar/state-transition": "^1.49.0-dev.ee7c2aa8ee",
138
+ "@lodestar/types": "^1.49.0-dev.ee7c2aa8ee",
139
+ "@lodestar/utils": "^1.49.0-dev.ee7c2aa8ee",
140
+ "@lodestar/validator": "^1.49.0-dev.ee7c2aa8ee",
141
141
  "@multiformats/multiaddr": "^13.0.1",
142
142
  "datastore-core": "^12.0.1",
143
143
  "datastore-level": "^13.0.1",
@@ -159,7 +159,7 @@
159
159
  "@chainsafe/swap-or-not-shuffle": "^1.2.1",
160
160
  "@libp2p/interface-internal": "^3.1.12",
161
161
  "@libp2p/logger": "^6.2.13",
162
- "@lodestar/spec-test-util": "^1.49.0-dev.cd9f3245c9",
162
+ "@lodestar/spec-test-util": "^1.49.0-dev.ee7c2aa8ee",
163
163
  "@types/js-yaml": "^4.0.5",
164
164
  "@types/qs": "^6.9.7",
165
165
  "@types/tmp": "^0.2.3",
@@ -174,5 +174,5 @@
174
174
  "beacon",
175
175
  "blockchain"
176
176
  ],
177
- "gitHead": "b5c09efa35dfac7e2c4ccf55b755925a41b3ef7b"
177
+ "gitHead": "bfee9060d7f18a25529dc12db0b8fe1fce65be8c"
178
178
  }
@@ -6,6 +6,7 @@ export enum PayloadAttestationErrorCode {
6
6
  PAYLOAD_ATTESTATION_ALREADY_KNOWN = "PAYLOAD_ATTESTATION_ERROR_PAYLOAD_ATTESTATION_ALREADY_KNOWN",
7
7
  UNKNOWN_BLOCK_ROOT = "PAYLOAD_ATTESTATION_ERROR_UNKNOWN_BLOCK_ROOT",
8
8
  INVALID_BLOCK_SLOT = "PAYLOAD_ATTESTATION_ERROR_INVALID_BLOCK_SLOT",
9
+ PRE_GLOAS_SLOT = "PAYLOAD_ATTESTATION_ERROR_PRE_GLOAS_SLOT",
9
10
  INVALID_BLOCK = "PAYLOAD_ATTESTATION_ERROR_INVALID_BLOCK",
10
11
  INVALID_ATTESTER = "PAYLOAD_ATTESTATION_ERROR_INVALID_ATTESTER",
11
12
  INVALID_SIGNATURE = "PAYLOAD_ATTESTATION_ERROR_INVALID_SIGNATURE",
@@ -20,6 +21,7 @@ export type PayloadAttestationErrorType =
20
21
  }
21
22
  | {code: PayloadAttestationErrorCode.UNKNOWN_BLOCK_ROOT; blockRoot: RootHex}
22
23
  | {code: PayloadAttestationErrorCode.INVALID_BLOCK_SLOT; blockRoot: RootHex; blockSlot: Slot; slot: Slot}
24
+ | {code: PayloadAttestationErrorCode.PRE_GLOAS_SLOT; slot: Slot}
23
25
  | {code: PayloadAttestationErrorCode.INVALID_BLOCK; blockRoot: RootHex}
24
26
  | {code: PayloadAttestationErrorCode.INVALID_ATTESTER; attesterIndex: ValidatorIndex}
25
27
  | {code: PayloadAttestationErrorCode.INVALID_SIGNATURE};
@@ -1,4 +1,5 @@
1
1
  import {
2
+ computeEpochAtSlot,
2
3
  createIndexedSignatureSetFromComponents,
3
4
  getPayloadAttestationDataSigningRoot,
4
5
  isStatePostGloas,
@@ -35,6 +36,14 @@ async function validatePayloadAttestationMessage(
35
36
  ): Promise<PayloadAttestationValidationResult> {
36
37
  const {data, validatorIndex} = payloadAttestationMessage;
37
38
 
39
+ // [REJECT] The payload attestation slot is at or after the Gloas fork.
40
+ if (computeEpochAtSlot(data.slot) < chain.config.GLOAS_FORK_EPOCH) {
41
+ throw new PayloadAttestationError(GossipAction.REJECT, {
42
+ code: PayloadAttestationErrorCode.PRE_GLOAS_SLOT,
43
+ slot: data.slot,
44
+ });
45
+ }
46
+
38
47
  // [IGNORE] The message's slot is for the current slot (with a `MAXIMUM_GOSSIP_CLOCK_DISPARITY` allowance), i.e. `data.slot == current_slot`.
39
48
  if (!chain.clock.isCurrentSlotGivenGossipDisparity(data.slot)) {
40
49
  throw new PayloadAttestationError(GossipAction.IGNORE, {