1# Release 4.1.5 - (July 19, 2021)
2 * Builds/binaries:
3   - macOS: the .dmg binary should now be reproducible
4 * Kivy/Android: fix paying bip70 invoices (regression) (90579ccf)
5 * fix: payment requests not saved if process is killed (6a049d99)
6 * Lightning: improve payment success when using trampoline (3a7f5373)
7 * add support for signet test network (#7282)
8 * Qt GUI:
9   - allow restoring from SLIP39 seeds (#6917)
10   - rework QR code scanning on Windows and macOS (#7365)
11   - support smaller window sizes, decrease minimums (#7385)
12 * GUIs: add "funded or unused" filter option to Addresses tab (#5823)
13
14
15# Release 4.1.4 - (June 17, 2021)
16 * Kivy/Android: fix a regression where a non-LN wallet
17   could not open the settings (c49d6995)
18 * CLI/RPC: fix "close_wallet" command (#7348)
19
20
21# Release 4.1.3 - (June 16, 2021)
22 * Builds/binaries:
23   - Android: the binaries (APKs) should now be reproducible (#7263)
24   - AppImage: fix some startup issues by including libxcb deps (#7198)
25 * Lightning:
26   - smarter LN pathfinding (if trampoline is disabled):
27     - estimate liquidity in channels using previous attempts (#7152)
28     - consider inflight HTLCs and try to route around them (#7292)
29   - bugfix: add more safety checks to avoid "batch RBF" feature
30     merging LN funding txs (#7298)
31   - remove HTLC value upper limit of ~42 mBTC (#7328)
32   - Kivy GUI: implement freezing LN channels (11bb39ee)
33 * imported wallets: when enabling the "Use change addresses" option,
34   change will now be sent to a random unused imported address. (#7330)
35   As before, by default, change is sent back to the "from address".
36 * seed generation: make sure newly created electrum seeds don't have
37   correct bip39 checksum by chance (#6001)
38 * other minor fixes
39
40
41# Release 4.1.2 - (April 8, 2021)
42 * Qt GUI:
43    - fix some crashes when exiting (#6889)
44    - make sure pressing Ctrl-C always quits (c41cd4ae)
45 * Kivy GUI (Android):
46    - fix bug with scrollbar, again (#7155)
47    - 2fa wallets: fix making transactions (#7190)
48    - implement freezing addresses (#7178)
49 * Android: use more modern application launcher/icon (#7187)
50
51
52# Release 4.1.1 - (April 2, 2021)
53 * fix Qt crash with the swap dialog
54 * fix Kivy bug with scrollbar (#7155)
55 * fix localization issues (#7158 #4621)
56 * fix python crash with swaps (#7160)
57 * other minor fixes
58
59
60# Release 4.1.0 - Kangaroo (March 30, 2021)
61
62This version is our second major release with support for the
63Lightning Network. While our initial Lightning release was mostly
64about implementing the protocol, this release brings features that are
65specifically aimed at keeping Electrum lightweight and trustless,
66while avoiding single points of failure. Most of the features listed
67below are user-visible.
68 * The wallet creation wizard no longer asks for a seed type, and
69   creates segwit wallets with bech32 addresses. Older seed types can
70   still be created with the command line.
71 * Paid invoices (both incoming and outgoing) are automatically
72   removed from the send/receive lists of the GUI (one confirmation is
73   needed for onchain invoices). Once removed from the list, invoice
74   details can still be accessed from the transaction history. In Qt,
75   invoice lists have been renamed to 'Sending queue' and 'Receiving
76   queue'.
77 * Lightning:
78    - recoverable channels (see below)
79    - trampoline payments (see below)
80    - support multi-part-payment
81    - support upfront-shutdown-script
82 * Recoverable channels (option):
83   - Recovery data is added to the channel funding transaction using
84     an OP_RETURN. This makes it possible to recover a static backup
85     of the channel from the wallet seed. Please note that static
86     backups only allow users to request a force-close of the channel
87     with the remote node, so that funds not locked in HTLCs can be
88     recovered. This assumes that the remote node is still online, did
89     not lose its data, and accepts to force close the channel.
90   - This option is only available for standard wallets with an
91     Electrum seed. It is not available for hardware wallets, because
92     it requires a deterministic derivation of the nodeID. It is also
93     not available in watching-only wallets, for the same reason. If a
94     wallet can have recoverable channels but has an old nodeID, users
95     who want to use that feature need to close all their existing
96     channels, and to restore their wallet from seed.
97   - Channel recovery data uses 20 bytes (16 bytes of the remote
98     NodeID plus 4 magic bytes) and is encrypted so that only the
99     wallet that owns it can decrypt it. However, blockchain analysis
100     will be able to tell that the transaction was probably created by
101     Electrum.
102   - If the 'use recoverable channels' option is enabled, other nodes
103     cannot open a channel to Electrum.
104   - If a channel is force-closed, the information in the on-chain
105     backup is not sufficient to retrieve the funds in the to_local
106     output, in case the wallet is lost in a boating accident before
107     expiration of the CSV delay. For that reason, an additional
108     backup is presented to the user if they force-close a channel.
109 * Trampoline routing (option): Trampoline is a solution that allows
110   light clients to delegate path-finding on the Lightning Network, so
111   that they do not have to download the entire network
112   graph. Trampoline routing was originally proposed by Bastien
113   Teinturier and is used in the Phoenix wallet. Here is how
114   Trampoline works in Electrum:
115   - Trampoline is enabled by default, in order to prevent unwanted
116     download of the network gossip. If trampoline is disabled, the
117     gossip will be downloaded, regardless of the existence of
118     channels.
119   - Because there is no discovery mechanism for trampoline nodes, the
120     list of available trampolines is hardcoded in the client (it will
121     remain so until support for trampoline routing is announced in
122     gossip). 3 trampoline nodes are currently available on mainnet:
123     ACINQ, Electrum and Hodlister.
124   - If Trampoline is enabled:
125      - payments use trampoline routing.
126      - gossip is disabled.
127      - the wallet can only open channels with trampoline nodes.
128      - pre-existing channels with non-trampoline nodes are frozen for
129        sending.
130   - There are two types of trampoline payments: legacy and trampoline
131     end-to-end. Legacy payments are possible with any receiver, but
132     they offer less privacy than end-to-end trampoline
133     payments. Electrum decides whether to perform legacy or
134     end-to-end based on the features in the invoice:
135       - OPTION_TRAMPOLINE_ROUTING_OPT (bit 25) for Electrum
136       - OPTION_TRAMPOLINE_ROUTING_OPT_ECLAIR (bit 51) for Eclair/Phoenix
137   - When performing a legacy payment, Electrum will add a second
138     trampoline node to the route in order to protect the privacy of
139     the payer and payee. It will fall back to a single trampoline if
140     the two-trampoline strategy has failed for all trampolines.
141     (Note: two-trampoline payments are currently not possible if the
142     first trampoline is the ACINQ node, and is disabled for that
143     node.)
144   - Similar to Phoenix, the fee and CLTV delay are found by
145     trial-and-error. If there is a second trampoline in the route, we
146     use the same fee/CLTV for both. This trial-and-error is
147     temporary; the final specification should add fee information in
148     the failure messages, so that we will be able to better fine-tune
149     trampoline fees.
150 * Qt: The increase fee dialog now has advanced options, and offers
151   the choice between different RBF strategies.
152 * Watchtowers: The 'use_local_watchtower' feature is deprecated, and
153   it has been removed from the Qt GUI. The 'use_remote_watchtower'
154   setting has been renamed to 'use_watchtower'.
155 * Password unification (Android only): When the Android app is
156   started, the entered password is checked against all wallets in
157   the directory. If the test passes:
158    - all wallets are encrypted
159    - new wallets will use the unified password
160    - password updates are performed on all wallets
161   Whether the password is unified can be seen in the GUI: In the
162   'Settings' dialog, the description for the password setting is
163   'Change password for this wallet' if the password is not unified,
164   and becomes 'Change password' if password is unified.
165 * Submarine swaps are now available on kivy/android.
166 * Android PIN reset: If the password is unified, the PIN can be reset
167   by providing the password.
168 * Android: on-chain fees have been removed from the settings
169   dialog. Instead, the fee slider is shown to the user everytime an
170   on-chain transaction will be performed (sending a payment, opening
171   a channel, initiating a submarine swap)
172 * BIP-0350: use bech32m for witness version 1+ addresses (4315fa43).
173   We have supported sending to any witness version since Electrum
174   3.0, using BIP-0173 (bech32) addresses. BIP-0350 makes a breaking
175   change in address encoding, and recommends using a new encoding
176   (bech32m) for sending to witness version 1 and later.
177 * Block explorer: allow setting a custom URL in Qt GUI (#6965)
178
179
180# Release 4.0.9 - (Dec 18, 2020)
181 * fixes a regression introduced in 4.0.8, that prevents from
182   paying BIP70 invoices (#6859)
183 * reflect frozen channels and disconnected peers in the displayed
184   'can send/can receive' amounts.
185
186# Release 4.0.8 - (Dec 17, 2020)
187 * fix decoding BIP21 URIs with uppercase schema (d40bedb2)
188 * psbt: put full derivation paths into PSBT by default (c8155129)
189 * invoices: allow address-reuse (#6609, #6852)
190 * A few other minor bugfixes.
191
192# Release 4.0.7 - (Dec 9, 2020)
193 * kivy: fix open channel with 'max' amount
194 * kivy: fix regression introduced in last release (a9fc440)
195 * other minor GUI fixes
196 * Dependencies: as part of adapting to new dnspython (#6828),
197   - python-ecdsa is no longer needed at all,
198   - cryptography is now required (min 2.6), the user can no
199     longer choose between cryptography and pycryptodomex
200
201# Release 4.0.6 - (Dec 4, 2020)
202 * Fix 'Max' button issue for submarine swaps button (#6770)
203 * Fix 'Max' button in kivy (#6169)
204 * Various fixes for Kivy/Android install wizard
205 * More robust account keypath for BitBox02 (#6766)
206
207# Release 4.0.5 - (Nov 18, 2020)
208 * Fix .dmg binary hanging on recently released macOS 11 Big Sur (#6461)
209 * Lightning:
210   - bugfix: during LN channel opening, if the client crashed at the
211     wrong moment, the channel might not get fully persisted to disk,
212     and would need manual console-tinkering to recover (#6656)
213   - Lightning is enabled by default. Electrum will not connect to
214     the Lightning Network until the user opens a channel. (#6639)
215   - smarter node recommendation (to open channels with) (#6705)
216 * user interface: some minor changes that aim to improve usability
217 * Ledger:
218   - fix enumerating devices with new bitcoin app (1.5.1) (b78cbcff)
219   - fix compat with HW.1 (200f547a)
220 * A few other minor bugfixes.
221
222# Release 4.0.4 - (Oct 15, 2020)
223 * PSBT: fix regression in 4.0.3 where UTXO data was not included in
224   QR codes (#6600)
225 * new feature: "Cancel tx" (#6641). The Qt/kivy GUI allows cancelling
226   an unconfirmed RBF tx by double-spending its inputs to self.
227 * Windows binary:
228   - fix some issues with QR scanning by building zbar ourselves (#6593)
229   - when using setup exe, also install a debug binary (#6603)
230 * Ledger: fix "The derivation path is unusual" warnings (#6512)
231   (needs Bitcoin app 1.4.8+ installed on device)
232 * A few other minor bugfixes and usability improvements.
233
234# Release 4.0.3 - (Sep 11, 2020)
235 * PSBT: restore compatibility with Bitcoin Core following CVE-2020-14199:
236   we now allow a PSBT input to have both UTXO and WITNESS_UTXO (#6429).
237   (PSBTs created since 4.0.1 already contained UTXO for segwit inputs)
238 * Hardware wallets:
239   - bitbox02: better multisig UX: implement get_soft_device_id (#6386)
240   - coldcard: fix "show address" for multisig (#6517)
241   - all: run all device communication on a dedicated thread (#6561).
242     This should resolve some threading issues.
243 * new feature: "Automated BIP39 recovery" (#6219, #6155)
244   When restoring from a BIP39 seed, add option to scan many known
245   derivation paths for history, and show them to user to choose from.
246 * show derivation path of keystores in Qt GUI Wallet>Information (#4700)
247 * fix "signtransaction" RPC command (#6502)
248 * Dependencies: pyaes is no longer needed (#6563)
249 * The tar.gz source dist now bundles make_libsecp256k1.sh, to help
250   users getting libsecp256k1 (#6323).
251 * A few other minor bugfixes and usability improvements.
252
253# Release 4.0.2 - (July 8, 2020)
254 - rm old corrupted non-bip70 invoices (#6345)
255 - other minor fixes
256
257# Release 4.0.1 - (July 3, 2020)
258 * Lightning Network support (experimental)
259   - Our implementation of Lightning relies on Electrum servers to
260     query channel states. Since servers can lie about the state of a
261     channel, users should either use a server that they trust, or
262     setup a private watchtower (see below). A watchtower is also
263     recommended for lightning wallets that remain offline for
264     extended periods of time (the default CSV 'to_self_delay' is 1
265     week). Please note that Electrum Personal Server (EPS) cannot be
266     used with lightning wallets, because channels funding addresses
267     are arbitrary.
268   - Lightning funds cannot be restored from seed. Instead, users need
269     to create static backups of their channels. Static backups cannot
270     be used to perform lightning transactions, they can only be used
271     to trigger a remote-force-close of a channel.
272   - Lightning-enabled wallet files must not be copied. Instead, a
273     backup of the wallet can be created from the Qt menu, and it will
274     contain static backups of all its channels. Backups can also be
275     exported for each channel (e.g. via QR code), and imported in
276     another wallet. Since backups are encrypted with a key derived
277     from the wallet's xpub, they can only be imported into another
278     instance of the same wallet, or a watch-only version of it. The
279     force-close is not triggered automatically when the backup is
280     imported; imported backups can live inside a wallet file.
281   - Lightning can be enabled in the GUI (Wallet>Information) or from
282     the CLI (init_lightning). Lightning is currently restricted to HD
283     p2wpkh wallets (including watch-only and hardware wallets). The
284     Qt GUI, CLI/RPC, and the kivy GUI (Android) all have LN support,
285     with feature-richness in that order.
286   - LN protocol details: dataloss_protect and static_remotekey are
287     required; varonion and payment_secret are implemented, MPP not yet.
288     Channels are not announced ('private'), forwarding is disabled.
289     We do not serve gossip queries, only consume them.
290   - Submarine swaps: the GUI integrates a service that offers
291     atomically exchanging on-chain and lightning bitcoins for a fee.
292     Electrum Technologies runs a central server for this, powered by
293     the Boltz backend.
294   - Watchtowers: Electrum can run a local watchtower (GUI setting),
295     or it can connect to a remote watchtower. A watchtower contains
296     pre-signed transactions and does not need your private keys. A
297     local watchtower will watch your channels whenever an Electrum
298     instance is running, without needing access to your wallet file.
299     An Electrum daemon can be configured to be used as a remote
300     watchtower by setting 'watchtower_address', 'watchtower_user' and
301     'watchtower_password'.
302 * Partially Signed Bitcoin Transactions (PSBT, BIP-174) are supported
303   (#5721). The previous Electrum partial transaction format is no
304   longer supported, i.e. this is an incompatible change. Users should
305   make sure that all instances of Electrum they use to co-sign or
306   offline sign, are updated together.
307 * Hardware wallets: several fixes in general; notable changes:
308   - The BitBox02 is now supported (#5993)
309   - Multisig support for Coldcard (#5440)
310   - Compatibility with latest Trezor fw (#6064, #6198, #5692)
311 * Dependencies (see README for install instructions):
312   - libsecp256k1 is now required (previously optional). python-ecdsa
313     remains a dependency but it is now only used for DNSSEC.
314   - Added: either one of pycryptodomex or cryptography is now required,
315     mainly due to LN (previously pycryptodomex was optional, for fast AES)
316   - Removed: jsonrpclib-pelix, the JSON-RPC library used for CLI/daemon
317 * Qt GUI: several changes, notably:
318   - Separation between output selection and transaction finalization.
319   - Coin selection moved to the Coins tab, and it affects all txns,
320     e.g. RBF fee-bumping, LN channel opens, submarine swaps.
321   - Editable tx preview dialog that allows e.g. changing the locktime,
322     toggling RBF, and manual coinjoins.
323 * HTTP PayServer: The configuration of a bitcoin-accepting website
324   using Electrum has been simplified and requires fewer steps (see
325   documentation). The Payserver supports BIP70 and Lightning payments.
326 * Android:
327   - We now build two APKs, one for ARMv7 and one for ARMv8
328   - The kivy GUI now supports importing BIP39 seeds
329   - Each wallet on kivy now can have a separate generic password,
330     using which the wallet files are encrypted. An optional PIN,
331     shared among all wallets, can be added to get prompted for spends.
332 * The API of several CLI/RPC commands have changed, and several new
333   commands have been introduced (mainly for LN).
334 * Distributables:
335   - The .tar.gz source dist is now built reproducibly.
336     Relatedly, we no longer distribute a .zip sdist.
337   - The MacOS binary now conforms to macOS 10.15; it is notarized
338     by Apple. This required bumping the min macOS version to 10.13.
339     Startup times should now be faster on 10.15. (#6128, #6225)
340 * Transactions:
341   - we now grind low R for ECDSA signatures to match bitcoind (#5820)
342 * Lots and lots of other minor bugfixes and improvements.
343
344
345# Release 3.3.8 - (July 11, 2019)
346
347 * fix some bugs with recent bump fee (RBF) improvements (#5483, #5502)
348 * fix #5491: watch-only wallets could not bump fee in some cases
349 * appimage: URLs could not be opened on some desktop environments (#5425)
350 * faster tx signing for segwit inputs for really large txns (#5494)
351 * A few other minor bugfixes and usability improvements.
352
353
354# Release 3.3.7 - (July 3, 2019)
355
356 * The AppImage Linux x86_64 binary and the Windows setup.exe
357   (so now all Windows binaries) are now built reproducibly.
358 * Bump fee (RBF) improvements:
359   Implemented a new fee-bump strategy that can add new inputs,
360   so now any tx can be fee-bumped (d0a4366). The old strategy
361   was to decrease the value of outputs (starting with change).
362   We will now try the new strategy first, and only use the old
363   as a fallback (needed e.g. when spending "Max").
364 * CoinChooser improvements:
365   - more likely to construct txs without change (when possible)
366   - less likely to construct txs with really small change (e864fa5)
367   - will now only spend negative effective value coins when
368     beneficial for privacy (cb69aa8)
369 * fix long-standing bug that broke wallets with >65k addresses (#5366)
370 * Windows binaries: we now build the PyInstaller boot loader ourselves,
371   as this seems to reduce anti-virus false positives (1d0f679)
372 * Android: (fix) BIP70 payment requests could not be paid (#5376)
373 * Android: allow copy-pasting partial transactions from/to clipboard
374 * Fix a performance regression for large wallets (c6a54f0)
375 * Qt: fix some high DPI issues related to text fields (37809be)
376 * Trezor:
377   - allow bypassing "too old firmware" error (#5391)
378   - use only the Bridge to scan devices if it is available (#5420)
379 * hw wallets: (known issue) on Win10-1903, some hw devices
380   (that also have U2F functionality) can only be detected with
381   Administrator privileges. (see #5420 and #5437)
382   A workaround is to run as Admin, or for Trezor to install the Bridge.
383 * Several other minor bugfixes and usability improvements.
384
385
386# Release 3.3.6 - (May 16, 2019)
387
388 * qt: fix crash during 2FA wallet creation (#5334)
389 * fix synchronizer not to keep resubscribing to addresses of
390   already closed wallets (e415c0d9)
391 * fix removing addresses/keys from imported wallets (#4481)
392 * kivy: fix crash when aborting 2FA wallet creation (#5333)
393 * kivy: fix rare crash when changing exchange rate settings (#5329)
394 * A few other minor bugfixes and usability improvements.
395
396
397# Release 3.3.5 - (May 9, 2019)
398
399 * The logging system has been overhauled (#5296).
400   Logs can now also optionally be written to disk, disabled by default.
401 * Fix a bug in synchronizer (#5122) where client could get stuck.
402   Also, show the progress of history sync in the GUI. (#5319)
403 * fix Revealer in Windows and MacOS binaries (#5027)
404 * fiat rate providers:
405   - added CoinGecko.com and CoinCap.io
406   - BitcoinAverage now only provides historical exchange rates for
407     paying customers. Changed default provider to CoinGecko.com (#5188)
408 * hardware wallets:
409   - Ledger: Nano X is now recognized (#5140)
410   - KeepKey:
411     - device was not getting detected using Windows binary (#5165)
412     - support firmware 6.0.0+ (#5205)
413   - Trezor: implemented "seedless" mode (#5118)
414 * Coin Control in Qt: implemented freezing individual UTXOs
415   in addition to freezing addresses (#5152)
416 * TrustedCoin (2FA wallets):
417   - better error messages (#5184)
418   - longer signing timeout (#5221)
419 * Kivy:
420   - fix bug with local transactions (#5156)
421   - allow selecting fiat rate providers without historical data (#5162)
422 * fix CPFP: the fees already paid by the parent were not included in
423   the calculation, so it always overestimated (#5244)
424 * Testnet: there is now a warning when the client is started in
425   testnet mode as there were a number of reports of users getting
426   scammed through social engineering (#5295)
427 * CoinChooser: performance of creating transactions has been improved
428   significantly for large wallets. (d56917f4)
429 * Importing/sweeping WIF keys: stricter checks (#4638, #5290)
430 * Electrum protocol: the client's "user agent" has been changed from
431   "3.3.5" to "electrum/3.3.5". Other libraries connecting to servers
432   can consider not "spoofing" to be Electrum. (#5246)
433 * Several other minor bugfixes and usability improvements.
434
435
436# Release 3.3.4 - (February 13, 2019)
437
438 * AppImage: we now also distribute self-contained binaries for x86_64
439   Linux in the form of an AppImage (#5042). The Python interpreter,
440   PyQt5, libsecp256k1, PyCryptodomex, zbar, hidapi/libusb (including
441   hardware wallet libraries) are all bundled. Note that users of
442   hw wallets still need to set udev rules themselves.
443 * hw wallets: fix a regression during transaction signing that prompts
444   the user too many times for confirmations (commit 2729909)
445 * transactions now set nVersion to 2, to mimic Bitcoin Core
446 * fix Qt bug that made all hw wallets unusable on Windows 8.1 (#4960)
447 * fix bugs in wallet creation wizard that resulted in corrupted
448   wallets being created in rare cases (#5082, #5057)
449 * fix compatibility with Qt 5.12 (#5109)
450
451
452# Release 3.3.3 - (January 25, 2019)
453
454 * Do not expose users to server error messages (#4968)
455 * Notify users of new releases. Release announcements must be signed,
456   and they are verified byElectrum using a hardcoded Bitcoin address.
457 * Hardware wallet fixes (#4991, #4993, #5006)
458 * Display only QR code in QRcode Window
459 * Fixed code signing on MacOS
460 * Randomise locktime of transactions
461
462
463# Release 3.3.2 - (December 21, 2018)
464
465 * Fix Qt history export bug
466 * Improve network timeouts
467 * Prepend server transaction_broadcast error messages with
468   explanatory message. Render error messages as plain text.
469
470
471# Release 3.3.1 - (December 20, 2018)
472
473 * Qt: Fix invoices tab crash (#4941)
474 * Android: Minor GUI improvements
475
476
477# Release 3.3.0 - Hodler's Edition (December 19, 2018)
478
479 * The network layer has been rewritten using asyncio and aiorpcx.
480   In addition to easier maintenance, this makes the client
481   more robust against misbehaving servers.
482 * The minimum python version was increased to 3.6
483 * The blockchain headers and fork handling logic has been generalized.
484   Clients by default now follow chain based on most work, not length.
485 * New wallet creation defaults to native segwit (bech32).
486 * Segwit 2FA: TrustedCoin now supports native segwit p2wsh
487   two-factor wallets.
488 * RBF batching (opt-in): If the wallet has an unconfirmed RBF
489   transaction, new payments will be added to that transaction,
490   instead of creating new transactions.
491 * MacOS: support QR code scanner in binaries.
492 * Android APK:
493   - build using Google NDK instead of Crystax NDK
494   - target API 28
495   - do not use external storage (previously for block headers)
496 * hardware wallets:
497   - Coldcard now supports spending from p2wpkh-p2sh,
498     fixed p2pkh signing for fw 1.1.0
499   - Archos Safe-T mini: fix #4726 signing issue
500   - KeepKey: full segwit support
501   - Trezor: refactoring and compat with python-trezor 0.11
502   - Digital BitBox: support firmware v5.0.0
503 * fix bitcoin URI handling when app already running (#4796)
504 * Qt listings rewritten:
505   the History tab now uses QAbstractItemModel, the other tabs use
506   QStandardItemModel. Performance should be better for large wallets.
507 * Several other minor bugfixes and usability improvements.
508
509
510# Release 3.2.4 - (December 30, 2018)
511
512 * backport anti-phishing measures from master
513
514
515# Release 3.2.3 - (September 3, 2018)
516
517 * hardware wallet: the Safe-T mini from Archos is now supported.
518 * hardware wallet: the Coldcard from Coinkite is now supported.
519 * BIP39 seeds: if a seed extension (aka passphrase) contained
520   multiple consecutive whitespaces or leading/trailing whitespaces
521   then the derived addresses were not following spec. This has been
522   fixed, and affected should move their coins. The wizard will show a
523   warning in this case. (#4566)
524 * Revealer: the PRNG used has been changed (#4649)
525 * fix Linux distributables: 'typing' was not bundled, needed for python 3.4
526 * fix #4626: fix spending from segwit multisig wallets involving a Trezor
527   cosigner when using a custom derivation path
528 * fix #4491: on Android, if user had set "uBTC" as base unit, app crashed
529 * fix #4497: on Android, paying bip70 invoices from cold start did not work
530 * Several other minor bugfixes and usability improvements.
531
532
533# Release 3.2.2 - (July 2nd, 2018)
534
535 * Fix DNS resolution on Windows
536 * Fix websocket bug in daemon
537
538
539# Release 3.2.1 - (July 1st, 2018)
540
541 * fix Windows binaries: due to build process changes, the locale files
542   were not included; the language could not be changed from English
543 * fix Linux distributables: wordlists were not included (#4475)
544
545
546# Release 3.2.0 - Satoshi's Vision (June 30, 2018)
547
548 * If present, libsecp256k1 is used to speed up elliptic curve
549   operations. The library is bundled in the Windows, MacOS, and
550   Android binaries. On Linux, it needs to be installed separately.
551 * Two-factor authentication is available on Android. Note that this
552   will only provide additional security if one time passwords are
553   generated on a separate device.
554 * Semi-automated crash reporting is implemented for Android.
555 * Transactions that are dropped from the mempool are kept in the
556   wallet as 'local', and can be rebroadcast. Previously these
557   transactions were deleted from the wallet.
558 * The scriptSig and witness part of transaction inputs are no longer
559   parsed, unless actually needed. The wallet will no longer display
560   'from' addresses corresponding to transaction inputs, except for
561   its own inputs.
562 * The partial transaction format has been incompatibly changed. This
563   was needed as for partial transactions the scriptSig/witness has to
564   be parsed, but for signed transactions we did not want to do the
565   parsing.  Users should make sure that all instances of Electrum
566   they use to co-sign or offline sign, are updated together.
567 * Signing of partial transactions created with online imported
568   addresses wallets now supports significantly more
569   setups. Previously only online p2pkh address + offline WIF was
570   supported.  Now the following setups are all supported:
571   - online {p2pkh, p2wpkh-p2sh, p2wpkh} address + offline WIF,
572   - online {p2pkh, p2wpkh-p2sh, p2wpkh} address + offline seed/xprv,
573   - online {p2sh, p2wsh-p2sh, p2wsh}-multisig address + offline seeds/xprvs
574     (potentially distributed among several different machines)
575   Note that for the online address + offline HD secret case, you need
576   the offline wallet to recognize the address (i.e. within gap
577   limit).  Having an xpub on the online machine is still the
578   recommended setup, as this allows the online machine to generate
579   new addresses on demand.
580 * Segwit multisig for bip39 and hardware wallets is now enabled.
581   (both p2wsh-p2sh and native p2wsh)
582 * Ledger: offline signing for segwit inputs (#3302) This has already
583   worked for Trezor and Digital Bitbox. Offline segwit signing can be
584   combined with online imported addresses wallets.
585 * Added Revealer plugin. ( https://revealer.cc ) Revealer is a seed
586   phrase back-up solution. It allows you to create a cold, analog,
587   multi-factor backup of your wallet seeds, or of any arbitrary
588   secret. The Revealer utilizes a transparent plastic visual one time
589   pad.
590 * Fractional fee rates: the Qt GUI now displays fee rates with 0.1
591   sat/byte precision, and also allows this same resolution in the
592   Send tab.
593 * Hardware wallets: a "show address" button is now displayed in the
594   Receive tab of the Qt GUI. (#4316)
595 * Trezor One: implemented advanced/matrix recovery (#4329)
596 * Qt/Kivy: added "sat" as optional base unit.
597 * Kivy GUI: significant performance improvements when displaying
598   history and address list of large wallets; and transaction dialog
599   of large transactions.
600 * Windows: use dnspython to resolve dns instead of socket.getaddrinfo
601   (#4422)
602 * Importing minikeys: use uncompressed pubkey instead of compressed
603   (#4384)
604 * SPV proofs: check inner nodes not to be valid transactions (#4436)
605 * Qt GUI: there is now an optional "dark" theme (#4461)
606 * Several other minor bugfixes and usability improvements.
607
608
609# Release 3.1.3 - (April 16, 2018)
610
611 * Qt GUI: seed word auto-complete during restore
612 * Android: fix some crashes
613 * performance improvements (wallet, and Qt GUI)
614 * hardware wallets: show debug message during device scan
615 * Digital Bitbox: enabled BIP84 (p2wpkh) wallet creation
616 * add regtest support (via --regtest flag)
617 * other minor bugfixes and usability improvements
618
619# Release 3.1.2 - (March 28, 2018)
620
621 * Kivy/android: request PIN on startup
622 * Improve OSX build process
623 * Fix various bugs with hardware wallets
624 * Other minor bugfixes
625
626# Release 3.1.1 - (March 12, 2018)
627
628 * fix #4031: Trezor T support
629 * partial fix #4060: proxy and hardware wallet can't be used together
630 * fix #4039: can't set address labels
631 * fix crash related to coinbase transactions
632 * MacOS: use internal graphics card
633 * fix openalias related crashes
634 * speed-up capital gains calculations
635 * hw wallet encryption: re-prompt for passphrase if incorrect
636 * other minor fixes.
637
638
639
640# Release 3.1.0 - (March 5, 2018)
641
642 * Memory-pool based fee estimation. Dynamic fees can target a desired
643   depth in the memory pool. This feature is optional, and ETA-based
644   estimates from Bitcoin Core are still available. Note that miners
645   could exploit this feature, if they conspired and filled the memory
646   pool with expensive transactions that never get mined. However,
647   since the Electrum client already trusts an Electrum server with
648   fee estimates, activating this feature does not introduce any new
649   vulnerability. In addition, the client uses a hard threshold to
650   protect itself from servers sending excessive fee estimates. In
651   practice, ETA-based estimates have resulted in sticky fees, and
652   caused many users to overpay for transactions. Advanced users tend
653   to visit (and trust) websites that display memory-pool data in
654   order to set their fees.
655 * Capital gains: For each outgoing transaction, the difference
656   between the acquisition and liquidation prices of outgoing coins is
657   displayed in the wallet history. By default, historical exchange
658   rates are used to compute acquisition and liquidation prices. These
659   values can also be entered manually, in order to match the actual
660   price realized by the user. The order of liquidation of coins is
661   the natural order defined by the blockchain; this results in
662   capital gain values that are invariant to changes in the set of
663   addresses that are in the wallet. Any other ordering strategy (such
664   as FIFO, LIFO) would result in capital gain values that depend on
665   the presence of other addresses in the wallet.
666 * Local transactions: Transactions can be saved in the wallet without
667   being broadcast. The inputs of local transactions are considered as
668   spent, and their change outputs can be re-used in subsequent
669   transactions. This can be combined with cold storage, in order to
670   create several transactions before broadcasting them. Outgoing
671   transactions that have been removed from the memory pool are also
672   saved in the wallet, and can be broadcast again.
673 * Checkpoints: The initial download of a headers file was replaced
674   with hardcoded checkpoints. The wallet uses one checkpoint per
675   retargeting period. The headers for a retargeting period are
676   downloaded only if transactions need to be verified in this period.
677 * The 'privacy' and 'priority' coin selection policies have been
678   merged into one. Previously, the 'privacy' policy has been unusable
679   because it was was not prioritizing confirmed coins. The new policy
680   is similar to 'privacy', except that it de-prioritizes addresses
681   that have unconfirmed coins.
682 * The 'Send' tab of the Qt GUI displays how transaction fees are
683   computed from transaction size.
684 * The wallet history can be filtered by time interval.
685 * Replace-by-fee is enabled by default. Note that this might cause
686   some issues with wallets that do not display RBF transactions until
687   they are confirmed.
688 * Watching-only wallets and hardware wallets can be encrypted.
689 * Semi-automated crash reporting
690 * The SSL checkbox option was removed from the GUI.
691 * The Trezor T hardware wallet is now supported.
692 * BIP84: native segwit p2wpkh scripts for bip39 seeds and hardware
693   wallets can now be created when specifying a BIP84 derivation
694   path. This is usable with Trezor and Ledger.
695 * Windows: the binaries now include ZBar, and QR code scanning should work.
696 * The Wallet Import Format (WIF) for private keys that was extended in 3.0
697   is changed. Keys in the previous format can be imported, compatibility
698   is maintained. Newly exported keys will be serialized as
699   "script_type:original_wif_format_key".
700 * BIP32 master keys for testnet once again have different version bytes than
701   on mainnet. For the mainnet prefixes {x,y,Y,z,Z}|{pub,prv}, the
702   corresponding testnet prefixes are   {t,u,U,v,V}|{pub,prv}.
703   More details and exact version bytes are specified at:
704   https://github.com/spesmilo/electrum-docs/blob/master/xpub_version_bytes.rst
705   Note that due to this change, testnet wallet files created with previous
706   versions of Electrum must be considered broken, and they need to be
707   recreated from seed words.
708 * A new version of the Electrum protocol is required by the client
709   (version 1.2). Servers using older versions of the protocol will
710   not be displayed in the GUI.
711
712
713# Release 3.0.6 :
714  * Fix transaction parsing bug #3788
715
716# Release 3.0.5 : (Security update)
717
718This is a follow-up to the 3.0.4 release, which did not completely fix
719issue #3374. Users should upgrade to 3.0.5.
720
721 * The JSONRPC interface is password protected
722 * JSONRPC commands are disabled if the GUI is running, except 'ping',
723   which is used to determine if a GUI is already running
724
725
726# Release 3.0.4 : (Security update)
727
728 * Fix a vulnerability caused by Cross-Origin Resource Sharing (CORS)
729   in the JSONRPC interface. Previous versions of Electrum are
730   vulnerable to port scanning and deanonimization attacks from
731   malicious websites. Wallets that are not password-protected are
732   vulnerable to theft.
733 * Bundle QR scanner with Android app
734 * Minor bug fixes
735
736# Release 3.0.3
737  * Qt GUI: sweeping now uses the Send tab, allowing fees to be set
738  * Windows: if using the installer binary, there is now a separate shortcut
739    for "Electrum Testnet"
740  * Digital Bitbox: added support for p2sh-segwit
741  * OS notifications for incoming transactions
742  * better transaction size estimation:
743    - fees for segwit txns were somewhat underestimated (#3347)
744    - some multisig txns were underestimated
745    - handle uncompressed pubkeys
746  * fix #3321: testnet for Windows binaries
747  * fix #3264: Ledger/dbb signing on some platforms
748  * fix #3407: KeepKey sending to p2sh output
749  * other minor fixes and usability improvements
750
751# Release 3.0.2
752  * Android: replace requests tab with address tab, with access to
753    private keys
754  * sweeping minikeys: search for both compressed and uncompressed
755    pubkeys
756  * fix wizard crash when attempting to reset Google Authenticator
757  * fix #3248: fix Ledger+segwit signing
758  * fix #3262: fix SSL payment request signing
759  * other minor fixes.
760
761# Release 3.0.1
762  * minor bug and usability fixes
763
764# Release 3.0 - Uncanny Valley (November 1st, 2017)
765
766  * The project was migrated to Python3 and Qt5. Python2 is no longer
767    supported. If you cloned the source repository, you will need to
768    run "python3 setup.py install" in order to install the new
769    dependencies.
770
771  * Segwit support:
772
773    - Native segwit scripts are supported using a new type of
774      seed. The version number for segwit seeds is 0x100. The install
775      wizard will not create segwit seeds by default; users must
776      opt-in with the segwit option.
777
778    - Native segwit scripts are represented using bech32 addresses,
779      following BIP173. Please note that BIP173 is still in draft
780      status, and that other wallets/websites may not support
781      it. Thus, you should keep a non-segwit wallet in order to be
782      able to receive bitcoins during the transition period. If BIP173
783      ends up being rejected or substantially modified, your wallet
784      may have to be restored from seed. This will not affect funds
785      sent to bech32 addresses, and it will not affect the capacity of
786      Electrum to spend these funds.
787
788    - Segwit scripts embedded in p2sh are supported with hardware
789      wallets or bip39 seeds. To create a segwit-in-p2sh wallet,
790      trezor/ledger users will need to enter a BIP49 derivation path.
791
792    - The BIP32 master keys of segwit wallets are serialized using new
793      version numbers. The new version numbers encode the script type,
794      and they result in the following prefixes:
795
796         * xpub/xprv : p2pkh or p2sh
797         * ypub/yprv : p2wpkh-in-p2sh
798         * Ypub/Yprv : p2wsh-in-p2sh
799         * zpub/zprv : p2wpkh
800         * Zpub/Zprv : p2wsh
801
802      These values are identical for mainnet and testnet; tpub/tprv
803      prefixes are no longer used in testnet wallets.
804
805    - The Wallet Import Format (WIF) is similarly extended for segwit
806      scripts. After a base58-encoded key is decoded to binary, its
807      first byte encodes the script type:
808
809         * 128 + 0: p2pkh
810         * 128 + 1: p2wpkh
811         * 128 + 2: p2wpkh-in-p2sh
812         * 128 + 5: p2sh
813         * 128 + 6: p2wsh
814         * 128 + 7: p2wsh-in-p2sh
815
816      The distinction between p2sh and p2pkh in private key means that
817      it is not possible to import a p2sh private key and associate it
818      to a p2pkh address.
819
820  * A new version of the Electrum protocol is required by the client
821    (version 1.1). Servers using older versions of the protocol will
822    not be displayed in the GUI.
823
824  * By default, transactions are time-locked to the height of the
825    current block. Other values of locktime may be passed using the
826    command line.
827
828
829# Release 2.9.4 (security update)
830  * Backport security fixes from 3.0.5 after vulnerability was
831    discovered in JSONRPC interface.
832
833# Release 2.9.3
834  * fix configuration file issue #2719
835  * fix ledger signing of non-RBF transactions
836  * disable 'spend confirmed only' option by default
837
838# Release 2.9.2
839  * force headers download if headers file is corrupted
840  * add websocket to windows builds
841
842# Release 2.9.1
843  * fix initial headers download
844  * validate contacts on import
845  * command-line option for locktime
846
847# Release 2.9 - Independence (July 27th, 2017)
848  * Multiple Chain Validation: Electrum will download and validate
849    block headers sent by servers that may follow different branches
850    of a fork in the Bitcoin blockchain. Instead of a linear sequence,
851    block headers are organized in a tree structure. Branching points
852    are located efficiently using binary search. The purpose of MCV is
853    to detect and handle blockchain forks that are invisible to the
854    classical SPV model.
855  * The desired branch of a blockchain fork can be selected using the
856    network dialog. Branches are identified by the hash and height of
857    the diverging block. Coin splitting is possible using RBF
858    transaction (a tutorial will be added).
859  * Multibit support: If the user enters a BIP39 seed (or uses a
860    hardware wallet), the full derivation path is configurable in the
861    install wizard.
862  * Option to send only confirmed coins
863  * Qt GUI:
864    - Network dialog uses tabs and gets updated by network events.
865    - The gui tabs use icons
866  * Kivy GUI:
867    - separation between network dialog and wallet settings dialog.
868    - option for manual server entry
869    - proxy configuration
870  * Daemon: The wallet password can be passed as parameter to the
871    JSONRPC API.
872  * Various other bugfixes and improvements.
873
874
875# Release 2.8.3
876  * Fix crash on reading older wallet formats.
877  * TrustedCoin: remove pay-per-tx option
878
879# Release 2.8.2
880  * show paid invoices in history tab
881  * improve CPFP dialog
882  * fixes for trezor, keepkey
883  * other minor bugfixes
884
885# Release 2.8.1
886  * fix Digital Bitbox plugin
887  * fix daemon jsonrpc
888  * fix trustedcoin wallet creation
889  * other minor bugfixes
890
891# Release 2.8.0 (March 9, 2017)
892  * Wallet file encryption using ECIES: A keypair is derived from the
893    wallet password. Once the wallet is decrypted, only the public key
894    is retained in memory, in order to save the encrypted file.
895  * The daemon requires wallets to be explicitly loaded before
896    commands can use them. Wallets can be loaded using: 'electrum
897    daemon load_wallet [-w path]'. This command will require a
898    password if the wallet is encrypted.
899  * Invoices and contacts are stored in the wallet file and are no
900    longer shared between wallets. Previously created invoices and
901    contacts files may be imported from the menu.
902  * Fees improvements:
903    - Dynamic fees are enabled by default.
904    - Child Pays For Parent (CPFP) dialog in the GUI.
905    - RBF is automatically proposed for low fee transactions.
906  * Support for Segregated Witness (testnet only).
907  * Support for Digital Bitbox hardware wallet.
908  * The GUI shows a blue icon when connected using a proxy.
909
910# Release 2.7.18
911  * enforce https on exchange rate APIs
912  * use hardcoded list of exchanges
913  * move 'Freeze' menu to Coins (utxo) tab
914  * various bugfixes
915
916# Release 2.7.17
917  * fix a few minor regressions in the Qt GUI
918
919# Release 2.7.16
920  * add Testnet support (fix #541)
921  * allow daemon to be launched in the foreground (fix #1873)
922  * Qt: use separate tabs for addresses and UTXOs
923  * Qt: update fee slider with a network callback
924  * Ledger: new ui and mobile 2fa validation (neocogent)
925
926# Release 2.7.15
927  * Use fee slider for both static and dynamic fees.
928  * Add fee slider to RBF dialog (fix #2083).
929  * Simplify fee preferences.
930  * Critical: Fix password update issue (#2097). This bug prevents
931    password updates in multisig and 2FA wallets. It may also cause
932    wallet corruption if the wallet contains several master private
933    keys (such as 2FA wallets that have been restored from
934    seed). Affected wallets will need to be restored again.
935
936# Release 2.7.14
937  * Merge exchange_rate plugin with main code
938  * Faster synchronization and transaction creation
939  * Fix bugs #2096, #2016
940
941# Release 2.7.13
942  * fix message signing with imported keys
943  * add size to transaction details window
944  * move plot plugin to main code
945  * minor bugfixes
946
947# Release 2.7.12
948  various bugfixes
949
950# Release 2.7.11
951  * fix offline signing (issue #195)
952  * fix android crashes caused by threads
953
954# Release 2.7.10
955  * various fixes for hardware wallets
956  * improve fee bumping
957  * separate sign and broadcast buttons in Qt tx dialog
958  * allow spaces in private keys
959
960# Release 2.7.9
961  * Fix a bug with the ordering of pubkeys in recent multisig wallets.
962    Affected wallets will regenerate their public keys when opened for
963    the first time. This bug does not affect address generation.
964  * Fix hardware wallet issues #1975, #1976
965
966# Release 2.7.8
967  * Fix a bug with fee bumping
968  * Fix crash when parsing request (issue #1969)
969
970# Release 2.7.7
971  * Fix utf8 encoding bug with old wallet seeds (issue #1967)
972  * Fix delete request from menu (issue #1968)
973
974# Release 2.7.6
975 * Fixes a critical bug with imported private keys (issue #1966). Keys
976   imported in Electrum 2.7.x were not encrypted, even if the wallet
977   had a password. If you imported private keys using Electrum 2.7.x,
978   you will need to import those keys again. If you imported keys in
979   2.6 and converted with 2.7.x, you don't need to do anything, but
980   you still need to upgrade in order to be able to spend.
981 * Wizard: Hide seed options in a popup dialog.
982
983# Release 2.7.5
984 * Add number of confirmations to request status. (issue #1757)
985 * In the GUI, refer to passphrase as 'seed extension'.
986 * Fix bug with utf8 encoded passphrases.
987 * Kivy wizard: add a dialog for seed options.
988 * Kivy wizard: add current word to suggestions, because some users
989   don't see the space key.
990
991# Release 2.7.4
992 * Fix private key import in wizard
993 * Fix Ledger display (issue #1961)
994 * Fix old watching-only wallets (issue #1959)
995 * Fix Android compatibility (issue #1947)
996
997# Release 2.7.3
998 * fix Trezor and Keepkey support in Windows builds
999 * fix sweep private key dialog
1000 * minor fixes: #1958, #1959
1001
1002# Release 2.7.2
1003 * fix bug in password update (issue #1954)
1004 * fix fee slider (issue #1953)
1005
1006# Release 2.7.1
1007 * fix wizard crash with old seeds
1008 * fix issue #1948: fee slider
1009
1010# Release 2.7.0 (Oct 2 2016)
1011
1012 * The wallet file format has been upgraded. This upgrade is not
1013   backward compatible, which means that a wallet upgraded to the 2.7
1014   format will not be readable by earlier versions of
1015   Electrum. Multiple accounts inside the same wallet are not
1016   supported in the new format; the Qt GUI will propose to split any
1017   wallet that has several accounts. Make sure that you have saved
1018   your seed phrase before you upgrade Electrum.
1019 * This version introduces a separation between wallets types and
1020   keystores types. 'Wallet type' defines the type of Bitcoin contract
1021   used in the wallet, while 'keystore type' refers to the method used
1022   to store private keys. Therefore, so-called 'hardware wallets' will
1023   be referred to as 'hardware keystores'.
1024 * Hardware keystores:
1025   - The Ledger Nano S is supported.
1026   - Hardware keystores can be used as cosigners in multi-signature
1027     wallets.
1028   - Multiple hardware cosigners can be used in the same multisig
1029     wallet. One icon per keystore is displayed in the satus bar. Each
1030     connected device will co-sign the transaction.
1031 * Replace-By-Fee: RBF transactions are supported in both Qt and
1032   Android. A warning is displayed in the history for transactions
1033   that are replaceable, have unconfirmed parents, or that have very
1034   low fees.
1035 * Dynamic fees: Dynamic fees are enabled by default. A slider allows
1036   the user to select the expected confirmation time of their
1037   transaction. The expected confirmation times of incoming
1038   transactions is also displayed in the history.
1039 * The install wizards of Qt and Kivy have been unified.
1040 * Qt GUI (Desktop):
1041   - A fee slider is visible in the in send tab
1042   - The Address tab is hidden by default, can be shown with Ctrl-A
1043   - UTXOs are displayed in the Address tab
1044 * Kivy GUI (Android):
1045   - The GUI displays the complete transaction history.
1046   - Multisig wallets are supported.
1047   - Wallets can be created and deleted in the GUI.
1048 * Seed phrases can be extended with a user-chosen passphrase. The
1049   length of seed phrases is standardized to 12 words, using 132 bits
1050   of entropy (including 2FA seeds). In the wizard, the type of the
1051   seed is displayed in the seed input dialog.
1052 * TrustedCoin users can request a reset of their Google Authenticator
1053   account, if they still have their seed.
1054
1055
1056# Release 2.6.4 (bugfixes)
1057 * fix coinchooser bug (#1703)
1058 * fix daemon JSONRPC (#1731)
1059 * fix command-line broadcast (#1728)
1060 * QT: add colors to labels
1061
1062# Release 2.6.3 (bugfixes)
1063 * fix command line parsing of transactions
1064 * fix signtransaction --privkey (#1715)
1065
1066# Release 2.6.2 (bugfixes)
1067 * fix Trustedcoin restore from seed (bug #1704)
1068 * small improvements to kivy GUI
1069
1070# Release 2.6.1 (bugfixes)
1071 * fix broadcast command (bug #1688)
1072 * fix tx dialog (bug #1690)
1073 * kivy: support old-type seed phrases in wizard
1074
1075# Release 2.6
1076 * The source code is relicensed under the MIT Licence
1077 * First official release of the Kivy GUI, with android APK
1078 * The old 'android' and 'gtk' GUIs are deprecated
1079 * Separation between plugins and GUIs
1080 * The command line uses jsonrpc to communicate with the daemon
1081 * New command: 'notify <address> <url>'
1082 * Alternative coin selection policy, designed to help preserve user
1083   privacy. Enable it by setting the Coin Selection preference to
1084   Privacy.
1085 * The install wizard has been rewritten and improved
1086 * Support minikeys as used in Casascius coins for private key import
1087   and sweeping
1088 * Much improved support for TREZOR and KeepKey devices:
1089   - full device information display
1090   - initialize a new or wiped device in 4 ways:
1091     1) device generates a new wallet
1092     2) you enter a seed
1093     3) you enter a BIP39 mnemonic to generate the seed
1094     4) you enter a master private key
1095   - KeepKey secure seed recovery (KeepKey only)
1096   - change / set / disable PIN
1097   - set homescreen (TREZOR only)
1098   - set a session timeout.  Once a session has timed out, further use
1099     of the device requires your PIN and passhphrase to be re-entered
1100   - enable / disable passphrases
1101   - device wipe
1102   - multiple device support
1103
1104# Release 2.5.4
1105 * increase MIN_RELAY_TX_FEE to avoid dust transactions
1106
1107# Release 2.5.3 (bugfixes)
1108 * installwizard: do not allow direct copy-paste of the seed
1109 * installwizard: fix bug #1531 (starting offline)
1110
1111# Release 2.5.2 (bugfixes)
1112 * fix bug #1513 (client tries to broadcast transaction while not connected)
1113 * fix synchronization bug (#1520)
1114 * fix command line bug (#1494)
1115 * fixes for exchange rate plugin
1116
1117# Release 2.5.1 (bugfixes)
1118 * signatures in transactions were still using the old class
1119 * make sure that setup.py uses python2
1120 * fix wizard crash with trustedcoin plugin
1121 * fix socket infinite loop
1122 * fix history bug #1479
1123
1124# Release 2.5
1125 * Low-S values are used in signatures (BIP 62).
1126 * The Kivy GUI has been merged into master.
1127 * The Qt GUI supports multiple windows in the same process. When a
1128   new Electrum instance is started, it checks for an already running
1129   Electrum process, and connects to it.
1130 * The network layer uses select(), so all server communication is
1131   handled by a single thread. Moreover, the synchronizer, verifier,
1132   and exchange rate plugin now run as separate jobs within the
1133   networking thread instead of as their own threads.
1134 * Plugins are revamped, particularly the exchange rate plugin.
1135
1136# Release 2.4.4
1137 * Fix bug with TrustedCoin plugin
1138
1139# Release 2.4.3
1140 * Support for KeepKey hardware wallet
1141 * Simplified Chinese wordlist
1142 * Minor bugfixes and GUI tweaks
1143
1144# Release 2.4.2
1145 * Command line can read arguments from stdin (pipe)
1146 * Speedup fee computation for large transactions
1147 * Various bugfixes
1148
1149# Release 2.4.1
1150 * Use ssl.PROTOCOL_TLSv1
1151 * Fix DNSSEC issues with ECDSA signatures
1152 * Replace TLSLite dependency with minimal RSA implementation
1153 * Dynamic Fees: using estimatefee value returned by server
1154 * Various GUI improvements
1155
1156# Release 2.4
1157 * Payment to DNS names storing a Bitcoin addresses (OpenAlias) is
1158   supported directly, without activating a plugin. The verification
1159   uses DNSSEC.
1160 * The DNSSEC verification code was rewritten. The previous code,
1161   which was part of the OpenAlias plugin, is vulnerable and should
1162   not be trusted (Electrum 2.0 to 2.3).
1163 * Payment requests can be signed using Bitcoin addresses stored
1164   in DNS (OpenAlias). The identity of the requestor is verified using
1165   DNSSEC.
1166 * Payment requests signed with OpenAlias keys can be shared as
1167   bitcoin: URIs, if they are simple (a single address-type
1168   output). The BIP21 URI scheme is extended with 'name', 'sig',
1169   'time', 'exp'.
1170 * Arbitrary m-of-n multisig wallets are supported (n<=15).
1171 * Multisig transactions can be signed with TREZOR. When you create
1172   the multisig wallet, just enter the xpub of your existing TREZOR
1173   wallet.
1174 * Transaction fees set manually in the GUI are retained, including
1175   when the user uses the '!' shortcut.
1176 * New 'email' plugin, that enables sending and receiving payment
1177   requests by email.
1178 * The daemon supports Websocket notifications of payments.
1179
1180# Release 2.3.3
1181 * fix proxy settings (issue #1309)
1182 * improvements to the transaction dialog:
1183    - request password after showing transaction
1184    - show change addresses in yellow color
1185
1186# Release 2.3.2
1187 * minor bugfixes
1188 * updated ledger plugin
1189 * sort inputs/outputs lexicographically (BIP-LI01)
1190
1191# Release 2.3.1
1192 * patch a bug with payment requests
1193
1194# Release 2.3
1195 * Improved logic for the network layer.
1196 * More efficient coin selection. Spend oldest coins first, and
1197   minimize the number of transaction inputs.
1198 * Plugins are loaded independently of the GUI. As a result, Openalias,
1199   TrustedCoin and TREZOR wallets can be used with the command
1200   line. Example: 'electrum payto <openalias> <amount>'
1201 * The command line has been refactored:
1202  - Arguments are parsed with argparse.
1203  - The inline help includes a description of options.
1204  - Some commands have been renamed. Notably, 'mktx' and 'payto' have
1205    been merged into a single command, with a --broadcast option.
1206   Type 'electrum --help' for a complete overview.
1207 * The command line accepts the '!' syntax to send the maximum
1208   amount available. It can be combined with the '--from' option.
1209   Example: 'payto <destination> ! --from <from_address>'
1210 * The command line also accepts a '?' shortcut for private keys
1211   arguments, that triggers a prompt.
1212 * Payment requests can be managed with the command line, using the
1213   following commands: 'addrequest', 'rmrequest', 'listrequests'.
1214   Payment requests can be signed with a SSL certificate, and published
1215   as bip70 files in a public web directory. To see the relevant
1216   configuration variables, type 'electrum addrequest --help'
1217 * Commands can be called with jsonrpc, using the 'jsonrpc' gui. The
1218   jsonrpc interface may be called by php.
1219
1220# Release 2.2
1221 * Show amounts (thousands separators and decimal point)
1222   according to locale in GUI
1223 * Show unmatured coins in balance
1224 * Fix exchange rates plugin
1225 * Network layer: refactoring and fixes
1226
1227# Release 2.1.1
1228 * patch a bug that prevents new wallet creation.
1229 * fix connection issue on osx binaries
1230
1231# Release 2.1
1232 * Faster startup, thanks to the following optimizations:
1233   1. Transaction input/outputs are cached in the wallet file
1234   2. Fast X509 certificate parser, not using pyasn1 anymore.
1235   3. The Label Sync plugin only requests modified labels.
1236 * The 'Invoices' and 'Send' tabs have been merged.
1237 * Contacts are stored in a separate file, shared between wallets.
1238 * A Search Box is available in the GUI (Ctrl-S)
1239 * Payment requests have an expiration date and can be exported to
1240   BIP70 files.
1241 * file: scheme support in BIP72 URIs: "bitcoin:?r=file:///..."
1242 * Own addresses are shown in green in the Transaction dialog.
1243 * Address History dialog.
1244 * The OpenAlias plugin was improved.
1245 * Various bug fixes and GUI improvements.
1246 * A new LabelSync backend is being used an import of the old
1247   database was made but since the release came later it's
1248   recommended that you do a full push when you upgrade.
1249
1250# Release 2.0.4 - Minor GUI improvements
1251 * The password dialog will ask for password again if the user enters
1252   a wrong password
1253 * The Master Public Key dialog displays which keys belong to the
1254   wallet, and which are cosigners
1255 * The transaction dialog will ask to save unsaved transaction
1256   received from cosigner pool, when user clicks on 'Close'
1257 * The multisig restore dialog accepts xprv keys.
1258 * The network daemon must be started explicitly before using commands
1259   that require a connection
1260   Example:
1261     electrum daemon start
1262     electrum getaddressunspent <addr>
1263     electrum daemon status
1264     electrum daemon stop
1265   If a daemon is running, the GUI will use it.
1266
1267# Release 2.0.3 - bugfixes and minor GUI improvements
1268 * Do not use daemon threads (fix #960)
1269 * Add a zoom button to receive tab
1270 * Add exchange rate conversion to receive tab
1271 * Use Tor's default port number in default proxy config
1272
1273# Release 2.0.2 - bugfixes
1274 * Fix transaction sweep (#1066)
1275 * Fix thread timing bug (#1054)
1276
1277# Release 2.0.1 - bugfixes
1278 * Fix critical bug in TREZOR address derivation: passphrases were not
1279   NFKD normalized. TREZOR users who created a wallet protected by a
1280   passphrase containing utf-8 characters with diacritics are
1281   affected. These users will have to open their wallet with version
1282   2.0 and to move their funds to a new wallet.
1283 * Use a file socket for the daemon (fixes network dialog issues)
1284 * Fix crash caused by QR scanner icon when zbar not installed.
1285 * Fix CosignerPool plugin
1286 * Label Sync plugin: Fix label sharing between multisig wallets
1287
1288
1289# Release 2.0
1290
1291 * Before you upgrade, make sure you have saved your wallet seed on
1292   paper.
1293
1294 * Documentation is now hosted on a wiki: http://electrum.orain.org
1295
1296 * New seed derivation method (not compatible with BIP39). The seed
1297   phrase includes a version number, that refers to the wallet
1298   structure. The version number also serves as a checksum, and it
1299   will prevent the import of seeds from incompatible wallets. Old
1300   Electrum seeds are still supported.
1301
1302 * New address derivation (BIP32). Standard wallets are single account
1303   and use a gap limit of 20.
1304
1305 * Support for Multisig wallets using parallel BIP32 derivations and
1306   P2SH addresses ("2 of 2", "2 of 3").
1307
1308 * Compact serialization format for unsigned or partially signed
1309   transactions, that includes the BIP32 master public key and
1310   derivation needed to sign inputs. Serialized transactions can be
1311   sent to cosigners or to cold storage using QR codes (using Andreas
1312   Schildbach's base 43 idea).
1313
1314 * Support for BIP70 payment requests:
1315   - Verification of the chain of signatures uses tlslite.
1316   - In the GUI, payment requests are shown in the 'Invoices' tab.
1317
1318 * Support for hardware wallets: TREZOR (SatoshiLabs) and Btchip (Ledger).
1319
1320 * Two-factor authentication service by TrustedCoin. This service uses
1321   "2 of 3" multisig wallets and Google Authenticator. Note that
1322   wallets protected by this service can be deterministically restored
1323   from seed, without Trustedcoin's server.
1324
1325 * Cosigner Pool plugin: encrypted communication channel for multisig
1326   wallets, to send and receive partially signed transactions.
1327
1328 * Audio Modem plugin: send and receive transactions by sound.
1329
1330 * OpenAlias plugin: send bitcoins to aliases verified using DNSSEC.
1331
1332 * New 'Receive' tab in the GUI:
1333   - create and manage payment requests, with QR Codes
1334   - the former 'Receive' tab was renamed to 'Addresses'
1335   - the former Point of Sale plugin is replaced by a resizable
1336     window that pops up if you click on the QR code
1337
1338 * The 'Send' tab in the Qt GUI supports transactions with multiple
1339   outputs, and raw hexadecimal scripts.
1340
1341 * The GUI can connect to the Electrum daemon: "electrum -d" will
1342   start the daemon if it is not already running, and the GUI will
1343   connect to it. The daemon can serve several clients. It times out
1344   if no client uses if for more than 5 minutes.
1345
1346 * The install wizard can be used to import addresses or private
1347   keys. A watching-only wallet is created by entering a list of
1348   addresses in the wizard dialog.
1349
1350 * New file format: Wallets files are saved as JSON. Note that new
1351   wallet files cannot be read by older versions of Electrum. Old
1352   wallet files will be converted to the new format; this operation
1353   may take some time, because public keys will be derived for each
1354   address of your wallet.
1355
1356 * The client accepts servers with a CA-signed SSL certificate.
1357
1358 * ECIES encrypt/decrypt methods, available in the GUI and using
1359   the command line:
1360      encrypt <pubkey> <message>
1361      decrypt <pubkey> <message>
1362
1363 * The Android GUI has received various updates and it is much more
1364   stable. Another script was added to Android, called Authenticator,
1365   that works completely offline: it reads an unsigned transaction
1366   shown as QR code, signs it and shows the result as a QR code.
1367
1368
1369# Release 1.9.8
1370
1371* Electrum servers were upgraded to version 0.9. The new server stores
1372  a Patrica tree of all UTXOs, an idea proposed by Alan Reiner in the
1373  bitcointalk forum. This property allows the client to directly
1374  request the balance of any address. The new commands are:
1375     1. getaddressbalance <address>
1376     2. getaddressunspent <address>
1377     3. getutxoaddress <txid> <pos>
1378
1379* Command-line commands that require a connection to the network spawn
1380  a daemon, that remains connected and handles subsequent
1381  commands. The daemon terminates itself if it remains unused for more
1382  than one minute. The purpose of this is to make scripting more
1383  efficient. For example, a bash script using many electrum commands
1384  will open only one connection.
1385
1386# Release 1.9.7
1387* Fix for offline signing
1388* Various bugfixes
1389* GUI usability improvements
1390* Coinbase Buyback plugin
1391
1392# Release 1.9.6
1393* During wallet creation, do not write seed to disk until it is encrypted.
1394* Confirmation dialog if the transaction fee is higher than 1mBTC.
1395* bugfixes
1396
1397# Release 1.9.5
1398
1399* Coin control: select addresses to send from
1400* Put addresses that have been used in a minimized section (Qt GUI)
1401* Allow non ascii chars in passwords
1402
1403
1404# Release 1.9.4
1405bugfixes: offline transactions
1406
1407# Release 1.9.3
1408bugfixes: connection problems, transactions staying unverified
1409
1410# Release 1.9.2
1411* fix a syntax error
1412
1413# Release 1.9.1
1414* fix regression with --offline mode
1415* fix regression with --portable mode: use a dedicated directory
1416
1417# Release 1.9
1418
1419* The client connects to multiple servers in order to retrieve block headers and find the longest chain
1420* SSL certificate validation (to prevent MITM)
1421* Deterministic signatures (RFC 6979)
1422* Menu to create/restore/open wallets
1423* Create transactions with multiple outputs from CSV (comma separated values)
1424* New text gui: stdio
1425* Plugins are no longer tied to the qt GUI, they can reach all GUIs
1426* Proxy bugs have been fixed
1427
1428
1429# Release 1.8.1
1430
1431* Notification option when receiving new transactions
1432* Confirm dialogue before sending large amounts
1433* Alternative datafile location for non-windows systems
1434* Fix offline wallet creation
1435* Remove enforced tx fee
1436* Tray icon improvements
1437* Various bugfixes
1438
1439
1440# Release 1.8
1441
1442* Menubar in classic gui
1443* Updated the QR Code plugin to enable offline/online wallets to transmit unsigned/signed transactions via QR code.
1444* Fixed bug where never-confirmed transactions prevented further spending
1445
1446
1447# Release 1.7.4
1448
1449* Increase default fee
1450* fix create and restore in command line
1451* fix verify message in the gui
1452
1453
1454# Release 1.7.3:
1455
1456* Classic GUI can display amounts in mBTC
1457* Account selector in the classic GUI
1458* Changed the way the portable flag uses without supplying a -w argument
1459* Classic GUI asks users to enter their seed on wallet creation
1460
1461
1462# Release 1.7.2:
1463
1464* Transactions that are in the same block are displayed in chronological order in the history.
1465* The client computes transaction priority and rejects zero-fee transactions that need a fee.
1466* The default fee was lowered to 200 uBTC per kb.
1467* Due to an internal format change, your history may be pruned when
1468  you open your wallet for the first time after upgrading to 1.7.2. If
1469  this is the case, please visit a full server to restore your full
1470  history. You will only need to do that once.
1471
1472
1473# Release 1.7.1:  bugfixes.
1474
1475
1476# Release 1.7
1477
1478* The Classic GUI can be extended with plugins. Developers who want to
1479add new features or third-party services to Electrum are invited to
1480write plugins. Some previously existing and non-essential features of
1481Electrum (point-of-sale mode, qrcode scanner) were removed from the
1482core and are now available as plugins.
1483
1484* The wallet waits for 2 confirmations before creating new
1485addresses. This makes recovery from seed more robust. Note that it
1486might create unwanted gaps if you use Electrum 1.7 together with older
1487versions of Electrum.
1488
1489* An interactive Python console replaces the 'Wall' tab. The provided
1490python environment gives users access to the wallet and gui. Most
1491electrum commands are available as python function in the
1492console. Custom scripts an be loaded with a "run(filename)"
1493command. Tab-completions are available.
1494
1495* The location of the Electrum folder in Windows changed from
1496LOCALAPPDATA to APPDATA. Discussion on this topic can be found here:
1497https://bitcointalk.org/index.php?topic=144575.0
1498
1499* Private keys can be exported from within the classic GUI:
1500  For a single address, use the address menu (right-click).
1501  To export the keys of your entire wallet, use the settings dialog (import/export tab).
1502
1503* It is possible to create, sign and redeem multisig transaction using the
1504command line interface.  This is made possible by the following new commands:
1505    dumpprivkey, listunspent, createmultisig, createrawtransaction, decoderawtransaction, signrawtransaction
1506The syntax of these commands is similar to their bitcoind counterpart.
1507For an example, see Gavin's tutorial: https://gist.github.com/gavinandresen/3966071
1508
1509* Offline wallets now work in a way similar to Armory:
1510  1. user creates an unsigned transaction using the online (watching-only) wallet.
1511  2. unsigned transaction is copied to the offline computer, and signed by the offline wallet.
1512  3. signed transaction is copied to the online computer, broadcasted by the online client.
1513  4. All these steps can be done via the command line interface or the classic GUI.
1514
1515* Many command line commands have been renamed in order to make the syntax consistent with bitcoind.
1516
1517# Release 1.6.2
1518
1519== Classic GUI
1520* Added new version notification
1521
1522# Release 1.6.1 (11-01-2013)
1523
1524== Core
1525* It is now possible to restore a wallet from MPK (this will create a watching-only wallet)
1526* A switch button allows to easily switch between Lite and Classic GUI.
1527
1528== Classic GUI
1529* Seed and MPK help dialogs were rewritten
1530* Point of Sale: requested amounts can be expressed in other currencies and are converted to bitcoin.
1531
1532== Lite GUI
1533* The receiving button was removed in favor of a menu item to keep it consistent with the history toggle.
1534
1535# Release 1.6.0 (07-01-2013)
1536
1537== Core
1538* (Feature) Add support for importing, signing and verifiying compressed keys
1539* (Feature) Auto reconnect to random server on disconnect
1540* (Feature) Ultimate fallback to HTTP port 80 if TCP doesn't work on any server
1541* (Bug) Under rare circumstances changing password with incorrect password could damage wallet
1542
1543== Lite GUI
1544* (Chore) Use blockchain.info for exchange rate data
1545* (Feature) added currency conversion for BRL, CNY, RUB
1546* (Feature) Saraha theme
1547* (Feature) csv import/export for transactions including labels
1548
1549== Classic GUI
1550* (Chore) pruning servers now called "p", full servers "f" to avoid confusion with terms
1551* (Feature) Debits in history shown in red
1552* (Feature) csv import/export for transactions including labels
1553
1554# Release 1.5.8 (02-01-2013)
1555
1556== Core
1557* (Bug) Fix pending address balance on received coins for pruning servers
1558* (Bug) Fix history command line option to show output again (regression by SPV)
1559* (Chore) Add timeout to blockchain headers file download by HTTP
1560* (Feature) new option: -L, --language: default language used in GUI.
1561
1562== Lite GUI
1563* (Bug) Sending to auto-completed contacts works again
1564* (Chore) Added version number to title bar
1565
1566== Classic GUI
1567* (Feature) Language selector in options.
1568
1569# Release 1.5.7 (18-12-2012)
1570
1571== Core
1572* The blockchain headers file is no longer included in the packages, it is downloaded on startup.
1573* New command line option: -P or --portable, for portable wallets. With this flag, all preferences are saved to the wallet file, and the blockchain headers file is in the same directory as the wallet
1574
1575== Lite GUI
1576* (Feature) Added the ability to export your transactions to a CSV file.
1577* (Feature) Added a label dialog after sending a transaction.
1578* (Feature) Reworked receiving addresses; instead of a random selection from one of your receiving addresses a new widget will show listing unused addresses.
1579* (Chore)   Removed server selection. With all the new server options a simple menu item does not suffice anymore.
1580