Skip to content

Commit 0ea26c9

Browse files
AndreAugusto11RafaelAPB
authored andcommitted
feat(satp-hermes): add timestamps to SATP messages
Signed-off-by: Andre Augusto <andre.augusto@tecnico.ulisboa.pt>
1 parent 00b6ae5 commit 0ea26c9

12 files changed

+722
-467
lines changed

packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/client/stage0-client-service.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ import {
3535
getMessageHash,
3636
saveHash,
3737
saveSignature,
38+
saveTimestamp,
3839
SessionType,
40+
TimestampType,
3941
} from "../../session-utils";
4042
import { signatureVerifier } from "../data-verifier";
4143
import { type FungibleAsset } from "../../../cross-chain-mechanisms/bridge/ontology/assets/asset";
@@ -138,6 +140,12 @@ export class Stage0ClientService extends SATPService {
138140
getHash(newSessionRequestMessage),
139141
);
140142

143+
saveTimestamp(
144+
sessionData,
145+
MessageType.NEW_SESSION_REQUEST,
146+
TimestampType.PROCESSED,
147+
);
148+
141149
await this.dbLogger.persistLogEntry({
142150
sessionID: sessionData.id,
143151
type: messageType,
@@ -218,6 +226,12 @@ export class Stage0ClientService extends SATPService {
218226

219227
signatureVerifier(fnTag, this.Signer, response, sessionData);
220228

229+
saveTimestamp(
230+
sessionData,
231+
MessageType.NEW_SESSION_RESPONSE,
232+
TimestampType.RECEIVED,
233+
);
234+
221235
if (sessionData.id != response.sessionId) {
222236
if (sessionIds.includes(response.sessionId)) {
223237
throw new SessionMissMatchError(fnTag);
@@ -333,6 +347,12 @@ export class Stage0ClientService extends SATPService {
333347
getHash(preSATPTransferRequest),
334348
);
335349

350+
saveTimestamp(
351+
sessionData,
352+
MessageType.PRE_SATP_TRANSFER_REQUEST,
353+
TimestampType.PROCESSED,
354+
);
355+
336356
await this.dbLogger.persistLogEntry({
337357
sessionID: sessionData.id,
338358
type: String(MessageType.PRE_SATP_TRANSFER_REQUEST),

packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/client/stage1-client-service.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ import {
1717
getMessageHash,
1818
saveHash,
1919
saveSignature,
20+
saveTimestamp,
2021
SessionType,
22+
TimestampType,
2123
} from "../../session-utils";
2224
import { stringify as safeStableStringify } from "safe-stable-stringify";
2325

@@ -227,6 +229,12 @@ export class Stage1ClientService extends SATPService {
227229
getHash(transferProposalRequestMessage),
228230
);
229231

232+
saveTimestamp(
233+
sessionData,
234+
MessageType.PRE_SATP_TRANSFER_REQUEST,
235+
TimestampType.PROCESSED,
236+
);
237+
230238
await this.dbLogger.persistLogEntry({
231239
sessionID: sessionData.id,
232240
type: messageType,
@@ -328,6 +336,12 @@ export class Stage1ClientService extends SATPService {
328336
getHash(transferCommenceRequestMessage),
329337
);
330338

339+
saveTimestamp(
340+
sessionData,
341+
MessageType.TRANSFER_COMMENCE_REQUEST,
342+
TimestampType.PROCESSED,
343+
);
344+
331345
await this.dbLogger.persistLogEntry({
332346
sessionID: sessionData.id,
333347
type: messageType,
@@ -417,6 +431,12 @@ export class Stage1ClientService extends SATPService {
417431

418432
saveHash(sessionData, MessageType.PRE_SATP_TRANSFER_RESPONSE, fnTag);
419433

434+
saveTimestamp(
435+
sessionData,
436+
MessageType.PRE_SATP_TRANSFER_RESPONSE,
437+
TimestampType.RECEIVED,
438+
);
439+
420440
this.Log.info(`${fnTag}, PreSATPTransferResponse passed all checks.`);
421441
}
422442

@@ -446,6 +466,9 @@ export class Stage1ClientService extends SATPService {
446466

447467
signatureVerifier(fnTag, this.Signer, response, sessionData);
448468

469+
// assume that it is INIT_REJECT. otherwise it will be overriden with INIT_RECEIPT below
470+
saveTimestamp(sessionData, MessageType.INIT_REJECT, TimestampType.RECEIVED);
471+
449472
if (
450473
response.common!.messageType == MessageType.INIT_REJECT &&
451474
response.transferCounterClaims == undefined
@@ -479,6 +502,12 @@ export class Stage1ClientService extends SATPService {
479502

480503
saveHash(sessionData, MessageType.INIT_RECEIPT, getHash(response));
481504

505+
saveTimestamp(
506+
sessionData,
507+
MessageType.INIT_RECEIPT,
508+
TimestampType.RECEIVED,
509+
);
510+
482511
this.Log.info(`${fnTag}, TransferProposalReceipt passed all checks.`);
483512
return true;
484513
}

packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/client/stage2-client-service.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ import {
1515
getMessageHash,
1616
saveHash,
1717
saveSignature,
18+
saveTimestamp,
1819
SessionType,
20+
TimestampType,
1921
} from "../../session-utils";
2022
import { SATPSession } from "../../../core/satp-session";
2123
import { stringify as safeStableStringify } from "safe-stable-stringify";
@@ -173,6 +175,12 @@ export class Stage2ClientService extends SATPService {
173175
getHash(lockAssertionRequestMessage),
174176
);
175177

178+
saveTimestamp(
179+
sessionData,
180+
MessageType.LOCK_ASSERT,
181+
TimestampType.PROCESSED,
182+
);
183+
176184
await this.dbLogger.persistLogEntry({
177185
sessionID: sessionData.id,
178186
type: messageType,
@@ -235,6 +243,12 @@ export class Stage2ClientService extends SATPService {
235243
getHash(response),
236244
);
237245

246+
saveTimestamp(
247+
sessionData,
248+
MessageType.TRANSFER_COMMENCE_RESPONSE,
249+
TimestampType.RECEIVED,
250+
);
251+
238252
this.Log.info(`${fnTag}, TransferCommenceResponse passed all checks.`);
239253
}
240254

packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/client/stage3-client-service.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ import {
2222
getMessageHash,
2323
saveHash,
2424
saveSignature,
25+
saveTimestamp,
2526
SessionType,
27+
TimestampType,
2628
} from "../../session-utils";
2729
import { stringify as safeStableStringify } from "safe-stable-stringify";
2830

@@ -167,6 +169,12 @@ export class Stage3ClientService extends SATPService {
167169
getHash(commitPreparationRequestMessage),
168170
);
169171

172+
saveTimestamp(
173+
sessionData,
174+
MessageType.COMMIT_PREPARE,
175+
TimestampType.PROCESSED,
176+
);
177+
170178
await this.dbLogger.persistLogEntry({
171179
sessionID: sessionData.id,
172180
type: messageType,
@@ -292,6 +300,12 @@ export class Stage3ClientService extends SATPService {
292300
getHash(commitFinalAssertionRequestMessage),
293301
);
294302

303+
saveTimestamp(
304+
sessionData,
305+
MessageType.COMMIT_FINAL,
306+
TimestampType.PROCESSED,
307+
);
308+
295309
await this.dbLogger.persistLogEntry({
296310
sessionID: sessionData.id,
297311
type: messageType,
@@ -405,6 +419,12 @@ export class Stage3ClientService extends SATPService {
405419
getHash(transferCompleteRequestMessage),
406420
);
407421

422+
saveTimestamp(
423+
sessionData,
424+
MessageType.COMMIT_TRANSFER_COMPLETE,
425+
TimestampType.PROCESSED,
426+
);
427+
408428
await this.dbLogger.persistLogEntry({
409429
sessionID: sessionData.id,
410430
type: messageType,
@@ -466,6 +486,12 @@ export class Stage3ClientService extends SATPService {
466486

467487
saveHash(sessionData, MessageType.ASSERTION_RECEIPT, getHash(response));
468488

489+
saveTimestamp(
490+
sessionData,
491+
MessageType.ASSERTION_RECEIPT,
492+
TimestampType.RECEIVED,
493+
);
494+
469495
this.Log.info(`${fnTag}, LockAssertionResponse passed all checks.`);
470496
}
471497

@@ -521,6 +547,12 @@ export class Stage3ClientService extends SATPService {
521547

522548
saveHash(sessionData, MessageType.COMMIT_READY, getHash(response));
523549

550+
saveTimestamp(
551+
sessionData,
552+
MessageType.COMMIT_READY,
553+
TimestampType.RECEIVED,
554+
);
555+
524556
this.Log.info(`${fnTag}, CommitPreparationResponse passed all checks.`);
525557
}
526558

@@ -575,6 +607,12 @@ export class Stage3ClientService extends SATPService {
575607

576608
saveHash(sessionData, MessageType.ACK_COMMIT_FINAL, getHash(response));
577609

610+
saveTimestamp(
611+
sessionData,
612+
MessageType.ACK_COMMIT_FINAL,
613+
TimestampType.RECEIVED,
614+
);
615+
578616
this.Log.info(`${fnTag}, CommitFinalAssertionResponse passed all checks.`);
579617
}
580618

@@ -621,6 +659,12 @@ export class Stage3ClientService extends SATPService {
621659
getHash(response),
622660
);
623661

662+
saveTimestamp(
663+
sessionData,
664+
MessageType.COMMIT_TRANSFER_COMPLETE_RESPONSE,
665+
TimestampType.RECEIVED,
666+
);
667+
624668
this.Log.info(`${fnTag}, TransferCompleteRequest passed all checks.`);
625669
}
626670

packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/server/stage0-server-service.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ import {
3838
getMessageHash,
3939
saveHash,
4040
saveSignature,
41+
saveTimestamp,
4142
SessionType,
43+
TimestampType,
4244
} from "../../session-utils";
4345
import {
4446
createAssetId,
@@ -162,6 +164,12 @@ export class Stage0ServerService extends SATPService {
162164

163165
saveHash(newSessionData, MessageType.NEW_SESSION_REQUEST, getHash(request));
164166

167+
saveTimestamp(
168+
newSessionData,
169+
MessageType.NEW_SESSION_REQUEST,
170+
TimestampType.RECEIVED,
171+
);
172+
165173
this.Log.info(`${fnTag}, NewSessionRequest passed all checks.`);
166174
return session;
167175
}
@@ -259,6 +267,12 @@ export class Stage0ServerService extends SATPService {
259267
getHash(request),
260268
);
261269

270+
saveTimestamp(
271+
sessionData,
272+
MessageType.PRE_SATP_TRANSFER_REQUEST,
273+
TimestampType.RECEIVED,
274+
);
275+
262276
//TODO maybe do a hard copy, reason: after the hash because this changes the req object
263277
sessionData.receiverAsset = request.receiverAsset;
264278

@@ -333,6 +347,12 @@ export class Stage0ServerService extends SATPService {
333347

334348
saveHash(sessionData, MessageType.NEW_SESSION_REQUEST, fnTag);
335349

350+
saveTimestamp(
351+
sessionData,
352+
MessageType.NEW_SESSION_REQUEST,
353+
TimestampType.PROCESSED,
354+
);
355+
336356
await this.dbLogger.persistLogEntry({
337357
sessionID: sessionData.id,
338358
type: messageType,
@@ -486,6 +506,12 @@ export class Stage0ServerService extends SATPService {
486506

487507
saveHash(sessionData, MessageType.PRE_SATP_TRANSFER_REQUEST, fnTag);
488508

509+
saveTimestamp(
510+
sessionData,
511+
MessageType.PRE_SATP_TRANSFER_REQUEST,
512+
TimestampType.PROCESSED,
513+
);
514+
489515
await this.dbLogger.persistLogEntry({
490516
sessionID: sessionData.id,
491517
type: messageType,

packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/server/stage1-server-service.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
getMessageTimestamp,
2424
saveHash,
2525
saveSignature,
26+
saveTimestamp,
2627
} from "../../session-utils";
2728
import { stringify as safeStableStringify } from "safe-stable-stringify";
2829

@@ -169,6 +170,12 @@ export class Stage1ServerService extends SATPService {
169170
getHash(transferProposalReceiptMessage),
170171
);
171172

173+
saveTimestamp(
174+
sessionData,
175+
commonBody.messageType,
176+
TimestampType.PROCESSED,
177+
);
178+
172179
await this.dbLogger.persistLogEntry({
173180
sessionID: sessionData.id,
174181
type: messageType,
@@ -317,6 +324,12 @@ export class Stage1ServerService extends SATPService {
317324
getHash(transferCommenceResponseMessage),
318325
);
319326

327+
saveTimestamp(
328+
sessionData,
329+
MessageType.TRANSFER_COMMENCE_RESPONSE,
330+
TimestampType.PROCESSED,
331+
);
332+
320333
await this.dbLogger.persistLogEntry({
321334
sessionID: sessionData.id,
322335
type: messageType,
@@ -431,6 +444,12 @@ export class Stage1ServerService extends SATPService {
431444

432445
saveHash(sessionData, MessageType.INIT_PROPOSAL, getHash(request));
433446

447+
saveTimestamp(
448+
sessionData,
449+
MessageType.INIT_PROPOSAL,
450+
TimestampType.RECEIVED,
451+
);
452+
434453
this.Log.info(`${fnTag}, TransferProposalRequest passed all checks.`);
435454
}
436455

@@ -478,6 +497,12 @@ export class Stage1ServerService extends SATPService {
478497
getHash(request),
479498
);
480499

500+
saveTimestamp(
501+
sessionData,
502+
MessageType.TRANSFER_COMMENCE_REQUEST,
503+
TimestampType.RECEIVED,
504+
);
505+
481506
//if the conditional parameters where accepted, the session state is still ongoing
482507
//TODO timeout for accepting the parameters
483508
sessionData.state = State.ONGOING;

0 commit comments

Comments
 (0)