From c610fc9af6c6e277ff1b2724bb068ea19a8979c6 Mon Sep 17 00:00:00 2001 From: Alessandro Rezzi Date: Thu, 24 Oct 2024 14:04:13 +0200 Subject: [PATCH] Add a better system to keep track of the shield version --- js/pivx_shield.ts | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/js/pivx_shield.ts b/js/pivx_shield.ts index b8ca209..6e5295f 100644 --- a/js/pivx_shield.ts +++ b/js/pivx_shield.ts @@ -40,6 +40,12 @@ interface CreateTransactionReturnValue { } export class PIVXShield { + /** + * integer to keep track of the current Shield version. + * v1: added mapNullifierNote + */ + static version = 1; + /** * Webassembly object that holds Shield related functions */ @@ -250,6 +256,7 @@ export class PIVXShield { */ save() { return JSON.stringify({ + version: PIVXShield.version, extfvk: this.extfvk, lastProcessedBlock: this.lastProcessedBlock, commitmentTree: this.commitmentTree, @@ -269,6 +276,8 @@ export class PIVXShield { new URL("worker_start.js", import.meta.url), ); + const currVersion = shieldData.version ?? 0; + await new Promise((res) => { shieldWorker.onmessage = (msg) => { if (msg.data === "done") res(); @@ -282,18 +291,16 @@ export class PIVXShield { shieldData.lastProcessedBlock, shieldData.commitmentTree, ); - pivxShield.mapNullifierNote = new Map( - Object.entries(shieldData.mapNullifierNote ?? {}), - ); + + if (currVersion >= 1) { + pivxShield.mapNullifierNote = new Map( + Object.entries(shieldData.mapNullifierNote), + ); + } pivxShield.diversifierIndex = shieldData.diversifierIndex; pivxShield.unspentNotes = shieldData.unspentNotes; - // Shield activity update: mapNullifierNote must be present in the shieldData - let success = true; - if (!shieldData.mapNullifierNote) { - success = false; - } - return { pivxShield, success }; + return { pivxShield, success: currVersion == PIVXShield.version }; } /**