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..9a518abed 100644 --- a/scripts/transaction_builder.js +++ b/scripts/transaction_builder.js @@ -284,6 +284,10 @@ export class TransactionBuilder { } } + setTime(time) { + this.#transaction.blockTime = Math.floor(time.getTime() / 1000); + } + build() { const tx = this.#transaction; if (tx && !tx.vin.length) { diff --git a/scripts/wallet.js b/scripts/wallet.js index 863f39608..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(); } @@ -1410,7 +1412,12 @@ 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()); } 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,