From 828398fc1ca410cf032db2edd219a0b51fb39849 Mon Sep 17 00:00:00 2001 From: Adam Gibson Date: Sun, 6 Aug 2023 09:33:58 -0600 Subject: [PATCH] RPC-API: read gaplimit from config Prior to this commit, an attempt to change the gap limit used in wallet syncing, by setting gaplimit in the config via configset, would fail, since gaplimit was only being read from command line options. After this commit, the value of gaplimit in the POLICY section of the config, defaulting to 6, will be read and used in Wallet object creation, either via the createwallet or recoverwallet endpoints, or via the wallet opening operation in the unlockwallet endpoint. This can be used in combination with the rescanblockchain endpoint to allow discovery of funds in addresses beyond the default gap. --- jmclient/jmclient/configure.py | 7 +++++-- jmclient/jmclient/wallet_rpc.py | 3 ++- jmclient/jmclient/wallet_utils.py | 3 ++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/jmclient/jmclient/configure.py b/jmclient/jmclient/configure.py index c9bbaa70c..37126b38c 100644 --- a/jmclient/jmclient/configure.py +++ b/jmclient/jmclient/configure.py @@ -267,6 +267,11 @@ def jm_single() -> AttributeDict: # but don't forget to bump your miner fees! merge_algorithm = default +# Used currently by the RPC to modify the gap limit +# for address searching during wallet sync. Command line +# scripts can use the command line flag `-g` instead. +gaplimit = 6 + # The fee estimate is based on a projection of how many sats/kilo-vbyte # are needed to get in one of the next N blocks. N is set here as # the value of 'tx_fees'. This cost estimate is high if you set @@ -509,8 +514,6 @@ def jm_single() -> AttributeDict: # [fraction, 0-1] / variance around all offer sizes. Ex: 500k minsize, 0.1 var = 450k-550k size_factor = 0.1 -gaplimit = 6 - [SNICKER] # Any other value than 'true' will be treated as False, # and no SNICKER actions will be enabled in that case: diff --git a/jmclient/jmclient/wallet_rpc.py b/jmclient/jmclient/wallet_rpc.py index d844f5f8c..15abc128e 100644 --- a/jmclient/jmclient/wallet_rpc.py +++ b/jmclient/jmclient/wallet_rpc.py @@ -987,7 +987,8 @@ def unlockwallet(self, request, walletname): wallet = open_test_wallet_maybe( wallet_path, walletname, 4, password=password.encode("utf-8"), - ask_for_password=False) + ask_for_password=False, + gap_limit = jm_single().config.getint("POLICY", "gaplimit")) except StoragePasswordError: raise NotAuthorized() except RetryableStorageError: diff --git a/jmclient/jmclient/wallet_utils.py b/jmclient/jmclient/wallet_utils.py index 50d4db8dc..4615fcf95 100644 --- a/jmclient/jmclient/wallet_utils.py +++ b/jmclient/jmclient/wallet_utils.py @@ -1451,7 +1451,8 @@ def create_wallet(path, password, max_mixdepth, wallet_cls, **kwargs): wallet_cls.initialize(storage, get_network(), max_mixdepth=max_mixdepth, **kwargs) storage.save() - return wallet_cls(storage) + return wallet_cls(storage, + gap_limit=jm_single().config.getint("POLICY", "gaplimit")) def open_test_wallet_maybe(path, seed, max_mixdepth,