@socket.tech/dl-common 1.0.16 → 1.0.18

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 (133) hide show
  1. package/dist/constants/confirmations.d.ts +5 -0
  2. package/dist/constants/confirmations.js +17 -0
  3. package/dist/constants/enums.d.ts +44 -0
  4. package/dist/constants/enums.js +52 -0
  5. package/dist/constants/index.d.ts +3 -0
  6. package/dist/constants/index.js +19 -0
  7. package/dist/constants/types.d.ts +136 -0
  8. package/dist/constants/types.js +53 -0
  9. package/dist/constants/waitTime.d.ts +8 -0
  10. package/dist/constants/waitTime.js +45 -0
  11. package/dist/dl-common/constants/index.d.ts +1 -0
  12. package/dist/dl-common/constants/index.js +1 -0
  13. package/dist/dl-common/constants/index.js.map +1 -1
  14. package/dist/dl-common/constants/relay-types.d.ts +78 -0
  15. package/dist/dl-common/constants/relay-types.js +24 -0
  16. package/dist/dl-common/constants/relay-types.js.map +1 -0
  17. package/dist/dl-common/constants/types.d.ts +0 -6
  18. package/dist/dl-common/constants/types.js +1 -8
  19. package/dist/dl-common/constants/types.js.map +1 -1
  20. package/dist/dl-common/utils/index.d.ts +1 -0
  21. package/dist/dl-common/utils/index.js +1 -0
  22. package/dist/dl-common/utils/index.js.map +1 -1
  23. package/dist/dl-common/utils/relaySigner.d.ts +6 -2
  24. package/dist/dl-common/utils/relaySigner.js +23 -5
  25. package/dist/dl-common/utils/relaySigner.js.map +1 -1
  26. package/dist/dl-common/utils/relayUtils.d.ts +2 -0
  27. package/dist/dl-common/utils/relayUtils.js +21 -0
  28. package/dist/dl-common/utils/relayUtils.js.map +1 -0
  29. package/dist/dl-common/utils/signer/adapter.js.map +1 -1
  30. package/dist/dl-common/utils/signer/kms-ethers-signer.js.map +1 -1
  31. package/dist/dl-common/utils/signer/kms-signer.js +1 -1
  32. package/dist/dl-common/utils/signer/socketSigner.js +1 -1
  33. package/dist/dl-common/utils/signer/socketSigner.js.map +1 -1
  34. package/dist/index.d.ts +4 -0
  35. package/dist/index.js +36 -0
  36. package/dist/models/attestSignature.d.ts +35 -0
  37. package/dist/models/attestSignature.js +53 -0
  38. package/dist/models/attestation.d.ts +70 -0
  39. package/dist/models/attestation.js +86 -0
  40. package/dist/models/index.d.ts +7 -0
  41. package/dist/models/index.js +23 -0
  42. package/dist/models/lastBlock.d.ts +28 -0
  43. package/dist/models/lastBlock.js +27 -0
  44. package/dist/models/message.d.ts +171 -0
  45. package/dist/models/message.js +193 -0
  46. package/dist/models/packet.d.ts +240 -0
  47. package/dist/models/packet.js +249 -0
  48. package/dist/models/proposal.d.ts +127 -0
  49. package/dist/models/proposal.js +141 -0
  50. package/dist/models/switchboard.d.ts +69 -0
  51. package/dist/models/switchboard.js +92 -0
  52. package/dist/models/transaction.d.ts +0 -0
  53. package/dist/models/transaction.js +280 -0
  54. package/dist/services/cacheService.d.ts +14 -0
  55. package/dist/services/cacheService.js +77 -0
  56. package/dist/services/eventBridgeService.d.ts +8 -0
  57. package/dist/services/eventBridgeService.js +40 -0
  58. package/dist/services/index.d.ts +3 -0
  59. package/dist/services/index.js +20 -0
  60. package/dist/services/queueService.d.ts +10 -0
  61. package/dist/services/queueService.js +62 -0
  62. package/dist/src/constants/gasEstimation.d.ts +8 -0
  63. package/dist/src/constants/gasEstimation.js +61 -0
  64. package/dist/src/constants/relayer.d.ts +0 -3
  65. package/dist/src/constants/relayer.js +4 -9
  66. package/dist/src/constants/relayer.js.map +1 -1
  67. package/dist/src/constants/types.d.ts +3 -3
  68. package/dist/src/handlers/statusHandler.js +1 -1
  69. package/dist/src/handlers/statusHandler.js.map +1 -1
  70. package/dist/src/relayers/common.js +3 -3
  71. package/dist/src/relayers/common.js.map +1 -1
  72. package/dist/src/relayers/propose/main.js +4 -8
  73. package/dist/src/relayers/propose/main.js.map +1 -1
  74. package/dist/src/relayers/proposeRelayer.d.ts +7 -0
  75. package/dist/src/relayers/proposeRelayer.js +587 -0
  76. package/dist/src/relayers/sealRelayer.js +4 -6
  77. package/dist/src/relayers/sealRelayer.js.map +1 -1
  78. package/dist/src/services/batcherService.d.ts +9 -0
  79. package/dist/src/services/batcherService.js +197 -0
  80. package/dist/src/services/executeService.d.ts +16 -0
  81. package/dist/src/services/executeService.js +209 -0
  82. package/dist/src/statusTrackers/message.js +6 -5
  83. package/dist/src/statusTrackers/message.js.map +1 -1
  84. package/dist/src/statusTrackers/packet.d.ts +2 -2
  85. package/dist/src/statusTrackers/packet.js +6 -5
  86. package/dist/src/statusTrackers/packet.js.map +1 -1
  87. package/dist/utils/address.d.ts +2 -0
  88. package/dist/utils/address.js +8 -0
  89. package/dist/utils/axios.d.ts +2 -0
  90. package/dist/utils/axios.js +54 -0
  91. package/dist/utils/dataStructHelper.d.ts +2 -0
  92. package/dist/utils/dataStructHelper.js +10 -0
  93. package/dist/utils/discord.d.ts +2 -0
  94. package/dist/utils/discord.js +43 -0
  95. package/dist/utils/ethersAwsKmsSigner.d.ts +2 -0
  96. package/dist/utils/ethersAwsKmsSigner.js +26 -0
  97. package/dist/utils/eventGetter.d.ts +4 -0
  98. package/dist/utils/eventGetter.js +50 -0
  99. package/dist/utils/extraUtils.d.ts +32 -0
  100. package/dist/utils/extraUtils.js +103 -0
  101. package/dist/utils/idUtils.d.ts +14 -0
  102. package/dist/utils/idUtils.js +50 -0
  103. package/dist/utils/index.d.ts +13 -0
  104. package/dist/utils/index.js +29 -0
  105. package/dist/utils/relaySigner.d.ts +21 -0
  106. package/dist/utils/relaySigner.js +68 -0
  107. package/dist/utils/s3Service.d.ts +11 -0
  108. package/dist/utils/s3Service.js +70 -0
  109. package/dist/utils/secretManagerService.d.ts +2 -0
  110. package/dist/utils/secretManagerService.js +33 -0
  111. package/dist/utils/signer/adapter.d.ts +18 -0
  112. package/dist/utils/signer/adapter.js +71 -0
  113. package/dist/utils/signer/address.d.ts +9 -0
  114. package/dist/utils/signer/address.js +42 -0
  115. package/dist/utils/signer/asn1-parser.d.ts +10 -0
  116. package/dist/utils/signer/asn1-parser.js +79 -0
  117. package/dist/utils/signer/crypto.d.ts +5 -0
  118. package/dist/utils/signer/crypto.js +33 -0
  119. package/dist/utils/signer/index.d.ts +5 -0
  120. package/dist/utils/signer/index.js +21 -0
  121. package/dist/utils/signer/kms-ethers-signer.d.ts +19 -0
  122. package/dist/utils/signer/kms-ethers-signer.js +32 -0
  123. package/dist/utils/signer/kms-signer.d.ts +13 -0
  124. package/dist/utils/signer/kms-signer.js +46 -0
  125. package/dist/utils/signer/signature.d.ts +16 -0
  126. package/dist/utils/signer/signature.js +65 -0
  127. package/dist/utils/signer/signer.d.ts +6 -0
  128. package/dist/utils/signer/signer.js +2 -0
  129. package/dist/utils/signer/socketSigner.d.ts +39 -0
  130. package/dist/utils/signer/socketSigner.js +153 -0
  131. package/dist/utils/time.d.ts +2 -0
  132. package/dist/utils/time.js +7 -0
  133. package/package.json +4 -4
