Commit Graph

7499 Commits

Author SHA1 Message Date
SomberNight
0f89b8d4bc update block header checkpoints 2024-05-29 14:44:24 +00:00
Sander van Grieken
4159ceee35 qt: fix ReceiveWidget layout (fixes #9049) 2024-05-29 15:14:23 +02:00
Sander van Grieken
bb4ee2b50b bip21: consider amount=0 in bip21 uri invalid 2024-05-29 10:12:43 +02:00
SomberNight
7827be17d1 qt wizard: fix offline 2fa wallet creation in some cases
fixes https://github.com/spesmilo/electrum/issues/9037
2024-05-28 15:31:37 +00:00
SomberNight
e8a9e45291 qml wizard: even stricter validation for new wallet name
related: 07dc80dd9a
2024-05-28 14:20:28 +00:00
SomberNight
07c80d2ca1 ecc: ecdsa_verify to enforce low-S rule
The low-S rule for ecdsa signatures is mandated by Bitcoin Core policy/standardness (though not by consensus). If we get signatures from untrusted sources, we should mandate they obey the policy rules. (e.g. from LN peers)

Note that we normalize the signatures in the sig format conversion methods (DER <-> (r,s) <-> sig64).

The BOLTs treat high-S signatures as invalid, and this changes our behaviour to that.
(previously we would silently normalize the S value)

see https://github.com/bitcoin/bitcoin/pull/6769
see https://github.com/lightning/bolts/pull/807
2024-05-27 17:12:33 +00:00
SomberNight
d61c6037ea ecc: add test that verify_usermessage does not enforce low-S rule 2024-05-27 17:09:45 +00:00
SomberNight
bafd52ec6d lnsweep: rm one usage of Transaction.get_preimage_script()
get_preimage_script should really have been private API...
looks like everywhere it is used outside of transaction.py, it is actually abused :/
Other existing usages in plugin code I don't dare to touch without lots of manual testing...
2024-05-24 13:40:48 +00:00
SomberNight
2f02e0acc3 qt main window: rm dead code 2024-05-23 13:38:18 +00:00
SomberNight
e25658d724 fix plot.py
fixes https://github.com/spesmilo/electrum/issues/9058
2024-05-22 15:26:26 +00:00
SomberNight
48513df4ae qml: NetworkOverview: show server height when syncing headers
for better feedback during initial header sync
2024-05-22 14:43:28 +00:00
SomberNight
27f09c1f9f interface: also trigger 'blockchain_updated' during initial sync
In fact, semantically it might be more correct to only trigger 'blockchain_updated' and not 'network_updated' here...
Anyway, 'blockchain_updated' should be triggered whenever the Blockchain object gets longer (or changes otherwise).

In particular, in qml, the NetworkOverview only updates the displayed height on 'blockchain_updated'.
2024-05-22 14:34:37 +00:00
SomberNight
235e28ce20 crypto: add some notes re considerations 2024-05-22 13:39:27 +00:00
Ondřej Vejpustek
70f0ed992f slip39: implement extendable backups 2024-05-20 16:57:11 +02:00
SomberNight
4b5cd0ff2b ecc: "public key could not be parsed" exception to contain pubkey bytes
also consolidate naming of variables somewhat

related: https://github.com/spesmilo/electrum/issues/9052
2024-05-16 17:29:26 +00:00
Sander van Grieken
9d29e6e03c qml: log error if not able to retrieve private key for address 2024-05-16 12:12:26 +02:00
Sander van Grieken
cea9055a65 wizard: fix wrong icon and icon disappearing when resuming unfinished wallet 2024-05-16 00:08:07 +02:00
hugehope
c0a2ed5dd3 chore: fix some typos
Signed-off-by: hugehope <cmm7@sina.cn>
2024-05-15 20:41:01 +08:00
Sander van Grieken
082cf6677e qml: expose LIGHTNING_PAYMENT_BUDGET_FEE_MAX_MILLIONTHS in preferences 2024-05-09 12:31:51 +02:00
ThomasV
dfa247773f Merge pull request #9041 from SomberNight/202405_tramp1
trampoline: use exponential search for fees, capped by configurable budget
2024-05-09 09:57:37 +02:00
SomberNight
5b74aa443e qt settings: expose LIGHTNING_PAYMENT_BUDGET_FEE_MAX_MILLIONTHS
Expose as a slider; perhaps it is less footgunny this way?
2024-05-08 15:54:20 +00:00
SomberNight
967ceb7740 lnworker: move around some logging re PaySession, also log budget 2024-05-08 15:53:27 +00:00
SomberNight
67d373357b lnworker: make PaymentFeeBudget defaults configurable
- make PaymentFeeBudget proportional fee and flat cutoff fee configurable
  - closes https://github.com/spesmilo/electrum/issues/7622
- increase flat cutoff fee default to 10 sat
  - closes https://github.com/spesmilo/electrum/issues/7669
- rm RouteEdge.is_sane_to_use() (per edge limit) and just rely on budgets (per route limit)
2024-05-08 15:53:22 +00:00
ThomasV
fd672fed9f submarine swaps: separate server logic from transport 2024-05-07 09:01:33 +02:00
SomberNight
79d2b19fc0 trampoline: rm hardcoded TRAMPOLINE_FEES. just use exponential search
Values for exponential search are based on available fee budget:
we try with budget/64, budget/32, ..., budget/1  (spread uniformly among the selected Trampoline Forwarders).
Hence, if we make the fee budget configurable, that will usefully affect the trampoline fees as well.

related https://github.com/spesmilo/electrum/issues/9033
2024-05-06 18:36:29 +00:00
SomberNight
c84664617d qml: qeinvoice: fix regression in update_userinfo
follow-up 3b0cdef871

```
 29.60 | E | lnworker.LNWallet.[test_segwit_2] | Exception in pay_invoice: TypeError("unhashable type: 'list'")
Traceback (most recent call last):
  File "/home/user/wspace/electrum/electrum/util.py", line 1153, in wrapper
    return await func(*args, **kwargs)
  File "/home/user/wspace/electrum/electrum/lnworker.py", line 1518, in pay_invoice
    self.set_invoice_status(key, PR_INFLIGHT)
  File "/home/user/wspace/electrum/electrum/lnworker.py", line 2404, in set_invoice_status
    util.trigger_callback('invoice_status', self.wallet, key, status)
  File "/home/user/wspace/electrum/electrum/util.py", line 1796, in trigger_callback
    callback(*args)
  File "/home/user/wspace/electrum/electrum/gui/qml/qeinvoice.py", line 90, in on_event_invoice_status
    self.update_userinfo()
  File "/home/user/wspace/electrum/electrum/gui/qml/qeinvoice.py", line 327, in update_userinfo
    self.userinfo = userinfo_for_invoice_status([self.status])
  File "/home/user/wspace/electrum/electrum/gui/qml/qeinvoice.py", line 305, in userinfo_for_invoice_status
    return {
TypeError: unhashable type: 'list'
```
2024-05-06 18:11:31 +00:00
ThomasV
01ca1b0382 submarine_swaps: move http calls to method 2024-05-06 14:20:41 +02:00
SomberNight
32d5e17249 scripts: rm bip70.py
this script has been broken for 5+ years
2024-05-01 15:16:49 +00:00
SomberNight
13d9677e53 transaction: tx.sign API change: rm hex usage 2024-04-29 17:10:30 +00:00
SomberNight
2f1095510c bitcoin.py/transaction.py: API changes: rm most hex usage
Instead of some functions operating with hex strings,
and others using bytes, this consolidates most things to use bytes.

This mainly focuses on bitcoin.py and transaction.py,
and then adapts the API usages in other files.

Notably,
- scripts,
- pubkeys,
- signatures
should be bytes in almost all places now.
2024-04-29 17:10:26 +00:00
SomberNight
5e08d6e486 constants: add some more type hints 2024-04-29 16:50:19 +00:00
goodmost
9a7345a0dd jade.py: fix some typos
Signed-off-by: goodmost <zhaohaiyang@outlook.com>
2024-04-28 18:12:32 +08:00
SomberNight
b9a2b0d19b network: re-detect is_proxy_tor every time we connect to a server
This avoids some false negatives for is_proxy_tor.
(previously we only set is_proxy_tor when the proxy settings were changed)
In particular, consider scenario:
- Tor browser not running
- user sets "localhost:9150" as proxy
- detection sets network.is_proxy_tor to False
- user starts Tor browser
- network, due to retries, finds proxy working and connects to some servers
- network.is_proxy_tor remains False
2024-04-25 22:48:56 +00:00
ThomasV
2a4c5d94f1 Merge pull request #9020 from SomberNight/202404_bitstring2
dependencies: remove bitstring
2024-04-24 17:39:27 +02:00
SomberNight
7a820f7561 lnworker: add_peer: no DNS lookup if a proxy is set, to avoid a DNS-leak
closes https://github.com/spesmilo/electrum/issues/9002
2024-04-24 14:49:23 +00:00
SomberNight
cf2ed509b4 dependencies: remove bitstring
- `bitstring` started depending on `bitarray` in version 4.1 [0]
  - that would mean one additional dependency for us (from yet another maintainer), which is not even pure python
- we only use bitstring for bolt11-parsing
- hence this PR rewrites the bolt11-parsing and removes `bitstring` as dependency
- note: I benchmarked lndecode using [1], and the new code performs better,
  taking around 80% time needed for old code (when using bitstring 3.1.9, pure python).
  Though the variance is quite large in both cases.

[0]: 95ee533ee4/release_notes.txt (L108)
[1]: d7597d96d0
2024-04-24 14:14:31 +00:00
Sander van Grieken
3b0cdef871 qml: lightning invoice status can be one of onchain invoice states when using fallback address. (fixes #9018) 2024-04-24 13:37:33 +02:00
Sander van Grieken
41bb849f8a qt: normalize wallet path before lookup in window list 2024-04-24 13:16:12 +02:00
SomberNight
85af0b8030 win/mac build: bump pyinstaller (5.11.0->5.13.2)
- needed for bumping python version, as 3.11+ is borked without https://github.com/pyinstaller/pyinstaller/issues/7692
- plugin.py: adapt to pyinstaller 5.12+
    loader was renamed in b9111db8a8
2024-04-18 18:16:10 +00:00
SomberNight
96bb1611c5 follow-up plugins changes: fix qml gui
follow-up https://github.com/spesmilo/electrum/pull/8713

```
  1.35 | E | __main__ | daemon.run_gui errored
Traceback (most recent call last):
  File "/home/user/wspace/electrum/./run_electrum", line 458, in handle_cmd
    d.run_gui()
  File "/home/user/wspace/electrum/electrum/daemon.py", line 623, in run_gui
    self.gui_object = gui.ElectrumGui(config=self.config, daemon=self, plugins=self._plugins)
  File "/home/user/wspace/electrum/electrum/util.py", line 482, in do_profile
    o = func(*args, **kw_args)
  File "/home/user/wspace/electrum/electrum/gui/qml/__init__.py", line 82, in __init__
    self.app = ElectrumQmlApplication(sys.argv, config=config, daemon=daemon, plugins=plugins)
  File "/home/user/wspace/electrum/electrum/gui/qml/qeapp.py", line 428, in __init__
    self.plugins.load_plugin('trustedcoin')
  File "/home/user/wspace/electrum/electrum/plugin.py", line 269, in load_plugin
    raise Exception(f"could not find plugin {name!r}")
Exception: could not find plugin 'trustedcoin'
```
2024-04-18 17:01:08 +00:00
SomberNight
8d07672345 plugin: load_plugin: better exception msg if not found 2024-04-18 16:53:48 +00:00
fuyangpengqi
91de8e70e5 chore: fix some typos in comments (#9014)
Signed-off-by: fuyangpengqi <995764973@qq.com>
2024-04-18 13:59:39 +00:00
SomberNight
407f3fcb04 follow-up prev 2024-04-17 14:36:21 +00:00
SomberNight
cda65a6a80 exchange_rate: historical rates: merge old+new data, don't overwrite
- CoinGecko restricted its historical API to last 365 days
  - we used to ask for, and get, the whole history, but now we can only ask for the last year
  - so change HTTP request to only ask for 365 days
- we cache historical rates to disk
  - previously we used to overwrite what is already stored, with the newly obtained data
  - now this is changed so that we merge the new data into the already stored data
2024-04-17 14:30:09 +00:00
Sander van Grieken
e0e00da004 lnworker: don't query DNS for .onion hosts (fixes #9002) 2024-04-16 13:57:00 +02:00
CoolCu
3f95ceab60 chore: fix some typos in comments
Signed-off-by: CoolCu <coolcui@qq.com>
2024-04-16 15:54:25 +08:00
Jamie C. Driver
17508086aa jade: update Jade api to 1.0.29
Updates cbor dependency to cbor2, required for modern linux/python
versions.
2024-04-15 12:10:06 +01:00
ThomasV
8759928ec0 Merge pull request #9000 from SomberNight/202404_ecc_schnorr
ecc: add bindings for schnorr sign/verify, and refactor
2024-04-15 11:57:29 +02:00
ThomasV
ff07a77cfc move virtualkeyboard plugin to other repo
add plugin metadata to electrum/plugins.json
2024-04-13 11:35:49 +02:00
ThomasV
c9820aeca0 Qt: add download_plugin_dialog 2024-04-13 11:35:49 +02:00