From 9b0262aeb2b881a51ab1f6d0e7aff1bc48d539a1 Mon Sep 17 00:00:00 2001 From: Duddino Date: Mon, 27 Oct 2025 18:22:02 +0100 Subject: [PATCH 1/4] Potentially fix sync bug --- scripts/wallet.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/wallet.js b/scripts/wallet.js index 863f39608..ddc845df5 100644 --- a/scripts/wallet.js +++ b/scripts/wallet.js @@ -1410,7 +1410,7 @@ export class Wallet { await this.#shield?.finalizeTransaction(transaction.txid); } - if (!skipDatabase) { + if (!skipDatabase && transaction.blockHeight !== -1 && (this.#lastProcessedBlock - transaction.blockHeight) > cChainParams.current.confirmsForSaving) { const db = await Database.getInstance(); await db.storeTx(transaction, this.getKeyToExport()); } From cab7e3db5c178ba27abdd90af41619d6216cdf69 Mon Sep 17 00:00:00 2001 From: Duddino Date: Mon, 10 Nov 2025 18:53:20 +0100 Subject: [PATCH 2/4] prettier --- scripts/wallet.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/wallet.js b/scripts/wallet.js index ddc845df5..46e50b52e 100644 --- a/scripts/wallet.js +++ b/scripts/wallet.js @@ -1410,7 +1410,12 @@ export class Wallet { await this.#shield?.finalizeTransaction(transaction.txid); } - if (!skipDatabase && transaction.blockHeight !== -1 && (this.#lastProcessedBlock - transaction.blockHeight) > cChainParams.current.confirmsForSaving) { + if ( + !skipDatabase && + transaction.blockHeight !== -1 && + this.#lastProcessedBlock - transaction.blockHeight > + cChainParams.current.confirmsForSaving + ) { const db = await Database.getInstance(); await db.storeTx(transaction, this.getKeyToExport()); } From 2ffb1747bb073e9e3d2373448a9362f52079d0d5 Mon Sep 17 00:00:00 2001 From: Duddino Gatto Date: Tue, 24 Mar 2026 16:14:37 +0100 Subject: [PATCH 3/4] Address review --- chain_params.prod.json | 3 ++- chain_params.test.json | 3 ++- scripts/transaction_builder.js | 4 ++++ scripts/wallet.js | 2 ++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/chain_params.prod.json b/chain_params.prod.json index d0f9459b0..9d206ef39 100644 --- a/chain_params.prod.json +++ b/chain_params.prod.json @@ -34,7 +34,8 @@ "defaultColdStakingAddress": "SdgQDpS8jDRJDX8yK8m9KnTMarsE84zdsy", "stakeSplitTarget": 50000000000, "mnReward": 600000000, - "defaultStartingShieldBlock": 4190531 + "defaultStartingShieldBlock": 4190531, + "confirmsForSaving": 20 }, "testnet": { "name": "testnet", diff --git a/chain_params.test.json b/chain_params.test.json index 34911cc88..7a874e8db 100644 --- a/chain_params.test.json +++ b/chain_params.test.json @@ -31,7 +31,8 @@ "defaultColdStakingAddress": "SdgQDpS8jDRJDX8yK8m9KnTMarsE84zdsy", "stakeSplitTarget": 50000000000, "mnReward": 600000000, - "defaultStartingShieldBlock": 4190531 + "defaultStartingShieldBlock": 4190531, + "confirmsForSaving": 20 }, "testnet": { "name": "testnet", diff --git a/scripts/transaction_builder.js b/scripts/transaction_builder.js index d1c162766..80a1ebc9b 100644 --- a/scripts/transaction_builder.js +++ b/scripts/transaction_builder.js @@ -284,6 +284,10 @@ export class TransactionBuilder { } } + setTime(time) { + this.#transaction.blockTime = time.getTime() / 1000; + } + build() { const tx = this.#transaction; if (tx && !tx.vin.length) { diff --git a/scripts/wallet.js b/scripts/wallet.js index 46e50b52e..6c6c00185 100644 --- a/scripts/wallet.js +++ b/scripts/wallet.js @@ -1177,6 +1177,7 @@ export class Wallet { changeAddress = '', returnAddress = '', memo = '', + time = new Date(), } = {} ) { let balance; @@ -1276,6 +1277,7 @@ export class Wallet { } } } + transactionBuilder.setTime(time); return transactionBuilder.build(); } From 909e37e2107dd31ab34e6566e6b5df9e2c1e5036 Mon Sep 17 00:00:00 2001 From: Duddino Gatto Date: Thu, 9 Apr 2026 11:03:49 +0200 Subject: [PATCH 4/4] Fix tests --- scripts/transaction_builder.js | 2 +- tests/unit/wallet/transactions.spec.js | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/transaction_builder.js b/scripts/transaction_builder.js index 80a1ebc9b..9a518abed 100644 --- a/scripts/transaction_builder.js +++ b/scripts/transaction_builder.js @@ -285,7 +285,7 @@ export class TransactionBuilder { } setTime(time) { - this.#transaction.blockTime = time.getTime() / 1000; + this.#transaction.blockTime = Math.floor(time.getTime() / 1000); } build() { diff --git a/tests/unit/wallet/transactions.spec.js b/tests/unit/wallet/transactions.spec.js index bacf08ab7..af362708e 100644 --- a/tests/unit/wallet/transactions.spec.js +++ b/tests/unit/wallet/transactions.spec.js @@ -300,6 +300,8 @@ describe('Wallet transaction tests', () => { 0.05 * 10 ** 8, { useShieldInputs: true } ); + // Reset blocktime for tests + tx.blockTime = -1; expect(tx).toStrictEqual( new Transaction({ version: 3, @@ -319,6 +321,8 @@ describe('Wallet transaction tests', () => { const tx = wallet.createTransaction(addr, 0.05 * 10 ** 8, { useShieldInputs: true, }); + // Reset blocktime for tests + tx.blockTime = -1; expect(tx).toStrictEqual( new Transaction({ version: 3,