Skip to content

Commit

Permalink
RPC-API: read gaplimit from config
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
AdamISZ committed Aug 6, 2023
1 parent da8ab56 commit 828398f
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 4 deletions.
7 changes: 5 additions & 2 deletions jmclient/jmclient/configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand Down
3 changes: 2 additions & 1 deletion jmclient/jmclient/wallet_rpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
3 changes: 2 additions & 1 deletion jmclient/jmclient/wallet_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit 828398f

Please sign in to comment.