@lodestar/reqresp 1.9.0-dev.fe854828b7 → 1.9.0-rc.1
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/ReqResp.d.ts +1 -1
- package/lib/ReqResp.js +3 -1
- package/lib/ReqResp.js.map +1 -1
- package/lib/encoders/responseEncode.d.ts +3 -1
- package/lib/encoders/responseEncode.js +4 -1
- package/lib/encoders/responseEncode.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/metrics.d.ts +2 -0
- package/lib/metrics.js +18 -2
- package/lib/metrics.js.map +1 -1
- package/lib/request/errors.d.ts +4 -2
- package/lib/request/errors.js +9 -2
- package/lib/request/errors.js.map +1 -1
- package/lib/request/index.d.ts +3 -1
- package/lib/request/index.js +4 -1
- package/lib/request/index.js.map +1 -1
- package/lib/response/errors.d.ts +5 -2
- package/lib/response/errors.js +15 -2
- package/lib/response/errors.js.map +1 -1
- package/lib/response/index.d.ts +3 -1
- package/lib/response/index.js +9 -2
- package/lib/response/index.js.map +1 -1
- package/package.json +8 -7
package/lib/ReqResp.d.ts
CHANGED
|
@@ -67,7 +67,7 @@ export declare class ReqResp {
|
|
|
67
67
|
getRegisteredProtocols(): ProtocolID[];
|
|
68
68
|
start(): Promise<void>;
|
|
69
69
|
stop(): Promise<void>;
|
|
70
|
-
|
|
70
|
+
sendRequest(peerId: PeerId, method: string, versions: number[], encoding: Encoding, body: Uint8Array): AsyncIterable<ResponseIncoming>;
|
|
71
71
|
private getRequestHandler;
|
|
72
72
|
protected onIncomingRequest(_peerId: PeerId, _protocol: ProtocolDescriptor): void;
|
|
73
73
|
protected onIncomingRequestError(_protocol: ProtocolDescriptor, _error: RequestError): void;
|
package/lib/ReqResp.js
CHANGED
|
@@ -90,6 +90,7 @@ export class ReqResp {
|
|
|
90
90
|
setMaxListeners(Infinity, this.controller.signal);
|
|
91
91
|
}
|
|
92
92
|
async stop() {
|
|
93
|
+
this.rateLimiter.stop();
|
|
93
94
|
this.controller.abort();
|
|
94
95
|
}
|
|
95
96
|
// Helper to reduce code duplication
|
|
@@ -110,7 +111,7 @@ export class ReqResp {
|
|
|
110
111
|
protocolIDs.push(protocolID);
|
|
111
112
|
}
|
|
112
113
|
try {
|
|
113
|
-
yield* sendRequest({ logger: this.logger, libp2p: this.libp2p, peerClient }, peerId, protocols, protocolIDs, body, this.controller.signal, this.opts, this.reqCount++);
|
|
114
|
+
yield* sendRequest({ logger: this.logger, libp2p: this.libp2p, metrics: this.metrics, peerClient }, peerId, protocols, protocolIDs, body, this.controller.signal, this.opts, this.reqCount++);
|
|
114
115
|
}
|
|
115
116
|
catch (e) {
|
|
116
117
|
(_e = this.metrics) === null || _e === void 0 ? void 0 : _e.outgoingErrors.inc({ method });
|
|
@@ -141,6 +142,7 @@ export class ReqResp {
|
|
|
141
142
|
try {
|
|
142
143
|
await handleRequest({
|
|
143
144
|
logger: this.logger,
|
|
145
|
+
metrics: this.metrics,
|
|
144
146
|
stream,
|
|
145
147
|
peerId,
|
|
146
148
|
protocol: protocol,
|
package/lib/ReqResp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReqResp.js","sourceRoot":"","sources":["../src/ReqResp.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ReqResp.js","sourceRoot":"","sources":["../src/ReqResp.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,9 @@ import { RpcResponseStatusError } from "../interface.js";
|
|
|
10
10
|
* ```
|
|
11
11
|
* Note: `response` has zero or more chunks (denoted by `<>*`)
|
|
12
12
|
*/
|
|
13
|
-
export declare function responseEncodeSuccess(protocol: Protocol
|
|
13
|
+
export declare function responseEncodeSuccess(protocol: Protocol, cbs: {
|
|
14
|
+
onChunk: (chunkIndex: number) => void;
|
|
15
|
+
}): (source: AsyncIterable<ResponseOutgoing>) => AsyncIterable<Buffer>;
|
|
14
16
|
/**
|
|
15
17
|
* Yields byte chunks for a `<response_chunk>` with a non-zero response code `<result>`
|
|
16
18
|
* denoted as `<error_response>`
|
|
@@ -11,9 +11,12 @@ import { RespStatus } from "../interface.js";
|
|
|
11
11
|
* ```
|
|
12
12
|
* Note: `response` has zero or more chunks (denoted by `<>*`)
|
|
13
13
|
*/
|
|
14
|
-
export function responseEncodeSuccess(protocol) {
|
|
14
|
+
export function responseEncodeSuccess(protocol, cbs) {
|
|
15
15
|
return async function* responseEncodeSuccessTransform(source) {
|
|
16
|
+
let chunkIndex = 0;
|
|
16
17
|
for await (const chunk of source) {
|
|
18
|
+
// Postfix increment, return 0 as first chunk
|
|
19
|
+
cbs.onChunk(chunkIndex++);
|
|
17
20
|
// <result>
|
|
18
21
|
yield Buffer.from([RespStatus.SUCCESS]);
|
|
19
22
|
// <context-bytes> - from altair
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responseEncode.js","sourceRoot":"","sources":["../../src/encoders/responseEncode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAC,gBAAgB,EAAiE,MAAM,aAAa,CAAC;AAC7G,OAAO,EAAC,UAAU,EAAyB,MAAM,iBAAiB,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAkB;
|
|
1
|
+
{"version":3,"file":"responseEncode.js","sourceRoot":"","sources":["../../src/encoders/responseEncode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAC,gBAAgB,EAAiE,MAAM,aAAa,CAAC;AAC7G,OAAO,EAAC,UAAU,EAAyB,MAAM,iBAAiB,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAkB,EAClB,GAA4C;IAE5C,OAAO,KAAK,SAAS,CAAC,CAAC,8BAA8B,CAAC,MAAM;QAC1D,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE;YAChC,6CAA6C;YAC7C,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YAE1B,WAAW;YACX,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YAExC,gCAAgC;YAChC,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACnE,IAAI,YAAY,EAAE;gBAChB,MAAM,YAAsB,CAAC;aAC9B;YAED,kDAAkD;YAClD,KAAK,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;SAC3D;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,mBAAmB,CACxC,QAAyC,EACzC,MAA8B,EAC9B,YAAoB;IAEpB,WAAW;IACX,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5B,+BAA+B;IAC/B,IAAI,YAAY,EAAE;QAChB,KAAK,CAAC,CAAC,kBAAkB,CAAC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAC5D;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,YAAiC,EAAE,KAAuB;IACjF,QAAQ,YAAY,CAAC,IAAI,EAAE;QACzB,gBAAgB;QAChB,KAAK,gBAAgB,CAAC,KAAK;YACzB,OAAO,IAAI,CAAC;QAEd,4DAA4D;QAC5D,KAAK,gBAAgB,CAAC,UAAU;YAC9B,OAAO,YAAY,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAW,CAAC;KACnF;AACH,CAAC"}
|
package/lib/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { getMetrics, Metrics, MetricsRegister } from "./metrics.js";
|
|
|
3
3
|
export { Encoding as ReqRespEncoding } from "./types.js";
|
|
4
4
|
export * from "./types.js";
|
|
5
5
|
export * from "./interface.js";
|
|
6
|
-
export
|
|
7
|
-
export
|
|
6
|
+
export * from "./response/errors.js";
|
|
7
|
+
export * from "./request/errors.js";
|
|
8
8
|
export { collectExactOne, collectMaxResponse, formatProtocolID, parseProtocolID } from "./utils/index.js";
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.js
CHANGED
|
@@ -3,7 +3,7 @@ export { getMetrics } from "./metrics.js";
|
|
|
3
3
|
export { Encoding as ReqRespEncoding } from "./types.js"; // Expose enums renamed
|
|
4
4
|
export * from "./types.js";
|
|
5
5
|
export * from "./interface.js";
|
|
6
|
-
export
|
|
7
|
-
export
|
|
6
|
+
export * from "./response/errors.js";
|
|
7
|
+
export * from "./request/errors.js";
|
|
8
8
|
export { collectExactOne, collectMaxResponse, formatProtocolID, parseProtocolID } from "./utils/index.js";
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAc,MAAM,cAAc,CAAC;AAClD,OAAO,EAAC,UAAU,EAA2B,MAAM,cAAc,CAAC;AAClE,OAAO,EAAC,QAAQ,IAAI,eAAe,EAAC,MAAM,YAAY,CAAC,CAAC,uBAAuB;AAC/E,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAc,MAAM,cAAc,CAAC;AAClD,OAAO,EAAC,UAAU,EAA2B,MAAM,cAAc,CAAC;AAClE,OAAO,EAAC,QAAQ,IAAI,eAAe,EAAC,MAAM,YAAY,CAAC,CAAC,uBAAuB;AAC/E,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAC,eAAe,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC"}
|
package/lib/metrics.d.ts
CHANGED
|
@@ -52,6 +52,8 @@ export declare function getMetrics(register: MetricsRegister): {
|
|
|
52
52
|
incomingRequests: Gauge<"method">;
|
|
53
53
|
incomingRequestHandlerTime: Histogram<"method">;
|
|
54
54
|
incomingErrors: Gauge<"method">;
|
|
55
|
+
outgoingResponseTTFB: Histogram<"method">;
|
|
56
|
+
incomingResponseTTFB: Histogram<"method">;
|
|
55
57
|
dialErrors: Gauge<string>;
|
|
56
58
|
};
|
|
57
59
|
export {};
|
package/lib/metrics.js
CHANGED
|
@@ -14,7 +14,8 @@ export function getMetrics(register) {
|
|
|
14
14
|
name: "beacon_reqresp_outgoing_request_roundtrip_time_seconds",
|
|
15
15
|
help: "Histogram of outgoing requests round-trip time",
|
|
16
16
|
labelNames: ["method"],
|
|
17
|
-
|
|
17
|
+
// Spec sets RESP_TIMEOUT = 10 sec
|
|
18
|
+
buckets: [0.1, 0.2, 0.5, 1, 5, 10, 15, 60],
|
|
18
19
|
}),
|
|
19
20
|
outgoingErrors: register.gauge({
|
|
20
21
|
name: "beacon_reqresp_outgoing_requests_error_total",
|
|
@@ -30,13 +31,28 @@ export function getMetrics(register) {
|
|
|
30
31
|
name: "beacon_reqresp_incoming_request_handler_time_seconds",
|
|
31
32
|
help: "Histogram of incoming requests internal handling time",
|
|
32
33
|
labelNames: ["method"],
|
|
33
|
-
|
|
34
|
+
// Spec sets RESP_TIMEOUT = 10 sec
|
|
35
|
+
buckets: [0.1, 0.2, 0.5, 1, 5, 10],
|
|
34
36
|
}),
|
|
35
37
|
incomingErrors: register.gauge({
|
|
36
38
|
name: "beacon_reqresp_incoming_requests_error_total",
|
|
37
39
|
help: "Counts total failed responses handled per method",
|
|
38
40
|
labelNames: ["method"],
|
|
39
41
|
}),
|
|
42
|
+
outgoingResponseTTFB: register.histogram({
|
|
43
|
+
name: "beacon_reqresp_outgoing_response_ttfb_seconds",
|
|
44
|
+
help: "Time to first byte (TTFB) for outgoing responses",
|
|
45
|
+
labelNames: ["method"],
|
|
46
|
+
// Spec sets TTFB_TIMEOUT = 5 sec
|
|
47
|
+
buckets: [0.1, 1, 5],
|
|
48
|
+
}),
|
|
49
|
+
incomingResponseTTFB: register.histogram({
|
|
50
|
+
name: "beacon_reqresp_incoming_response_ttfb_seconds",
|
|
51
|
+
help: "Time to first byte (TTFB) for incoming responses",
|
|
52
|
+
labelNames: ["method"],
|
|
53
|
+
// Spec sets TTFB_TIMEOUT = 5 sec
|
|
54
|
+
buckets: [0.1, 1, 5],
|
|
55
|
+
}),
|
|
40
56
|
dialErrors: register.gauge({
|
|
41
57
|
name: "beacon_reqresp_dial_errors_total",
|
|
42
58
|
help: "Count total dial errors",
|
package/lib/metrics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AA2DA;;GAEG;AACH,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CAAC,QAAyB;IAClD,qGAAqG;IAErG,OAAO;QACL,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAW;YACzC,IAAI,EAAE,wCAAwC;YAC9C,IAAI,EAAE,uCAAuC;YAC7C,UAAU,EAAE,CAAC,QAAQ,CAAC;SACvB,CAAC;QACF,4BAA4B,EAAE,QAAQ,CAAC,SAAS,CAAW;YACzD,IAAI,EAAE,wDAAwD;YAC9D,IAAI,EAAE,gDAAgD;YACtD,UAAU,EAAE,CAAC,QAAQ,CAAC;YACtB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AA2DA;;GAEG;AACH,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CAAC,QAAyB;IAClD,qGAAqG;IAErG,OAAO;QACL,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAW;YACzC,IAAI,EAAE,wCAAwC;YAC9C,IAAI,EAAE,uCAAuC;YAC7C,UAAU,EAAE,CAAC,QAAQ,CAAC;SACvB,CAAC;QACF,4BAA4B,EAAE,QAAQ,CAAC,SAAS,CAAW;YACzD,IAAI,EAAE,wDAAwD;YAC9D,IAAI,EAAE,gDAAgD;YACtD,UAAU,EAAE,CAAC,QAAQ,CAAC;YACtB,kCAAkC;YAClC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAC3C,CAAC;QACF,cAAc,EAAE,QAAQ,CAAC,KAAK,CAAW;YACvC,IAAI,EAAE,8CAA8C;YACpD,IAAI,EAAE,8CAA8C;YACpD,UAAU,EAAE,CAAC,QAAQ,CAAC;SACvB,CAAC;QACF,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAW;YACzC,IAAI,EAAE,wCAAwC;YAC9C,IAAI,EAAE,2CAA2C;YACjD,UAAU,EAAE,CAAC,QAAQ,CAAC;SACvB,CAAC;QACF,0BAA0B,EAAE,QAAQ,CAAC,SAAS,CAAW;YACvD,IAAI,EAAE,sDAAsD;YAC5D,IAAI,EAAE,uDAAuD;YAC7D,UAAU,EAAE,CAAC,QAAQ,CAAC;YACtB,kCAAkC;YAClC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;SACnC,CAAC;QACF,cAAc,EAAE,QAAQ,CAAC,KAAK,CAAW;YACvC,IAAI,EAAE,8CAA8C;YACpD,IAAI,EAAE,kDAAkD;YACxD,UAAU,EAAE,CAAC,QAAQ,CAAC;SACvB,CAAC;QACF,oBAAoB,EAAE,QAAQ,CAAC,SAAS,CAAW;YACjD,IAAI,EAAE,+CAA+C;YACrD,IAAI,EAAE,kDAAkD;YACxD,UAAU,EAAE,CAAC,QAAQ,CAAC;YACtB,iCAAiC;YACjC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;SACrB,CAAC;QACF,oBAAoB,EAAE,QAAQ,CAAC,SAAS,CAAW;YACjD,IAAI,EAAE,+CAA+C;YACrD,IAAI,EAAE,kDAAkD;YACxD,UAAU,EAAE,CAAC,QAAQ,CAAC;YACtB,iCAAiC;YACjC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;SACrB,CAAC;QACF,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC;YACzB,IAAI,EAAE,kCAAkC;YACxC,IAAI,EAAE,yBAAyB;SAChC,CAAC;KACH,CAAC;AACJ,CAAC"}
|
package/lib/request/errors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LodestarError } from "@lodestar/utils";
|
|
1
|
+
import { LodestarError, LodestarErrorObject } from "@lodestar/utils";
|
|
2
2
|
import { ResponseError } from "../response/index.js";
|
|
3
3
|
import { RpcResponseStatusError } from "../interface.js";
|
|
4
4
|
export declare enum RequestErrorCode {
|
|
@@ -67,8 +67,10 @@ type RequestErrorType = {
|
|
|
67
67
|
} | {
|
|
68
68
|
code: RequestErrorCode.REQUEST_RATE_LIMITED;
|
|
69
69
|
};
|
|
70
|
+
export declare const REQUEST_ERROR_CLASS_NAME = "RequestError";
|
|
70
71
|
export declare class RequestError extends LodestarError<RequestErrorType> {
|
|
71
|
-
constructor(type: RequestErrorType);
|
|
72
|
+
constructor(type: RequestErrorType, message?: string, stack?: string);
|
|
73
|
+
static fromObject(obj: LodestarErrorObject): RequestError;
|
|
72
74
|
}
|
|
73
75
|
/**
|
|
74
76
|
* Parse response status errors into detailed request errors for each status code for easier debugging
|
package/lib/request/errors.js
CHANGED
|
@@ -31,9 +31,16 @@ export var RequestErrorCode;
|
|
|
31
31
|
/** Request rate limited */
|
|
32
32
|
RequestErrorCode["REQUEST_RATE_LIMITED"] = "REQUEST_ERROR_RATE_LIMITED";
|
|
33
33
|
})(RequestErrorCode || (RequestErrorCode = {}));
|
|
34
|
+
export const REQUEST_ERROR_CLASS_NAME = "RequestError";
|
|
34
35
|
export class RequestError extends LodestarError {
|
|
35
|
-
constructor(type) {
|
|
36
|
-
super(type, renderErrorMessage(type));
|
|
36
|
+
constructor(type, message, stack) {
|
|
37
|
+
super(type, message !== null && message !== void 0 ? message : renderErrorMessage(type), stack);
|
|
38
|
+
}
|
|
39
|
+
static fromObject(obj) {
|
|
40
|
+
if (obj.className !== "RequestError") {
|
|
41
|
+
throw new Error(`Expected className to be RequestError, but got ${obj.className}`);
|
|
42
|
+
}
|
|
43
|
+
return new RequestError(obj.type, obj.message, obj.stack);
|
|
37
44
|
}
|
|
38
45
|
}
|
|
39
46
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/request/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/request/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAsB,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAC,UAAU,EAAyB,MAAM,iBAAiB,CAAC;AAEnE,MAAM,CAAN,IAAY,gBA6BX;AA7BD,WAAY,gBAAgB;IAC1B,mFAAmF;IACnF,4DAA4D;IAC5D,qEAAiD,CAAA;IACjD,+EAA2D,CAAA;IAC3D,yDAAyD;IACzD,+DAA2C,CAAA;IAC3C,iEAAiE;IACjE,uEAAmD,CAAA;IACnD,wEAAwE;IACxE,+EAA2D,CAAA;IAC3D,4DAA4D;IAC5D,+DAA2C,CAAA;IAC3C,uCAAuC;IACvC,2DAAuC,CAAA;IACvC,iEAAiE;IACjE,qEAAiD,CAAA;IACjD,8CAA8C;IAC9C,iEAA6C,CAAA;IAC7C,mFAAmF;IACnF,uEAAmD,CAAA;IACnD,iDAAiD;IACjD,mEAA+C,CAAA;IAC/C,iCAAiC;IACjC,+DAA2C,CAAA;IAC3C,gDAAgD;IAChD,+DAA2C,CAAA;IAC3C,2BAA2B;IAC3B,uEAAmD,CAAA;AACrD,CAAC,EA7BW,gBAAgB,KAAhB,gBAAgB,QA6B3B;AAkBD,MAAM,CAAC,MAAM,wBAAwB,GAAG,cAAc,CAAC;AAEvD,MAAM,OAAO,YAAa,SAAQ,aAA+B;IAC/D,YAAY,IAAsB,EAAE,OAAgB,EAAE,KAAc;QAClE,KAAK,CAAC,IAAI,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,GAAwB;QACxC,IAAI,GAAG,CAAC,SAAS,KAAK,cAAc,EAAE;YACpC,MAAM,IAAI,KAAK,CAAC,kDAAkD,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;SACpF;QAED,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,IAAwB,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAChF,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,iCAAiC,CAAC,CAAgB;IAChE,MAAM,EAAC,YAAY,EAAE,MAAM,EAAC,GAAG,CAAC,CAAC;IACjC,QAAQ,MAAM,EAAE;QACd,KAAK,UAAU,CAAC,eAAe;YAC7B,OAAO,EAAC,IAAI,EAAE,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAC,CAAC;QAChE,KAAK,UAAU,CAAC,YAAY;YAC1B,OAAO,EAAC,IAAI,EAAE,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAC,CAAC;QAC7D,KAAK,UAAU,CAAC,oBAAoB;YAClC,OAAO,EAAC,IAAI,EAAE,gBAAgB,CAAC,oBAAoB,EAAE,YAAY,EAAC,CAAC;QACrE;YACE,OAAO,EAAC,IAAI,EAAE,gBAAgB,CAAC,oBAAoB,EAAE,YAAY,EAAE,MAAM,EAAC,CAAC;KAC9E;AACH,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,IAAsB;IAChD,QAAQ,IAAI,CAAC,IAAI,EAAE;QACjB,KAAK,gBAAgB,CAAC,eAAe,CAAC;QACtC,KAAK,gBAAgB,CAAC,YAAY,CAAC;QACnC,KAAK,gBAAgB,CAAC,oBAAoB,CAAC;QAC3C,KAAK,gBAAgB,CAAC,oBAAoB;YACxC,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QAC9C;YACE,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;AACH,CAAC"}
|
package/lib/request/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { PeerId } from "@libp2p/interface-peer-id";
|
|
|
2
2
|
import { Libp2p } from "libp2p";
|
|
3
3
|
import { Logger } from "@lodestar/utils";
|
|
4
4
|
import { MixedProtocol, ResponseIncoming } from "../types.js";
|
|
5
|
+
import { Metrics } from "../metrics.js";
|
|
5
6
|
import { RequestError, RequestErrorCode } from "./errors.js";
|
|
6
7
|
export { RequestError, RequestErrorCode };
|
|
7
8
|
export declare const DEFAULT_DIAL_TIMEOUT: number;
|
|
@@ -21,6 +22,7 @@ export interface SendRequestOpts {
|
|
|
21
22
|
type SendRequestModules = {
|
|
22
23
|
logger: Logger;
|
|
23
24
|
libp2p: Libp2p;
|
|
25
|
+
metrics: Metrics | null;
|
|
24
26
|
peerClient?: string;
|
|
25
27
|
};
|
|
26
28
|
/**
|
|
@@ -34,5 +36,5 @@ type SendRequestModules = {
|
|
|
34
36
|
* - Any part of the response_chunk fails validation. Throws a typed error (see `SszSnappyError`)
|
|
35
37
|
* - The maximum number of requested chunks are read. Does not throw, returns read chunks only.
|
|
36
38
|
*/
|
|
37
|
-
export declare function sendRequest({ logger, libp2p, peerClient }: SendRequestModules, peerId: PeerId, protocols: MixedProtocol[], protocolIDs: string[], requestBody: Uint8Array, signal?: AbortSignal, opts?: SendRequestOpts, requestId?: number): AsyncIterable<ResponseIncoming>;
|
|
39
|
+
export declare function sendRequest({ logger, libp2p, metrics, peerClient }: SendRequestModules, peerId: PeerId, protocols: MixedProtocol[], protocolIDs: string[], requestBody: Uint8Array, signal?: AbortSignal, opts?: SendRequestOpts, requestId?: number): AsyncIterable<ResponseIncoming>;
|
|
38
40
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/request/index.js
CHANGED
|
@@ -22,7 +22,7 @@ export const DEFAULT_RESP_TIMEOUT = 10 * 1000; // 10 sec
|
|
|
22
22
|
* - Any part of the response_chunk fails validation. Throws a typed error (see `SszSnappyError`)
|
|
23
23
|
* - The maximum number of requested chunks are read. Does not throw, returns read chunks only.
|
|
24
24
|
*/
|
|
25
|
-
export async function* sendRequest({ logger, libp2p, peerClient }, peerId, protocols, protocolIDs, requestBody, signal, opts, requestId = 0) {
|
|
25
|
+
export async function* sendRequest({ logger, libp2p, metrics, peerClient }, peerId, protocols, protocolIDs, requestBody, signal, opts, requestId = 0) {
|
|
26
26
|
var _a, _b, _c, _d, _e;
|
|
27
27
|
if (protocols.length === 0) {
|
|
28
28
|
throw Error("sendRequest must set > 0 protocols");
|
|
@@ -68,6 +68,8 @@ export async function* sendRequest({ logger, libp2p, peerClient }, peerId, proto
|
|
|
68
68
|
throw new RequestError({ code: RequestErrorCode.DIAL_ERROR, error: e });
|
|
69
69
|
}
|
|
70
70
|
});
|
|
71
|
+
// TODO: Does the TTFB timer start on opening stream or after receiving request
|
|
72
|
+
const timerTTFB = metrics === null || metrics === void 0 ? void 0 : metrics.outgoingResponseTTFB.startTimer({ method });
|
|
71
73
|
// Parse protocol selected by the responder
|
|
72
74
|
const protocolId = (_e = stream.stat.protocol) !== null && _e !== void 0 ? _e : "unknown";
|
|
73
75
|
const protocol = protocolsMap.get(protocolId);
|
|
@@ -124,6 +126,7 @@ export async function* sendRequest({ logger, libp2p, peerClient }, peerId, proto
|
|
|
124
126
|
onFirstHeader() {
|
|
125
127
|
// On first byte, cancel the single use TTFB_TIMEOUT, and start RESP_TIMEOUT
|
|
126
128
|
clearTimeout(timeoutTTFB);
|
|
129
|
+
timerTTFB === null || timerTTFB === void 0 ? void 0 : timerTTFB();
|
|
127
130
|
restartRespTimeout();
|
|
128
131
|
},
|
|
129
132
|
onFirstResponseChunk() {
|
package/lib/request/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/request/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,SAAS,CAAC;AAI7B,OAAO,EAAC,YAAY,EAAU,WAAW,EAAE,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAEhF,OAAO,EAAC,iBAAiB,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/request/index.ts"],"names":[],"mappings":"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"}
|
package/lib/response/errors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LodestarError } from "@lodestar/utils";
|
|
1
|
+
import { LodestarError, LodestarErrorMetaData, LodestarErrorObject } from "@lodestar/utils";
|
|
2
2
|
import { RespStatus, RpcResponseStatusError } from "../interface.js";
|
|
3
3
|
type RpcResponseStatusNotSuccess = Exclude<RespStatus, RespStatus.SUCCESS>;
|
|
4
4
|
export declare enum ResponseErrorCode {
|
|
@@ -9,6 +9,7 @@ type RequestErrorType = {
|
|
|
9
9
|
status: RpcResponseStatusError;
|
|
10
10
|
errorMessage: string;
|
|
11
11
|
};
|
|
12
|
+
export declare const RESPONSE_ERROR_CLASS_NAME = "ResponseError";
|
|
12
13
|
/**
|
|
13
14
|
* Used internally only to signal a response status error. Since the error should never bubble up to the user,
|
|
14
15
|
* the error code and error message does not matter much.
|
|
@@ -16,7 +17,9 @@ type RequestErrorType = {
|
|
|
16
17
|
export declare class ResponseError extends LodestarError<RequestErrorType> {
|
|
17
18
|
status: RpcResponseStatusNotSuccess;
|
|
18
19
|
errorMessage: string;
|
|
19
|
-
constructor(status: RpcResponseStatusNotSuccess, errorMessage: string);
|
|
20
|
+
constructor(status: RpcResponseStatusNotSuccess, errorMessage: string, stack?: string);
|
|
21
|
+
getMetadata(): LodestarErrorMetaData;
|
|
22
|
+
static fromObject(obj: LodestarErrorObject): ResponseError;
|
|
20
23
|
}
|
|
21
24
|
export {};
|
|
22
25
|
//# sourceMappingURL=errors.d.ts.map
|
package/lib/response/errors.js
CHANGED
|
@@ -4,16 +4,29 @@ export var ResponseErrorCode;
|
|
|
4
4
|
(function (ResponseErrorCode) {
|
|
5
5
|
ResponseErrorCode["RESPONSE_STATUS_ERROR"] = "RESPONSE_STATUS_ERROR";
|
|
6
6
|
})(ResponseErrorCode || (ResponseErrorCode = {}));
|
|
7
|
+
export const RESPONSE_ERROR_CLASS_NAME = "ResponseError";
|
|
7
8
|
/**
|
|
8
9
|
* Used internally only to signal a response status error. Since the error should never bubble up to the user,
|
|
9
10
|
* the error code and error message does not matter much.
|
|
10
11
|
*/
|
|
11
12
|
export class ResponseError extends LodestarError {
|
|
12
|
-
constructor(status, errorMessage) {
|
|
13
|
+
constructor(status, errorMessage, stack) {
|
|
13
14
|
const type = { code: ResponseErrorCode.RESPONSE_STATUS_ERROR, status, errorMessage };
|
|
14
|
-
super(type, `RESPONSE_ERROR_${RespStatus[status]}: ${errorMessage}
|
|
15
|
+
super(type, `RESPONSE_ERROR_${RespStatus[status]}: ${errorMessage}`, stack);
|
|
15
16
|
this.status = status;
|
|
16
17
|
this.errorMessage = errorMessage;
|
|
17
18
|
}
|
|
19
|
+
getMetadata() {
|
|
20
|
+
return {
|
|
21
|
+
status: this.status,
|
|
22
|
+
errorMessage: this.errorMessage,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
static fromObject(obj) {
|
|
26
|
+
if (obj.className !== RESPONSE_ERROR_CLASS_NAME) {
|
|
27
|
+
throw new Error(`Expected className to be ResponseError, but got ${obj.className}`);
|
|
28
|
+
}
|
|
29
|
+
return new ResponseError(obj.type.status, obj.type.errorMessage, obj.stack);
|
|
30
|
+
}
|
|
18
31
|
}
|
|
19
32
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/response/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/response/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAA6C,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAC,UAAU,EAAyB,MAAM,iBAAiB,CAAC;AAInE,MAAM,CAAN,IAAY,iBAEX;AAFD,WAAY,iBAAiB;IAC3B,oEAA+C,CAAA;AACjD,CAAC,EAFW,iBAAiB,KAAjB,iBAAiB,QAE5B;AAQD,MAAM,CAAC,MAAM,yBAAyB,GAAG,eAAe,CAAC;AAEzD;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,aAA+B;IAGhE,YAAY,MAAmC,EAAE,YAAoB,EAAE,KAAc;QACnF,MAAM,IAAI,GAAG,EAAC,IAAI,EAAE,iBAAiB,CAAC,qBAAqB,EAAE,MAAM,EAAE,YAAY,EAAC,CAAC;QACnF,KAAK,CAAC,IAAI,EAAE,kBAAkB,UAAU,CAAC,MAAM,CAAC,KAAK,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,WAAW;QACT,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,GAAwB;QACxC,IAAI,GAAG,CAAC,SAAS,KAAK,yBAAyB,EAAE;YAC/C,MAAM,IAAI,KAAK,CAAC,mDAAmD,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;SACrF;QAED,OAAO,IAAI,aAAa,CACtB,GAAG,CAAC,IAAI,CAAC,MAAqC,EAC9C,GAAG,CAAC,IAAI,CAAC,YAAsB,EAC/B,GAAG,CAAC,KAAK,CACV,CAAC;IACJ,CAAC;CACF"}
|
package/lib/response/index.d.ts
CHANGED
|
@@ -3,11 +3,13 @@ import { Stream } from "@libp2p/interface-connection";
|
|
|
3
3
|
import { Logger } from "@lodestar/utils";
|
|
4
4
|
import { Protocol } from "../types.js";
|
|
5
5
|
import { ReqRespRateLimiter } from "../rate_limiter/ReqRespRateLimiter.js";
|
|
6
|
+
import { Metrics } from "../metrics.js";
|
|
6
7
|
import { ResponseError } from "./errors.js";
|
|
7
8
|
export { ResponseError };
|
|
8
9
|
export declare const DEFAULT_REQUEST_TIMEOUT: number;
|
|
9
10
|
export interface HandleRequestOpts {
|
|
10
11
|
logger: Logger;
|
|
12
|
+
metrics: Metrics | null;
|
|
11
13
|
stream: Stream;
|
|
12
14
|
peerId: PeerId;
|
|
13
15
|
protocol: Protocol;
|
|
@@ -30,5 +32,5 @@ export interface HandleRequestOpts {
|
|
|
30
32
|
* 4a. Encode and write `<response_chunks>` to peer
|
|
31
33
|
* 4b. On error, encode and write an error `<response_chunk>` and stop
|
|
32
34
|
*/
|
|
33
|
-
export declare function handleRequest({ logger, stream, peerId, protocol, protocolID, rateLimiter, signal, requestId, peerClient, requestTimeoutMs, }: HandleRequestOpts): Promise<void>;
|
|
35
|
+
export declare function handleRequest({ logger, metrics, stream, peerId, protocol, protocolID, rateLimiter, signal, requestId, peerClient, requestTimeoutMs, }: HandleRequestOpts): Promise<void>;
|
|
34
36
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/response/index.js
CHANGED
|
@@ -19,7 +19,7 @@ export const DEFAULT_REQUEST_TIMEOUT = 5 * 1000; // 5 sec
|
|
|
19
19
|
* 4a. Encode and write `<response_chunks>` to peer
|
|
20
20
|
* 4b. On error, encode and write an error `<response_chunk>` and stop
|
|
21
21
|
*/
|
|
22
|
-
export async function handleRequest({ logger, stream, peerId, protocol, protocolID, rateLimiter, signal, requestId = 0, peerClient = "unknown", requestTimeoutMs, }) {
|
|
22
|
+
export async function handleRequest({ logger, metrics, stream, peerId, protocol, protocolID, rateLimiter, signal, requestId = 0, peerClient = "unknown", requestTimeoutMs, }) {
|
|
23
23
|
const REQUEST_TIMEOUT = requestTimeoutMs !== null && requestTimeoutMs !== void 0 ? requestTimeoutMs : DEFAULT_REQUEST_TIMEOUT;
|
|
24
24
|
const logCtx = { method: protocol.method, client: peerClient, peer: prettyPrintPeerId(peerId), requestId };
|
|
25
25
|
let responseError = null;
|
|
@@ -30,6 +30,8 @@ export async function handleRequest({ logger, stream, peerId, protocol, protocol
|
|
|
30
30
|
(async function* requestHandlerSource() {
|
|
31
31
|
var _a, _b, _c;
|
|
32
32
|
try {
|
|
33
|
+
// TODO: Does the TTFB timer start on opening stream or after receiving request
|
|
34
|
+
const timerTTFB = metrics === null || metrics === void 0 ? void 0 : metrics.outgoingResponseTTFB.startTimer({ method: protocol.method });
|
|
33
35
|
const requestBody = await withTimeout(() => pipe(stream.source, requestDecode(protocol)), REQUEST_TIMEOUT, signal).catch((e) => {
|
|
34
36
|
if (e instanceof TimeoutError) {
|
|
35
37
|
throw e; // Let outter catch {} re-type the error as SERVER_ERROR
|
|
@@ -54,7 +56,12 @@ export async function handleRequest({ logger, stream, peerId, protocol, protocol
|
|
|
54
56
|
// NOTE: Do not log the resp chunk contents, logs get extremely cluttered
|
|
55
57
|
// Note: Not logging on each chunk since after 1 year it hasn't add any value when debugging
|
|
56
58
|
// onChunk(() => logger.debug("Resp sending chunk", logCtx)),
|
|
57
|
-
responseEncodeSuccess(protocol
|
|
59
|
+
responseEncodeSuccess(protocol, {
|
|
60
|
+
onChunk(chunkIndex) {
|
|
61
|
+
if (chunkIndex === 0)
|
|
62
|
+
timerTTFB === null || timerTTFB === void 0 ? void 0 : timerTTFB();
|
|
63
|
+
},
|
|
64
|
+
}));
|
|
58
65
|
}
|
|
59
66
|
catch (e) {
|
|
60
67
|
const status = e instanceof ResponseError ? e.status : RespStatus.SERVER_ERROR;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/response/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,SAAS,CAAC;AAI7B,OAAO,EAAS,YAAY,EAAE,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAC,aAAa,EAAC,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAC,mBAAmB,EAAE,qBAAqB,EAAC,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/response/index.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.9.0-
|
|
14
|
+
"version": "1.9.0-rc.1",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"scripts": {
|
|
42
42
|
"clean": "rm -rf lib && rm -f *.tsbuildinfo",
|
|
43
43
|
"build": "tsc -p tsconfig.build.json",
|
|
44
|
+
"build:watch": "yarn run build --watch",
|
|
44
45
|
"build:release": "yarn clean && yarn run build",
|
|
45
46
|
"check-build": "node -e \"(async function() { await import('./lib/index.js') })()\"",
|
|
46
47
|
"check-types": "tsc",
|
|
@@ -56,9 +57,9 @@
|
|
|
56
57
|
"@chainsafe/snappy-stream": "^5.1.2",
|
|
57
58
|
"@libp2p/interface-connection": "^3.0.2",
|
|
58
59
|
"@libp2p/interface-peer-id": "^2.0.1",
|
|
59
|
-
"@lodestar/config": "1.9.0-
|
|
60
|
-
"@lodestar/params": "1.9.0-
|
|
61
|
-
"@lodestar/utils": "1.9.0-
|
|
60
|
+
"@lodestar/config": "1.9.0-rc.1",
|
|
61
|
+
"@lodestar/params": "1.9.0-rc.1",
|
|
62
|
+
"@lodestar/utils": "1.9.0-rc.1",
|
|
62
63
|
"it-all": "^3.0.1",
|
|
63
64
|
"snappyjs": "^0.7.0",
|
|
64
65
|
"stream-to-it": "^0.2.4",
|
|
@@ -66,8 +67,8 @@
|
|
|
66
67
|
"varint": "^6.0.0"
|
|
67
68
|
},
|
|
68
69
|
"devDependencies": {
|
|
69
|
-
"@lodestar/logger": "1.9.0-
|
|
70
|
-
"@lodestar/types": "1.9.0-
|
|
70
|
+
"@lodestar/logger": "1.9.0-rc.1",
|
|
71
|
+
"@lodestar/types": "1.9.0-rc.1"
|
|
71
72
|
},
|
|
72
73
|
"peerDependencies": {
|
|
73
74
|
"libp2p": "~0.42.2"
|
|
@@ -80,5 +81,5 @@
|
|
|
80
81
|
"reqresp",
|
|
81
82
|
"blockchain"
|
|
82
83
|
],
|
|
83
|
-
"gitHead": "
|
|
84
|
+
"gitHead": "c40a6bad938782149b919a953283b9cda018739c"
|
|
84
85
|
}
|