@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.
- package/lib/chain/errors/payloadAttestation.d.ts +4 -0
- package/lib/chain/errors/payloadAttestation.d.ts.map +1 -1
- package/lib/chain/errors/payloadAttestation.js +1 -0
- package/lib/chain/errors/payloadAttestation.js.map +1 -1
- package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -1
- package/lib/chain/validation/payloadAttestationMessage.js +8 -1
- package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
- package/package.json +14 -14
- package/src/chain/errors/payloadAttestation.ts +2 -0
- package/src/chain/validation/payloadAttestationMessage.ts +9 -0
|
@@ -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,
|
|
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":"
|
|
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":"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"}
|
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.
|
|
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.
|
|
131
|
-
"@lodestar/config": "^1.49.0-dev.
|
|
132
|
-
"@lodestar/db": "^1.49.0-dev.
|
|
133
|
-
"@lodestar/fork-choice": "^1.49.0-dev.
|
|
134
|
-
"@lodestar/logger": "^1.49.0-dev.
|
|
135
|
-
"@lodestar/params": "^1.49.0-dev.
|
|
136
|
-
"@lodestar/reqresp": "^1.49.0-dev.
|
|
137
|
-
"@lodestar/state-transition": "^1.49.0-dev.
|
|
138
|
-
"@lodestar/types": "^1.49.0-dev.
|
|
139
|
-
"@lodestar/utils": "^1.49.0-dev.
|
|
140
|
-
"@lodestar/validator": "^1.49.0-dev.
|
|
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.
|
|
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": "
|
|
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, {
|