@@ -0,0 +1,587 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkAndPropose = exports.getPendingProposePackets = exports.relayPropose = void 0;
4
+ const utils_1 = require("../utils");
5
+ const utils_2 = require("../../dl-common/utils");
6
+ const constants_1 = require("../constants");
7
+ const models_1 = require("../../dl-common/models");
8
+ const dl_core_1 = require("@socket.tech/dl-core");
9
+ const sequelize_1 = require("sequelize");
10
+ const common_1 = require("./common");
11
+ const attestService_1 = require("../services/attestService");
12
+ const services_1 = require("../../dl-common/services");
13
+ const batcherService_1 = require("../services/batcherService");
14
+ const prometheus_config_1 = require("../constants/prometheus.config");
15
+ const relayPropose = async (chainSlug) => {
16
+ if (!constants_1.proposeRelayMode) {
17
+ (0, utils_1.logInfo)({
18
+ info: "PROPOSE_RELAY_MODE_DISABLED",
19
+ messageIds: [],
20
+ packetIds: [],
21
+ });
22
+ return;
23
+ }
24
+ const chainSlugs = constants_1.supportedChainSlugs;
25
+ const allPacketsPerChain = await (0, exports.getPendingProposePackets)(chainSlugs);
26
+ await Promise.all(chainSlugs.map(async (chainSlug) => {
27
+ var _a;
28
+ try {
29
+ if (((_a = allPacketsPerChain[chainSlug]) === null || _a === void 0 ? void 0 : _a.length) === 0)
30
+ return;
31
+ (0, utils_1.logInfo)({
32
+ chainSlug,
33
+ info: "PROPOSE_RELAYING",
34
+ packetIds: allPacketsPerChain[chainSlug].map((p) => p.packetId),
35
+ total: allPacketsPerChain[chainSlug].length,
36
+ messageIds: []
37
+ });
38
+ const socketBatcher = await (0, common_1.getSocketBatcher)(chainSlug, { type: "proposeBatch" }, false);
39
+ await sendProposeBatch(chainSlug, (0, common_1.getSocketAddress)(chainSlug), socketBatcher, allPacketsPerChain[chainSlug]);
40
+ (0, utils_1.logInfo)({
41
+ chainSlug,
42
+ info: "PROPOSE_RELAYED",
43
+ packetIds: allPacketsPerChain[chainSlug].map((p) => p.packetId),
44
+ messageIds: []
45
+ });
46
+ (0, utils_1.logInfo)({
47
+ info: "PROPOSE_RELAYED",
48
+ packetIds: allPacketsPerChain[chainSlug].map((p) => p.packetId),
49
+ messageIds: [],
50
+ });
51
+ }
52
+ catch (error) {
53
+ console.log(chainSlug, " error in propose relayer: ", error);
54
+ }
55
+ }));
56
+ };
57
+ exports.relayPropose = relayPropose;
58
+ const sendProposeBatch = async (chainSlug, socketAddress, socketBatcher, allPackets) => {
59
+ const packetsAsChunks = [...(0, utils_2.chunks)(allPackets, constants_1.proposeBatchRelayLimit)];
60
+ for (const packets of packetsAsChunks) {
61
+ if (packets.length === 0) {
62
+ console.log("no packets to propose ", chainSlug);
63
+ continue;
64
+ }
65
+ const { packetIds, messageIds, packetMap, packetRowIdDetailsMap, messageRowIdDetailsMap, } = createMaps(packets);
66
+ const packetProposalCounts = await getPacketProposalCounts(packets, socketAddress, socketBatcher);
67
+ const packetProposalCountDbUpdates = getPacketProposalCountDbUpdates(packetProposalCounts, packetMap);
68
+ const packetAttestSignatures = await (0, attestService_1.getAndSaveAttestSignatures)(packets, packetProposalCounts);
69
+ let isSuccessful = true;
70
+ let txHash = "";
71
+ let txId = "";
72
+ const batches = await (0, batcherService_1.getBatchDataArgs)(packets, packetAttestSignatures, packetProposalCounts);
73
+ for (const batch of batches) {
74
+ (0, utils_1.logInfo)({
75
+ info: "BATCH_PROPOSE_RELAYING",
76
+ packetIds: batch.proposeBatchDataArgs.map((p) => p[0]),
77
+ messageTableIds: batch.messageRowIds,
78
+ messageIds: [],
79
+ });
80
+ const { proposeRowIds, attestRowIds, messageRowIds } = batch;
81
+ ({ txHash, txId, isSuccessful } = await sendBatch(batch, socketAddress, socketBatcher, chainSlug));
82
+ // no point in observing metrics, updating status if the batch transaction is not sent
83
+ if (!isSuccessful)
84
+ continue;
85
+ try {
86
+ observeMetrics(proposeRowIds, attestRowIds, messageRowIds, packetRowIdDetailsMap, messageRowIdDetailsMap);
87
+ }
88
+ catch (error) {
89
+ console.log("error in observing metrics: ", error);
90
+ }
91
+ await updateRelayStatus(proposeRowIds, attestRowIds, messageRowIds, isSuccessful, txId, txHash);
92
+ // only update selectedProposalCount if the proposeBatch transaction is sent
93
+ // ideal
94
+ await savePacketUpdates(packetProposalCountDbUpdates);
95
+ (0, utils_1.logInfo)({
96
+ info: "BATCH_PROPOSE_RELAYED",
97
+ packetIds: batch.proposeBatchDataArgs.map((p) => p[0]),
98
+ messageTableIds: batch.messageRowIds,
99
+ messageIds: [],
100
+ });
101
+ }
102
+ }
103
+ };
104
+ const getPendingProposePackets = async (dstChainSlugs) => {
105
+ const { commonPacketQuery, commonMessageQuery } = getCommonPacketMessageQueries(dstChainSlugs);
106
+ const notProposedPackets = await getNotProposedPackets(commonPacketQuery, commonMessageQuery);
107
+ const notAttestedFastPackets = await getNotAttestedFastPackets(commonPacketQuery, commonMessageQuery);
108
+ const executionPendingPackets = await getExecutionPendingPackets(commonPacketQuery, commonMessageQuery);
109
+ const packets = [
110
+ ...notProposedPackets,
111
+ ...notAttestedFastPackets,
112
+ ...executionPendingPackets,
113
+ ];
114
+ const packetsPerChain = {};
115
+ packets.map((packet) => {
116
+ if (!packetsPerChain[packet.dstChainSlug])
117
+ packetsPerChain[packet.dstChainSlug] = [];
118
+ packetsPerChain[packet.dstChainSlug].push(packet);
119
+ });
120
+ if (packets.length > 0) {
121
+ (0, utils_1.logInfo)({
122
+ info: "PENDING_DST_TXS",
123
+ nonProposedIds: notProposedPackets.map((p) => p.packetId),
124
+ notProposedPackets: notProposedPackets.length,
125
+ nonAttestedIds: notAttestedFastPackets.map((p) => p.packetId),
126
+ notAttestedFastPackets: notAttestedFastPackets.length,
127
+ executionPendingIds: executionPendingPackets.map((p) => p.packetId),
128
+ executionPendingPackets: executionPendingPackets.length,
129
+ messageIds: [],
130
+ packetIds: [],
131
+ });
132
+ }
133
+ return packetsPerChain;
134
+ };
135
+ exports.getPendingProposePackets = getPendingProposePackets;
136
+ const getCommonPacketMessageQueries = (dstChainSlugs) => {
137
+ const commonPacketQuery = {
138
+ srcChainSlug: {
139
+ [sequelize_1.Op.in]: constants_1.supportedChainSlugs,
140
+ },
141
+ dstChainSlug: {
142
+ [sequelize_1.Op.in]: dstChainSlugs,
143
+ },
144
+ isSealed: true,
145
+ isFullyExecuted: false,
146
+ tripReason: models_1.TripReason.NO,
147
+ proposeRelayStatus: {
148
+ [sequelize_1.Op.notIn]: [
149
+ models_1.ProposeRelayStatus.PROPOSING,
150
+ models_1.ProposeRelayStatus.PROPOSE_FAILED,
151
+ ],
152
+ },
153
+ attestRelayStatus: {
154
+ [sequelize_1.Op.notIn]: [
155
+ models_1.AttestRelayStatus.ATTESTING,
156
+ models_1.AttestRelayStatus.ATTEST_FAILED,
157
+ ],
158
+ },
159
+ };
160
+ const commonMessageQuery = {
161
+ isExecuted: false,
162
+ inboundSuccess: true,
163
+ retry: true,
164
+ executeRelayStatus: models_1.ExecutionRelayStatus.NO,
165
+ executeSignature: {
166
+ [sequelize_1.Op.ne]: null,
167
+ [sequelize_1.Op.not]: "",
168
+ },
169
+ };
170
+ return { commonPacketQuery, commonMessageQuery };
171
+ };
172
+ const getNotProposedPackets = async (commonPacketQuery, commonMessageQuery) => {
173
+ // this will fetch all integration type packets for proposal. we will batch fast ones, propose optimistic and
174
+ // native ones and then wait for their allowPacket to turn true
175
+ return (await models_1.Packet.findAll({
176
+ limit: constants_1.proposeBatchQueryLimit,
177
+ where: {
178
+ isProposed: false,
179
+ ...commonPacketQuery,
180
+ },
181
+ include: [
182
+ {
183
+ model: models_1.Message,
184
+ where: {
185
+ // as: 'Messages',
186
+ ...commonMessageQuery,
187
+ },
188
+ // to get packets even though there are no messages. This is required
189
+ // as we need to propose, attest the packet even if the message have inboundSuccess
190
+ // as false
191
+ required: false,
192
+ },
193
+ {
194
+ model: models_1.AttestSignature,
195
+ },
196
+ ],
197
+ order: [[sequelize_1.Sequelize.col("Packet.updatedAt"), "ASC"]],
198
+ }));
199
+ };
200
+ const getNotAttestedFastPackets = async (commonPacketQuery, commonMessageQuery) => {
201
+ // for fast integration packets whose attestation couldnt be batched before. try again.
202
+ // no point in taking native or optimistic packets as they dont need to be attested.
203
+ return (await models_1.Packet.findAll({
204
+ limit: constants_1.proposeBatchQueryLimit,
205
+ where: {
206
+ isProposed: true,
207
+ isAttested: false,
208
+ ...commonPacketQuery,
209
+ integrationType: {
210
+ [sequelize_1.Op.in]: [dl_core_1.IntegrationTypes.fast, dl_core_1.IntegrationTypes.fast2],
211
+ },
212
+ },
213
+ include: [
214
+ {
215
+ model: models_1.Message,
216
+ where: {
217
+ ...commonMessageQuery,
218
+ },
219
+ // to get packets even though there are no messages. This is required
220
+ // as we need to propose, attest the packet even if the message have inboundSuccess
221
+ // as false
222
+ required: false,
223
+ },
224
+ {
225
+ model: models_1.AttestSignature,
226
+ },
227
+ ],
228
+ order: [[sequelize_1.Sequelize.col("Packet.updatedAt"), "ASC"]],
229
+ }));
230
+ };
231
+ const getExecutionPendingPackets = async (commonPacketQuery, commonMessageQuery) => {
232
+ // this contains packets where isAttested/isVerified is true, but message is not executed yet.
233
+ // this will include packets only if there is a valid message that is ready to be executed (required:true)
234
+ return (await models_1.Packet.findAll({
235
+ limit: constants_1.proposeBatchQueryLimit,
236
+ where: {
237
+ isProposed: true,
238
+ ...commonPacketQuery,
239
+ [sequelize_1.Op.or]: [
240
+ {
241
+ integrationType: {
242
+ [sequelize_1.Op.in]: [dl_core_1.IntegrationTypes.fast, dl_core_1.IntegrationTypes.fast2],
243
+ },
244
+ isAttested: true,
245
+ },
246
+ {
247
+ integrationType: {
248
+ [sequelize_1.Op.in]: [dl_core_1.IntegrationTypes.optimistic, dl_core_1.IntegrationTypes.native],
249
+ },
250
+ isVerified: true,
251
+ },
252
+ ],
253
+ },
254
+ include: [
255
+ {
256
+ model: models_1.Message,
257
+ where: {
258
+ ...commonMessageQuery,
259
+ },
260
+ // to get packets only if there are messages with inboundSuccess true
261
+ required: true,
262
+ },
263
+ {
264
+ model: models_1.AttestSignature,
265
+ },
266
+ ],
267
+ order: [[sequelize_1.Sequelize.col("Packet.updatedAt"), "ASC"]],
268
+ }));
269
+ };
270
+ const getPacketProposalCounts = async (packets, socketAddress, socketBatcher) => {
271
+ const packetProposalCounts = {};
272
+ const getProposalCountFromContractPacketIds = [];
273
+ await Promise.all(packets.map(async (packet) => {
274
+ const { packetId, selectedProposalCount } = packet;
275
+ if (selectedProposalCount !== undefined &&
276
+ selectedProposalCount !== null) {
277
+ packetProposalCounts[packetId] = {
278
+ count: selectedProposalCount,
279
+ receivedFromContract: false,
280
+ };
281
+ }
282
+ else {
283
+ getProposalCountFromContractPacketIds.push(packet.packetId);
284
+ }
285
+ }));
286
+ const proposalCountsFromContract = await socketBatcher.getProposalCountBatch(socketAddress, getProposalCountFromContractPacketIds);
287
+ getProposalCountFromContractPacketIds.forEach((packetId, index) => {
288
+ packetProposalCounts[packetId] = {
289
+ count: proposalCountsFromContract[index].toNumber(),
290
+ receivedFromContract: true,
291
+ };
292
+ });
293
+ return packetProposalCounts;
294
+ };
295
+ const updateRelayStatus = async (proposeRowIds, attestRowIds, messageRowIds, isSuccessful, txId, txHash) => {
296
+ // if the batch transaction is successful, then retain the existing status
297
+ // if the transactionHash exists then it will be updated else it will be empty
298
+ try {
299
+ const proposeRelayStatus = isSuccessful
300
+ ? models_1.ProposeRelayStatus.PROPOSING
301
+ : models_1.ProposeRelayStatus.NO;
302
+ const attestRelayStatus = isSuccessful
303
+ ? models_1.AttestRelayStatus.ATTESTING
304
+ : models_1.AttestRelayStatus.NO;
305
+ const executeRelayStatus = isSuccessful
306
+ ? models_1.ExecutionRelayStatus.EXECUTING
307
+ : models_1.ExecutionRelayStatus.NO;
308
+ (0, utils_1.logInfo)({
309
+ info: "PROPOSE_TX_DB_UPDATE",
310
+ proposeRowIds,
311
+ txId,
312
+ txHash,
313
+ messageIds: [],
314
+ packetIds: [],
315
+ });
316
+ // update propose status
317
+ if (proposeRowIds.length > 0)
318
+ await models_1.Packet.update({
319
+ proposeTxId: txId,
320
+ proposeTxHash: txHash,
321
+ proposeRelayStatus,
322
+ }, {
323
+ where: {
324
+ id: {
325
+ [sequelize_1.Op.in]: proposeRowIds,
326
+ },
327
+ },
328
+ });
329
+ (0, utils_1.logInfo)({
330
+ info: "ATTEST_TX_DB_UPDATE",
331
+ attestRowIds,
332
+ txId,
333
+ txHash,
334
+ messageIds: [],
335
+ packetIds: [],
336
+ });
337
+ // update attest status
338
+ if (attestRowIds.length > 0)
339
+ await models_1.Packet.update({
340
+ attestTxId: txId,
341
+ attestTxHash: txHash,
342
+ attestRelayStatus,
343
+ }, {
344
+ where: {
345
+ id: {
346
+ [sequelize_1.Op.in]: attestRowIds,
347
+ },
348
+ },
349
+ });
350
+ (0, utils_1.logInfo)({
351
+ info: "EXECUTE_TX_DB_UPDATE",
352
+ messageRowIds,
353
+ txId,
354
+ txHash,
355
+ messageIds: [],
356
+ packetIds: [],
357
+ });
358
+ // update execute status
359
+ if (messageRowIds.length > 0)
360
+ await models_1.Message.update({
361
+ executeTxId: txId,
362
+ executeTxHash: txHash,
363
+ executeRelayStatus,
364
+ }, {
365
+ where: {
366
+ id: {
367
+ [sequelize_1.Op.in]: messageRowIds,
368
+ },
369
+ },
370
+ });
371
+ }
372
+ catch (err) {
373
+ utils_1.logger.error(`Failed to update the transactionHash and isRelaying Status after proposeBatch call`, err);
374
+ }
375
+ };
376
+ const observeMetrics = (proposeRowIds, attestRowIds, messageRowIds, packetRowIdDetailsMap, messageRowIdDetailsMap) => {
377
+ proposeRowIds.map((rowId) => {
378
+ (0, prometheus_config_1.observeHistogram)(prometheus_config_1.relayMetrics.proposeRelay.txDiffHistogram, {
379
+ labels: {
380
+ [prometheus_config_1.Labels.SRC_CHAIN_SLUG]: packetRowIdDetailsMap[rowId].srcChainSlug,
381
+ [prometheus_config_1.Labels.DST_CHAIN_SLUG]: packetRowIdDetailsMap[rowId].dstChainSlug,
382
+ [prometheus_config_1.Labels.INTEGRATION_TYPE]: packetRowIdDetailsMap[rowId].integrationType,
383
+ },
384
+ timeDiff: (0, utils_2.currentTimestampInSeconds)() - packetRowIdDetailsMap[rowId].outboundTime,
385
+ });
386
+ const sealIndexTime = packetRowIdDetailsMap[rowId].sealIndexTime;
387
+ // in case of arbitrum, sometimes we end up relaying propose before we get sealIndex request.
388
+ // to avoid adding such metrics, check for sealIndex value
389
+ if (sealIndexTime) {
390
+ (0, prometheus_config_1.observeHistogram)(prometheus_config_1.relayMetrics.proposeRelay.relayerHistogram, {
391
+ labels: {
392
+ [prometheus_config_1.Labels.SRC_CHAIN_SLUG]: packetRowIdDetailsMap[rowId].srcChainSlug,
393
+ [prometheus_config_1.Labels.DST_CHAIN_SLUG]: packetRowIdDetailsMap[rowId].dstChainSlug,
394
+ [prometheus_config_1.Labels.INTEGRATION_TYPE]: packetRowIdDetailsMap[rowId].integrationType,
395
+ },
396
+ timeDiff: (0, utils_2.currentTimestampInSeconds)() - sealIndexTime,
397
+ });
398
+ }
399
+ });
400
+ attestRowIds.map((rowId) => {
401
+ (0, prometheus_config_1.observeHistogram)(prometheus_config_1.relayMetrics.attestRelay.txDiffHistogram, {
402
+ labels: {
403
+ [prometheus_config_1.Labels.SRC_CHAIN_SLUG]: packetRowIdDetailsMap[rowId].srcChainSlug,
404
+ [prometheus_config_1.Labels.DST_CHAIN_SLUG]: packetRowIdDetailsMap[rowId].dstChainSlug,
405
+ [prometheus_config_1.Labels.INTEGRATION_TYPE]: packetRowIdDetailsMap[rowId].integrationType,
406
+ },
407
+ timeDiff: (0, utils_2.currentTimestampInSeconds)() - packetRowIdDetailsMap[rowId].outboundTime,
408
+ });
409
+ });
410
+ messageRowIds.map((rowId) => {
411
+ (0, prometheus_config_1.observeHistogram)(prometheus_config_1.relayMetrics.executeRelay.txDiffHistogram, {
412
+ labels: {
413
+ [prometheus_config_1.Labels.SRC_CHAIN_SLUG]: messageRowIdDetailsMap[rowId].srcChainSlug,
414
+ [prometheus_config_1.Labels.DST_CHAIN_SLUG]: messageRowIdDetailsMap[rowId].dstChainSlug,
415
+ [prometheus_config_1.Labels.INTEGRATION_TYPE]: messageRowIdDetailsMap[rowId].integrationType,
416
+ },
417
+ timeDiff: (0, utils_2.currentTimestampInSeconds)() -
418
+ messageRowIdDetailsMap[rowId].outboundTime,
419
+ });
420
+ });
421
+ };
422
+ const getPacketProposalCountDbUpdates = (packetProposalCounts, packetMap) => {
423
+ const packetProposalCountDbUpdates = [];
424
+ for (const packetId in packetProposalCounts) {
425
+ if (packetMap[packetId].selectedProposalCount)
426
+ continue;
427
+ packetProposalCountDbUpdates.push({
428
+ packetId,
429
+ selectedProposalCount: packetProposalCounts[packetId].count,
430
+ });
431
+ }
432
+ return packetProposalCountDbUpdates;
433
+ };
434
+ const createMaps = (packets) => {
435
+ const packetIds = [];
436
+ const messageIds = [];
437
+ const packetMap = {};
438
+ const packetRowIdDetailsMap = {};
439
+ const messageRowIdDetailsMap = {};
440
+ packets.map((packet) => {
441
+ var _a, _b;
442
+ packetIds.push(packet.packetId);
443
+ const { integrationType, srcChainSlug, dstChainSlug, outboundTime, sealIndexTime, } = packet;
444
+ packetRowIdDetailsMap[packet.id] = {
445
+ outboundTime,
446
+ sealIndexTime,
447
+ srcChainSlug,
448
+ dstChainSlug,
449
+ integrationType,
450
+ };
451
+ packetMap[packet.packetId] = packet;
452
+ if ((_a = packet.Messages) === null || _a === void 0 ? void 0 : _a.length)
453
+ (_b = packet.Messages) === null || _b === void 0 ? void 0 : _b.map((message) => {
454
+ messageIds.push(message.messageId);
455
+ messageRowIdDetailsMap[message.id] = {
456
+ outboundTime: message.outboundTime,
457
+ srcChainSlug,
458
+ dstChainSlug,
459
+ integrationType,
460
+ };
461
+ });
462
+ });
463
+ return {
464
+ packetIds,
465
+ messageIds,
466
+ packetMap,
467
+ packetRowIdDetailsMap,
468
+ messageRowIdDetailsMap,
469
+ };
470
+ };
471
+ const sendBatch = async (batch, socketAddress, socketBatcher, chainSlug) => {
472
+ let isSuccessful = true;
473
+ let txHash = "";
474
+ let txId = "";
475
+ const { proposeBatchDataArgs, attestBatchDataArgs, executeBatchDataArgs, totalMsgValue, totalGasLimit, proposeRowIds, attestRowIds, messageRowIds, } = batch;
476
+ (0, utils_1.logInfo)({
477
+ info: "PROPOSE_RELAYING",
478
+ packetIds: proposeBatchDataArgs.map((p) => p[0]),
479
+ proposeBatchDataArgs,
480
+ attestBatchDataArgs,
481
+ executeBatchDataArgs,
482
+ proposeRowIds,
483
+ attestRowIds,
484
+ messageRowIds,
485
+ messageIds: [],
486
+ });
487
+ try {
488
+ if (proposeBatchDataArgs.length === 0 &&
489
+ attestBatchDataArgs.length === 0 &&
490
+ executeBatchDataArgs.length === 0) {
491
+ return { txId, txHash, isSuccessful: false };
492
+ }
493
+ const txn = await socketBatcher.sendBatch(socketAddress,
494
+ // switchboardAddress, // this may change if we have multiple switchboards. this works only for
495
+ // fast switchboard case
496
+ [], // for sealBatch
497
+ proposeBatchDataArgs, attestBatchDataArgs, executeBatchDataArgs, {
498
+ gasLimit: totalGasLimit,
499
+ value: totalMsgValue.toHexString(),
500
+ });
501
+ txHash = txn.hash;
502
+ // @ts-expect-error
503
+ txId = txn.txId;
504
+ (0, utils_1.logInfo)({
505
+ info: "PROPOSE_RELAYED",
506
+ packetIds: proposeBatchDataArgs.map((p) => p[0]),
507
+ txHash,
508
+ txId,
509
+ messageIds: [],
510
+ });
511
+ // metrics.map((m) => observeHistogram(metric.txDiffHistogram, m));
512
+ prometheus_config_1.relayMetrics.proposeRelay.counter.inc(proposeRowIds.length);
513
+ prometheus_config_1.relayMetrics.attestRelay.counter.inc(attestRowIds.length);
514
+ prometheus_config_1.relayMetrics.executeRelay.counter.inc(messageRowIds.length);
515
+ }
516
+ catch (err) {
517
+ (0, utils_1.logError)({
518
+ info: "PROPOSE_RELAY_FAILED",
519
+ packetIds: proposeBatchDataArgs.map((p) => p[0]),
520
+ reason: err,
521
+ messageIds: [],
522
+ });
523
+ isSuccessful = false;
524
+ }
525
+ return { txHash, txId, isSuccessful };
526
+ };
527
+ const savePacketUpdates = async (dbUpdates) => {
528
+ try {
529
+ (0, utils_1.logInfo)({
530
+ info: "SAVING_PROPOSAL_COUNT",
531
+ packetIds: dbUpdates.map((p) => p.packetId),
532
+ messageIds: [],
533
+ });
534
+ // TODO: fix this
535
+ // @ts-expect-error
536
+ await models_1.Packet.bulkCreate(dbUpdates, {
537
+ updateOnDuplicate: ["selectedProposalCount"],
538
+ });
539
+ (0, utils_1.logInfo)({
540
+ info: "SAVED_PROPOSAL_COUNT",
541
+ packetIds: dbUpdates.map((p) => p.packetId),
542
+ messageIds: [],
543
+ });
544
+ }
545
+ catch (error) {
546
+ utils_1.logger.error("Error while saving selectedProposalCount updates", error);
547
+ throw new Error(`Error while saving selectedProposalCount updates ${error === null || error === void 0 ? void 0 : error.message}`);
548
+ }
549
+ };
550
+ const checkAndPropose = async () => {
551
+ var _a, _b;
552
+ try {
553
+ // check if any pending message on any chain. If found, add message to queue
554
+ // and return.
555
+ const packetsPerChain = await (0, exports.getPendingProposePackets)(constants_1.supportedChainSlugs);
556
+ for (const chainSlug of constants_1.supportedChainSlugs) {
557
+ if (!((_a = packetsPerChain[chainSlug]) === null || _a === void 0 ? void 0 : _a.length))
558
+ continue;
559
+ // const messageIds = packetsPerChain[chainSlug].map((p) => {
560
+ // if (!p.Messages) throw new Error("Message id not found!");
561
+ // return p.Messages[0].messageId;
562
+ // });
563
+ (0, utils_1.logInfo)({
564
+ info: "QUEUING_PROPOSALS",
565
+ chainSlug,
566
+ packets: (_b = packetsPerChain[chainSlug]) === null || _b === void 0 ? void 0 : _b.length,
567
+ packetIds: packetsPerChain[chainSlug].map((p) => p.packetId),
568
+ messageIds: [],
569
+ });
570
+ await (0, services_1.sendStandardSqsMessage)(constants_1.SQS_BASE_URL + constants_1.QueueName.BATCHER_TASK_QUEUE, {
571
+ type: constants_1.TaskNames.RELAY_PROPOSE,
572
+ data: { counter: Math.floor(Math.random() * 100) },
573
+ });
574
+ (0, utils_1.logInfo)({
575
+ info: "QUEUED_PROPOSALS",
576
+ packetIds: packetsPerChain[chainSlug].map((p) => p.packetId),
577
+ messageIds: [],
578
+ });
579
+ // @review why break?
580
+ break;
581
+ }
582
+ }
583
+ catch (error) {
584
+ console.log("error in checkAndPropose: ", error);
585
+ }
586
+ };
587
+ exports.checkAndPropose = checkAndPropose;
@@ -33,7 +33,7 @@ const relaySeal = (chainSlug) => tslib_1.__awaiter(void 0, void 0, void 0, funct
33
33
  messageIds: [],
34
34
  });
