forked from spesmilo/electrum
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRELEASE-NOTES
More file actions
2464 lines (2168 loc) · 112 KB
/
RELEASE-NOTES
File metadata and controls
2464 lines (2168 loc) · 112 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Release 4.7.0 (Jan 22, 2026)
* Qt GUI (desktop):
- new: "Submarine Payments": support reverse swaps to external address (#10303)
Allows doing onchain payments from the wallet's lightning balance.
- changed: flag console usage in crash reports (#10219)
- changed: add "Tools" text to the tools button for increased visibility (#10277)
- changed: improved UI feedback for send change to lightning function (#10247)
- fix: improve Network Tab behavior when switching connection mode (#10280)
- fix: re-add fiat values to csv/json history export (#10209)
- fix: not proposing tx batching in some cases (#10204)
* QML GUI & Android:
- new: allow manual editing of fee/feerate (#10371)
This also allows sending sub-1 sat/b transactions on Android.
- new: support biometric authentication (#10340)
Allows using the Android system lockscreen (e.g. fingerprints)
to unlock the wallet and authorize payments.
The previous optional built-in PIN code authentication is removed.
- changed: make UI compatible with edge-to-edge layout (#10178)
- changed: fee histogram colors: extend color palette to cover sub-1 s/b (#10307)
- changed: enforce the usage of a single password for all wallet files (#10345)
- changed: allow tap-to-focus in the qr code scanner (#10385)
- fix: allow opening passwordless wallets (#10423)
- fix: also protect address private keys from screenshots (#10426)
* Lightning:
- new: support LNURL-withdraw/LUD-3 (#9993)
Allows scanning QR codes to receive funds on lightning (e.g. ATMs, vouchers).
- changed: refactor handling of incoming htlcs (#10230)
- changed: collect htlcs failed back to us before re-splitting (#10274)
- fix: allow spending channel reserve if anchor channels are closed but not redeemed (2d17252)
- fix: logic bug in liquidity hint calculation (#10305)
- fix: race resulting in "Not enough balance" error when doing concurrent payments (#10325)
- fix: self payments (and rebalance function) (#10271)
- fix: gossip exchange with Core Lightning nodes (#10347)
- fix: only wait for pending htlcs to get removed if peer is connected (1845143)
* Electrum protocol:
- new: add support for Electrum Protocol version 1.6 (#10295)
See https://electrum-protocol.readthedocs.io/en/latest/protocol-changes.html#version-1-6
Min required version is still 1.4.
- changed: prevent connecting to server with different genesis hash (#10281)
- changed: add warmup budget before batching server rpc calls for faster startup (#10281)
- changed: optimistically guess scripthash status on new blocks to reduce network traffic
and improve privacy (#10290)
- fix: flush network buffer before disconnecting from server (6423323)
* Onchain / Wallet:
- changed: non-SPV verified transactions now considered unconfirmed (#10216)
- changed: always enforce dnssec validation for Openalias (#10349)
* Submarine swaps:
- new: cli commands to get swap statistics for swapserver operators (#10198):
'swapserver_get_history' and 'swapserver_get_summary'
* CLI/RPC:
- new: add 'export_lightning_preimage' command (#10242)
- changed: return lightning preimage from 'check_hold_invoice' command (#10242)
- changed: 'add_peer' now blocks until the connection is established (#10283)
- changed: 'version_info' now shows OpenSSL version (828fc56)
- fix: print warnings to stderr so output is still valid json (7bfe2dd)
- fix: imply enabled proxy when starting with proxy cli option (#10326)
* Plugins:
- changed: plugins can now use existing cli command names without colliding with builtin commands (9c4c7f0)
- changed: Timelock Recovery: check if locking address is ours or script (#10272)
- removed: payserver plugin, now an external plugin, moved to spesmilo/electrum-payserver (d36b753)
* Hardware wallets:
- Coldcard: fix: compatibility with ckcc-protocol v1.5.0 (2172dad)
* Contrib:
- new: add README to scripts/ directory (5a14a58)
* Dependencies:
- changed: bump min required electrum-aionostr to 0.1.0 (e188102)
* Builds/binaries:
- Android:
- new: support 16kb page size (#10148)
- changed: bump Android target SDK version to 35 (#10178)
- changed: bump OpenSSL from 1.1.1w to 3.0.18 (#10332)
- changed: switch from cryptography to pycryptodomex (#10332)
- changed: bump python version from 3.10.18 to 3.11.14 (#10388)
- AppImage:
- changed: migrate AppImage build to use modern/maintained appimagetool (#10019)
# Release 4.6.2 (Aug 25, 2025)
* General:
- changed: minrelayfee clamps from [1, 50] to [0.1, 50] sat/vbyte (#10096)
- new: add support for "mutinynet" signet test network (#10134)
- new: network: don't request same tx from server that we just broadcast to it (#10111)
- new: logging: add config.LOGS_MAX_TOTAL_SIZE_BYTES: to limit size on disk (#10159)
* QML GUI (Android):
- fix: cannot open keystore-encryption-only wallets (#10171)
- fix: wizard: restoring from seed broken if already opened a wallet (#10117)
- fix: handle invoice validation errors on save (#10122)
- fix: sweep: handle network errors gracefully (#10108)
- fix: sweep: handle unexpected script_types (#10145)
* Qt GUI (desktop):
- fix: wizard: hardware device: handle missing xpub (#10109)
- fix: wizard: enable-keystore for bip39 seeds and hw devices (#10123)
* Lightning:
- fix: slow down peers sending too much gossip, and other rate-limits (#10153)
* Submarine swaps: several bug fixes and improved reliability.
* CLI/RPC:
- changed: onchain_history: add back from_height/to_height params (#10119)
- changed: reverse_swap: new mandatory parameter 'prepayment' (#10165)
- new: get_submarine_swap_providers: added command to fetch swap providers (#10158)
* Plugins:
- Nostr Cosigner: fix: don't allow saving tx without txid (#10128)
# Release 4.6.1 (Aug 5, 2025)
* QML GUI (Android):
- fix: QR scanner crashes due to null/orphaned View in hierarchy (#10071)
- fix: creating a tx with a pre-segwit watchonly wallet (#10042)
* CLI/RPC:
- fix several bugs related to new hold_invoice APIs. This required
minor breaking changes in the new APIs. (#10059, #10082)
- add max_cltv, max_fee_msat parameters to lnpay command (#10067)
* Hardware wallets:
- bitbox02: bump required and bundled library to 7.0.0 (#10040)
This should add support for the new BitBox02 "Nova" devices.
* General:
- rework crash reporter (#10052)
- show additional confirmation popup on clicking "Send"
- remove the "Never" button and the corresponding config option.
The crash reporter is now always shown on uncaught exceptions.
This unifies some code paths: the crash-reporter-disabled case
was untested and buggy.
- don't show reporter multiple times for the "same" exception
- new: network: parallelize block-header-chunks downloads (#10033)
* Lightning:
- wallet: don't spend reserve utxo to create new reserve utxo (#10091)
* various UI fixes (#10060, #10062, #10081, ...)
# Release 4.6.0 (July 16, 2025)
* A 'Terms of Use' screen was added to the install wizard. While the
licence remains unchanged, we ask users to agree with the fact that
we are not a custodial service or a money transmitter. The Terms of
Use screen also makes it clear that all issues are to be resolved
in public, and that there is no user support via private channels.
* Nostr support: (using new dependency: electrum-aionostr)
Electrum now uses Nostr in the context of submarine swaps,
and in several plugins. Electrum will not connect to Nostr
by default, only if required.
* Submarine swaps over Nostr: The Electrum client will connect to
Nostr in order to discover submarine swap providers, and to perform
related RPCs. This means that:
- Anyone can become a swap provider (you need to run an Electrum
daemon with the 'swapserver' plugin). Submarine swap providers
advertise their fees and their liquidity on Nostr.
See https://electrum.readthedocs.io/en/latest/swapserver.html
for set-up documentation.
- Submarine swap providers do not need to provide an HTTP
endpoint, since RPCs are performed via Nostr. They also do not
need to have public lightning channels.
- Because a decentralized service needs to be trustless, the
option to perform zero-confirmation swaps has been removed from
Electrum.
Note that Electrum connections to Nostr relays are only initiated
when the user uses the swap service, and the nostr public key used
by the client is ephemeral. In contrast, swap providers use a
persisted identity.
* Third-party plugins:
- Electrum supports the installation of plugins distributed by
third-parties as ZIP files. While it has long been possible to
install third-party plugins when running Electrum from python
sources, the same is now possible when using desktop binaries
(Windows, MacOS, Linux). Third-party plugins are installed as ZIP
files in the user's electrum data directory.
- In order to prevent plugin installation by malware, third-party
plugins can only be enabled if the user enters a plugin
authorization password (distinct from the wallet password).
Setting up that plugin authorization password requires
administrator permissions on the local machine; a
password-derived public key must be written in the system.
* Lightning:
- Anchor channels (#9264): Newly created channels use
anchor commitments by default. Since sweeping outputs from anchor
channels may require external UTXOs, lightning can no longer be
enabled in wallets that do not have a software keystore (hardware
wallets, watching-only wallets). Existing wallets that are in that
situation cannot create new channels.
- wallets with anchor channels must always have utxos available (#9536)
- support added for onion messages (only CLI for now) (#9039)
- lots of fixes and improvements (#8857, #8547, #9700, #9083, ...)
* Qt Desktop GUI:
- migrate from Qt5 to Qt6 (#9189)
- new: screenshot "protection" on Windows (#9898). Inspired by Windows
Recall, by default screenshots will contain black rectangles in
place of the Electrum windows, to try to avoid leaking secret keys.
This is opt-out using a config variable.
- exposed option to connect to only a single server (--oneserver)
- Wallet file encryption:
- Non-multisig hardware wallet files can now be encrypted with
either using the hardware device or (new) a password. (#5561)
- The option to have a password-protected wallet without file
encryption has been removed from the Qt GUI. It is still possible
to create such a wallet using the command line.
- Wallet unlocking:
- Wallets can be unlocked in the Qt GUI. When a password-protected
wallet is unlocked, its password is kept in memory, and signing
transactions will not require to enter the password. The unlocked
state is rendered by the 'open lock' icon in the status bar.
- If a wallet needs to sweep anchor channel outputs using extra
UTXOs, the operations will be performed without requiring the
user password if the wallet is unlocked. If the wallet is locked,
the status bar will show a 'password required' button.
- Transaction batching: When creating a new payment, if the
output can be added to an existing mempool transaction, the 'New
transaction' window will show a drop-down menu, proposing a list of
transactions that can be batched with the current payment. This
replaces the previous 'batch' option checkbox, and gives more
control to the user.
- Keystore enabling/disabling (Qt):
- It is now possible to add a seed
to an existing watching-only wallet, or to a keystore within a
multisig wallet. Similarly, it is possible to pair a watching-only
keystore with a hardware device. These operations are performed
from the 'Wallet Information' dialog.
- Lightning address contacts:
- It is now possible to create contacts with (lnurl type) lightning
addresses as payment identifier.
- show warnings on wallet close if there are sensitive pending operations,
e.g. when in the middle of doing a swap (#9715)
- some performance improvements for large wallets (#9958, #9967, #9968)
- qr-reader: macos: add runtime requesting of camera permission (#9955)
* Accounting rules: In order to properly handle on-chain transactions
created by lightning channel force closures, we consider that funds
successfully redeemed from a script with several possible
recipients have never left the final recipient's wallet. This
avoids having to write balance changes that are cancelled
later. The corresponding addresses are rendered in the GUI as
'accounting addresses' (in orange).
* New plugins:
- Nostr Wallet Connect: This plugin allows remote control of
Electrum lightning wallets via Nostr NIP-47. (#9675)
- Nostr Cosigner: This plugin facilitates the exchange of
PSBTs between cosigners of a multisig wallet. It replaces the
former 'Cosigner pool' plugin. Instead of relying on a central
server, it uses Nostr to send/receive PSBTs. (#9261)
- Timelock Recovery: A timelock based inheritance scheme.
See timelockrecovery.com (#9589)
* CLI:
- The command line help has been improved; parameters are
documented in the same docstring as the command they belong to.
- If the --wallet parameter passed to a command is a simple filename,
it is now interpreted as relative to the users wallets directory,
rather than to the current working directory.
- Plugins may add extra commands to the CLI. Plugin commands must
be prefixed with the plugin's internal name.
- Support for hold invoices.
- new commands:
- listconfig, helpconfig, unsetconfig
- onchain_capital_gains (was previously a field of onchain_history)
- {add,settle,cancel,check}_hold_invoice
- send_onion_message, get_blinded_path_via
- wait_for_sync
* General:
- Mitigate against dust attacks; Add option to avoid spending from
used addresses. (#9636)
- Restrict process memory access on Linux. (#9749)
- locale: syntax-check i18n translations at runtime. Malformed translation
strings are now less likely to cause errors: instead we fallback to the
original English string (#10011)
- fix: would sometimes hang on startup if system clock jumped backwards (#9802)
* QML GUI (Android):
- "Sweep key" feature ported to mobile
- Estimate amount when Max is checked
- exposed option to connect to only a single server (--oneserver)
* Android:
- replace QR code scanning library to make scanning fun again (#9983)
- properly ask for (notification) OS permission access. (#9682)
- add option to prevent the app touching the screen brightness (#9321)
* Electrum protocol: add padding and some noise to messages (#9875)
* Hardware wallets:
- Coldcard: add feature to upload multisig wallet configuration to Coldcard via USB.
- KeepKey: we now vendor our fork of keepkeylib,
instead of using the unmaintained upstream as an external dependency (#9650)
- Ledger:
- rm support for "HW.1" and "Nano" (non-S) devices (#9652)
- rm dependency: btchip-python (#9370)
* Builds/binaries:
- new minimum OS requirements:
- Windows: x86_64, Windows 10 (1809)
note: 32-bit Windows is no longer supported.
- macOS: 11 "Big Sur"
- Linux AppImage: x86_64, glibc 2.31 ("debian 11"-equivalent)
* Dependencies:
- the minimum required python version was increased: 3.8->3.10 (#9418)
- new first-party dep: electrum-aionostr
- forked the seemingly unmaintained davestgermain/aionostr library
- new first-party dep: electrum-ecc
- split out our existing libsecp256k1 python bindings into
this separate package
# Release 4.5.8 (Oct 23, 2024)
* Qt Desktop GUI:
- fix: regression: bump_fee and dscancel dialogs erroring (#9273)
# Release 4.5.7 (Oct 21, 2024)
* General:
- new: add new historical exchange rate providers: Bitfinex and Bitstamp
- fix: wizard regression: 2fa wallet setup erroring (#9253)
- fix: python 3.13 compat: could not connect to some self-signed electrum
servers with weird TLS certs. As workaround, set pre-3.13 behaviour (#9258)
* Lightning:
- fix: send update_fee right away after channel_reestablish (3a465593)
This fixes a race that can result in a force-closure if we try sending
a payment very soon after reestablishing the channel.
* Qt Desktop GUI:
- fix: show fee warnings also in the transaction dialog (c4fe2796)
# Release 4.5.6 (Oct 16, 2024)
* General:
- new: add support for testnet4 (#9197)
- fix: wizard: allow passphrase for some '2fa' seeds (#9088)
- fix: trustedcoin wallet wizard continuation if file has keystore-only encryption (#9237)
- fix: trustedcoin: sanitize error messages coming from 2fa server
- fix: new wizard did not set keystore password if storage was not encrypted (#9147)
- changed: set stricter UNIX permissions for log files (fa8595b1)
* QML GUI (Android):
- new: show seed passphrase in WalletDetails (#9204)
- new: set max screen brightness when displaying QR codes (79c08536)
- fix: crash due to ConcurrentModificationException (450b9a0)
- fix: issue deactivating PIN when no wallet loaded (#8366)
- fix: only allow Channel Backup import on Lightning-enabled wallets (8d9bcda)
* Qt Desktop GUI:
- fix: scanning multi (privkeys, addresses) from QR (4dc64e4)
* Hardware wallets:
- ColdCard: new: export multisig wallet to coldcard over USB (#7682)
- Trezor:
- new: add support for new device "Safe 5" (#9171)
- update: fix compat with and bump pinned library to 0.13.9 (#9141)
- Ledger:
- new: add support for new device "Flex" (#9179)
- update: bump pinned library to 0.3.0, raise max lib to <0.4 (719292f8)
- Jade: update: bump library to 1.0.31 (9a84bb32)
* CLI/RPC:
- changed: require wallet password for lnpay and similar commands (#9236)
(This is in addition to the wallet needing to be loaded,
and requiring read access to the config file)
* Builds/binaries:
- changed: include unit tests in tarballs (#9207)
- android:
- changed: set target_sdk_version to 34 (2917fde5)
- update: bump python version (3.8->3.10) (08127a60)
- work towards F-Droid inclusion:
- reproducible apks: strip file path prefix from .pyc files (6ebdbf04)
- add fastlane metadata for f-droid (#9211)
- change versionCode calculation (#9221)
- build.gradle: set android.dependenciesInfo.includeInApk=false (af18df10)
- contrib/release_www.sh: put android versionCode in "version" file (#9233)
# Release 4.5.5 (May 30, 2024)
* General:
- fix: timeout error shadowed by aiorpcx cancellation bug (#8954)
- changed: Fiat exchange rates: do not overwrite the locally saved historical
data. Instead, merge old and new data (a2fb70d6). This also ~fixes the
CoinGecko historical API by only asking for the last 365 days.
- update: support latest revision of SLIP-39 mnemonic spec (to restore) (#9059)
* Lightning:
- new: unify max fee bounds for payments, make it configurable (#9041)
- changed: trampoline fees: instead of hardcoded list, use
exponential search, capped by configurable budget (#9033)
- fix: opening new channels with peer that has .onion address (#9002)
* Dependencies:
- remove bitstring (#9020)
* QML GUI (Android):
- new: add tx options to ConfirmTxDialog, RbfBumpFeeDialog (#8909)
- various UI fixes (#9018, 472a65eb)
* Qt Desktop GUI:
- fix: save notes whenever modified (#8951)
- fix: offline 2fa wallet creation failing in some cases (#9037)
- various UI fixes (#8962, #8874, #9012, 1047200a, #9058)
* Hardware wallets:
- Bitbox02: fix: call pairing dialog when necessary (#8971)
- Jade: update: bump library to 1.0.29 (#9007)
* Binaries:
- new: add AppArmor profiles for tarball and AppImage (#9003)
# Release 4.5.4 (March 14, 2024)
* General:
- fix: failing WalletDB upgrade(58) in 4.5.3 (#8913), for wallets with
partial txs saved into the history as local txs
* Lightning:
- changed: use longer final_cltv_delta for client-normal-swap, to
give more time for user to come back online while doing the swap (#8940)
- changed: create trampoline onions even when directly paying
a trampoline forwarder node (777c2ffb)
* Hardware wallets:
- Trezor:
- fix: allow adding SLIP-19 ownership proofs to complete inputs (#8910)
* Plugins:
- fix: a race in swapserver when handling server-normal-swaps (#8825)
# Release 4.5.3 (February 23, 2024)
* General:
- changed: label tx sizes as "vbytes", and feerates as "sat/vbyte" (#8864)
- fix: wizard regression not able to use HWW as cosigner for new wallets (643fbec)
- fix: onchain invoice paid detection broken if jsonpatch enabled (#8842)
- fix: program not starting because of bad "proxy" config value (#8837)
- fix: wizard: don't log sensitive values: replace blacklist with whitelist (638fdf11)
* Qt Desktop GUI:
- new: basic "add server as bookmark" functionality (#8865)
- fix: potential race condition in wizard page construction (c78a90a)
- fix: don't use lightning invoice when user specifies MAX amount (#8900)
- various UI fixes (#8874, 2882c4b, #8889, 66af6e6)
* QML GUI (Android):
- fix potential concurrency issue loading wallet (#8355)
- fix: wizard: fails to restore from 2fa seed: KeyError: 'x1' (#8861)
- various UI fixes (50a53aa, 0a6b2d5, #8782, 6738e1e, c0b8927, 016e500, #8898)
* Hardware wallets:
- Trezor:
- new: support SLIP-19 ownership proofs, for trezor-based Standard_Wallets (#8871)
- fix: regression in sign_transaction for trezor one for multisig (#8813)
* CLI/RPC:
- changed: nicer error messages and error-passing (#8888)
* Lightning:
- fix: timing issue in lnpeer.reestablish_channel, for replaying unacked updates (79d88dcb)
# Release 4.5.2 (January 20, 2024)
* Qt Desktop GUI:
- fix crash during startup/wizard-open (#8833)
# Release 4.5.1 (January 19, 2024)
* Lightning:
- fix: MPP regression when using gossip that made paying small invoices fail (95c55c542)
- fix: better handle dataloss (#8814)
- allow manually requesting force-close in WE_ARE_TOXIC state
- fix some timing issues
* General:
- localization: never translate CLI/RPC (0e5a1380)
- localization: simplify how default language is chosen (0e5a1380)
* QML GUI (Android):
- bump min required android version from android 5.0 to 6.0 (#8761)
(older versions have not been working in practice since at least 4.4.0)
- properly refresh history if addresses are deleted from imported wallets (#8782)
- fix crash when LNURLp is scanned/pasted (#8822)
- fix crash for new wallets having cosigner using hww #8808)
- fix crash in finalizer when txid is undefined (#8807)
- various UI fixes (291f0ce, 3d9996a, ec81f00)
* Qt Desktop GUI:
- also support unfinished wallets when opened through File>Open (#8809)
- fix handler for OpenFileEventFilter (6a28ef5)
# Release 4.5.0 (January 12, 2024)
* General:
- remove SSL options from config (012ce1c)
- make number of logfiles to keep configurable (5e8b14f)
- refactored SimpleConfig and added ConfigVars (#8454)
- incremental writes of wallet file (#8493)
- add warnings and prompt users when signing txs with non-default sighashes (#8687)
- refactored bip21/bolt11/lnurl/etc-handling into PaymentIdentifiers (#8462)
- add option to merge duplicate outputs (#8474)
- fix: consider bip21 URIs as invalid if they contain unknown req-* param (#8781)
* Lightning:
- fix BOLT-04 "MUST set `short_channel_id` to the `short_channel_id` used by the incoming onion" (ca93af2)
- add support for hold invoices (1acf426)
- add support for bundled payments (c4eb7d8)
- various MPP improvements (#7987, ..)
- support large channels (40f2087)
- new flow for normal submarine swaps (fd10ae3)
- the client now uses hold invoices, just like the server
- the client waits until HTLCs are received before going on-chain
- the user may cancel the swaps during that waiting time
- don't create invoice with duplicate route hints (a3997f8)
- don't set channel OPEN before channel_ready has been both sent and received (#8641)
- if trampoline is enabled, do not add non-trampoline nodes to invoices (120faa4)
* QML GUI (Android):
- port to Qt6 (#8545)
- fix regression for lnurl-pay (#8585)
- fix invoice amount bounds check (#8582)
- fix places where text was rendered off-screen for certain translations (#8611)
- fix lnworker undefined when node alias requested (#8635)
- fix BIP39 cosigner script type must be same as primary (8cd95f1)
- fix: never use current fiat exchange rate for old historical amounts (#8788)
- better handle android back-gesture (#8464)
- new: show private key in address details (016b5eb)
- new: show tx inputs in TxDetails and other dialogs (#8772)
- new: label sync plugin toggle (b6863b4)
- fix: properly suggest paying BOLT11 invoice onchain if insufficient balance (0a80460)
- new: message sign & verify (e5e1e46)
- new: allow never expiring payment requests (#8631)
- new: add coins/UTXOs to addresses list, add filters (cf91d2e)
- new: delete addresses from imported wallet (#8675)
- new: add support for lightning address and openalias (03dd38b)
- new: add setting to allow screenshots everywhere (0dae1733)
- simplify welcome page for first-start network settings (#8737)
- various UI fixes (b846eab, #8634, 9ed5f7b, 941f425, b20a4b9, af61b9d, 0fb47c8, 2995bc8, ..)
* Qt Desktop GUI:
- port wizard to new implementation
- fix fiat balance sorting in address list window (#8469, #8478)
- remove thousands separator when copying numbers to clipboard (#8479)
- new: option to use extra trampoline for legacy payments (b2053c6)
- new: send change to lightning option for on-chain payments (649ce97)
- new: notes tab for saving text in the (encrypted) wallet file (d691aa07)
- simplify welcome page for first-start network settings (#8737)
- various UI fixes (#8587, #6526, ..)
* Hardware wallets:
- Trezor: allow multiple change outputs (#3920)
- Trezor: support external pre-signed inputs (#8324)
- Bitbox02: update to 6.2.0 (#8459)
* Plugins:
- new: swapserver plugin (#8489)
* Builds/binaries:
- update bundled zbar, for security fixes (#8805)
# Release 4.4.6 (August 18, 2023) (security update)
* Lightning:
- security fix: multiple lightning-related security issues have
been fixed. See disclosures:
- https://github.com/spesmilo/electrum/security/advisories/GHSA-9gpc-prj9-89x7
- https://github.com/spesmilo/electrum/security/advisories/GHSA-8r85-vp7r-hjxf
- fix: cannot sweep from channel after local-force-close, if using
imported channel backup (#8536). Fixing this required adding a
new field (local_payment_pubkey) to the channel backup
import/export format and bumping its version number
(v0->v1). Both v0 and v1 can be imported, and we only export v1
backups. When you force close a channel, the GUI will prompt you
to save a backup. In that case, you must export the backup using
the updated Electrum, and not rely on a backup made with an older
release of Electrum. Note that if you request a force close from
the remote node or co-op close, you do not need to save a channel
backup.
- fix: we would sometimes attempt sending MPP even if not supported
by the invoice (2cf6173c)
* QML GUI:
- fix lnurl-pay when config.BTC_AMOUNTS_ADD_THOUSANDS_SEP is True
(5b4df759)
* Hardware wallets:
- Trezor: support longer than 9 character PIN codes (#8526)
- Jade: support more custom-built DIY Jade devices (#8546)
* Builds/binaries:
- include AppStream metainfo.xml in tarballs (#8501)
* fix: exceptions in some callbacks got lost and not logged (3e6580b9)
# Release 4.4.5 (June 20, 2023)
* Hardware wallets:
- jade: fix regression in sign_transaction (#8463)
* Lightning:
- fix "rebalance_channels" function (#8468)
* enforce that we run with python asserts enabled,
regardless of platform (d1c88108)
# Release 4.4.4 (May 31, 2023)
* QML GUI:
- fix creating multisig wallets involving BIP39 seeds (#8432)
- fix "cannot scroll to open a lightning channel" (#8446)
- wizard: "confirm seed" screen to normalize whitespaces (#8442)
- fix assert on address details screen (#8420)
* Qt GUI:
- better handle some expected errors in SwapDialog (#8430)
* libsecp256k1: bump bundled version to 0.3.2 (10574bb1)
# Release 4.4.3 (May 11, 2023)
* Intentionally break multisig wallets that have heterogeneous master
keys. Versions 4.4.0 to 4.4.2 of Electrum for Android did not check
that master keys used the same script type. This may have resulted
in the creation of multisig wallets that cannot be spent from
with any existing version of Electrum. It is not sure whether any
users are affected by this; if there are any, we will publish
instructions on how to spend those coins (#8417, #8418).
* Qt GUI:
- handle expected errors in DSCancelDialog (#8390)
- persist addresses tab toolbar "show/hide" state (b40a608b)
* QML GUI:
- implement bip39 account detection (0e0c7980)
- add share toolbutton for outputs in TxDetails (#8410)
* Hardware wallets:
- Ledger:
- fix old bitcoin app support (<2.1): "no sig for ..." (#8365)
- bump req ledger-bitcoin (0.2.0+), adapt to API change (30204991)
* Lightning:
- limit max feature bit we accept to 10_000 (#8403)
- do not disconnect on "warning" messages (6fade55d)
* fix wallet.get_tx_parents for chain of unconf txs (#8391)
* locale: translate more strings when using "default" lang (a0c43573)
* wallet: persist frozen state of addresses to disk right away (#8389)
# Release 4.4.2 (May 4, 2023)
* Qt GUI:
- fix undefined var check in swap_dialog (#8341)
- really fix "recursion depth exceeded" for utxo privacy analysis (#8315)
* QML GUI:
- fix signing txs for 2fa wallets (#8368)
- fix for wallets with encrypted-keystore but unencrypted-storage (#8374)
- properly delete wizard components after use (#8357)
- avoid entering loadWallet if daemon is already busy loading (#8355)
- no auto capitalization on import and master key text fields (5600375d)
- remove Qt virtual keyboard and add Seedkeyboard for seed entry (#8371, #8352)
- add runtime toggling of android SECURE_FLAG, to allow screenshots (#8351)
- restrict cases where server is shown "lagging" (53d61c01)
* fix hardened char "h" vs "'" needed for some hw wallets (#8364, 499f5153)
* fix digitalbitbox(1) support (22b8c4e3)
* fix wrong type for "history_rates" config option (#8367)
* fix issues with wallet.get_tx_parents (a1bfea61, 56fa8325)
# Release 4.4.1 (April 27, 2023)
* Qt GUI:
- fix sweeping (#8340)
- fix send tab input_qr_from_camera (#8342)
- fix crash reporter showing if send fails on typical errors (#8312)
- bumpfee: disallow targeting an abs fee. only allow feerate (#8318)
* QML GUI:
- fix offline-signing or co-signing pre-segwit txs (#8319)
- add option to show onchain address in ReceiveDetailsDialog (#8331)
- fix strings unique to QML did not get localized/translated (#8323)
- allow paying bip21 uri onchain that has both onchain and bolt11
if we cannot pay on LN (#8334, 312e50e9)
- virtual keyboard: make buttons somewhat larger (75e65c5c)
- fix(?) Android crash with some OS-accessibility settings (#8344)
- fix channelopener.connectStr qr scan popping under (#8335)
- fix restoring from old mpk (watchonly for "old" seeds) (#8356)
* libsecp256k1: add runtime support for 0.3.x, bump bundled to 0.3.1
* forbid paying to "http:" lnurls (enforce https or .onion) (1b5c7d46)
* fix wallet.bump_fee "decrease payment" erroring on too high target
fee rate (#8316)
* fix performance regressions in tx logic (ee521545, 910832c1)
* fix "recursion depth exceeded" for utxo privacy analysis (#8315)
# Release 4.4.0 (April 18, 2023)
* New Android app, using QML instead of Kivy
- Using Qt 5.15.7, PyQt 5.15.9
- This release still on python3.8
- Feature parity with Kivy
- Android Back button used throughout, for cancel/close/back
- Note: two topbar menus; tap wallet name for wallet menu, tap
network orb for application menu
- Note: long-press Receive/Send for list of payment requests/invoices
* Qt GUI improvements
- New onchain transaction creation flow, with configurable preview
- Various options have been moved to toolbars, where their effect
can be more directly observed.
* Privacy features:
- lightning: support for option scid_alias.
- Qt GUI: UTXO privacy analysis: this dialog displays all the
wallet transactions that are either parent of a UTXO, or can be
related to it through address reuse (Note that in the case of
address reuse, it does not display children transactions.)
- Coins tab: New menu that lets users easily spend a selection
of UTXOs into a new channel, or into a submarine swap (Qt GUI).
* Internal:
- Lightning invoices are regenerated every time routing hints are
deprecated due to liquidity changes.
- Script descriptors are used internally to sign transactions.
# Release 4.3.4 - Copyright is Dubious (January 26, 2023)
* Lightning:
- make sending trampoline payments more reliable (5251e7f8)
- use different trampoline feature bits than eclair (#8141)
* invoice-handling: fix get_request_by_addr incorrectly mapping
addresses to request ids when an address was reused (#8113)
* fix a deadlock in wallet.py (52e2da3a)
* CLI: detect if daemon is already running (c7e2125f)
* add an AppStream metainfo.xml file for Linux packagers (#8149)
* payserver plugin:
-replaced vendored qrcode lib
-added tabs for on-chain and lightning invoices
-revamped html and javascript
# Release 4.3.3 - (January 3, 2023)
* Lightning:
- fix handling failed HTLCs in gossip-based routing (#7995)
- fix LN cooperative-chan-close to witness v1 addr (#8012)
* PSBTs:
- never put ypub/zpub in psbts, only plain xpubs (#8036)
- for witness v0 txins, put both UTXO and WIT_UTXO in psbt (#8039)
* Hardware wallets:
- Trezor: optimize signing speed by not serializing tx (#8058)
- Ledger:
- modify plugin to support new bitcoin app v2.1.0 (#8041),
- added a deprecation warning when using Ledger HW.1 devices.
Ledger itself stopped supporting HW.1 some years ago, and it is
becoming a maintenance burden for us to keep supporting it.
Please migrate away from these devices. Support will be removed
in a future release.
* Binaries:
- tighten build system to only use source pkgs in more places
(#7999, #8000)
- Windows:
- use debian makensis instead of upstream windows exe (#8057)
- stop using debian sid, build missing dep instead (98d29cba)
- AppImage: fix failing to run on certain systems (#8011)
* commands:
- getinfo() to show if running in testnet mode (#8044)
- add a "convert_currency" command (for fiat FX rate) (#8091)
* Qt wizard: fix QR code not shown during 2fa wallet creation (#8071)
* rework Tor-socks-proxy detection to reduce Tor-log-spam (#7317)
* Android: add setting to enable debug logs (#7409)
* fix payserver (merchant) js for electrum 4.3 invoice api (0fc90e07)
* bip21: more robust handling of URIs that include a "lightning" key
(ac1d53f0, 2fd762c3, #8047)
# Release 4.3.2 - (September 26, 2022)
* When creating new requests, reuse addresses of expired requests
(fixes #7927).
* Index requests by ID instead of receiving address. This affects the
following commands: get_request, get_invoice, list_requests,
list_invoices, delete_request, delete_invoice
* Trampoline routing: remember routes that have failed. Try other
routes instead of systematically raising tampoline fees.
* Fix sweep to_local output from channel backup (#7959)
* Harden build script for macOS binary: avoid using
precompiled wheels from PyPI for most packages (#7918)
* The Windows/AppImage/Android binaries are now built on debian using
the snapshot.debian.org archive instead of ubuntu. This should help
with historical reproducibility. (#7926)
# Release 4.3.1 - (August 17, 2022)
* build: we now also distribute a "source-only"
Linux-packager-friendly tarball (d0de44a7, #7594), in addition
to the current "normal" tarball. The "source-only" tarball excludes
compiled locale files, generated protobuf files, and does not
vendor our runtime python dependencies (the packages/ folder).
* fix os.chmod when running in tmpfs on Linux (#7681)
* (Qt GUI) some improvements for high-DPI monitors (38881129)
* bring kivy request dialog more in-line with Qt (#7929)
* rm support of "legacy" (without static_remotekey) LN channels.
Opening these channels were never supported in a release version,
only during development prior to the first lightning-capable
release. Wallets with such channels will have to close them.
(1f403d1c, 7b8e257e)
* Qt: fix duplication of some OS notifications on onchain txs (#7943)
* fix multiple recent regressions:
- handle NotEnoughFunds when trying to pay LN invoice (#7920)
- handle NotEnoughFunds when trying to open LN channel (#7921)
- labels of payment requests were not propagated to
history/addresses (#7919)
- better default labels of outgoing txs (#7942)
- kivy: dust-valued requests could not be created for LN (#7928)
- when closing LN channels, future (timelocked) txs were not
shown in history (#7930)
- kivy: fix deleting "local" tx from history (#7933)
- kivy: fix paying amountless LN invoice (#7935)
- Qt: better handle unparseable URIs (#7941)
# Release 4.3.0 - (August 5, 2022)
* This version introduces a set of UI modifications that simplify the
use of Lightning. The idea is to abstract payments from the payment
layer, and to suggest solutions when a lightning payment is hindered
by liquidity issues.
- Invoice unification: on-chain and lightning invoices have been
merged into a unique type of invoice, and the GUI has a single
'create request' button. Unified invoices contain both a
lightning invoice and an onchain fallback address.
- The receive tab of the GUI can display, for each payment
request, a lightning invoice, a BIP21 URI, or an onchain
address. If the request is paid off-chain, the associated
on-chain address will be recycled in subsequent requests.
- The receive tab displays whether a payment can be received using
Lightning, given the current channel liquidity. If a payment
cannot be received, but may be received after a channel
rebalance or a submarine swap, the GUI will propose such an
operation.
- Similarly, if channels do not have enough liquidity to pay a
lightning invoice, the GUI will suggest available alternatives:
rebalance existing channels, open a new channel, perform a
submarine swap, or pay to the provided onchain fallback address.
- A single balance is shown in the GUI. A pie chart reflects how
that balance is distributed (on-chain, lightning, unconfirmed,
frozen, etc).
- The semantics of the wallet balance has been modified: only
incoming transactions are considered in the 'unconfirmed' part
of the balance. Indeed, if an outgoing transaction does not get
mined, that is not going to decrease the wallet balance. Thus,
change outputs of outgoing transactions are not subtracted from
the confirmed balance. (Before this change, the arithmetic
values of both incoming and outgoing transactions were added to
the unconfirmed balance, and could potentially cancel
each other.)
* In addition, the following new features are worth noting:
- support for the Blockstream Jade hardware wallet (#7633)
- support for LNURL-pay (LUD-06) (#7839)
- updated trampoline feature bit in invoices (#7801)
- the claim transactions of reverse swaps are not broadcast until
the parent transaction is confirmed. This can be overridden by
manually broadcasting the local transaction.
- the fee of submarine swap transactions can be bumped (#7724)
- better error handling for trampoline payments, which should
improve payment success rate (#7844)
- channel backups are removed automatically when the corresponding
channel is redeemed (#7513)
# Release 4.2.2 - (May 27, 2022)
* Lightning:
- watching onchain outputs: significant perf. improvements (#7781)
- enforce relative order of some msgs during chan reestablishment,
lack of which can lead to unwanted force-closures (#7830)
- fix: in case of a force-close containing incoming HTLCs, we were
redeeming all HTLCs that we know the preimage for. This might
publish the preimage of an incomplete MPP. (1a5ef554, e74e9d8e)
* Hardware wallets:
- smarter pairing during sign_transaction (238619f1)
- keepkey: fix pairing with device using a workaround (#7779)
* fix AppImage failing to run on certain systems (#7784)
* fix "Automated BIP39 recovery" not scanning change paths (#7804)
* bypass network proxy for localhost electrum server (#3126)
* security fix: remove support of "file://" URIs from BIP70 payment
requests, which could be used to trigger "open()" on arbitrary files
(see https://github.com/spesmilo/electrum/security/advisories/GHSA-4fh4-hx35-r355)
# Release 4.2.1 - (March 26, 2022)
* Binaries:
- Windows: we are dropping support for Windows 7. (#7728)
Version 4.2.0 already unintentionally broke compatibility with
Win7 and there is no easy way to restore and maintain support.
Existing users can keep using version 4.1.5 for now, but should
consider upgrading or changing their OS.
Win8.1 still works but only Win10 is regularly tested.
- bump bundled Python version (win, mac, appimage) to 3.9.11,
(android) to 3.8.13 (1bb7ef92, #7721)
(note these include a fix to an openssl DOS-vector CVE-2022-0778)
- windows: bump pyinstaller to 4.10 and wine to 7.0 (#7721)
* Kivy GUI:
- fix "Child Pays For Parent" not working on Android (#7723)
- revert to defaulting the UI language to English (25fee6a6)
* Qt GUI:
- macOS: fix opening "Preferences" segfaulting for some (#7725)
- more resilient startup: better error-handling and fallback (#7447)
* Library:
- fix LN error/warning message-handling, and fix regression that
errors during channel-open were not properly shown in GUI (a92dede4)
- during LN chan open, do not backup wallet automatically (#7733)
- Imported wallets: fix delete_address rm-ing too many txs (#7587)
- fix potential deadlock in wallet.py (d3476b6b)
* Hardware wallets:
- ledger: add progress indicator to sign_transaction (#7516)
* fix the "--portable" flag for AppImage, and for pip installs (#7732)
# Release 4.2.0 - (March 16, 2022)
* The minimum python version was increased to 3.8 (#7661)
* Lightning:
- redesigned MPP splitting algorithm (#7202)
- trampoline: implement multi-trampoline MPP (#7623)
- implement option_shutdown_anysegwit, and allow dust limits
below 546 sat (#7542)
- implement option_channel_type (#7636)
- implement modern closing negotiation (#7586, #7680)
* improve support for "lightning:" URIs on all platforms (#7301)
* Qt GUI:
- add setting "show amounts with msat precision" (5891e039)
- add setting "add thousand separators to bitcoin amounts" (#7427)
* CLI/RPC:
- implement Unix sockets and make them the default (#7545, #7566)
- add "bumpfee" command (#7438)
* Kivy GUI:
- show network setup on first start before wallet creation (#7464)
- add "Child Pays For Parent" option (#7487)
- improved locale handling (22bb52d5, 7cb11ced, 4293d6ec)
* Hardware wallets:
- trezor: bump trezorlib to 0.13 (#7590)
- bitbox02: bump bitbox02 to 6.0, support send-to-taproot (#7693)
- ledger: support "Ledger Nano S Plus" (#7692)
* Library:
- added support for sighash types beside "ALL" (#7453)
- signmessage: also accept Trezor-type sigs for segwit addrs (#7668)
- network: make request timeout configurable (#7696)
- paytomany (onchain txout batching) now allows multiple max("!")
amounts with specified weights (#7492)
* Binary builds
- AppImage: changed base image from ubuntu 16.04 to 18.04 (5d0aa63a)
* migrated from Travis CI to Cirrus CI (#7431)
* Lots of other minor bugfixes and usability improvements.
# Release 4.1.5 - (July 19, 2021)
* Builds/binaries:
- macOS: the .dmg binary should now be reproducible
* Kivy/Android: fix paying bip70 invoices (regression) (90579ccf)
* fix: payment requests not saved if process is killed (6a049d99)
* Lightning: improve payment success when using trampoline (3a7f5373)
* add support for signet test network (#7282)
* Qt GUI:
- allow restoring from SLIP39 seeds (#6917)
- rework QR code scanning on Windows and macOS (#7365)
- support smaller window sizes, decrease minimums (#7385)
* GUIs: add "funded or unused" filter option to Addresses tab (#5823)
# Release 4.1.4 - (June 17, 2021)
* Kivy/Android: fix a regression where a non-LN wallet
could not open the settings (c49d6995)
* CLI/RPC: fix "close_wallet" command (#7348)
# Release 4.1.3 - (June 16, 2021)
* Builds/binaries:
- Android: the binaries (APKs) should now be reproducible (#7263)
- AppImage: fix some startup issues by including libxcb deps (#7198)
* Lightning:
- smarter LN pathfinding (if trampoline is disabled):
- estimate liquidity in channels using previous attempts (#7152)
- consider inflight HTLCs and try to route around them (#7292)
- bugfix: add more safety checks to avoid "batch RBF" feature
merging LN funding txs (#7298)
- remove HTLC value upper limit of ~42 mBTC (#7328)
- Kivy GUI: implement freezing LN channels (11bb39ee)
* imported wallets: when enabling the "Use change addresses" option,
change will now be sent to a random unused imported address. (#7330)
As before, by default, change is sent back to the "from address".
* seed generation: make sure newly created electrum seeds don't have
correct bip39 checksum by chance (#6001)
* other minor fixes
# Release 4.1.2 - (April 8, 2021)
* Qt GUI:
- fix some crashes when exiting (#6889)
- make sure pressing Ctrl-C always quits (c41cd4ae)
* Kivy GUI (Android):
- fix bug with scrollbar, again (#7155)
- 2fa wallets: fix making transactions (#7190)
- implement freezing addresses (#7178)
* Android: use more modern application launcher/icon (#7187)
# Release 4.1.1 - (April 2, 2021)
* fix Qt crash with the swap dialog
* fix Kivy bug with scrollbar (#7155)
* fix localization issues (#7158 #4621)
* fix python crash with swaps (#7160)
* other minor fixes
# Release 4.1.0 - Kangaroo (March 30, 2021)
This version is our second major release with support for the
Lightning Network. While our initial Lightning release was mostly
about implementing the protocol, this release brings features that are
specifically aimed at keeping Electrum lightweight and trustless,
while avoiding single points of failure. Most of the features listed
below are user-visible.
* The wallet creation wizard no longer asks for a seed type, and
creates segwit wallets with bech32 addresses. Older seed types can
still be created with the command line.
* Paid invoices (both incoming and outgoing) are automatically
removed from the send/receive lists of the GUI (one confirmation is
needed for onchain invoices). Once removed from the list, invoice
details can still be accessed from the transaction history. In Qt,
invoice lists have been renamed to 'Sending queue' and 'Receiving
queue'.
* Lightning:
- recoverable channels (see below)
- trampoline payments (see below)
- support multi-part-payment
- support upfront-shutdown-script
* Recoverable channels (option):
- Recovery data is added to the channel funding transaction using
an OP_RETURN. This makes it possible to recover a static backup
of the channel from the wallet seed. Please note that static
backups only allow users to request a force-close of the channel
with the remote node, so that funds not locked in HTLCs can be
recovered. This assumes that the remote node is still online, did
not lose its data, and accepts to force close the channel.
- This option is only available for standard wallets with an
Electrum seed. It is not available for hardware wallets, because
it requires a deterministic derivation of the nodeID. It is also
not available in watching-only wallets, for the same reason. If a
wallet can have recoverable channels but has an old nodeID, users
who want to use that feature need to close all their existing
channels, and to restore their wallet from seed.
- Channel recovery data uses 20 bytes (16 bytes of the remote
NodeID plus 4 magic bytes) and is encrypted so that only the
wallet that owns it can decrypt it. However, blockchain analysis
will be able to tell that the transaction was probably created by
Electrum.
- If the 'use recoverable channels' option is enabled, other nodes
cannot open a channel to Electrum.
- If a channel is force-closed, the information in the on-chain
backup is not sufficient to retrieve the funds in the to_local
output, in case the wallet is lost in a boating accident before
expiration of the CSV delay. For that reason, an additional
backup is presented to the user if they force-close a channel.
* Trampoline routing (option): Trampoline is a solution that allows
light clients to delegate path-finding on the Lightning Network, so
that they do not have to download the entire network
graph. Trampoline routing was originally proposed by Bastien
Teinturier and is used in the Phoenix wallet. Here is how
Trampoline works in Electrum:
- Trampoline is enabled by default, in order to prevent unwanted