@lodestar/validator 1.44.0-dev.9d8b487a59 → 1.44.0-dev.a9a9fe2e63
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/services/ptc.d.ts.map +1 -1
- package/lib/services/ptc.js +13 -1
- package/lib/services/ptc.js.map +1 -1
- package/package.json +12 -12
- package/src/services/ptc.ts +14 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ptc.d.ts","sourceRoot":"","sources":["../../src/services/ptc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"ptc.d.ts","sourceRoot":"","sources":["../../src/services/ptc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAyB,MAAM,eAAe,CAAC;AAChE,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAIjD,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,qBAAqB,EAAC,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAEnD;;GAEG;AACH,qBAAa,UAAU;IAInB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAGxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAX1B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;IAEjD,YACmB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,QAAQ,EAChB,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,qBAAqB,EAC/C,gBAAgB,EAAE,kBAAkB,EACpC,oBAAoB,EAAE,oBAAoB,EACzB,OAAO,EAAE,OAAO,GAAG,IAAI,EAczC;IAED,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAE1C;IAED,OAAO,CAAC,WAAW,CAgCjB;YAEY,6BAA6B;YAQ7B,iCAAiC;CAkDhD"}
|
package/lib/services/ptc.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { HttpStatusCode } from "@lodestar/api";
|
|
1
2
|
import { isForkPostGloas } from "@lodestar/params";
|
|
2
3
|
import { prettyBytes, sleep, toRootHex } from "@lodestar/utils";
|
|
3
4
|
import { PtcDutiesService } from "./ptcDuties.js";
|
|
@@ -44,6 +45,11 @@ export class PtcService {
|
|
|
44
45
|
this.metrics?.ptcStepCallProducePayloadAttestation.observe(this.clock.secFromSlot(slot) - payloadAttestationDueMs / 1000);
|
|
45
46
|
try {
|
|
46
47
|
const payloadAttestationData = await this.producePayloadAttestationData(slot);
|
|
48
|
+
// If no beacon block was seen for the assigned slot, do not submit a payload attestation
|
|
49
|
+
if (payloadAttestationData === null) {
|
|
50
|
+
this.logger.debug("Skipping payload attestation, no beacon block seen for slot", { slot });
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
47
53
|
await this.signAndPublishPayloadAttestations(slot, payloadAttestationData, duties);
|
|
48
54
|
}
|
|
49
55
|
catch (e) {
|
|
@@ -51,7 +57,11 @@ export class PtcService {
|
|
|
51
57
|
}
|
|
52
58
|
};
|
|
53
59
|
async producePayloadAttestationData(slot) {
|
|
54
|
-
|
|
60
|
+
const res = await this.api.validator.producePayloadAttestationData({ slot });
|
|
61
|
+
if (!res.ok && res.status === HttpStatusCode.NOT_FOUND) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
return res.value();
|
|
55
65
|
}
|
|
56
66
|
async signAndPublishPayloadAttestations(slot, payloadAttestationData, duties) {
|
|
57
67
|
const payloadAttestationMessages = [];
|
|
@@ -75,6 +85,8 @@ export class PtcService {
|
|
|
75
85
|
this.logger.info("Published payload attestation messages", {
|
|
76
86
|
slot,
|
|
77
87
|
beaconBlockRoot: prettyBytes(beaconBlockRootHex),
|
|
88
|
+
payloadPresent: payloadAttestationData.payloadPresent,
|
|
89
|
+
blobDataAvailable: payloadAttestationData.blobDataAvailable,
|
|
78
90
|
count: payloadAttestationMessages.length,
|
|
79
91
|
});
|
|
80
92
|
this.metrics?.publishedPayloadAttestations.inc(payloadAttestationMessages.length);
|
package/lib/services/ptc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ptc.js","sourceRoot":"","sources":["../../src/services/ptc.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ptc.js","sourceRoot":"","sources":["../../src/services/ptc.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lodestar/validator",
|
|
3
|
-
"version": "1.44.0-dev.
|
|
3
|
+
"version": "1.44.0-dev.a9a9fe2e63",
|
|
4
4
|
"description": "A Typescript implementation of the validator client",
|
|
5
5
|
"author": "ChainSafe Systems",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -50,21 +50,21 @@
|
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@chainsafe/blst": "^2.2.0",
|
|
52
52
|
"@chainsafe/ssz": "^1.4.0",
|
|
53
|
-
"@lodestar/api": "^1.44.0-dev.
|
|
54
|
-
"@lodestar/config": "^1.44.0-dev.
|
|
55
|
-
"@lodestar/db": "^1.44.0-dev.
|
|
56
|
-
"@lodestar/params": "^1.44.0-dev.
|
|
57
|
-
"@lodestar/state-transition": "^1.44.0-dev.
|
|
58
|
-
"@lodestar/types": "^1.44.0-dev.
|
|
59
|
-
"@lodestar/utils": "^1.44.0-dev.
|
|
53
|
+
"@lodestar/api": "^1.44.0-dev.a9a9fe2e63",
|
|
54
|
+
"@lodestar/config": "^1.44.0-dev.a9a9fe2e63",
|
|
55
|
+
"@lodestar/db": "^1.44.0-dev.a9a9fe2e63",
|
|
56
|
+
"@lodestar/params": "^1.44.0-dev.a9a9fe2e63",
|
|
57
|
+
"@lodestar/state-transition": "^1.44.0-dev.a9a9fe2e63",
|
|
58
|
+
"@lodestar/types": "^1.44.0-dev.a9a9fe2e63",
|
|
59
|
+
"@lodestar/utils": "^1.44.0-dev.a9a9fe2e63",
|
|
60
60
|
"strict-event-emitter-types": "^2.0.0"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
|
-
"@lodestar/logger": "^1.44.0-dev.
|
|
64
|
-
"@lodestar/spec-test-util": "^1.44.0-dev.
|
|
65
|
-
"@lodestar/test-utils": "^1.44.0-dev.
|
|
63
|
+
"@lodestar/logger": "^1.44.0-dev.a9a9fe2e63",
|
|
64
|
+
"@lodestar/spec-test-util": "^1.44.0-dev.a9a9fe2e63",
|
|
65
|
+
"@lodestar/test-utils": "^1.44.0-dev.a9a9fe2e63",
|
|
66
66
|
"@vekexasia/bigint-buffer2": "^1.1.1",
|
|
67
67
|
"rimraf": "^4.4.1"
|
|
68
68
|
},
|
|
69
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "f35d37a56827910a12093daa56c00c806692d7fe"
|
|
70
70
|
}
|
package/src/services/ptc.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {ApiClient, routes} from "@lodestar/api";
|
|
1
|
+
import {ApiClient, HttpStatusCode, routes} from "@lodestar/api";
|
|
2
2
|
import {ChainForkConfig} from "@lodestar/config";
|
|
3
3
|
import {isForkPostGloas} from "@lodestar/params";
|
|
4
4
|
import {Slot, gloas} from "@lodestar/types";
|
|
@@ -70,14 +70,23 @@ export class PtcService {
|
|
|
70
70
|
|
|
71
71
|
try {
|
|
72
72
|
const payloadAttestationData = await this.producePayloadAttestationData(slot);
|
|
73
|
+
// If no beacon block was seen for the assigned slot, do not submit a payload attestation
|
|
74
|
+
if (payloadAttestationData === null) {
|
|
75
|
+
this.logger.debug("Skipping payload attestation, no beacon block seen for slot", {slot});
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
73
78
|
await this.signAndPublishPayloadAttestations(slot, payloadAttestationData, duties);
|
|
74
79
|
} catch (e) {
|
|
75
80
|
this.logger.error("Error on PTC routine", {slot}, e as Error);
|
|
76
81
|
}
|
|
77
82
|
};
|
|
78
83
|
|
|
79
|
-
private async producePayloadAttestationData(slot: Slot): Promise<gloas.PayloadAttestationData> {
|
|
80
|
-
|
|
84
|
+
private async producePayloadAttestationData(slot: Slot): Promise<gloas.PayloadAttestationData | null> {
|
|
85
|
+
const res = await this.api.validator.producePayloadAttestationData({slot});
|
|
86
|
+
if (!res.ok && res.status === HttpStatusCode.NOT_FOUND) {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
return res.value();
|
|
81
90
|
}
|
|
82
91
|
|
|
83
92
|
private async signAndPublishPayloadAttestations(
|
|
@@ -119,6 +128,8 @@ export class PtcService {
|
|
|
119
128
|
this.logger.info("Published payload attestation messages", {
|
|
120
129
|
slot,
|
|
121
130
|
beaconBlockRoot: prettyBytes(beaconBlockRootHex),
|
|
131
|
+
payloadPresent: payloadAttestationData.payloadPresent,
|
|
132
|
+
blobDataAvailable: payloadAttestationData.blobDataAvailable,
|
|
122
133
|
count: payloadAttestationMessages.length,
|
|
123
134
|
});
|
|
124
135
|
this.metrics?.publishedPayloadAttestations.inc(payloadAttestationMessages.length);
|