We are now using change addresses for the channel SRK to_remote outputs
(and reserving these change addresses). (see prev commits)
Note that every channel open we initiate typically uses two change addresses:
- one for the SRK to_remote output, and
- one for the funding tx change output (assuming there is change).
- Use change addresses (instead of receive) for the static_remotekey to_remote outputs,
and reserve these to greatly reduce the chance of address-reuse
- Use change addresses (instead of receive) for LN channel sweep addresses.
Note that these atm are not getting reserved.
- also, disallow deleting last address from an imported wallet (fixes#3254, fixes#4833)
- also, set LNBackups.sweep_address lazily, as during fresh wallet creation
there are no addresses in the wallet at that point yet! see trace below.
Traceback (most recent call last):
[...]
File "...\electrum\electrum\tests\test_commands.py", line 112, in test_export_private_key_deterministic
wallet = restore_wallet_from_text('bitter grass shiver impose acquire brush forget axis eager alone wine silver',
File "...\electrum\electrum\wallet.py", line 2575, in restore_wallet_from_text
wallet = Wallet(db, storage, config=config)
File "...\electrum\electrum\wallet.py", line 2502, in __new__
wallet = WalletClass(db, storage, config=config)
File "...\electrum\electrum\wallet.py", line 2346, in __init__
Deterministic_Wallet.__init__(self, db, storage, config=config)
File "...\electrum\electrum\wallet.py", line 2147, in __init__
Abstract_Wallet.__init__(self, db, storage, config=config)
File "...\electrum\electrum\wallet.py", line 261, in __init__
self.lnbackups = LNBackups(self)
File "...\electrum\electrum\lnworker.py", line 1401, in __init__
self.sweep_address = wallet.get_receiving_address()
File "...\electrum\electrum\wallet.py", line 1498, in wrapper
addr = func(self, *args, **kwargs)
File "...\electrum\electrum\wallet.py", line 1520, in get_receiving_address
raise Exception("no receiving addresses in wallet?!")
Exception: no receiving addresses in wallet?!
GUIs now respect order of wallet.get_full_history(), which is probably the sane
thing to do, given that is the order the "balance" column is calculated in.
fixes#5958