1
0
Commit Graph

15744 Commits

Author SHA1 Message Date
ThomasV
798cd607b5 Merge pull request #8230 from SomberNight/202302_osd_tx
output script descriptors, part 1: change API of transaction.py
2023-03-04 08:48:56 +01:00
SomberNight
a80bef8421 follow-up descriptor.py: small clean-up 2023-03-03 16:40:45 +00:00
SomberNight
e457bb50e9 trezor: TrezorPlugin._make_multisig to use MultisigDescriptor
This fixes a regression where the plugin was assuming ordering for
txin.pubkeys (which is now a set).
(previously txin.pubkeys was a list ordered according to the final
sort order of keys inside the bitcoin script)
2023-03-03 16:40:41 +00:00
SomberNight
31f457c242 wallet.get_script_desc_for_addr: use xpub instead of derived pubkey
also put key origin info into descriptor, if available
2023-03-03 16:40:38 +00:00
SomberNight
847b4fa4c4 descriptor.py: sortedmulti to sort .pubkeys already in __init__ 2023-03-03 16:40:35 +00:00
SomberNight
9127c12fa3 descriptor.py: do more validation in PubkeyProvider, and add tests 2023-03-03 16:40:32 +00:00
SomberNight
e7849bce94 descriptor.py: clean-up and test PubkeyProvider.get_full_derivation_* 2023-03-03 16:40:28 +00:00
SomberNight
a536658eef descriptor.py: fix get_satisfaction_progress 2023-03-03 16:40:25 +00:00
SomberNight
144aac4523 descriptors: add more sanity checks, and unit tests 2023-03-03 16:40:22 +00:00
SomberNight
93b9591f25 tests: add test_descriptor.py from bitcoin-core/HWI 2023-03-03 16:40:19 +00:00
SomberNight
36986a9881 transaction.py: set txio.{witness,redeem}|script based on descriptor 2023-03-03 16:40:15 +00:00
SomberNight
0647a2cf9f transaction.py: rm PartialTxInput.{num_sig, script_type} 2023-03-03 16:40:12 +00:00
SomberNight
ec889b8c3f wallet: fix import_requests, and mention quirk re preimages 2023-03-03 16:35:34 +00:00
SomberNight
81bd6f7d1b follow-up invoice changes: fix "Add lightning invoice to bitcoin URIs"
follow-up 719b468eee
2023-03-03 16:14:35 +00:00
SomberNight
9e81aba578 follow-up invoice changes: fix kivy RequestDialog
follow-up 719b468eee
2023-03-03 16:02:29 +00:00
SomberNight
ca0e4d21f1 follow-up invoice changes: fix kivy lightning_tx_dialog
follow-up 719b468eee
2023-03-03 16:02:26 +00:00
SomberNight
26cc1b8308 follow-up invoice changes: fix qt lightning_tx_dialog
follow-up 719b468eee

Traceback (most recent call last):
  File "...\electrum\electrum\gui\qt\history_list.py", line 673, in mouseDoubleClickEvent
    self.parent.show_lightning_transaction(tx_item)
  File "...\electrum\electrum\gui\qt\main_window.py", line 1082, in show_lightning_transaction
    d = LightningTxDialog(self, tx_item)
  File "...\electrum\electrum\gui\qt\lightning_tx_dialog.py", line 60, in __init__
    self.invoice = invoice.lightning_invoice
AttributeError: 'Request' object has no attribute 'lightning_invoice'
2023-03-03 16:02:22 +00:00
SomberNight
a1a1fae4cc invoices.py: small clean-up 2023-03-03 16:02:19 +00:00
SomberNight
b42b5c0c0f follow-up invoice changes: fix kivy ReceiveScreen
follow-up 719b468eee
2023-03-03 16:02:16 +00:00
SomberNight
5673f08750 follow-up invoice changes: fix wallet.get_bolt11_inv if amt is None
follow-up 719b468eee

Traceback (most recent call last):
  File "...\electrum\electrum\gui\qt\request_list.py", line 111, in item_changed
    self.receive_tab.update_current_request()
  File "...\electrum\electrum\gui\qt\receive_tab.py", line 227, in update_current_request
    lnaddr = self.wallet.get_bolt11_invoice(req) if not help_texts.ln_is_error else ''
  File "...\electrum\electrum\wallet.py", line 2515, in get_bolt11_invoice
    amount_msat = req.amount_msat if req.amount_msat > 0 else None
TypeError: '>' not supported between instances of 'NoneType' and 'int'
2023-03-03 16:02:12 +00:00
Sander van Grieken
8fe181d757 qml: sort languages 2023-03-03 15:50:42 +01:00
Sander van Grieken
ba888fc9fa qml: background flatbuttons within pages 2023-03-03 15:50:13 +01:00
Sander van Grieken
b16fb5088b qml: padding around label above TextHighlightPanes 2023-03-03 15:05:29 +01:00
Sander van Grieken
94fd0dcf10 qml: remove bolt11 invoice from qelnpaymentdetails/LightningPaymentDetails 2023-03-03 13:40:31 +01:00
Sander van Grieken
0f596cf2e9 qml: report unified password change failure, impose minimum password length of 5, disallow empty passwords 2023-03-03 12:56:02 +01:00
Sander van Grieken
90355a150f qml: fix exception handler register opened wallet 2023-03-03 12:26:36 +01:00
Sander van Grieken
72b07a3630 qml: don't initialize swaphelper if a non-lightning wallet is opened
Due to swaphelper's lifecycle (it is kept around longer than the swap dialog) it might
get initialized with a non-lightning wallet. don't initialize in that case.

