From 42dbff43886ba27379d2fbd9444c024dfb387ca7 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 13 Nov 2024 16:43:57 +0700 Subject: [PATCH 1/5] feat: add trackingId to tss url --- packages/tss-client/src/client.ts | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/tss-client/src/client.ts b/packages/tss-client/src/client.ts index be4a841..560225e 100644 --- a/packages/tss-client/src/client.ts +++ b/packages/tss-client/src/client.ts @@ -115,6 +115,8 @@ export class Client { public tssLib: WasmLib; + public trackingId?: string; + public _startPrecomputeTime: number; public _endPrecomputeTime: number; @@ -154,7 +156,8 @@ export class Client { _share: string, _pubKey: string, _websocketOnly: boolean, - _tssLib: WasmLib + _tssLib: WasmLib, + _trackingId?: string ) { if (_parties.length !== _sockets.length) { throw new Error("parties and sockets length must be equal, add null for client if necessary"); @@ -175,6 +178,7 @@ export class Client { this._consumed = false; this._sLessThanHalf = true; this.tssLib = _tssLib; + this.trackingId = _trackingId; _sockets.forEach((socket) => { if (socket) { @@ -270,7 +274,12 @@ export class Client { if (party !== this.index) { precomputePromises.push( new Promise((resolve, reject) => { - fetch(`${this.lookupEndpoint(this.session, party)}/precompute`, { + console.log("precompute party: ", party, "endpoint: ", this.lookupEndpoint(this.session, party)); + let preComputeEndpoint = `${this.lookupEndpoint(this.session, party)}/precompute`; + if (this.trackingId) { + preComputeEndpoint += `?trackingId=${this.trackingId}`; + } + fetch(preComputeEndpoint, { method: "POST", headers: { "Content-Type": "application/json", @@ -372,7 +381,11 @@ export class Client { fragmentPromises.push( new Promise((resolve, reject) => { const endpoint = this.lookupEndpoint(this.session, party); - fetch(`${endpoint}/sign`, { + let signEndpoint = `${endpoint}/sign`; + if (this.trackingId) { + signEndpoint += `?trackingId=${this.trackingId}`; + } + fetch(signEndpoint, { method: "POST", headers: { "Content-Type": "application/json", From fa22872f69b2e6e95f2ae64018641539f73b2eec Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 13 Nov 2024 16:48:45 +0700 Subject: [PATCH 2/5] feat: add trackId to cleanup endpoint --- packages/tss-client/src/client.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/tss-client/src/client.ts b/packages/tss-client/src/client.ts index 560225e..c2e004a 100644 --- a/packages/tss-client/src/client.ts +++ b/packages/tss-client/src/client.ts @@ -274,7 +274,6 @@ export class Client { if (party !== this.index) { precomputePromises.push( new Promise((resolve, reject) => { - console.log("precompute party: ", party, "endpoint: ", this.lookupEndpoint(this.session, party)); let preComputeEndpoint = `${this.lookupEndpoint(this.session, party)}/precompute`; if (this.trackingId) { preComputeEndpoint += `?trackingId=${this.trackingId}`; @@ -472,7 +471,11 @@ export class Client { await Promise.all( this.parties.map(async (party) => { if (party !== this.index) { - await fetch(`${this.lookupEndpoint(this.session, party)}/cleanup`, { + let cleanupEndpoint = `${this.lookupEndpoint(this.session, party)}/cleanup`; + if (this.trackingId) { + cleanupEndpoint += `?trackingId=${this.trackingId}`; + } + await fetch(cleanupEndpoint, { method: "POST", headers: { "Content-Type": "application/json", From 72e025e96b50e8a879ba2b768b4110a1fac14aa0 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 13 Nov 2024 21:37:55 +0700 Subject: [PATCH 3/5] fix: update version tss-client --- packages/tss-client/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tss-client/package.json b/packages/tss-client/package.json index e071598..8e16163 100644 --- a/packages/tss-client/package.json +++ b/packages/tss-client/package.json @@ -1,6 +1,6 @@ { "name": "@toruslabs/tss-client", - "version": "3.1.0", + "version": "3.1.1", "description": "Client SDK for MPECDSA signing", "files": [ "dist" From c3d9585c312037f7ea63637959ce677e1e2568e7 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 13 Nov 2024 23:20:08 +0700 Subject: [PATCH 4/5] fix: generateId if not exist in constructor --- packages/tss-client/src/client.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/tss-client/src/client.ts b/packages/tss-client/src/client.ts index c2e004a..283cfe9 100644 --- a/packages/tss-client/src/client.ts +++ b/packages/tss-client/src/client.ts @@ -115,7 +115,7 @@ export class Client { public tssLib: WasmLib; - public trackingId?: string; + public trackingId: string; public _startPrecomputeTime: number; @@ -178,7 +178,12 @@ export class Client { this._consumed = false; this._sLessThanHalf = true; this.tssLib = _tssLib; - this.trackingId = _trackingId; + + if (_trackingId) { + this.trackingId = _trackingId; + } else { + this.trackingId = this.generateTrackingId(); + } _sockets.forEach((socket) => { if (socket) { @@ -488,4 +493,8 @@ export class Client { }) ); } + + generateTrackingId() { + return Math.random().toString(36).substring(2, 15); + } } From 51fb0194e9066382051c06dd6899884573c3616f Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 14 Nov 2024 21:28:11 +0700 Subject: [PATCH 5/5] feat: add trackingId to socket request --- package-lock.json | 2 +- packages/tss-client/package.json | 2 +- packages/tss-client/src/utils.ts | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6b35df6..a98864d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24442,7 +24442,7 @@ }, "packages/tss-client": { "name": "@toruslabs/tss-client", - "version": "3.1.0", + "version": "3.1.1", "license": "ISC", "dependencies": { "@toruslabs/eccrypto": "^4.0.0", diff --git a/packages/tss-client/package.json b/packages/tss-client/package.json index 8e16163..9171413 100644 --- a/packages/tss-client/package.json +++ b/packages/tss-client/package.json @@ -1,6 +1,6 @@ { "name": "@toruslabs/tss-client", - "version": "3.1.1", + "version": "3.1.2", "description": "Client SDK for MPECDSA signing", "files": [ "dist" diff --git a/packages/tss-client/src/utils.ts b/packages/tss-client/src/utils.ts index 74f7778..f0eabc4 100644 --- a/packages/tss-client/src/utils.ts +++ b/packages/tss-client/src/utils.ts @@ -86,14 +86,14 @@ export const getDKLSCoeff = (isUser: boolean, participatingServerIndexes: number return coeff; }; -export const createSockets = async (wsEndpoints: string[], sessionId: string): Promise => { +export const createSockets = async (wsEndpoints: string[], sessionId: string, trackingId?: string): Promise => { return wsEndpoints.map((wsEndpoint) => { if (wsEndpoint === null || wsEndpoint === undefined) { return null; } return io(wsEndpoint, { path: "/tss/socket.io", - query: { sessionId }, + query: { sessionId, trackingId }, transports: ["websocket", "polling"], withCredentials: true, reconnectionDelayMax: 10000, @@ -129,8 +129,8 @@ export const generateEndpoints = (parties: number, clientIndex: number) => { return { endpoints, tssWSEndpoints, partyIndexes }; }; -export const setupSockets = async (tssWSEndpoints: string[], sessionId: string) => { - const sockets = await createSockets(tssWSEndpoints, sessionId); +export const setupSockets = async (tssWSEndpoints: string[], sessionId: string, trackingId?: string) => { + const sockets = await createSockets(tssWSEndpoints, sessionId, trackingId); // wait for websockets to be connected await new Promise((resolve) => { const checkConnectionTimer = setInterval(() => {