@lodestar/beacon-node 1.23.0-dev.e01142b1f8 → 1.23.0-dev.e770ebe0ab
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.
|
@@ -22,6 +22,12 @@ export declare class ExecutionBuilderHttp implements IExecutionBuilder {
|
|
|
22
22
|
status: boolean;
|
|
23
23
|
faultInspectionWindow: number;
|
|
24
24
|
allowedFaults: number;
|
|
25
|
+
/**
|
|
26
|
+
* Determine if SSZ is supported by requesting an SSZ encoded response in the `getHeader` request.
|
|
27
|
+
* The builder responding with a SSZ serialized `SignedBuilderBid` indicates support to handle the
|
|
28
|
+
* `SignedBlindedBeaconBlock` as SSZ serialized bytes instead of JSON when calling `submitBlindedBlock`.
|
|
29
|
+
*/
|
|
30
|
+
private sszSupported;
|
|
25
31
|
constructor(opts: ExecutionBuilderHttpOpts, config: ChainForkConfig, metrics?: Metrics | null, logger?: Logger);
|
|
26
32
|
updateStatus(shouldEnable: boolean): void;
|
|
27
33
|
checkStatus(): Promise<void>;
|
|
@@ -2,6 +2,7 @@ import { parseExecutionPayloadAndBlobsBundle, reconstructFullBlockOrContents } f
|
|
|
2
2
|
import { getClient } from "@lodestar/api/builder";
|
|
3
3
|
import { SLOTS_PER_EPOCH } from "@lodestar/params";
|
|
4
4
|
import { toPrintableUrl } from "@lodestar/utils";
|
|
5
|
+
import { WireFormat } from "@lodestar/api";
|
|
5
6
|
export const defaultExecutionBuilderHttpOpts = {
|
|
6
7
|
enabled: false,
|
|
7
8
|
url: "http://localhost:8661",
|
|
@@ -16,6 +17,12 @@ export class ExecutionBuilderHttp {
|
|
|
16
17
|
constructor(opts, config, metrics = null, logger) {
|
|
17
18
|
// Builder needs to be explicity enabled using updateStatus
|
|
18
19
|
this.status = false;
|
|
20
|
+
/**
|
|
21
|
+
* Determine if SSZ is supported by requesting an SSZ encoded response in the `getHeader` request.
|
|
22
|
+
* The builder responding with a SSZ serialized `SignedBuilderBid` indicates support to handle the
|
|
23
|
+
* `SignedBlindedBeaconBlock` as SSZ serialized bytes instead of JSON when calling `submitBlindedBlock`.
|
|
24
|
+
*/
|
|
25
|
+
this.sszSupported = false;
|
|
19
26
|
const baseUrl = opts.url;
|
|
20
27
|
if (!baseUrl)
|
|
21
28
|
throw Error("No Url provided for executionBuilder");
|
|
@@ -58,18 +65,20 @@ export class ExecutionBuilderHttp {
|
|
|
58
65
|
(await this.api.registerValidator({ registrations })).assertOk();
|
|
59
66
|
}
|
|
60
67
|
async getHeader(_fork, slot, parentHash, proposerPubkey) {
|
|
61
|
-
const
|
|
68
|
+
const res = await this.api.getHeader({ slot, parentHash, proposerPubkey }, { timeoutMs: BUILDER_PROPOSAL_DELAY_TOLERANCE });
|
|
69
|
+
const signedBuilderBid = res.value();
|
|
62
70
|
if (!signedBuilderBid) {
|
|
63
71
|
throw Error("No bid received");
|
|
64
72
|
}
|
|
73
|
+
this.sszSupported = res.wireFormat() === WireFormat.ssz;
|
|
65
74
|
const { header, value: executionPayloadValue } = signedBuilderBid.message;
|
|
66
75
|
const { blobKzgCommitments } = signedBuilderBid.message;
|
|
67
76
|
const { executionRequests } = signedBuilderBid.message;
|
|
68
77
|
return { header, executionPayloadValue, blobKzgCommitments, executionRequests };
|
|
69
78
|
}
|
|
70
79
|
async submitBlindedBlock(signedBlindedBlock) {
|
|
71
|
-
const
|
|
72
|
-
const { executionPayload, blobsBundle } = parseExecutionPayloadAndBlobsBundle(
|
|
80
|
+
const res = await this.api.submitBlindedBlock({ signedBlindedBlock }, { retries: 2, requestWireFormat: this.sszSupported ? WireFormat.ssz : WireFormat.json });
|
|
81
|
+
const { executionPayload, blobsBundle } = parseExecutionPayloadAndBlobsBundle(res.value());
|
|
73
82
|
// for the sake of timely proposals we can skip matching the payload with payloadHeader
|
|
74
83
|
// if the roots (transactions, withdrawals) don't match, this will likely lead to a block with
|
|
75
84
|
// invalid signature, but there is no recourse to this anyway so lets just proceed and will
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/execution/builder/http.ts"],"names":[],"mappings":"AAYA,OAAO,EAAC,mCAAmC,EAAE,8BAA8B,EAAC,MAAM,4BAA4B,CAAC;AAG/G,OAAO,EAAC,SAAS,EAA0B,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAC,eAAe,EAAgB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/execution/builder/http.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.23.0-dev.
|
|
14
|
+
"version": "1.23.0-dev.e770ebe0ab",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -119,18 +119,18 @@
|
|
|
119
119
|
"@libp2p/peer-id": "^5.0.4",
|
|
120
120
|
"@libp2p/prometheus-metrics": "^4.1.2",
|
|
121
121
|
"@libp2p/tcp": "10.0.4",
|
|
122
|
-
"@lodestar/api": "1.23.0-dev.
|
|
123
|
-
"@lodestar/config": "1.23.0-dev.
|
|
124
|
-
"@lodestar/db": "1.23.0-dev.
|
|
125
|
-
"@lodestar/fork-choice": "1.23.0-dev.
|
|
126
|
-
"@lodestar/light-client": "1.23.0-dev.
|
|
127
|
-
"@lodestar/logger": "1.23.0-dev.
|
|
128
|
-
"@lodestar/params": "1.23.0-dev.
|
|
129
|
-
"@lodestar/reqresp": "1.23.0-dev.
|
|
130
|
-
"@lodestar/state-transition": "1.23.0-dev.
|
|
131
|
-
"@lodestar/types": "1.23.0-dev.
|
|
132
|
-
"@lodestar/utils": "1.23.0-dev.
|
|
133
|
-
"@lodestar/validator": "1.23.0-dev.
|
|
122
|
+
"@lodestar/api": "1.23.0-dev.e770ebe0ab",
|
|
123
|
+
"@lodestar/config": "1.23.0-dev.e770ebe0ab",
|
|
124
|
+
"@lodestar/db": "1.23.0-dev.e770ebe0ab",
|
|
125
|
+
"@lodestar/fork-choice": "1.23.0-dev.e770ebe0ab",
|
|
126
|
+
"@lodestar/light-client": "1.23.0-dev.e770ebe0ab",
|
|
127
|
+
"@lodestar/logger": "1.23.0-dev.e770ebe0ab",
|
|
128
|
+
"@lodestar/params": "1.23.0-dev.e770ebe0ab",
|
|
129
|
+
"@lodestar/reqresp": "1.23.0-dev.e770ebe0ab",
|
|
130
|
+
"@lodestar/state-transition": "1.23.0-dev.e770ebe0ab",
|
|
131
|
+
"@lodestar/types": "1.23.0-dev.e770ebe0ab",
|
|
132
|
+
"@lodestar/utils": "1.23.0-dev.e770ebe0ab",
|
|
133
|
+
"@lodestar/validator": "1.23.0-dev.e770ebe0ab",
|
|
134
134
|
"@multiformats/multiaddr": "^12.1.3",
|
|
135
135
|
"c-kzg": "^2.1.2",
|
|
136
136
|
"datastore-core": "^10.0.0",
|
|
@@ -167,5 +167,5 @@
|
|
|
167
167
|
"beacon",
|
|
168
168
|
"blockchain"
|
|
169
169
|
],
|
|
170
|
-
"gitHead": "
|
|
170
|
+
"gitHead": "e642418882cf0ffc48820ddbecf109b3c973ada4"
|
|
171
171
|
}
|