35
35
  const socketAddress = (0, common_1.getSocketAddress)(chainSlug);
36
- const socketBatcher = yield (0, common_1.getSocketBatcher)(chainSlug, { type: "sealBatch" }, true);
36
+ const socketBatcher = (0, common_1.getSocketBatcher)(chainSlug, { type: "sealBatch" }, true);
37
37
  const recentSealError = yield (0, exports.isRecentSealError)();
38
38
  const packets = packetsPerChain[chainSlug];
39
39
  if (recentSealError || constants_1.separateSealRelayMode) {
@@ -151,7 +151,6 @@ const sendSealBatch = (chainSlug, packets, socketAddress, socketBatcher) => tsli
151
151
  const sealBatchDataArgs = [];
152
152
  let packetRowIds = [];
153
153
  let isSuccessful = true;
154
- let txHash = "";
155
154
  let txId = "";
156
155
  try {
157
156
  const metrics = [];
@@ -192,14 +191,13 @@ const sendSealBatch = (chainSlug, packets, socketAddress, socketBatcher) => tsli
192
191
  const txn = yield socketBatcher.sealBatch(socketAddress, sealBatchDataArgs, {
193
192
  gasLimit: estimateGas.mul(120).div(100).toNumber(),
194
193
  });
195
- txHash = txn.hash;
196
194
  txId = txn.txId;
197
195
  (0, utils_1.logInfo)({
198
196
  info: `SEAL_BATCH_RELAYED_${srcChainSlug}`,
199
197
  chainSlug: srcChainSlug,
200
198
  packetIds: packets.map((p) => p.packetId),
201
199
  messageIds: [],
202
- txHash,
200
+ txId,
203
201
  });
204
202
  metrics.map((m) => {
205
203
  (0, prometheus_config_1.observeHistogram)(prometheus_config_1.relayMetrics.sealRelay.txDiffHistogram, m);
@@ -221,7 +219,7 @@ const sendSealBatch = (chainSlug, packets, socketAddress, socketBatcher) => tsli
221
219
  : models_1.SealRelayStatus.NO;
222
220
  yield models_1.Packet.update({
223
221
  sealTxId: txId,
224
- sealTxHash: txHash,
222
+ sealTxHash: "",
225
223
  sealRelayStatus,
226
224
  }, {
227
225
  where: {
@@ -240,7 +238,7 @@ const sendSealBatch = (chainSlug, packets, socketAddress, socketBatcher) => tsli
240
238
  messageIds: [],
241
239
  });
242
240
  }
243
- return txHash;
241
+ return txId;
244
242
  });
245
243
  const checkAndSeal = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
246
244
  var _a, _b, _c;
@@ -1 +1 @@
1
- {"version":3,"file":"sealRelayer.js","sourceRoot":"","sources":["../../../src/relayers/sealRelayer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sealRelayer.js","sourceRoot":"","sources":["../../../src/relayers/sealRelayer.ts"],"names":[],"mappings":"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"}