@lodestar/reqresp 1.8.0 → 1.9.0-dev.06226b5f17

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.
Files changed (97) hide show
  1. package/README.md +19 -7
  2. package/lib/ReqResp.d.ts +7 -7
  3. package/lib/ReqResp.js +4 -2
  4. package/lib/ReqResp.js.map +1 -1
  5. package/lib/encoders/requestDecode.d.ts +2 -2
  6. package/lib/encoders/requestDecode.js +3 -3
  7. package/lib/encoders/requestDecode.js.map +1 -1
  8. package/lib/encoders/requestEncode.d.ts +2 -2
  9. package/lib/encoders/requestEncode.js +2 -4
  10. package/lib/encoders/requestEncode.js.map +1 -1
  11. package/lib/encoders/responseDecode.d.ts +4 -4
  12. package/lib/encoders/responseDecode.js +7 -2
  13. package/lib/encoders/responseDecode.js.map +1 -1
  14. package/lib/encoders/responseEncode.d.ts +5 -3
  15. package/lib/encoders/responseEncode.js +7 -32
  16. package/lib/encoders/responseEncode.js.map +1 -1
  17. package/lib/encodingStrategies/index.d.ts +3 -3
  18. package/lib/encodingStrategies/index.js +2 -2
  19. package/lib/encodingStrategies/index.js.map +1 -1
  20. package/lib/encodingStrategies/sszSnappy/decode.d.ts +3 -3
  21. package/lib/encodingStrategies/sszSnappy/decode.js +1 -14
  22. package/lib/encodingStrategies/sszSnappy/decode.js.map +1 -1
  23. package/lib/encodingStrategies/sszSnappy/encode.d.ts +1 -2
  24. package/lib/encodingStrategies/sszSnappy/encode.js +2 -23
  25. package/lib/encodingStrategies/sszSnappy/encode.js.map +1 -1
  26. package/lib/index.d.ts +3 -3
  27. package/lib/index.js +2 -2
  28. package/lib/index.js.map +1 -1
  29. package/lib/metrics.d.ts +2 -0
  30. package/lib/metrics.js +18 -2
  31. package/lib/metrics.js.map +1 -1
  32. package/lib/rate_limiter/ReqRespRateLimiter.d.ts +1 -1
  33. package/lib/rate_limiter/ReqRespRateLimiter.js.map +1 -1
  34. package/lib/request/errors.d.ts +9 -16
  35. package/lib/request/errors.js +10 -11
  36. package/lib/request/errors.js.map +1 -1
  37. package/lib/request/index.d.ts +4 -2
  38. package/lib/request/index.js +16 -18
  39. package/lib/request/index.js.map +1 -1
  40. package/lib/response/errors.d.ts +5 -2
  41. package/lib/response/errors.js +15 -2
  42. package/lib/response/errors.js.map +1 -1
  43. package/lib/response/index.d.ts +6 -4
  44. package/lib/response/index.js +19 -7
  45. package/lib/response/index.js.map +1 -1
  46. package/lib/types.d.ts +62 -79
  47. package/lib/types.js +0 -8
  48. package/lib/types.js.map +1 -1
  49. package/lib/utils/bufferedSource.d.ts +1 -1
  50. package/lib/utils/bufferedSource.js.map +1 -1
  51. package/lib/utils/collectExactOne.js +2 -2
  52. package/lib/utils/collectExactOne.js.map +1 -1
  53. package/lib/utils/protocolId.d.ts +2 -2
  54. package/lib/utils/protocolId.js.map +1 -1
  55. package/package.json +11 -10
  56. package/lib/protocols/BeaconBlockAndBlobsSidecarByRoot.d.ts +0 -4
  57. package/lib/protocols/BeaconBlockAndBlobsSidecarByRoot.js +0 -27
  58. package/lib/protocols/BeaconBlockAndBlobsSidecarByRoot.js.map +0 -1
  59. package/lib/protocols/BeaconBlocksByRange.d.ts +0 -5
  60. package/lib/protocols/BeaconBlocksByRange.js +0 -38
  61. package/lib/protocols/BeaconBlocksByRange.js.map +0 -1
  62. package/lib/protocols/BeaconBlocksByRoot.d.ts +0 -5
  63. package/lib/protocols/BeaconBlocksByRoot.js +0 -38
  64. package/lib/protocols/BeaconBlocksByRoot.js.map +0 -1
  65. package/lib/protocols/BlobsSidecarsByRange.d.ts +0 -4
  66. package/lib/protocols/BlobsSidecarsByRange.js +0 -27
  67. package/lib/protocols/BlobsSidecarsByRange.js.map +0 -1
  68. package/lib/protocols/Goodbye.d.ts +0 -4
  69. package/lib/protocols/Goodbye.js +0 -21
  70. package/lib/protocols/Goodbye.js.map +0 -1
  71. package/lib/protocols/LightClientBootstrap.d.ts +0 -4
  72. package/lib/protocols/LightClientBootstrap.js +0 -30
  73. package/lib/protocols/LightClientBootstrap.js.map +0 -1
  74. package/lib/protocols/LightClientFinalityUpdate.d.ts +0 -4
  75. package/lib/protocols/LightClientFinalityUpdate.js +0 -29
  76. package/lib/protocols/LightClientFinalityUpdate.js.map +0 -1
  77. package/lib/protocols/LightClientOptimisticUpdate.d.ts +0 -4
  78. package/lib/protocols/LightClientOptimisticUpdate.js +0 -29
  79. package/lib/protocols/LightClientOptimisticUpdate.js.map +0 -1
  80. package/lib/protocols/LightClientUpdatesByRange.d.ts +0 -4
  81. package/lib/protocols/LightClientUpdatesByRange.js +0 -28
  82. package/lib/protocols/LightClientUpdatesByRange.js.map +0 -1
  83. package/lib/protocols/Metadata.d.ts +0 -5
  84. package/lib/protocols/Metadata.js +0 -31
  85. package/lib/protocols/Metadata.js.map +0 -1
  86. package/lib/protocols/Ping.d.ts +0 -4
  87. package/lib/protocols/Ping.js +0 -20
  88. package/lib/protocols/Ping.js.map +0 -1
  89. package/lib/protocols/Status.d.ts +0 -4
  90. package/lib/protocols/Status.js +0 -24
  91. package/lib/protocols/Status.js.map +0 -1
  92. package/lib/protocols/index.d.ts +0 -13
  93. package/lib/protocols/index.js +0 -13
  94. package/lib/protocols/index.js.map +0 -1
  95. package/lib/protocols/utils.d.ts +0 -7
  96. package/lib/protocols/utils.js +0 -9
  97. package/lib/protocols/utils.js.map +0 -1