proper fix is to tie the lifecycle to the swap process, or make it a child of the wallet.
2023-03-03 10:53:03 +01:00
Sander van Grieken
41f0f73bed qml: PIN enable/disable/change more in line with other preferences items 2023-03-03 10:41:06 +01:00
Sander van Grieken
9c73a55c45 qml: styling CPFP dialog, Toaster, GenericShareDialog 2023-03-03 10:20:41 +01:00
ThomasV
e24c4004fa change invoice type hints following 719b468eee 2023-03-03 10:08:34 +01:00
ThomasV
9f5c5f92b3 follow-up 719b468eee 2023-03-03 10:04:37 +01:00
SomberNight
d062505cfd transaction.py: delegate size estimation to descriptors 2023-03-02 17:53:55 +00:00
SomberNight
df9a58480b descriptors: implement and use ".satisfy*" methods 2023-03-02 17:52:35 +00:00
SomberNight
4ee6def7ee qt swap dialog: (trivial) make "toggle swap direction" btn wider
with dark theme enabled, PushButtons are only as wide by default as the text they contain
2023-03-02 16:58:42 +00:00
Sander van Grieken
8278689cc3 qml: fix initial sync state, remove isUptodate property 2023-03-02 16:19:30 +01:00
Sander van Grieken
0da1be33b7 qml: topbar label show wallet icon only when wallet name is displayed 2023-03-02 15:44:30 +01:00
Sander van Grieken
6383f83933 qml: separate app menu and wallet menu 2023-03-02 12:54:59 +01:00
Sander van Grieken
67f3c1eb05 qml: don't init QERequestListModel/requestModel 2023-03-02 11:58:00 +01:00
Sander van Grieken
6a523b3de0 Revert "qml: don't update (and by extension initialize) requestModel, as it isn't used"
This reverts commit 27711093d2.
2023-03-02 11:56:52 +01:00
Sander van Grieken
27711093d2 qml: don't update (and by extension initialize) requestModel, as it isn't used 2023-03-02 11:20:58 +01:00
Sander van Grieken
f65158a23f qml: move menu back to topbar, move addresses and channels to walletdetails and
add walletdetails to topbar menu
2023-03-02 10:49:01 +01:00
ThomasV
765d231209 utxo dialog: fix pipe symbol 2023-03-02 09:49:29 +01:00
SomberNight
f1f39f0e82 descriptors: wallet/transaction: construct intermediate osd 2023-03-01 17:53:52 +00:00
SomberNight
8f8dd1506e descriptor.py: add a dozen TODOs 2023-03-01 17:53:49 +00:00
SomberNight
d2f75b7da5 descriptor.py: don't allow ypub/zpub inside descriptors 2023-03-01 17:53:45 +00:00
SomberNight
001ca775a9 descriptor.py: speed-up DescriptorChecksum a bit 2023-03-01 17:53:41 +00:00
SomberNight
9d3f53932b add descriptor.py from bitcoin-core/HWI 2023-03-01 17:53:37 +00:00
SomberNight
958191013b qt tx dialog: remove "desc" field, just use wallet.get_label_for_txid 2023-03-01 17:13:21 +00:00
SomberNight
d11237d6a1 lnworker: start watching already redeemed chans if txs are missing
This fixes a bug where if one runs `wallet.clear_history()` they would see exceptions later:
```
Traceback (most recent call last):
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 866, in timer_actions
	self.update_wallet()
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 1021, in update_wallet
	self.update_tabs()
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 1033, in update_tabs
	self.utxo_list.update()
  File "/home/user/wspace/electrum/electrum/gui/qt/utxo_list.py", line 103, in update
	self.refresh_row(name, idx)
  File "/home/user/wspace/electrum/electrum/gui/qt/utxo_list.py", line 124, in refresh_row
	parents = self.wallet.get_tx_parents(txid)
  File "/home/user/wspace/electrum/electrum/wallet.py", line 885, in get_tx_parents
	result.update(self.get_tx_parents(_txid))
  File "/home/user/wspace/electrum/electrum/wallet.py", line 881, in get_tx_parents
	for i, txin in enumerate(tx.inputs()):
AttributeError: 'NoneType' object has no attribute 'inputs'
```
This is related to the privacy analysis, which assumes that for each tx item in the history list
we should have the raw tx in the db. This is no longer true after wallet.clear_history(), if
the wallet has certain LN channels. E.g. an already redeemed channel that was local-force-closed,
as that closing tx is not related to the wallet directly.

In commit 3541ecb576, we decided not to watch already redeemed channels.
This is potentially good for e.g. privacy, as the server would otherwise see us subscribe to that chan.
However it means that after running wallet.clear_history() txs related to the channel but not to the
wallet won't be re-downloaded.

Instead, now if there are missing txs for a redeemed channel, we start watching it, hence the
synchronizer will re-downloaded the txs.
2023-03-01 16:20:42 +00:00
SomberNight
f6dc72899a lnsweep: use chan.logger instead of module _logger
to log the chan id for free
2023-03-01 15:27:13 +00:00