trac-msb 0.2.13 → 0.2.15

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 (121) hide show
  1. package/.github/workflows/acceptance-tests.yml +38 -0
  2. package/.github/workflows/lint-pr-title.yml +26 -0
  3. package/.github/workflows/publish.yml +33 -0
  4. package/.github/workflows/unit-tests.yml +34 -0
  5. package/package.json +7 -12
  6. package/proto/network.proto +74 -0
  7. package/rpc/rpc_services.js +4 -22
  8. package/scripts/generate-protobufs.js +12 -37
  9. package/src/config/config.js +9 -26
  10. package/src/config/env.js +17 -27
  11. package/src/core/network/Network.js +36 -73
  12. package/src/core/network/protocols/LegacyProtocol.js +11 -21
  13. package/src/core/network/protocols/NetworkMessages.js +17 -38
  14. package/src/core/network/protocols/ProtocolInterface.js +2 -14
  15. package/src/core/network/protocols/ProtocolSession.js +17 -144
  16. package/src/core/network/protocols/V1Protocol.js +18 -37
  17. package/src/core/network/protocols/legacy/NetworkMessageRouter.js +19 -25
  18. package/src/core/network/protocols/legacy/handlers/{LegacyGetRequestHandler.js → GetRequestHandler.js} +6 -6
  19. package/src/core/network/protocols/legacy/handlers/ResponseHandler.js +37 -0
  20. package/src/core/network/protocols/{legacy/handlers/LegacyRoleOperationHandler.js → shared/handlers/RoleOperationHandler.js} +11 -18
  21. package/src/core/network/protocols/{legacy/handlers/LegacySubnetworkOperationHandler.js → shared/handlers/SubnetworkOperationHandler.js} +17 -28
  22. package/src/core/network/protocols/{legacy/handlers/LegacyTransferOperationHandler.js → shared/handlers/TransferOperationHandler.js} +11 -17
  23. package/src/core/network/protocols/{legacy/handlers/BaseStateOperationHandler.js → shared/handlers/base/BaseOperationHandler.js} +12 -23
  24. package/src/core/network/protocols/shared/validators/{PartialBootstrapDeploymentValidator.js → PartialBootstrapDeployment.js} +4 -9
  25. package/src/core/network/protocols/shared/validators/{PartialRoleAccessValidator.js → PartialRoleAccess.js} +17 -51
  26. package/src/core/network/protocols/shared/validators/{PartialTransactionValidator.js → PartialTransaction.js} +7 -21
  27. package/src/core/network/protocols/shared/validators/{PartialTransferValidator.js → PartialTransfer.js} +9 -26
  28. package/src/core/network/protocols/shared/validators/{PartialOperationValidator.js → base/PartialOperation.js} +25 -47
  29. package/src/core/network/protocols/v1/NetworkMessageRouter.js +7 -91
  30. package/src/core/network/services/ConnectionManager.js +94 -146
  31. package/src/core/network/services/MessageOrchestrator.js +27 -151
  32. package/src/core/network/services/TransactionPoolService.js +18 -129
  33. package/src/core/network/services/TransactionRateLimiterService.js +34 -52
  34. package/src/core/network/services/ValidatorObserverService.js +26 -18
  35. package/src/core/state/State.js +19 -70
  36. package/src/index.js +8 -6
  37. package/src/messages/network/v1/NetworkMessageBuilder.js +79 -59
  38. package/src/messages/network/v1/NetworkMessageDirector.js +50 -16
  39. package/src/utils/Scheduler.js +8 -0
  40. package/src/utils/constants.js +5 -71
  41. package/src/utils/helpers.js +1 -10
  42. package/src/utils/normalizers.js +0 -38
  43. package/src/utils/protobuf/network.cjs +840 -0
  44. package/src/utils/protobuf/operationHelpers.js +3 -24
  45. package/tests/acceptance/v1/account/account.test.mjs +2 -8
  46. package/tests/acceptance/v1/tx/tx.test.mjs +1 -23
  47. package/tests/acceptance/v1/tx-details/tx-details.test.mjs +6 -34
  48. package/tests/fixtures/assembleMessage.fixtures.js +8 -7
  49. package/tests/fixtures/networkV1.fixtures.js +28 -2
  50. package/tests/helpers/autobaseTestHelpers.js +5 -2
  51. package/tests/helpers/createTestSignature.js +3 -2
  52. package/tests/helpers/transactionPayloads.mjs +2 -2
  53. package/tests/unit/messages/network/NetworkMessageBuilder.test.js +79 -239
  54. package/tests/unit/messages/network/NetworkMessageDirector.test.js +77 -223
  55. package/tests/unit/messages/state/applyStateMessageBuilder.complete.test.js +5 -1
  56. package/tests/unit/messages/state/applyStateMessageBuilder.partial.test.js +5 -1
  57. package/tests/unit/network/ConnectionManager.test.js +191 -0
  58. package/tests/unit/network/networkModule.test.js +1 -4
  59. package/tests/unit/unit.test.js +2 -2
  60. package/tests/unit/utils/fileUtils/readAddressesFromWhitelistFile.test.js +2 -2
  61. package/tests/unit/utils/fileUtils/readBalanceMigrationFile.test.js +2 -2
  62. package/tests/unit/utils/protobuf/operationHelpers.test.js +4 -2
  63. package/tests/unit/utils/utils.test.js +0 -1
  64. package/proto/network/v1/enums/message_type.proto +0 -16
  65. package/proto/network/v1/enums/result_code.proto +0 -84
  66. package/proto/network/v1/messages/broadcast_transaction_request.proto +0 -9
  67. package/proto/network/v1/messages/broadcast_transaction_response.proto +0 -13
  68. package/proto/network/v1/messages/liveness_request.proto +0 -8
  69. package/proto/network/v1/messages/liveness_response.proto +0 -11
  70. package/proto/network/v1/network_message.proto +0 -22
  71. package/src/core/network/protocols/connectionPolicies.js +0 -88
  72. package/src/core/network/protocols/legacy/handlers/LegacyResponseHandler.js +0 -23
  73. package/src/core/network/protocols/shared/errors/SharedValidatorRejectionError.js +0 -27
  74. package/src/core/network/protocols/v1/V1ProtocolError.js +0 -91
  75. package/src/core/network/protocols/v1/handlers/V1BaseOperationHandler.js +0 -65
  76. package/src/core/network/protocols/v1/handlers/V1BroadcastTransactionOperationHandler.js +0 -389
  77. package/src/core/network/protocols/v1/handlers/V1LivenessOperationHandler.js +0 -87
  78. package/src/core/network/protocols/v1/validators/V1BaseOperation.js +0 -211
  79. package/src/core/network/protocols/v1/validators/V1BroadcastTransactionRequest.js +0 -26
  80. package/src/core/network/protocols/v1/validators/V1BroadcastTransactionResponse.js +0 -276
  81. package/src/core/network/protocols/v1/validators/V1LivenessRequest.js +0 -15
  82. package/src/core/network/protocols/v1/validators/V1LivenessResponse.js +0 -17
  83. package/src/core/network/protocols/v1/validators/V1ValidationSchema.js +0 -210
  84. package/src/core/network/services/PendingRequestService.js +0 -172
  85. package/src/core/network/services/TransactionCommitService.js +0 -149
  86. package/src/core/network/services/ValidatorHealthCheckService.js +0 -127
  87. package/src/utils/deepEqualApplyPayload.js +0 -40
  88. package/src/utils/logger.js +0 -25
  89. package/src/utils/protobuf/networkV1.generated.cjs +0 -2460
  90. package/tests/unit/network/LegacyNetworkMessageRouter.test.js +0 -54
  91. package/tests/unit/network/ProtocolSession.test.js +0 -127
  92. package/tests/unit/network/services/ConnectionManager.test.js +0 -450
  93. package/tests/unit/network/services/MessageOrchestrator.test.js +0 -445
  94. package/tests/unit/network/services/PendingRequestService.test.js +0 -431
  95. package/tests/unit/network/services/TransactionCommitService.test.js +0 -246
  96. package/tests/unit/network/services/TransactionPoolService.test.js +0 -489
  97. package/tests/unit/network/services/TransactionRateLimiterService.test.js +0 -139
  98. package/tests/unit/network/services/ValidatorHealthCheckService.test.js +0 -115
  99. package/tests/unit/network/services/services.test.js +0 -17
  100. package/tests/unit/network/utils/v1TestUtils.js +0 -153
  101. package/tests/unit/network/v1/NetworkMessageRouterV1.test.js +0 -151
  102. package/tests/unit/network/v1/V1BaseOperation.test.js +0 -356
  103. package/tests/unit/network/v1/V1BroadcastTransactionOperationHandler.test.js +0 -129
  104. package/tests/unit/network/v1/V1BroadcastTransactionRequest.test.js +0 -53
  105. package/tests/unit/network/v1/V1BroadcastTransactionResponse.test.js +0 -512
  106. package/tests/unit/network/v1/V1LivenessRequest.test.js +0 -32
  107. package/tests/unit/network/v1/V1LivenessResponse.test.js +0 -45
  108. package/tests/unit/network/v1/V1ResultCode.test.js +0 -84
  109. package/tests/unit/network/v1/V1ValidationSchema.test.js +0 -13
  110. package/tests/unit/network/v1/connectionPolicies.test.js +0 -49
  111. package/tests/unit/network/v1/handlers/V1BaseOperationHandler.test.js +0 -284
  112. package/tests/unit/network/v1/handlers/V1BroadcastTransactionOperationHandler.test.js +0 -794
  113. package/tests/unit/network/v1/handlers/V1LivenessOperationHandler.test.js +0 -193
  114. package/tests/unit/network/v1/v1.handlers.test.js +0 -15
  115. package/tests/unit/network/v1/v1.test.js +0 -19
  116. package/tests/unit/network/v1/v1ValidationSchema/broadcastTransactionRequest.test.js +0 -119
  117. package/tests/unit/network/v1/v1ValidationSchema/broadcastTransactionResponse.test.js +0 -136
  118. package/tests/unit/network/v1/v1ValidationSchema/common.test.js +0 -308
  119. package/tests/unit/network/v1/v1ValidationSchema/livenessRequest.test.js +0 -90
  120. package/tests/unit/network/v1/v1ValidationSchema/livenessResponse.test.js +0 -133
  121. package/tests/unit/utils/deepEqualApplyPayload/deepEqualApplyPayload.test.js +0 -102