package/lib/types.d.ts CHANGED
@@ -1,54 +1,40 @@
1
1
  import { PeerId } from "@libp2p/interface-peer-id";
2
- import { BeaconConfig, ForkConfig, ForkDigestContext } from "@lodestar/config";
2
+ import { BeaconConfig, ForkDigestContext } from "@lodestar/config";
3
3
  import { ForkName } from "@lodestar/params";
4
- import { Slot } from "@lodestar/types";
5
4
  import { LodestarError } from "@lodestar/utils";
6
5
  import { RateLimiterQuota } from "./rate_limiter/rateLimiterGRCA.js";
6
+ export declare const protocolPrefix = "/eth2/beacon_chain/req";
7
7
  /**
8
- * The encoding of the request/response payload
9
- */
10
- export declare enum EncodedPayloadType {
11
- ssz = 0,
12
- bytes = 1
13
- }
14
- /**
15
- * Wrapper for the request/response payload for SSZ type data
16
- */
17
- export interface EncodedPayloadSsz<T> {
18
- type: EncodedPayloadType.ssz;
19
- data: T;
20
- }
21
- /**
22
- * Wrapper for the request/response payload for binary type data
8
+ * Available request/response encoding strategies:
9
+ * https://github.com/ethereum/consensus-specs/blob/v1.1.10/specs/phase0/p2p-interface.md#encoding-strategies
23
10
  */
