wallet: add new config option "FREEZE_REUSED_ADDRESS_UTXOS"
Adds a new config option: `WALLET_FREEZE_REUSED_ADDRESS_UTXOS`. This is based on Bitcoin Core's "avoid_reuse" wallet flag. [0] This opt-in feature, if enabled: > Automatically freeze coins received to already used addresses. > This can eliminate a serious privacy issue where a malicious user can track your spends by sending small payments > to a previously-paid address of yours that would then be included with unrelated inputs in your future payments. Note that currently we only have a single coinchooser policy, `CoinChooserPrivacy`, which interacts well with this option, as it spends all coins from any selected address. However, if we later add a different coinchooser policy, which allowed "partial spends", care should be taken re e.g. disallowing using that when this option is set. Also note that this PR adds this as a config option, but arguably it could be wallet-specific instead, such as `use_change`. [0]: https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.19.0.1.md#wallet closes https://github.com/spesmilo/electrum/issues/7497
This commit is contained in:
@@ -966,8 +966,14 @@ class AddressSynchronizer(Logger, EventListener):
|
||||
return coins
|
||||
|
||||
def is_used(self, address: str) -> bool:
|
||||
"""Whether any tx ever touched `address`."""
|
||||
return self.get_address_history_len(address) != 0
|
||||
|
||||
def is_used_as_from_address(self, address: str) -> bool:
|
||||
"""Whether any tx ever spent from `address`."""
|
||||
received, sent = self.get_addr_io(address)
|
||||
return len(sent) > 0
|
||||
|
||||
def is_empty(self, address: str) -> bool:
|
||||
coins = self.get_addr_utxo(address)
|
||||
return not bool(coins)
|
||||
|
||||
Reference in New Issue
Block a user