@@ -0,0 +1,840 @@
1
+ var b4a = require('b4a');
2
+ // This file is auto generated by the protocol-buffers compiler
3
+
4
+ /* eslint-disable quotes */
5
+ /* eslint-disable indent */
6
+ /* eslint-disable no-redeclare */
7
+ /* eslint-disable camelcase */
8
+
9
+ // Remember to `npm install --save protocol-buffers-encodings`
10
+ var encodings = require('protocol-buffers-encodings')
11
+ var varint = encodings.varint
12
+ var skip = encodings.skip
13
+
14
+ exports.MessageType = {
15
+ "MESSAGE_TYPE_UNSPECIFIED": 0,
16
+ "MESSAGE_TYPE_VALIDATOR_CONNECTION_REQUEST": 1,
17
+ "MESSAGE_TYPE_VALIDATOR_CONNECTION_RESPONSE": 2,
18
+ "MESSAGE_TYPE_LIVENESS_REQUEST": 3,
19
+ "MESSAGE_TYPE_LIVENESS_RESPONSE": 4,
20
+ "MESSAGE_TYPE_BROADCAST_TRANSACTION_REQUEST": 5,
21
+ "MESSAGE_TYPE_BROADCAST_TRANSACTION_RESPONSE": 6
22
+ }
23
+
24
+ exports.ResultCode = {
25
+ "RESULT_CODE_UNSPECIFIED": 0,
26
+ "RESULT_CODE_OK": 1,
27
+ "RESULT_CODE_INVALID_PAYLOAD": 2,
28
+ "RESULT_CODE_UNSUPPORTED_VERSION": 3,
29
+ "RESULT_CODE_RATE_LIMITED": 4,
30
+ "RESULT_CODE_TIMEOUT": 5,
31
+ "RESULT_CODE_SIGNATURE_INVALID": 6
32
+ }
33
+
34
+ var ValidatorConnectionRequest = exports.ValidatorConnectionRequest = {
35
+ buffer: true,
36
+ encodingLength: null,
37
+ encode: null,
38
+ decode: null
39
+ }
40
+
41
+ var ValidatorConnectionResponse = exports.ValidatorConnectionResponse = {
42
+ buffer: true,
43
+ encodingLength: null,
44
+ encode: null,
45
+ decode: null
46
+ }
47
+
48
+ var LivenessRequest = exports.LivenessRequest = {
49
+ buffer: true,
50
+ encodingLength: null,
51
+ encode: null,
52
+ decode: null
53
+ }
54
+
55
+ var LivenessResponse = exports.LivenessResponse = {
56
+ buffer: true,
57
+ encodingLength: null,
58
+ encode: null,
59
+ decode: null
60
+ }
61
+
62
+ var BroadcastTransactionRequest = exports.BroadcastTransactionRequest = {
63
+ buffer: true,
64
+ encodingLength: null,
65
+ encode: null,
66
+ decode: null
67
+ }
68
+
69
+ var BroadcastTransactionResponse = exports.BroadcastTransactionResponse = {
70
+ buffer: true,
71
+ encodingLength: null,
72
+ encode: null,
73
+ decode: null
74
+ }
75
+
76
+ var MessageHeader = exports.MessageHeader = {
77
+ buffer: true,
78
+ encodingLength: null,
79
+ encode: null,
80
+ decode: null
81
+ }
82
+
83
+ defineValidatorConnectionRequest()
84
+ defineValidatorConnectionResponse()
85
+ defineLivenessRequest()
86
+ defineLivenessResponse()
87
+ defineBroadcastTransactionRequest()
88
+ defineBroadcastTransactionResponse()
89
+ defineMessageHeader()
90
+
91
+ function defineValidatorConnectionRequest () {
92
+ ValidatorConnectionRequest.encodingLength = encodingLength
93
+ ValidatorConnectionRequest.encode = encode
94
+ ValidatorConnectionRequest.decode = decode
95
+
96
+ function encodingLength (obj) {
97
+ var length = 0
98
+ if (defined(obj.issuer_address)) {
99
+ var len = encodings.string.encodingLength(obj.issuer_address)
100
+ length += 1 + len
101
+ }
102
+ if (defined(obj.nonce)) {
103
+ var len = encodings.bytes.encodingLength(obj.nonce)
104
+ length += 1 + len
105
+ }
106
+ if (defined(obj.signature)) {
107
+ var len = encodings.bytes.encodingLength(obj.signature)
108
+ length += 1 + len
109
+ }
110
+ return length
111
+ }
112
+
113
+ function encode (obj, buf, offset) {
114
+ if (!offset) offset = 0
115
+ if (!buf) buf = b4a.allocUnsafe(encodingLength(obj))
116
+ var oldOffset = offset
117
+ if (defined(obj.issuer_address)) {
118
+ buf[offset++] = 10
119
+ encodings.string.encode(obj.issuer_address, buf, offset)
120
+ offset += encodings.string.encode.bytes
121
+ }
122
+ if (defined(obj.nonce)) {
123
+ buf[offset++] = 18
124
+ encodings.bytes.encode(obj.nonce, buf, offset)
125
+ offset += encodings.bytes.encode.bytes
126
+ }
127
+ if (defined(obj.signature)) {
128
+ buf[offset++] = 26
129
+ encodings.bytes.encode(obj.signature, buf, offset)
130
+ offset += encodings.bytes.encode.bytes
131
+ }
132
+ encode.bytes = offset - oldOffset
133
+ return buf
134
+ }
135
+
136
+ function decode (buf, offset, end) {
137
+ if (!offset) offset = 0
138
+ if (!end) end = buf.length
139
+ if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid")
140
+ var oldOffset = offset
141
+ var obj = {
142
+ issuer_address: "",
143
+ nonce: null,
144
+ signature: null
145
+ }
146
+ while (true) {
147
+ if (end <= offset) {
148
+ decode.bytes = offset - oldOffset
149
+ return obj
150
+ }
151
+ var prefix = varint.decode(buf, offset)
152
+ offset += varint.decode.bytes
153
+ var tag = prefix >> 3
154
+ switch (tag) {
155
+ case 1:
156
+ obj.issuer_address = encodings.string.decode(buf, offset)
157
+ offset += encodings.string.decode.bytes
158
+ break
159
+ case 2:
160
+ obj.nonce = encodings.bytes.decode(buf, offset)
161
+ offset += encodings.bytes.decode.bytes
162
+ break
163
+ case 3:
164
+ obj.signature = encodings.bytes.decode(buf, offset)
165
+ offset += encodings.bytes.decode.bytes
166
+ break
167
+ default:
168
+ offset = skip(prefix & 7, buf, offset)
169
+ }
170
+ }
171
+ }
172
+ }
173
+
174
+ function defineValidatorConnectionResponse () {
175
+ ValidatorConnectionResponse.encodingLength = encodingLength
176
+ ValidatorConnectionResponse.encode = encode
177
+ ValidatorConnectionResponse.decode = decode
178
+
179
+ function encodingLength (obj) {
180
+ var length = 0
181
+ if (defined(obj.issuer_address)) {
182
+ var len = encodings.string.encodingLength(obj.issuer_address)
183
+ length += 1 + len
184
+ }
185
+ if (defined(obj.nonce)) {
186
+ var len = encodings.bytes.encodingLength(obj.nonce)
187
+ length += 1 + len
188
+ }
189
+ if (defined(obj.signature)) {
190
+ var len = encodings.bytes.encodingLength(obj.signature)
191
+ length += 1 + len
192
+ }
193
+ if (defined(obj.result)) {
194
+ var len = encodings.enum.encodingLength(obj.result)
195
+ length += 1 + len
196
+ }
197
+ return length
198
+ }
199
+
200
+ function encode (obj, buf, offset) {
201
+ if (!offset) offset = 0
202
+ if (!buf) buf = b4a.allocUnsafe(encodingLength(obj))
203
+ var oldOffset = offset
204
+ if (defined(obj.issuer_address)) {
205
+ buf[offset++] = 10
206
+ encodings.string.encode(obj.issuer_address, buf, offset)
207
+ offset += encodings.string.encode.bytes
208
+ }
209
+ if (defined(obj.nonce)) {
210
+ buf[offset++] = 18
211
+ encodings.bytes.encode(obj.nonce, buf, offset)
212
+ offset += encodings.bytes.encode.bytes
213
+ }
214
+ if (defined(obj.signature)) {
215
+ buf[offset++] = 26
216
+ encodings.bytes.encode(obj.signature, buf, offset)
217
+ offset += encodings.bytes.encode.bytes
218
+ }
219
+ if (defined(obj.result)) {
220
+ buf[offset++] = 32
221
+ encodings.enum.encode(obj.result, buf, offset)
222
+ offset += encodings.enum.encode.bytes
223
+ }
224
+ encode.bytes = offset - oldOffset
225
+ return buf
226
+ }
227
+
228
+ function decode (buf, offset, end) {
229
+ if (!offset) offset = 0
230
+ if (!end) end = buf.length
231
+ if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid")
232
+ var oldOffset = offset
233
+ var obj = {
234
+ issuer_address: "",
235
+ nonce: null,
236
+ signature: null,
237
+ result: 0
238
+ }
239
+ while (true) {
240
+ if (end <= offset) {
241
+ decode.bytes = offset - oldOffset
242
+ return obj
243
+ }
244
+ var prefix = varint.decode(buf, offset)
245
+ offset += varint.decode.bytes
246
+ var tag = prefix >> 3
247
+ switch (tag) {
248
+ case 1:
249
+ obj.issuer_address = encodings.string.decode(buf, offset)
250
+ offset += encodings.string.decode.bytes
251
+ break
252
+ case 2:
253
+ obj.nonce = encodings.bytes.decode(buf, offset)
254
+ offset += encodings.bytes.decode.bytes
255
+ break
256
+ case 3:
257
+ obj.signature = encodings.bytes.decode(buf, offset)
258
+ offset += encodings.bytes.decode.bytes
259
+ break
260
+ case 4:
261
+ obj.result = encodings.enum.decode(buf, offset)
262
+ offset += encodings.enum.decode.bytes
263
+ break
264
+ default:
265
+ offset = skip(prefix & 7, buf, offset)
266
+ }
267
+ }
268
+ }
269
+ }
270
+
271
+ function defineLivenessRequest () {
272
+ LivenessRequest.encodingLength = encodingLength
273
+ LivenessRequest.encode = encode
274
+ LivenessRequest.decode = decode
275
+
276
+ function encodingLength (obj) {
277
+ var length = 0
278
+ if (defined(obj.nonce)) {
279
+ var len = encodings.bytes.encodingLength(obj.nonce)
280
+ length += 1 + len
281
+ }
282
+ if (defined(obj.signature)) {
283
+ var len = encodings.bytes.encodingLength(obj.signature)
284
+ length += 1 + len
285
+ }
286
+ return length
287
+ }
288
+
289
+ function encode (obj, buf, offset) {
290
+ if (!offset) offset = 0
291
+ if (!buf) buf = b4a.allocUnsafe(encodingLength(obj))
292
+ var oldOffset = offset
293
+ if (defined(obj.nonce)) {
294
+ buf[offset++] = 10
295
+ encodings.bytes.encode(obj.nonce, buf, offset)
296
+ offset += encodings.bytes.encode.bytes
297
+ }
298
+ if (defined(obj.signature)) {
299
+ buf[offset++] = 18
300
+ encodings.bytes.encode(obj.signature, buf, offset)
301
+ offset += encodings.bytes.encode.bytes
302
+ }
303
+ encode.bytes = offset - oldOffset
304
+ return buf
305
+ }
306
+
307
+ function decode (buf, offset, end) {
308
+ if (!offset) offset = 0
309
+ if (!end) end = buf.length
310
+ if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid")
311
+ var oldOffset = offset
312
+ var obj = {
313
+ nonce: null,
314
+ signature: null
315
+ }
316
+ while (true) {
317
+ if (end <= offset) {
318
+ decode.bytes = offset - oldOffset
319
+ return obj
320
+ }
321
+ var prefix = varint.decode(buf, offset)
322
+ offset += varint.decode.bytes
323
+ var tag = prefix >> 3
324
+ switch (tag) {
325
+ case 1:
326
+ obj.nonce = encodings.bytes.decode(buf, offset)
327
+ offset += encodings.bytes.decode.bytes
328
+ break
329
+ case 2:
330
+ obj.signature = encodings.bytes.decode(buf, offset)
331
+ offset += encodings.bytes.decode.bytes
332
+ break
333
+ default:
334
+ offset = skip(prefix & 7, buf, offset)
335
+ }
336
+ }
337
+ }
338
+ }
339
+
340
+ function defineLivenessResponse () {
341
+ LivenessResponse.encodingLength = encodingLength
342
+ LivenessResponse.encode = encode
343
+ LivenessResponse.decode = decode
344
+
345
+ function encodingLength (obj) {
346
+ var length = 0
347
+ if (defined(obj.nonce)) {
348
+ var len = encodings.bytes.encodingLength(obj.nonce)
349
+ length += 1 + len
350
+ }
351
+ if (defined(obj.signature)) {
352
+ var len = encodings.bytes.encodingLength(obj.signature)
353
+ length += 1 + len
354
+ }
355
+ if (defined(obj.result)) {
356
+ var len = encodings.enum.encodingLength(obj.result)
357
+ length += 1 + len
358
+ }
359
+ return length
360
+ }
361
+
362
+ function encode (obj, buf, offset) {
363
+ if (!offset) offset = 0
364
+ if (!buf) buf = b4a.allocUnsafe(encodingLength(obj))
365
+ var oldOffset = offset
366
+ if (defined(obj.nonce)) {
367
+ buf[offset++] = 10
368
+ encodings.bytes.encode(obj.nonce, buf, offset)
369
+ offset += encodings.bytes.encode.bytes
370
+ }
371
+ if (defined(obj.signature)) {
372
+ buf[offset++] = 18
373
+ encodings.bytes.encode(obj.signature, buf, offset)
374
+ offset += encodings.bytes.encode.bytes
375
+ }
376
+ if (defined(obj.result)) {
377
+ buf[offset++] = 24
378
+ encodings.enum.encode(obj.result, buf, offset)
379
+ offset += encodings.enum.encode.bytes
380
+ }
381
+ encode.bytes = offset - oldOffset
382
+ return buf
383
+ }
384
+
385
+ function decode (buf, offset, end) {
386
+ if (!offset) offset = 0
387
+ if (!end) end = buf.length
388
+ if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid")
389
+ var oldOffset = offset
390
+ var obj = {
391
+ nonce: null,
392
+ signature: null,
393
+ result: 0
394
+ }
395
+ while (true) {
396
+ if (end <= offset) {
397
+ decode.bytes = offset - oldOffset
398
+ return obj
399
+ }
400
+ var prefix = varint.decode(buf, offset)
401
+ offset += varint.decode.bytes
402
+ var tag = prefix >> 3
403
+ switch (tag) {
404
+ case 1:
405
+ obj.nonce = encodings.bytes.decode(buf, offset)
406
+ offset += encodings.bytes.decode.bytes
407
+ break
408
+ case 2:
409
+ obj.signature = encodings.bytes.decode(buf, offset)
410
+ offset += encodings.bytes.decode.bytes
411
+ break
412
+ case 3:
413
+ obj.result = encodings.enum.decode(buf, offset)
414
+ offset += encodings.enum.decode.bytes
415
+ break
416
+ default:
417
+ offset = skip(prefix & 7, buf, offset)
418
+ }
419
+ }
420
+ }
421
+ }
422
+
423
+ function defineBroadcastTransactionRequest () {
424
+ BroadcastTransactionRequest.encodingLength = encodingLength
425
+ BroadcastTransactionRequest.encode = encode
426
+ BroadcastTransactionRequest.decode = decode
427
+
428
+ function encodingLength (obj) {
429
+ var length = 0
430
+ if (defined(obj.data)) {
431
+ var len = encodings.bytes.encodingLength(obj.data)
432
+ length += 1 + len
433
+ }
434
+ if (defined(obj.nonce)) {
435
+ var len = encodings.bytes.encodingLength(obj.nonce)
436
+ length += 1 + len
437
+ }
438
+ if (defined(obj.signature)) {
439
+ var len = encodings.bytes.encodingLength(obj.signature)
440
+ length += 1 + len
441
+ }
442
+ return length
443
+ }
444
+
445
+ function encode (obj, buf, offset) {
446
+ if (!offset) offset = 0
447
+ if (!buf) buf = b4a.allocUnsafe(encodingLength(obj))
448
+ var oldOffset = offset
449
+ if (defined(obj.data)) {
450
+ buf[offset++] = 10
451
+ encodings.bytes.encode(obj.data, buf, offset)
452
+ offset += encodings.bytes.encode.bytes
453
+ }
454
+ if (defined(obj.nonce)) {
455
+ buf[offset++] = 18
456
+ encodings.bytes.encode(obj.nonce, buf, offset)
457
+ offset += encodings.bytes.encode.bytes
458
+ }
459
+ if (defined(obj.signature)) {
460
+ buf[offset++] = 26
461
+ encodings.bytes.encode(obj.signature, buf, offset)
462
+ offset += encodings.bytes.encode.bytes
463
+ }
464
+ encode.bytes = offset - oldOffset
465
+ return buf
466
+ }
467
+
468
+ function decode (buf, offset, end) {
469
+ if (!offset) offset = 0
470
+ if (!end) end = buf.length
471
+ if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid")
472
+ var oldOffset = offset
473
+ var obj = {
474
+ data: null,
475
+ nonce: null,
476
+ signature: null
477
+ }
478
+ while (true) {
479
+ if (end <= offset) {
480
+ decode.bytes = offset - oldOffset
481
+ return obj
482
+ }
483
+ var prefix = varint.decode(buf, offset)
484
+ offset += varint.decode.bytes
485
+ var tag = prefix >> 3
486
+ switch (tag) {
487
+ case 1:
488
+ obj.data = encodings.bytes.decode(buf, offset)
489
+ offset += encodings.bytes.decode.bytes
490
+ break
491
+ case 2:
492
+ obj.nonce = encodings.bytes.decode(buf, offset)
493
+ offset += encodings.bytes.decode.bytes
494
+ break
495
+ case 3:
496
+ obj.signature = encodings.bytes.decode(buf, offset)
497
+ offset += encodings.bytes.decode.bytes
498
+ break
499
+ default:
500
+ offset = skip(prefix & 7, buf, offset)
501
+ }
502
+ }
503
+ }
504
+ }
505
+
506
+ function defineBroadcastTransactionResponse () {
507
+ BroadcastTransactionResponse.encodingLength = encodingLength
508
+ BroadcastTransactionResponse.encode = encode
509
+ BroadcastTransactionResponse.decode = decode
510
+
511
+ function encodingLength (obj) {
512
+ var length = 0
513
+ if (defined(obj.nonce)) {
514
+ var len = encodings.bytes.encodingLength(obj.nonce)
515
+ length += 1 + len
516
+ }
517
+ if (defined(obj.signature)) {
518
+ var len = encodings.bytes.encodingLength(obj.signature)
519
+ length += 1 + len
520
+ }
521
+ if (defined(obj.result)) {
522
+ var len = encodings.enum.encodingLength(obj.result)
523
+ length += 1 + len
524
+ }
525
+ return length
526
+ }
527
+
528
+ function encode (obj, buf, offset) {
529
+ if (!offset) offset = 0
530
+ if (!buf) buf = b4a.allocUnsafe(encodingLength(obj))
531
+ var oldOffset = offset
532
+ if (defined(obj.nonce)) {
533
+ buf[offset++] = 10
534
+ encodings.bytes.encode(obj.nonce, buf, offset)
535
+ offset += encodings.bytes.encode.bytes
536
+ }
537
+ if (defined(obj.signature)) {
538
+ buf[offset++] = 18
539
+ encodings.bytes.encode(obj.signature, buf, offset)
540
+ offset += encodings.bytes.encode.bytes
541
+ }
542
+ if (defined(obj.result)) {
543
+ buf[offset++] = 24
544
+ encodings.enum.encode(obj.result, buf, offset)
545
+ offset += encodings.enum.encode.bytes
546
+ }
547
+ encode.bytes = offset - oldOffset
548
+ return buf
549
+ }
550
+
551
+ function decode (buf, offset, end) {
552
+ if (!offset) offset = 0
553
+ if (!end) end = buf.length
554
+ if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid")
555
+ var oldOffset = offset
556
+ var obj = {
557
+ nonce: null,
558
+ signature: null,
559
+ result: 0
560
+ }
561
+ while (true) {
562
+ if (end <= offset) {
563
+ decode.bytes = offset - oldOffset
564
+ return obj
565
+ }
566
+ var prefix = varint.decode(buf, offset)
567
+ offset += varint.decode.bytes
568
+ var tag = prefix >> 3
569
+ switch (tag) {
570
+ case 1:
571
+ obj.nonce = encodings.bytes.decode(buf, offset)
572
+ offset += encodings.bytes.decode.bytes
573
+ break
574
+ case 2:
575
+ obj.signature = encodings.bytes.decode(buf, offset)
576
+ offset += encodings.bytes.decode.bytes
577
+ break
578
+ case 3:
579
+ obj.result = encodings.enum.decode(buf, offset)
580
+ offset += encodings.enum.decode.bytes
581
+ break
582
+ default:
583
+ offset = skip(prefix & 7, buf, offset)
584
+ }
585
+ }
586
+ }
587
+ }
588
+
589
+ function defineMessageHeader () {
590
+ MessageHeader.encodingLength = encodingLength
591
+ MessageHeader.encode = encode
592
+ MessageHeader.decode = decode
593
+
594
+ function encodingLength (obj) {
595
+ var length = 0
596
+ if ((+defined(obj.validator_connection_request) + +defined(obj.validator_connection_response) + +defined(obj.liveness_request) + +defined(obj.liveness_response) + +defined(obj.broadcast_transaction_request) + +defined(obj.broadcast_transaction_response)) > 1) throw new Error("only one of the properties defined in oneof field can be set")
597
+ if (defined(obj.type)) {
598
+ var len = encodings.enum.encodingLength(obj.type)
599
+ length += 1 + len
600
+ }
601
+ if (defined(obj.id)) {
602
+ var len = encodings.string.encodingLength(obj.id)
603
+ length += 1 + len
604
+ }
605
+ if (defined(obj.timestamp)) {
606
+ var len = encodings.varint.encodingLength(obj.timestamp)
607
+ length += 1 + len
608
+ }
609
+ if (defined(obj.validator_connection_request)) {
610
+ var len = ValidatorConnectionRequest.encodingLength(obj.validator_connection_request)
611
+ length += varint.encodingLength(len)
612
+ length += 1 + len
613
+ }
614
+ if (defined(obj.validator_connection_response)) {
615
+ var len = ValidatorConnectionResponse.encodingLength(obj.validator_connection_response)
616
+ length += varint.encodingLength(len)
617
+ length += 1 + len
618
+ }
619
+ if (defined(obj.liveness_request)) {
620
+ var len = LivenessRequest.encodingLength(obj.liveness_request)
621
+ length += varint.encodingLength(len)
622
+ length += 1 + len
623
+ }
624
+ if (defined(obj.liveness_response)) {
625
+ var len = LivenessResponse.encodingLength(obj.liveness_response)
626
+ length += varint.encodingLength(len)
627
+ length += 1 + len
628
+ }
629
+ if (defined(obj.broadcast_transaction_request)) {
630
+ var len = BroadcastTransactionRequest.encodingLength(obj.broadcast_transaction_request)
631
+ length += varint.encodingLength(len)
632
+ length += 1 + len
633
+ }
634
+ if (defined(obj.broadcast_transaction_response)) {
635
+ var len = BroadcastTransactionResponse.encodingLength(obj.broadcast_transaction_response)
636
+ length += varint.encodingLength(len)
637
+ length += 1 + len
638
+ }
639
+ if (defined(obj.capabilities)) {
640
+ for (var i = 0; i < obj.capabilities.length; i++) {
641
+ if (!defined(obj.capabilities[i])) continue
642
+ var len = encodings.string.encodingLength(obj.capabilities[i])
643
+ length += 1 + len
644
+ }
645
+ }
646
+ return length
647
+ }
648
+
649
+ function encode (obj, buf, offset) {
650
+ if (!offset) offset = 0
651
+ if (!buf) buf = b4a.allocUnsafe(encodingLength(obj))
652
+ var oldOffset = offset
653
+ if ((+defined(obj.validator_connection_request) + +defined(obj.validator_connection_response) + +defined(obj.liveness_request) + +defined(obj.liveness_response) + +defined(obj.broadcast_transaction_request) + +defined(obj.broadcast_transaction_response)) > 1) throw new Error("only one of the properties defined in oneof field can be set")
654
+ if (defined(obj.type)) {
655
+ buf[offset++] = 8
656
+ encodings.enum.encode(obj.type, buf, offset)
657
+ offset += encodings.enum.encode.bytes
658
+ }
659
+ if (defined(obj.id)) {
660
+ buf[offset++] = 18
661
+ encodings.string.encode(obj.id, buf, offset)
662
+ offset += encodings.string.encode.bytes
663
+ }
664
+ if (defined(obj.timestamp)) {
665
+ buf[offset++] = 24
666
+ encodings.varint.encode(obj.timestamp, buf, offset)
667
+ offset += encodings.varint.encode.bytes
668
+ }
669
+ if (defined(obj.validator_connection_request)) {
670
+ buf[offset++] = 34
671
+ varint.encode(ValidatorConnectionRequest.encodingLength(obj.validator_connection_request), buf, offset)
672
+ offset += varint.encode.bytes
673
+ ValidatorConnectionRequest.encode(obj.validator_connection_request, buf, offset)
674
+ offset += ValidatorConnectionRequest.encode.bytes
675
+ }
676
+ if (defined(obj.validator_connection_response)) {
677
+ buf[offset++] = 42
678
+ varint.encode(ValidatorConnectionResponse.encodingLength(obj.validator_connection_response), buf, offset)
679
+ offset += varint.encode.bytes
680
+ ValidatorConnectionResponse.encode(obj.validator_connection_response, buf, offset)
681
+ offset += ValidatorConnectionResponse.encode.bytes
682
+ }
683
+ if (defined(obj.liveness_request)) {
684
+ buf[offset++] = 50
685
+ varint.encode(LivenessRequest.encodingLength(obj.liveness_request), buf, offset)
686
+ offset += varint.encode.bytes
687
+ LivenessRequest.encode(obj.liveness_request, buf, offset)
688
+ offset += LivenessRequest.encode.bytes
689
+ }
690
+ if (defined(obj.liveness_response)) {
691
+ buf[offset++] = 58
692
+ varint.encode(LivenessResponse.encodingLength(obj.liveness_response), buf, offset)
693
+ offset += varint.encode.bytes
694
+ LivenessResponse.encode(obj.liveness_response, buf, offset)
695
+ offset += LivenessResponse.encode.bytes
696
+ }
697
+ if (defined(obj.broadcast_transaction_request)) {
698
+ buf[offset++] = 66
699
+ varint.encode(BroadcastTransactionRequest.encodingLength(obj.broadcast_transaction_request), buf, offset)
700
+ offset += varint.encode.bytes
701
+ BroadcastTransactionRequest.encode(obj.broadcast_transaction_request, buf, offset)
702
+ offset += BroadcastTransactionRequest.encode.bytes
703
+ }
704
+ if (defined(obj.broadcast_transaction_response)) {
705
+ buf[offset++] = 74
706
+ varint.encode(BroadcastTransactionResponse.encodingLength(obj.broadcast_transaction_response), buf, offset)
707
+ offset += varint.encode.bytes
708
+ BroadcastTransactionResponse.encode(obj.broadcast_transaction_response, buf, offset)
709
+ offset += BroadcastTransactionResponse.encode.bytes
710
+ }
711
+ if (defined(obj.capabilities)) {
712
+ for (var i = 0; i < obj.capabilities.length; i++) {
713
+ if (!defined(obj.capabilities[i])) continue
714
+ buf[offset++] = 82
715
+ encodings.string.encode(obj.capabilities[i], buf, offset)
716
+ offset += encodings.string.encode.bytes
717
+ }
718
+ }
719
+ encode.bytes = offset - oldOffset
720
+ return buf
721
+ }
722
+
723
+ function decode (buf, offset, end) {
724
+ if (!offset) offset = 0
725
+ if (!end) end = buf.length
726
+ if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid")
727
+ var oldOffset = offset
728
+ var obj = {
729
+ type: 0,
730
+ id: "",
731
+ timestamp: 0,
732
+ validator_connection_request: null,
733
+ validator_connection_response: null,
734
+ liveness_request: null,
735
+ liveness_response: null,
736
+ broadcast_transaction_request: null,
737
+ broadcast_transaction_response: null,
738
+ capabilities: []
739
+ }
740
+ while (true) {
741
+ if (end <= offset) {
742
+ decode.bytes = offset - oldOffset
743
+ return obj
744
+ }
745
+ var prefix = varint.decode(buf, offset)
746
+ offset += varint.decode.bytes
747
+ var tag = prefix >> 3
748
+ switch (tag) {
749
+ case 1:
750
+ obj.type = encodings.enum.decode(buf, offset)
751
+ offset += encodings.enum.decode.bytes
752
+ break
753
+ case 2:
754
+ obj.id = encodings.string.decode(buf, offset)
755
+ offset += encodings.string.decode.bytes
756
+ break
757
+ case 3:
758
+ obj.timestamp = encodings.varint.decode(buf, offset)
759
+ offset += encodings.varint.decode.bytes
760
+ break
761
+ case 4:
762
+ delete obj.validator_connection_response
763
+ delete obj.liveness_request
764
+ delete obj.liveness_response
765
+ delete obj.broadcast_transaction_request
766
+ delete obj.broadcast_transaction_response
767
+ var len = varint.decode(buf, offset)
768
+ offset += varint.decode.bytes
769
+ obj.validator_connection_request = ValidatorConnectionRequest.decode(buf, offset, offset + len)
770
+ offset += ValidatorConnectionRequest.decode.bytes
771
+ break
772
+ case 5:
773
+ delete obj.validator_connection_request
774
+ delete obj.liveness_request
775
+ delete obj.liveness_response
776
+ delete obj.broadcast_transaction_request
777
+ delete obj.broadcast_transaction_response
778
+ var len = varint.decode(buf, offset)
779
+ offset += varint.decode.bytes
780
+ obj.validator_connection_response = ValidatorConnectionResponse.decode(buf, offset, offset + len)
781
+ offset += ValidatorConnectionResponse.decode.bytes
782
+ break
783
+ case 6:
784
+ delete obj.validator_connection_request
785
+ delete obj.validator_connection_response
786
+ delete obj.liveness_response
787
+ delete obj.broadcast_transaction_request
788
+ delete obj.broadcast_transaction_response
789
+ var len = varint.decode(buf, offset)
790
+ offset += varint.decode.bytes
791
+ obj.liveness_request = LivenessRequest.decode(buf, offset, offset + len)
792
+ offset += LivenessRequest.decode.bytes
793
+ break
794
+ case 7:
795
+ delete obj.validator_connection_request
796
+ delete obj.validator_connection_response
797
+ delete obj.liveness_request
798
+ delete obj.broadcast_transaction_request
799
+ delete obj.broadcast_transaction_response
800
+ var len = varint.decode(buf, offset)
801
+ offset += varint.decode.bytes
802
+ obj.liveness_response = LivenessResponse.decode(buf, offset, offset + len)
803
+ offset += LivenessResponse.decode.bytes
804
+ break
805
+ case 8:
806
+ delete obj.validator_connection_request
807
+ delete obj.validator_connection_response
808
+ delete obj.liveness_request
809
+ delete obj.liveness_response
810
+ delete obj.broadcast_transaction_response
811
+ var len = varint.decode(buf, offset)
812
+ offset += varint.decode.bytes
813
+ obj.broadcast_transaction_request = BroadcastTransactionRequest.decode(buf, offset, offset + len)
814
+ offset += BroadcastTransactionRequest.decode.bytes
815
+ break
816
+ case 9:
817
+ delete obj.validator_connection_request
818
+ delete obj.validator_connection_response
819
+ delete obj.liveness_request
820
+ delete obj.liveness_response
821
+ delete obj.broadcast_transaction_request
822
+ var len = varint.decode(buf, offset)
823
+ offset += varint.decode.bytes
824
+ obj.broadcast_transaction_response = BroadcastTransactionResponse.decode(buf, offset, offset + len)
825
+ offset += BroadcastTransactionResponse.decode.bytes
826
+ break
827
+ case 10:
828
+ obj.capabilities.push(encodings.string.decode(buf, offset))
829
+ offset += encodings.string.decode.bytes
830
+ break
831
+ default:
832
+ offset = skip(prefix & 7, buf, offset)
833
+ }
834
+ }
835
+ }
836
+ }
837
+
838
+ function defined (val) {
839
+ return val !== null && val !== undefined && (typeof val !== 'number' || !isNaN(val))
840
+ }