24
- export interface EncodedPayloadBytes {
25
- type: EncodedPayloadType.bytes;
26
- bytes: Uint8Array;
27
- contextBytes: ContextBytes;
11
+ export declare enum Encoding {
12
+ SSZ_SNAPPY = "ssz_snappy"
28
13
  }
14
+ export declare const CONTEXT_BYTES_FORK_DIGEST_LENGTH = 4;
29
15
  /**
30
16
  * Wrapper for the request/response payload
31
17
  */
32
- export type EncodedPayload<T> = EncodedPayloadSsz<T> | EncodedPayloadBytes;
33
- /**
34
- * Request handler
35
- */
36
- export type ReqRespHandler<Req, Resp> = (req: Req, peerId: PeerId) => AsyncIterable<EncodedPayload<Resp>>;
18
+ export type ResponseIncoming = {
19
+ data: Uint8Array;
20
+ fork: ForkName;
21
+ protocolVersion: number;
22
+ };
23
+ export type ResponseOutgoing = {
24
+ data: Uint8Array;
25
+ fork: ForkName;
26
+ };
37
27
  /**
38
- * ReqResp Protocol Deceleration
28
+ * Rate limiter options for the requests
39
29
  */
40
- export interface Protocol {
41
- readonly protocolPrefix: string;
42
- /** Protocol name identifier `beacon_blocks_by_range` or `status` */
43
- readonly method: string;
44
- /** Version counter: `1`, `2` etc */
45
- readonly version: number;
46
- readonly encoding: Encoding;
30
+ export interface ReqRespRateLimiterOpts {
31
+ rateLimitMultiplier?: number;
32
+ onRateLimit?: (peer: PeerId, method: string) => void;
47
33
  }
48
34
  /**
49
35
  * Inbound rate limiter quota for the protocol
50
36
  */
51
- export interface InboundRateLimitQuota<Req = unknown> {
37
+ export interface InboundRateLimitQuota {
52
38
  /**
53
39
  * Will be tracked for the protocol per peer
54
40
  */
@@ -61,24 +47,44 @@ export interface InboundRateLimitQuota<Req = unknown> {
61
47
  * Some requests may be counted multiple e.g. getBlocksByRange
62
48
  * for such implement this method else `1` will be used default
63
49
  */
64
- getRequestCount?: (req: Req) => number;
50
+ getRequestCount?: (req: Uint8Array) => number;
65
51
  }
52
+ export type ReqRespRequest = {
53
+ data: Uint8Array;
54
+ version: number;
55
+ };
66
56
  /**
67
- * ReqResp Protocol definition for full duplex protocols
57
+ * Request handler
68
58
  */
69
- export interface ProtocolDefinition<Req = unknown, Resp = unknown> extends Omit<Protocol, "protocolPrefix"> {
70
- handler: ReqRespHandler<Req, Resp>;
71
- requestType: (fork: ForkName) => TypeSerializer<Req> | null;
72
- responseType: (fork: ForkName) => TypeSerializer<Resp>;
59
+ export type ProtocolHandler = (req: ReqRespRequest, peerId: PeerId) => AsyncIterable<ResponseOutgoing>;
60
+ /**
61
+ * ReqResp Protocol Deceleration
62
+ */
63
+ export interface ProtocolAttributes {
64
+ readonly protocolPrefix: string;
65
+ /** Protocol name identifier `beacon_blocks_by_range` or `status` */
66
+ readonly method: string;
67
+ /** Version counter: `1`, `2` etc */
68
+ readonly version: number;
69
+ readonly encoding: Encoding;
70
+ }
71
+ export interface ProtocolDescriptor extends Omit<ProtocolAttributes, "protocolPrefix"> {
72
+ contextBytes: ContextBytesFactory;
73
73
  ignoreResponse?: boolean;
74
- renderRequestBody?: (request: Req) => string;
75
- contextBytes: ContextBytesFactory<Resp>;
76
- inboundRateLimits?: InboundRateLimitQuota<Req>;
74
+ }
75
+ /**
76
+ * ReqResp Protocol definition for full duplex protocols
77
+ */
78
+ export interface Protocol extends ProtocolDescriptor {
79
+ handler: ProtocolHandler;
80
+ inboundRateLimits?: InboundRateLimitQuota;
81
+ requestSizes: TypeSizes | null;
82
+ responseSizes: (fork: ForkName) => TypeSizes;
77
83
  }
78
84
  /**
79
85
  * ReqResp Protocol definition for dial only protocols
80
86
  */
81
- export interface DialOnlyProtocolDefinition<Req = unknown, Resp = unknown> extends Omit<ProtocolDefinition<Req, Resp>, "handler" | "inboundRateLimits" | "renderRequestBody"> {
87
+ export interface DialOnlyProtocol extends Omit<Protocol, "handler" | "inboundRateLimits" | "renderRequestBody"> {
82
88
  handler?: never;
83
89
  inboundRateLimits?: never;
84
90
  renderRequestBody?: never;
@@ -86,43 +92,33 @@ export interface DialOnlyProtocolDefinition<Req = unknown, Resp = unknown> exten
86
92
  /**
87
93
  * ReqResp Protocol definition for full duplex and dial only protocols
88
94
  */
89
- export type MixedProtocolDefinition<Req = unknown, Resp = unknown> = DialOnlyProtocolDefinition<Req, Resp> | ProtocolDefinition<Req, Resp>;
95
+ export type MixedProtocol = DialOnlyProtocol | Protocol;
90
96
  /**
91
97
  * ReqResp protocol definition descriptor for full duplex and dial only protocols
92
98
  * If handler is not provided, the protocol will be dial only
93
99
  * If handler is provided, the protocol will be full duplex
94
100
  */
95
- export type MixedProtocolDefinitionGenerator<Req, Res> = <H extends ReqRespHandler<Req, Res> | undefined = undefined>(modules: {
101
+ export type MixedProtocolGenerators = <H extends ProtocolHandler | undefined = undefined>(modules: {
96
102
  config: BeaconConfig;
97
- }, handler?: H) => H extends undefined ? DialOnlyProtocolDefinition<Req, Res> : ProtocolDefinition<Req, Res>;
103
+ }, handler?: H) => H extends undefined ? DialOnlyProtocol : Protocol;
98
104
  /**
99
105
  * ReqResp protocol definition descriptor for full duplex protocols
100
106
  */
101
- export type DuplexProtocolDefinitionGenerator<Req, Res> = (modules: {
107
+ export type ProtocolGenerator = (modules: {
102
108
  config: BeaconConfig;
103
- }, handler: ReqRespHandler<Req, Res>) => ProtocolDefinition<Req, Res>;
104
- export type HandlerTypeFromMessage<T> = T extends DuplexProtocolDefinitionGenerator<infer Req, infer Res> ? ReqRespHandler<Req, Res> : never;
105
- export declare const protocolPrefix = "/eth2/beacon_chain/req";
106
- /**
107
- * Available request/response encoding strategies:
108
- * https://github.com/ethereum/consensus-specs/blob/v1.1.10/specs/phase0/p2p-interface.md#encoding-strategies
109
- */
110
- export declare enum Encoding {
111
- SSZ_SNAPPY = "ssz_snappy"
112
- }
113
- export declare const CONTEXT_BYTES_FORK_DIGEST_LENGTH = 4;
114
- export type ContextBytesFactory<Resp> = {
109
+ }, handler: ProtocolHandler) => Protocol;
110
+ export type HandlerTypeFromMessage<T> = T extends ProtocolGenerator ? ProtocolHandler : never;
111
+ export type ContextBytesFactory = {
115
112
  type: ContextBytesType.Empty;
116
113
  } | {
117
114
  type: ContextBytesType.ForkDigest;
118
- forkDigestContext: ForkDigestContext & Pick<ForkConfig, "getForkName">;
119
- forkFromResponse: (response: Resp) => ForkName;
115
+ forkDigestContext: ForkDigestContext;
120
116
  };
121
117
  export type ContextBytes = {
122
118
  type: ContextBytesType.Empty;
123
119
  } | {
124
120
  type: ContextBytesType.ForkDigest;
125
- forkSlot: Slot;
121
+ fork: ForkName;
126
122
  };
127
123
  export declare enum ContextBytesType {
128
124
  /** 0 bytes chunk, can be ignored */
@@ -138,21 +134,8 @@ export type LightClientServerErrorType = {
138
134
  };
139
135
  export declare class LightClientServerError extends LodestarError<LightClientServerErrorType> {
140
136
  }
141
- /**
142
- * Lightweight interface of ssz Type<T>
143
- */
144
- export interface TypeSerializer<T> {
145
- serialize(data: T): Uint8Array;
146
- deserialize(bytes: Uint8Array): T;
137
+ export type TypeSizes = {
147
138
  maxSize: number;
148
139
  minSize: number;
149
- equals(a: T, b: T): boolean;
150
- }
151
- /**
152
- * Rate limiter options for the requests
153
- */
154
- export interface ReqRespRateLimiterOpts {
155
- rateLimitMultiplier?: number;
156
- onRateLimit?: (peer: PeerId, method: string) => void;
157
- }
140
+ };
158
141
  //# sourceMappingURL=types.d.ts.map
package/lib/types.js CHANGED
@@ -1,12 +1,4 @@
1
1
  import { LodestarError } from "@lodestar/utils";
2
- /**
3
- * The encoding of the request/response payload
4
- */
5
- export var EncodedPayloadType;
6
- (function (EncodedPayloadType) {
7
- EncodedPayloadType[EncodedPayloadType["ssz"] = 0] = "ssz";
8
- EncodedPayloadType[EncodedPayloadType["bytes"] = 1] = "bytes";
9
- })(EncodedPayloadType || (EncodedPayloadType = {}));
10
2
  export const protocolPrefix = "/eth2/beacon_chain/req";
11
3
  /**
12
4
  * Available request/response encoding strategies:
package/lib/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAG9C;;GAEG;AACH,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,yDAAG,CAAA;IACH,6DAAK,CAAA;AACP,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B;AAkHD,MAAM,CAAC,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAEvD;;;GAGG;AACH,MAAM,CAAN,IAAY,QAEX;AAFD,WAAY,QAAQ;IAClB,qCAAyB,CAAA;AAC3B,CAAC,EAFW,QAAQ,KAAR,QAAQ,QAEnB;AAED,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAYlD,MAAM,CAAN,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,oCAAoC;IACpC,yDAAK,CAAA;IACL,iJAAiJ;IACjJ,mEAAU,CAAA;AACZ,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,QAK3B;AAED,MAAM,CAAN,IAAY,0BAEX;AAFD,WAAY,0BAA0B;IACpC,2EAA6C,CAAA;AAC/C,CAAC,EAFW,0BAA0B,KAA1B,0BAA0B,QAErC;AAID,MAAM,OAAO,sBAAuB,SAAQ,aAAyC;CAAG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAG9C,MAAM,CAAC,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAEvD;;;GAGG;AACH,MAAM,CAAN,IAAY,QAEX;AAFD,WAAY,QAAQ;IAClB,qCAAyB,CAAA;AAC3B,CAAC,EAFW,QAAQ,KAAR,QAAQ,QAEnB;AAED,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAuHlD,MAAM,CAAN,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,oCAAoC;IACpC,yDAAK,CAAA;IACL,iJAAiJ;IACjJ,mEAAU,CAAA;AACZ,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,QAK3B;AAED,MAAM,CAAN,IAAY,0BAEX;AAFD,WAAY,0BAA0B;IACpC,2EAA6C,CAAA;AAC/C,CAAC,EAFW,0BAA0B,KAA1B,0BAA0B,QAErC;AAID,MAAM,OAAO,sBAAuB,SAAQ,aAAyC;CAAG"}
@@ -10,7 +10,7 @@ export declare class BufferedSource {
10
10
  isDone: boolean;
11
11
  private buffer;
12
12
  private source;
13
- constructor(source: AsyncGenerator<Uint8ArrayList>);
13
+ constructor(source: AsyncGenerator<Uint8ArrayList | Uint8Array>);
14
14
  [Symbol.asyncIterator](): AsyncIterator<Uint8ArrayList>;
15
15
  }
16
16
  //# sourceMappingURL=bufferedSource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bufferedSource.js","sourceRoot":"","sources":["../../src/utils/bufferedSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,OAAO,cAAc;IAKzB,YAAY,MAAsC;QAJlD,WAAM,GAAG,KAAK,CAAC;QAKb,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,CAAC,MAAM,CAAC,aAAa,CAAC;QACpB,4DAA4D;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,OAAO;YACL,KAAK,CAAC,IAAI;gBACR,0DAA0D;gBAC1D,8DAA8D;gBAC9D,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBACvC,SAAS,GAAG,KAAK,CAAC;oBAClB,OAAO,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC;iBAC1C;gBAED,mEAAmE;gBACnE,MAAM,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACtD,IAAI,IAAI,KAAK,IAAI,EAAE;oBACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;oBACnB,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC;iBACvC;qBAAM;oBACL,qEAAqE;oBACrE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC1B,OAAO,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC;iBAC1C;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"bufferedSource.js","sourceRoot":"","sources":["../../src/utils/bufferedSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,OAAO,cAAc;IAKzB,YAAY,MAAmD;QAJ/D,WAAM,GAAG,KAAK,CAAC;QAKb,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,CAAC,MAAM,CAAC,aAAa,CAAC;QACpB,4DAA4D;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,OAAO;YACL,KAAK,CAAC,IAAI;gBACR,0DAA0D;gBAC1D,8DAA8D;gBAC9D,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBACvC,SAAS,GAAG,KAAK,CAAC;oBAClB,OAAO,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC;iBAC1C;gBAED,mEAAmE;gBACnE,MAAM,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACtD,IAAI,IAAI,KAAK,IAAI,EAAE;oBACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;oBACnB,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC;iBACvC;qBAAM;oBACL,qEAAqE;oBACrE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC1B,OAAO,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC;iBAC1C;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { RequestErrorCode, RequestInternalError } from "../request/errors.js";
1
+ import { RequestErrorCode, RequestError } from "../request/errors.js";
2
2
  /**
3
3
  * Sink for `<response_chunk>*`, from
4
4
  * ```bnf
@@ -10,6 +10,6 @@ export async function collectExactOne(source) {
10
10
  for await (const response of source) {
11
11
  return response;
12
12
  }
13
- throw new RequestInternalError({ code: RequestErrorCode.EMPTY_RESPONSE });
13
+ throw new RequestError({ code: RequestErrorCode.EMPTY_RESPONSE });
14
14
  }
15
15
  //# sourceMappingURL=collectExactOne.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"collectExactOne.js","sourceRoot":"","sources":["../../src/utils/collectExactOne.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAI,MAAwB;IAC/D,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,MAAM,EAAE;QACnC,OAAO,QAAQ,CAAC;KACjB;IACD,MAAM,IAAI,oBAAoB,CAAC,EAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,EAAC,CAAC,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"collectExactOne.js","sourceRoot":"","sources":["../../src/utils/collectExactOne.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAI,MAAwB;IAC/D,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,MAAM,EAAE;QACnC,OAAO,QAAQ,CAAC;KACjB;IACD,MAAM,IAAI,YAAY,CAAC,EAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,EAAC,CAAC,CAAC;AAClE,CAAC"}
@@ -1,4 +1,4 @@
1
- import { Encoding, Protocol } from "../types.js";
1
+ import { Encoding, ProtocolAttributes } from "../types.js";
2
2
  /**
3
3
  * https://github.com/ethereum/consensus-specs/blob/v1.2.0/specs/phase0/p2p-interface.md#protocol-identification
4
4
  */
@@ -6,5 +6,5 @@ export declare function formatProtocolID(protocolPrefix: string, method: string,
6
6
  /**
7
7
  * https://github.com/ethereum/consensus-specs/blob/v1.2.0/specs/phase0/p2p-interface.md#protocol-identification
8
8
  */
9
- export declare function parseProtocolID(protocolId: string): Protocol;
9
+ export declare function parseProtocolID(protocolId: string): ProtocolAttributes;
10
10
  //# sourceMappingURL=protocolId.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocolId.js","sourceRoot":"","sources":["../../src/utils/protocolId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAW,MAAM,aAAa,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,cAAsB,EAAE,MAAc,EAAE,OAAe,EAAE,QAAkB;IAC1G,OAAO,GAAG,cAAc,IAAI,MAAM,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACrB,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;KACvD;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAa,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAC/C,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;KAC5E;IAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;QACjD,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;KAC3E;IAED,6CAA6C;IAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAEpD,mGAAmG;IACnG,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEzC,wFAAwF;IACxF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEpE,OAAO;QACL,cAAc;QACd,MAAM;QACN,OAAO;QACP,QAAQ;KACT,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"protocolId.js","sourceRoot":"","sources":["../../src/utils/protocolId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAqB,MAAM,aAAa,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,cAAsB,EAAE,MAAc,EAAE,OAAe,EAAE,QAAkB;IAC1G,OAAO,GAAG,cAAc,IAAI,MAAM,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACrB,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;KACvD;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAa,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAC/C,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;KAC5E;IAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;QACjD,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;KAC3E;IAED,6CAA6C;IAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAEpD,mGAAmG;IACnG,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEzC,wFAAwF;IACxF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEpE,OAAO;QACL,cAAc;QACd,MAAM;QACN,OAAO;QACP,QAAQ;KACT,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -11,15 +11,12 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.8.0",
14
+ "version": "1.9.0-dev.06226b5f17",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
18
18
  "import": "./lib/index.js"
19
19
  },
20
- "./protocols": {
21
- "import": "./lib/protocols/index.js"
22
- },
23
20
  "./utils": {
24
21
  "import": "./lib/utils/index.js"
25
22
  }
@@ -44,6 +41,7 @@
44
41
  "scripts": {
45
42
  "clean": "rm -rf lib && rm -f *.tsbuildinfo",
46
43
  "build": "tsc -p tsconfig.build.json",
44
+ "build:watch": "yarn run build --watch",
47
45
  "build:release": "yarn clean && yarn run build",
48
46
  "check-build": "node -e \"(async function() { await import('./lib/index.js') })()\"",
49
47
  "check-types": "tsc",
@@ -59,18 +57,21 @@
59
57
  "@chainsafe/snappy-stream": "^5.1.2",
60
58
  "@libp2p/interface-connection": "^3.0.2",
61
59
  "@libp2p/interface-peer-id": "^2.0.1",
62
- "@lodestar/config": "^1.8.0",
63
- "@lodestar/params": "^1.8.0",
64
- "@lodestar/types": "^1.8.0",
65
- "@lodestar/utils": "^1.8.0",
60
+ "@lodestar/config": "1.9.0-dev.06226b5f17",
61
+ "@lodestar/params": "1.9.0-dev.06226b5f17",
62
+ "@lodestar/utils": "1.9.0-dev.06226b5f17",
66
63
  "it-all": "^3.0.1",
67
64
  "snappyjs": "^0.7.0",
68
65
  "stream-to-it": "^0.2.4",
69
66
  "uint8arraylist": "^2.4.3",
70
67
  "varint": "^6.0.0"
71
68
  },
69
+ "devDependencies": {
70
+ "@lodestar/logger": "1.9.0-dev.06226b5f17",
71
+ "@lodestar/types": "1.9.0-dev.06226b5f17"
72
+ },
72
73
  "peerDependencies": {
73
- "libp2p": "0.41.0"
74
+ "libp2p": "~0.42.2"
74
75
  },
75
76
  "keywords": [
76
77
  "ethereum",
@@ -80,5 +81,5 @@
80
81
  "reqresp",
81
82
  "blockchain"
82
83
  ],
83
- "gitHead": "a4b29cfe38de109c44992977074869a8c01cfc83"
84
+ "gitHead": "c3b576af944902ba4b3c6283cf7323236e47a8ff"
84
85
  }
@@ -1,4 +0,0 @@
1
- import { deneb } from "@lodestar/types";
2
- import { DuplexProtocolDefinitionGenerator } from "../types.js";
3
- export declare const BeaconBlockAndBlobsSidecarByRoot: DuplexProtocolDefinitionGenerator<deneb.BeaconBlockAndBlobsSidecarByRootRequest, deneb.SignedBeaconBlockAndBlobsSidecar>;
4
- //# sourceMappingURL=BeaconBlockAndBlobsSidecarByRoot.d.ts.map
@@ -1,27 +0,0 @@
1
- import { ssz } from "@lodestar/types";
2
- import { toHex } from "@lodestar/utils";
3
- import { ContextBytesType, Encoding } from "../types.js";
4
- // eslint-disable-next-line @typescript-eslint/naming-convention
5
- export const BeaconBlockAndBlobsSidecarByRoot = (modules, handler) => {
6
- return {
7
- method: "beacon_block_and_blobs_sidecar_by_root",
8
- version: 1,
9
- encoding: Encoding.SSZ_SNAPPY,
10
- handler,
11
- requestType: () => ssz.deneb.BeaconBlockAndBlobsSidecarByRootRequest,
12
- // TODO: Make it fork compliant
13
- responseType: () => ssz.deneb.SignedBeaconBlockAndBlobsSidecar,
14
- renderRequestBody: (req) => req.map((root) => toHex(root)).join(","),
15
- contextBytes: {
16
- type: ContextBytesType.ForkDigest,
17
- forkDigestContext: modules.config,
18
- forkFromResponse: ({ beaconBlock }) => modules.config.getForkName(beaconBlock.message.slot),
19
- },
20
- inboundRateLimits: {
21
- // TODO DENEB: For now same value as BeaconBlocksByRoot https://github.com/sigp/lighthouse/blob/bf533c8e42cc73c35730e285c21df8add0195369/beacon_node/lighthouse_network/src/rpc/mod.rs#L118-L130
22
- byPeer: { quota: 128, quotaTimeMs: 10000 },
23
- getRequestCount: (req) => req.length,
24
- },
25
- };
26
- };
27
- //# sourceMappingURL=BeaconBlockAndBlobsSidecarByRoot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BeaconBlockAndBlobsSidecarByRoot.js","sourceRoot":"","sources":["../../src/protocols/BeaconBlockAndBlobsSidecarByRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,gBAAgB,EAAqC,QAAQ,EAAC,MAAM,aAAa,CAAC;AAE1F,gEAAgE;AAChE,MAAM,CAAC,MAAM,gCAAgC,GAGzC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;IACvB,OAAO;QACL,MAAM,EAAE,wCAAwC;QAChD,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,QAAQ,CAAC,UAAU;QAC7B,OAAO;QACP,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,uCAAuC;QACpE,+BAA+B;QAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC;QAC9D,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACpE,YAAY,EAAE;YACZ,IAAI,EAAE,gBAAgB,CAAC,UAAU;YACjC,iBAAiB,EAAE,OAAO,CAAC,MAAM;YACjC,gBAAgB,EAAE,CAAC,EAAC,WAAW,EAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAC1F;QACD,iBAAiB,EAAE;YACjB,gMAAgM;YAChM,MAAM,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,KAAM,EAAC;YACzC,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM;SACrC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1,5 +0,0 @@
1
- import { allForks, phase0 } from "@lodestar/types";
2
- import { DuplexProtocolDefinitionGenerator } from "../types.js";
3
- export declare const BeaconBlocksByRange: DuplexProtocolDefinitionGenerator<phase0.BeaconBlocksByRangeRequest, allForks.SignedBeaconBlock>;
4
- export declare const BeaconBlocksByRangeV2: DuplexProtocolDefinitionGenerator<phase0.BeaconBlocksByRangeRequest, allForks.SignedBeaconBlock>;
5
- //# sourceMappingURL=BeaconBlocksByRange.d.ts.map
@@ -1,38 +0,0 @@
1
- import { MAX_REQUEST_BLOCKS } from "@lodestar/params";
2
- import { ssz } from "@lodestar/types";
3
- import { ContextBytesType, Encoding } from "../types.js";
4
- /* eslint-disable @typescript-eslint/naming-convention */
5
- const BeaconBlocksByRangeCommon = {
6
- method: "beacon_blocks_by_range",
7
- encoding: Encoding.SSZ_SNAPPY,
8
- requestType: () => ssz.phase0.BeaconBlocksByRangeRequest,
9
- renderRequestBody: (req) => `${req.startSlot},${req.step},${req.count}`,
10
- inboundRateLimits: {
11
- // Rationale: https://github.com/sigp/lighthouse/blob/bf533c8e42cc73c35730e285c21df8add0195369/beacon_node/lighthouse_network/src/rpc/mod.rs#L118-L130
12
- byPeer: { quota: MAX_REQUEST_BLOCKS, quotaTimeMs: 10000 },
13
- getRequestCount: (req) => req.count,
14
- },
15
- };
16
- export const BeaconBlocksByRange = (_modules, handler) => {
17
- return {
18
- ...BeaconBlocksByRangeCommon,
19
- version: 1,
20
- handler,
21
- responseType: () => ssz.phase0.SignedBeaconBlock,
22
- contextBytes: { type: ContextBytesType.Empty },
23
- };
24
- };
25
- export const BeaconBlocksByRangeV2 = (modules, handler) => {
26
- return {
27
- ...BeaconBlocksByRangeCommon,
28
- version: 2,
29
- handler,
30
- responseType: (forkName) => ssz[forkName].SignedBeaconBlock,
31
- contextBytes: {
32
- type: ContextBytesType.ForkDigest,
33
- forkDigestContext: modules.config,
34
- forkFromResponse: (block) => modules.config.getForkName(block.message.slot),
35
- },
36
- };
37
- };
38
- //# sourceMappingURL=BeaconBlocksByRange.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BeaconBlocksByRange.js","sourceRoot":"","sources":["../../src/protocols/BeaconBlocksByRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAmB,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAC,gBAAgB,EAAE,QAAQ,EAA6D,MAAM,aAAa,CAAC;AAEnH,yDAAyD;AACzD,MAAM,yBAAyB,GAG3B;IACF,MAAM,EAAE,wBAAwB;IAChC,QAAQ,EAAE,QAAQ,CAAC,UAAU;IAC7B,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,0BAA0B;IACxD,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE;IACvE,iBAAiB,EAAE;QACjB,sJAAsJ;QACtJ,MAAM,EAAE,EAAC,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAM,EAAC;QACxD,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK;KACpC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAG5B,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;IACxB,OAAO;QACL,GAAG,yBAAyB;QAC5B,OAAO,EAAE,CAAC;QACV,OAAO;QACP,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB;QAChD,YAAY,EAAE,EAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,EAAC;KAC7C,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAG9B,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;IACvB,OAAO;QACL,GAAG,yBAAyB;QAC5B,OAAO,EAAE,CAAC;QACV,OAAO;QACP,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,iBAAiB;QAC3D,YAAY,EAAE;YACZ,IAAI,EAAE,gBAAgB,CAAC,UAAU;YACjC,iBAAiB,EAAE,OAAO,CAAC,MAAM;YACjC,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;SAC5E;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1,5 +0,0 @@
1
- import { allForks, phase0 } from "@lodestar/types";
2
- import { DuplexProtocolDefinitionGenerator } from "../types.js";
3
- export declare const BeaconBlocksByRoot: DuplexProtocolDefinitionGenerator<phase0.BeaconBlocksByRootRequest, allForks.SignedBeaconBlock>;
4
- export declare const BeaconBlocksByRootV2: DuplexProtocolDefinitionGenerator<phase0.BeaconBlocksByRootRequest, allForks.SignedBeaconBlock>;
5
- //# sourceMappingURL=BeaconBlocksByRoot.d.ts.map
@@ -1,38 +0,0 @@
1
- import { ssz } from "@lodestar/types";
2
- import { toHex } from "@lodestar/utils";
3
- import { ContextBytesType, Encoding } from "../types.js";
4
- /* eslint-disable @typescript-eslint/naming-convention */
5
- const BeaconBlocksByRootCommon = {
6
- method: "beacon_blocks_by_root",
7
- encoding: Encoding.SSZ_SNAPPY,
8
- requestType: () => ssz.phase0.BeaconBlocksByRootRequest,
9
- renderRequestBody: (req) => req.map((root) => toHex(root)).join(","),
10
- inboundRateLimits: {
11
- // Rationale: https://github.com/sigp/lighthouse/blob/bf533c8e42cc73c35730e285c21df8add0195369/beacon_node/lighthouse_network/src/rpc/mod.rs#L118-L130
12
- byPeer: { quota: 128, quotaTimeMs: 10000 },
13
- getRequestCount: (req) => req.length,
14
- },
15
- };
16
- export const BeaconBlocksByRoot = (_modules, handler) => {
17
- return {
18
- ...BeaconBlocksByRootCommon,
19
- version: 1,
20
- handler,
21
- responseType: () => ssz.phase0.SignedBeaconBlock,
22
- contextBytes: { type: ContextBytesType.Empty },
23
- };
24
- };
25
- export const BeaconBlocksByRootV2 = (modules, handler) => {
26
- return {
27
- ...BeaconBlocksByRootCommon,
28
- version: 2,
29
- handler,
30
- responseType: (forkName) => ssz[forkName].SignedBeaconBlock,
31
- contextBytes: {
32
- type: ContextBytesType.ForkDigest,
33
- forkDigestContext: modules.config,
34
- forkFromResponse: (block) => modules.config.getForkName(block.message.slot),
35
- },
36
- };
37
- };
38
- //# sourceMappingURL=BeaconBlocksByRoot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BeaconBlocksByRoot.js","sourceRoot":"","sources":["../../src/protocols/BeaconBlocksByRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,gBAAgB,EAAqC,QAAQ,EAA0B,MAAM,aAAa,CAAC;AAEnH,yDAAyD;AACzD,MAAM,wBAAwB,GAG1B;IACF,MAAM,EAAE,uBAAuB;IAC/B,QAAQ,EAAE,QAAQ,CAAC,UAAU;IAC7B,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,yBAAyB;IACvD,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACpE,iBAAiB,EAAE;QACjB,sJAAsJ;QACtJ,MAAM,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,KAAM,EAAC;QACzC,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM;KACrC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAG3B,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;IACxB,OAAO;QACL,GAAG,wBAAwB;QAC3B,OAAO,EAAE,CAAC;QACV,OAAO;QACP,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB;QAChD,YAAY,EAAE,EAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,EAAC;KAC7C,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAG7B,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;IACvB,OAAO;QACL,GAAG,wBAAwB;QAC3B,OAAO,EAAE,CAAC;QACV,OAAO;QACP,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,iBAAiB;QAC3D,YAAY,EAAE;YACZ,IAAI,EAAE,gBAAgB,CAAC,UAAU;YACjC,iBAAiB,EAAE,OAAO,CAAC,MAAM;YACjC,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;SAC5E;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1,4 +0,0 @@
1
- import { deneb } from "@lodestar/types";
2
- import { DuplexProtocolDefinitionGenerator } from "../types.js";
3
- export declare const BlobsSidecarsByRange: DuplexProtocolDefinitionGenerator<deneb.BlobsSidecarsByRangeRequest, deneb.BlobsSidecar>;
4
- //# sourceMappingURL=BlobsSidecarsByRange.d.ts.map
@@ -1,27 +0,0 @@
1
- import { MAX_REQUEST_BLOCKS } from "@lodestar/params";
2
- import { ssz } from "@lodestar/types";
3
- import { ContextBytesType, Encoding } from "../types.js";
4
- // eslint-disable-next-line @typescript-eslint/naming-convention
5
- export const BlobsSidecarsByRange = (modules, handler) => {
6
- return {
7
- method: "blobs_sidecars_by_range",
8
- version: 1,
9
- encoding: Encoding.SSZ_SNAPPY,
10
- handler,
11
- requestType: () => ssz.deneb.BlobsSidecarsByRangeRequest,
12
- // TODO: Make it fork compliant
13
- responseType: () => ssz.deneb.BlobsSidecar,
14
- renderRequestBody: (req) => `${req.startSlot},${req.count}`,
15
- contextBytes: {
16
- type: ContextBytesType.ForkDigest,
17
- forkDigestContext: modules.config,
18
- forkFromResponse: (blobsSidecar) => modules.config.getForkName(blobsSidecar.beaconBlockSlot),
19
- },
20
- inboundRateLimits: {
21
- // TODO DENEB: For now same value as BeaconBlocksByRange https://github.com/sigp/lighthouse/blob/bf533c8e42cc73c35730e285c21df8add0195369/beacon_node/lighthouse_network/src/rpc/mod.rs#L118-L130
22
- byPeer: { quota: MAX_REQUEST_BLOCKS, quotaTimeMs: 10000 },
23
- getRequestCount: (req) => req.count,
24
- },
25
- };
26
- };
27
- //# sourceMappingURL=BlobsSidecarsByRange.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BlobsSidecarsByRange.js","sourceRoot":"","sources":["../../src/protocols/BlobsSidecarsByRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAQ,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,gBAAgB,EAAqC,QAAQ,EAAC,MAAM,aAAa,CAAC;AAE1F,gEAAgE;AAChE,MAAM,CAAC,MAAM,oBAAoB,GAG7B,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;IACvB,OAAO;QACL,MAAM,EAAE,yBAAyB;QACjC,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,QAAQ,CAAC,UAAU;QAC7B,OAAO;QACP,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B;QACxD,+BAA+B;QAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY;QAC1C,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,KAAK,EAAE;QAC3D,YAAY,EAAE;YACZ,IAAI,EAAE,gBAAgB,CAAC,UAAU;YACjC,iBAAiB,EAAE,OAAO,CAAC,MAAM;YACjC,gBAAgB,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,eAAe,CAAC;SAC7F;QACD,iBAAiB,EAAE;YACjB,iMAAiM;YACjM,MAAM,EAAE,EAAC,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAM,EAAC;YACxD,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK;SACpC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1,4 +0,0 @@
1
- import { phase0 } from "@lodestar/types";
2
- import { DuplexProtocolDefinitionGenerator } from "../types.js";
3
- export declare const Goodbye: DuplexProtocolDefinitionGenerator<phase0.Goodbye, phase0.Goodbye>;
4
- //# sourceMappingURL=Goodbye.d.ts.map
@@ -1,21 +0,0 @@
1
- import { ssz } from "@lodestar/types";
2
- import { ContextBytesType, Encoding } from "../types.js";
3
- // eslint-disable-next-line @typescript-eslint/naming-convention
4
- export const Goodbye = (_modules, handler) => {
5
- return {
6
- method: "goodbye",
7
- version: 1,
8
- encoding: Encoding.SSZ_SNAPPY,
9
- handler,
10
- requestType: () => ssz.phase0.Goodbye,
11
- responseType: () => ssz.phase0.Goodbye,
12
- ignoreResponse: true,
13
- renderRequestBody: (req) => req.toString(10),
14
- contextBytes: { type: ContextBytesType.Empty },
15
- inboundRateLimits: {
16
- // Rationale: https://github.com/sigp/lighthouse/blob/bf533c8e42cc73c35730e285c21df8add0195369/beacon_node/lighthouse_network/src/rpc/mod.rs#L118-L130
17
- byPeer: { quota: 1, quotaTimeMs: 10000 },
18
- },
19
- };
20
- };
21
- //# sourceMappingURL=Goodbye.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Goodbye.js","sourceRoot":"","sources":["../../src/protocols/Goodbye.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,gBAAgB,EAAqC,QAAQ,EAAC,MAAM,aAAa,CAAC;AAE1F,gEAAgE;AAChE,MAAM,CAAC,MAAM,OAAO,GAAsE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;IAC9G,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,QAAQ,CAAC,UAAU;QAC7B,OAAO;QACP,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO;QACrC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO;QACtC,cAAc,EAAE,IAAI;QACpB,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,YAAY,EAAE,EAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,EAAC;QAC5C,iBAAiB,EAAE;YACjB,sJAAsJ;YACtJ,MAAM,EAAE,EAAC,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,KAAM,EAAC;SACxC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1,4 +0,0 @@
1
- import { Root, allForks } from "@lodestar/types";
2
- import { MixedProtocolDefinitionGenerator } from "../types.js";
3
- export declare const LightClientBootstrap: MixedProtocolDefinitionGenerator<Root, allForks.LightClientBootstrap>;
4
- //# sourceMappingURL=LightClientBootstrap.d.ts.map
@@ -1,30 +0,0 @@
1
- import { ssz } from "@lodestar/types";
2
- import { isForkLightClient } from "@lodestar/params";
3
- import { toHex } from "@lodestar/utils";
4
- import { Encoding } from "../types.js";
5
- import { getContextBytesLightclient } from "./utils.js";
6
- // eslint-disable-next-line @typescript-eslint/naming-convention
7
- export const LightClientBootstrap = ((modules, handler) => {
8
- const dialProtocol = {
9
- method: "light_client_bootstrap",
10
- version: 1,
11
- encoding: Encoding.SSZ_SNAPPY,
12
- requestType: () => ssz.Root,
13
- responseType: (forkName) => isForkLightClient(forkName)
14
- ? ssz.allForksLightClient[forkName].LightClientBootstrap
15
- : ssz.altair.LightClientBootstrap,
16
- contextBytes: getContextBytesLightclient((bootstrap) => modules.config.getForkName(bootstrap.header.beacon.slot), modules),
17
- };
18
- if (!handler)
19
- return dialProtocol;
20
- return {
21
- ...dialProtocol,
22
- handler,
23
- renderRequestBody: (req) => toHex(req),
24
- inboundRateLimits: {
25
- // As similar in the nature of `Status` protocol so we use the same rate limits.
26
- byPeer: { quota: 5, quotaTimeMs: 15000 },
27
- },
28
- };
29
- });
30
- //# sourceMappingURL=LightClientBootstrap.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LightClientBootstrap.js","sourceRoot":"","sources":["../../src/protocols/LightClientBootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,GAAG,EAAW,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAA6B,QAAQ,EAAmC,MAAM,aAAa,CAAC;AACnG,OAAO,EAAC,0BAA0B,EAAC,MAAM,YAAY,CAAC;AAEtD,gEAAgE;AAChE,MAAM,CAAC,MAAM,oBAAoB,GAA0E,CAAC,CAC1G,OAAO,EACP,OAAO,EACP,EAAE;IACF,MAAM,YAAY,GAAoE;QACpF,MAAM,EAAE,wBAAwB;QAChC,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,QAAQ,CAAC,UAAU;QAC7B,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI;QAC3B,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE,CACzB,iBAAiB,CAAC,QAAQ,CAAC;YACzB,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,oBAAoB;YACxD,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB;QACrC,YAAY,EAAE,0BAA0B,CACtC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EACvE,OAAO,CACR;KACF,CAAC;IAEF,IAAI,CAAC,OAAO;QAAE,OAAO,YAAY,CAAC;IAElC,OAAO;QACL,GAAG,YAAY;QACf,OAAO;QACP,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;QACtC,iBAAiB,EAAE;YACjB,gFAAgF;YAChF,MAAM,EAAE,EAAC,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,KAAM,EAAC;SACxC;KACF,CAAC;AACJ,CAAC,CAA0E,CAAC"}
@@ -1,4 +0,0 @@
1
- import { allForks } from "@lodestar/types";
2
- import { MixedProtocolDefinitionGenerator } from "../types.js";
3
- export declare const LightClientFinalityUpdate: MixedProtocolDefinitionGenerator<null, allForks.LightClientFinalityUpdate>;
4
- //# sourceMappingURL=LightClientFinalityUpdate.d.ts.map