Electrum Changelog

What's new in Electrum 4.5.4

Mar 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)

New in Electrum 4.5.3 (Feb 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)

New in Electrum 4.5.2 (Jan 21, 2024)

  • Qt Desktop GUI:
  • Fix crash during startup/wizard-open (#8833)

New in Electrum 4.5.1 (Jan 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)

New in Electrum 4.5.0 (Jan 15, 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)

New in Electrum 4.4.6 (Aug 18, 2023)

  • Lightning:
  • 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)

New in Electrum 4.4.5 (Jun 21, 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)

New in Electrum 4.4.4 (May 31, 2023)

  • libsecp256k1: bump bundled version to 0.3.2 (10574bb1)
  • 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)

New in Electrum 4.4.3 (May 12, 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 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).
  • 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)
  • 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 (

New in Electrum 4.4.2 (May 5, 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)
  • Fixes:
  • 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)

New in Electrum 4.4.1 (Apr 28, 2023)

  • 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)
  • 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)

New in Electrum 4.4.0 (Apr 19, 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 everytime routing hints are deprecated due to liquidity changes.
  • Script descriptors are used internally to sign transactions.

New in Electrum 4.3.4 (Jan 27, 2023)

  • 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)
  • Lightning:
  • make sending trampoline payments more reliable (5251e7f8)
  • use different trampoline feature bits than eclair (#8141)
  • payserver plugin:
  • replaced vendored qrcode lib
  • added tabs for on-chain and lightning invoices
  • revamped html and javascript

New in Electrum 4.3.3 (Jan 4, 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)

New in Electrum 4.3.2 (Sep 29, 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)

New in Electrum 4.3.1 (Aug 22, 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)

New in Electrum 4.3.0 (Aug 7, 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)

New in Electrum 4.2.2 (May 29, 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 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)

New in Electrum 4.2.1 (Mar 28, 2022)

  • 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)

New in Electrum 4.2.0 (Mar 17, 2022)

  • The minimum python version was increased to 3.8 (#7661)
  • improve support for "lightning:" URIs on all platforms (#7301)
  • migrated from Travis CI to Cirrus CI (#7431)
  • Lots of other minor bugfixes and usability improvements.
  • 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)
  • 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)

New in Electrum 4.1.5 (Jul 20, 2021)

  • 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)
  • GUIs: add "funded or unused" filter option to Addresses tab (#5823)
  • Builds/binaries:
  • macOS: the .dmg binary should now be reproducible
  • Qt GUI:
  • allow restoring from SLIP39 seeds (#6917)
  • rework QR code scanning on Windows and macOS (#7365)
  • support smaller window sizes, decrease minimums (#7385)

New in Electrum 3.1.3 (Apr 19, 2018)

  • Qt GUI: seed word auto-complete during restore
  • Android: fix some crashes
  • performance improvements (wallet, and Qt GUI)
  • hardware wallets: show debug message during device scan
  • Digital Bitbox: enabled BIP84 (p2wpkh) wallet creation
  • add regtest support (via --regtest flag)
  • other minor bugfixes and usability improvements

New in Electrum 3.1.0 (Mar 7, 2018)

  • Memory-pool based fee estimation. Dynamic fees can target a desired depth in the memory pool. This feature is optional, and ETA-based estimates from Bitcoin Core are still available. Note that miners could exploit this feature, if they conspired and filled the memory pool with expensive transactions that never get mined. However, since the Electrum client already trusts an Electrum server with fee estimates, activating this feature does not introduce any new vulnerability. In addition, the client uses a hard threshold to protect itself from servers sending excessive fee estimates. In practice, ETA-based estimates have resulted in sticky fees, and caused many users to overpay for transactions. Advanced users tend to visit (and trust) websites that display memory-pool data in order to set their fees.
  • Capital gains: For each outgoing transaction, the difference between the acquisition and liquidation prices of outgoing coins is displayed in the wallet history. By default, historical exchange rates are used to compute acquisition and liquidation prices. These values can also be entered manually, in order to match the actual price realized by the user. The order of liquidation of coins is the natural order defined by the blockchain; this results in capital gain values that are invariant to changes in the set of addresses that are in the wallet. Any other ordering strategy (such as FIFO, LIFO) would result in capital gain values that depend on the presence of other addresses in the wallet.
  • Local transactions: Transactions can be saved in the wallet without being broadcast. The inputs of local transactions are considered as spent, and their change outputs can be re-used in subsequent transactions. This can be combined with cold storage, in order to create several transactions before broadcasting them. Outgoing transactions that have been removed from the memory pool are also saved in the wallet, and can be broadcast again.
  • Checkpoints: The initial download of a headers file was replaced with hardcoded checkpoints. The wallet uses one checkpoint per retargeting period. The headers for a retargeting period are downloaded only if transactions need to be verified in this period.
  • The 'privacy' and 'priority' coin selection policies have been merged into one. Previously, the 'privacy' policy has been unusable because it was was not prioritizing confirmed coins. The new policy is similar to 'privacy', except that it de-prioritizes addresses that have unconfirmed coins.
  • The 'Send' tab of the Qt GUI displays how transaction fees are computed from transaction size.
  • The wallet history can be filtered by time interval.
  • Replace-by-fee is enabled by default. Note that this might cause some issues with wallets that do not display RBF transactions until they are confirmed.
  • Watching-only wallets and hardware wallets can be encrypted.
  • Semi-automated crash reporting
  • The SSL checkbox option was removed from the GUI.
  • The Trezor T hardware wallet is now supported.
  • BIP84: native segwit p2wpkh scripts for bip39 seeds and hardware wallets can now be created when specifying a BIP84 derivation path. This is usable with Trezor and Ledger.
  • Windows: the binaries now include ZBar, and QR code scanning should work.
  • The Wallet Import Format (WIF) for private keys that was extended in 3.0 is changed. Keys in the previous format can be imported, compatibility is maintained. Newly exported keys will be serialized as "script_type:original_wif_format_key".
  • BIP32 master keys for testnet once again have different version bytes than on mainnet. For the mainnet prefixes {x,y,Y,z,Z}|{pub,prv}, the corresponding testnet prefixes are {t,u,U,v,V}|{pub,prv}. More details and exact version bytes are specified at: https://github.com/spesmilo/electrum-docs/blob/master/xpub_version_bytes.rst Note that due to this change, testnet wallet files created with previous versions of Electrum must be considered broken, and they need to be recreated from seed words.
  • A new version of the Electrum protocol is required by the client (version 1.2). Servers using older versions of the protocol will not be displayed in the GUI.

New in Electrum 3.0.5 (Jan 9, 2018)

  • The JSONRPC interface is password protected
  • JSONRPC commands are disabled if the GUI is running, except 'ping', which is used to determine if a GUI is already running

New in Electrum 3.0.4 (Jan 9, 2018)

  • Fix a vulnerability caused by Cross-Origin Resource Sharing (CORS) in the JSONRPC interface. Previous versions of Electrum are vulnerable to port scanning and deanonimization attacks from malicious websites. Wallets that are not password-protected are vulnerable to theft.
  • Bundle QR scanner with Android app
  • Minor bug fixes

New in Electrum 3.0.3 (Dec 15, 2017)

  • Qt GUI: sweeping now uses the Send tab, allowing fees to be set
  • Digital Bitbox: added suport for p2sh-segwit
  • OS notifications for incoming transactions
  • fix #3321: testnet for Windows binaries
  • fix #3264: Ledger/dbb signing on some platforms
  • fix #3407: KeepKey sending to p2sh output
  • other minor fixes and usability improvements
  • better transaction size estimation:
  • fees for segwit txns were somewhat underestimated (#3347)
  • some multisig txns were underestimated
  • handle uncompressed pubkeys

New in Electrum 2.9.3 (Sep 1, 2017)

  • fix configuration file issue #2719
  • fix ledger signing of non-RBF transactions
  • disable 'spend confirmed only' option by default

New in Electrum 2.9.2 (Sep 1, 2017)

  • force headers download if headers file is corrupted

New in Electrum 2.9.1 (Sep 1, 2017)

  • fix initial headers download
  • validate contacts on import
  • command-line option for locktime

New in Electrum 2.9.0 (Jul 31, 2017)

  • Multiple Chain Validation: Electrum will download and validate block headers sent by servers that may follow different branches of a fork in the Bitcoin blockchain. Instead of a linear sequence, block headers are organized in a tree structure. Branching points are located efficiently using binary search. The purpose of MCV is to detect and handle blockchain forks that are invisible to the classical SPV model.
  • The desired branch of a blockchain fork can be selected using the network dialog. Branches are identified by the hash and height of the diverging block. Coin splitting is possible using RBF transaction (a tutorial will be added).
  • Multibit support: If the user enters a BIP39 seed (or uses a hardware wallet), the full derivation path is configurable in the install wizard.
  • Option to send only confirmed coins
  • Daemon: The wallet password can be passed as parameter to the JSONRPC API.
  • Various other bugfixes and improvements.
  • Qt GUI:
  • Network dialog uses tabs and gets updated by network events.
  • The gui tabs use icons
  • Kivy GUI:
  • separation between network dialog and wallet settings dialog.
  • option for manual server entry
  • proxy configuration

New in Electrum 2.8.3 (Jun 14, 2017)

  • Fix crash on reading older wallet formats.
  • TrustedCoin: remove pay-per-tx option

New in Electrum 2.8.2 (Apr 5, 2017)

  • show paid invoices in history tab
  • improve CPFP dialog
  • fixes for trezor, keepkey
  • other minor bug fixes

New in Electrum 2.8.1 (Mar 21, 2017)

  • fix Digital Bitbox plugin
  • fix daemon jsonrpc
  • fix trustedcoin wallet creation
  • other minor bug fixes

New in Electrum 2.7.18 (Jan 28, 2017)

  • enforce https on exchange rate APIs
  • use hardcoded list of exchanges
  • move 'Freeze' menu to Coins (utxo) tab
  • various bug fixes

New in Electrum 2.7.17 (Jan 17, 2017)

  • fix a few minor regressions in the Qt GUI

New in Electrum 2.7.16 (Jan 17, 2017)

  • add Testnet support (fix #541)
  • allow daemon to be launched in the foreground (fix #1873)
  • Qt: use separate tabs for addresses and UTXOs
  • Qt: update fee slider with a network callback
  • Ledger: new ui and mobile 2fa validation (neocogent)

New in Electrum 2.7.15 (Jan 17, 2017)

  • Use fee slider for both static and dynamic fees.
  • Add fee slider to RBF dialog (fix #2083).
  • Simplify fee preferences.
  • Critical: Fix password update issue (#2097). This bug prevents password updates in multisig and 2FA wallets. It may also cause wallet corruption if the wallet contains several master private keys (such as 2FA wallets that have been restored from seed). Affected wallets will need to be restored again.

New in Electrum 2.7.14 (Jan 5, 2017)

  • Merge exchange_rate plugin with main code
  • Faster synchronization and transaction creation
  • Fix bugs #2096, #2016

New in Electrum 2.7.0 (Oct 4, 2016)

  • The wallet file format has been upgraded. This upgrade is not backward compatible, which means that a wallet upgraded to the 2.7 format will not be readable by earlier versions of Electrum. Multiple accounts inside the same wallet are not supported in the new format; the Qt GUI will propose to split any wallet that has several accounts. Make sure that you have saved your seed phrase before you upgrade Electrum.
  • This version introduces a separation between wallets types and keystores types. 'Wallet type' defines the type of Bitcoin contract used in the wallet, while 'keystore type' refers to the method used to store private keys. Therefore, so-called 'hardware wallets' will be referred to as 'hardware keystores'.
  • Replace-By-Fee: RBF transactions are supported in both Qt and Android. A warning is displayed in the history for transactions that are replaceable, have unconfirmed parents, or that have very low fees.
  • Dynamic fees: Dynamic fees are enabled by default. A slider allows the user to select the expected confirmation time of their transaction. The expected confirmation times of incoming transactions is also displayed in the history.
  • The install wizards of Qt and Kivy have been unified.
  • Qt GUI (Desktop): - A fee slider is visible in the in send tab - The Address tab is hidden by default, can be shown with Ctrl-A - UTXOs are displayed in the Address tab
  • Kivy GUI (Android): - The GUI displays the complete transaction history. - Multisig wallets are supported. - Wallets can be created and deleted in the GUI.
  • Seed phrases can be extended with a user-chosen passphrase. The length of seed phrases is standardized to 12 words, using 132 bits of entropy (including 2FA seeds). In the wizard, the type of the seed is displayed in the seed input dialog.
  • TrustedCoin users can request a reset of their Google Authenticator account, if they still have their seed.
  • Hardware keystores:
  • The Ledger Nano S is supported.
  • Hardware keystores can be used as cosigners in multi-signature wallets.
  • Multiple hardware cosigners can be used in the same multisig wallet. One icon per keystore is displayed in the satus bar. Each connected device will co-sign the transaction.

New in Electrum 2.6.4 (Apr 17, 2016)

  • fix coinchooser bug (#1703)
  • fix daemon JSONRPC (#1731)
  • fix command-line broadcast (#1728)
  • QT: add colors to labels

New in Electrum 2.5.4 (Nov 12, 2015)

  • increase MIN_RELAY_TX_FEE to avoid dust transactions

New in Electrum 2.5.3 (Nov 12, 2015)

  • installwizard: do not allow direct copy-paste of the seed
  • installwizard: fix bug #1531 (starting offline)

New in Electrum 2.5.2 (Oct 28, 2015)

  • fix bug #1513 (client tries to broadcast transaction while not connected)
  • fix synchronization bug (#1520)
  • fix command line bug (#1494)
  • fixes for exchange rate plugin

New in Electrum 2.5.1 (Oct 28, 2015)

  • signatures in transactions were still using the old class
  • make sure that setup.py uses python2
  • fix wizard crash with trustedcoin plugin
  • fix socket infinite loop
  • fix history bug #1479

New in Electrum 2.5 (Oct 18, 2015)

  • Low-S values are used in signatures (BIP 62).
  • The Kivy GUI has been merged into master.
  • The Qt GUI supports multiple windows in the same process. When a new Electrum instance is started, it checks for an already running Electrum process, and connects to it.
  • The network layer uses select(), so all server communication is handled by a single thread. Moreover, the synchronizer, verifier, and exchange rate plugin now run as separate jobs within the networking thread instead of as their own threads.
  • Plugins are revamped, particularly the exchange rate plugin.

New in Electrum 2.4.4 (Aug 25, 2015)

  • fix bug with trustedcoin plugin

New in Electrum 2.4.3 (Aug 25, 2015)

  • Support for KeepKey hardware wallet
  • Simplified Chinese wordlist
  • Minor bug fixes and GUI tweaks

New in Electrum 2.3.2 (Jun 16, 2015)

  • minor bugfixes
  • updated ledger plugin
  • sort inputs/outputs lexicographically (BIP-LI01)

New in Electrum 2.3.1 (Jun 15, 2015)

  • Patch a bug with payment requests

New in Electrum 2.3 (Jun 15, 2015)

  • Improved logic for the network layer.
  • More efficient coin selection. Spend oldest coins first, and minimize the number of transaction inputs.
  • Plugins are loaded independently of the GUI. As a result, Openalias, TrustedCoin and Trezor wallets can be used with the command line. Example: 'electrum payto '
  • The command line accepts the '!' syntax to send the maximum amount available. It can be combined with the '--from' option. Example: 'payto ! --from '
  • The command line also accepts a '?' shortcut for private keys arguments, that triggers a prompt.
  • Payment requests can be managed with the command line, using the following commands: 'addrequest', 'rmrequest', 'listrequests'. Payment requests can be signed with a SSL certificate, and published as bip70 files in a public web directory. To see the relevant configuration variables, type 'electrum addrequest --help'
  • Commands can be called with jsonrpc, using the 'jsonrpc' gui. The jsonrpc interface may be called by php.
  • The command line has been refactored:
  • Arguments are parsed with argparse.
  • The inline help includes a description of options.
  • Some commands have been renamed. Notably, 'mktx' and 'payto' have been merged into a single command, with a --broadcast option. Type 'electrum --help' for a complete overview.

New in Electrum 2.2 (May 21, 2015)

  • Show thousands separators in GUI
  • Show unmatured coins in balance
  • Fix exchange rates plugin
  • Network layer: refactoring and fixes

New in Electrum 2.1.1 (Apr 25, 2015)

  • Faster startup, thanks to the following optimizations:
  • Transaction input/outputs are cached in the wallet file
  • Fast X509 certificate parser, not using pyasn1 anymore.
  • The Label Sync plugin only requests modified labels.
  • The 'Invoices' and 'Send' tabs have been merged.
  • Contacts are stored in a separate file, shared between wallets.
  • A Search Box is available in the GUI (Ctrl-S)
  • Payment requests have an expiration date and can be exported to BIP70 files.
  • file: scheme support in BIP72 URIs: "bitcoin:?r=file:///..."
  • Own addresses are shown in green in the Transaction dialog.
  • Address History dialog.
  • The OpenAlias plugin was improved.
  • Various bug fixes and GUI improvements.
  • A new LabelSync backend is being used an import of the old database was made but since the release came later it's recommended that you do a full push when you upgrade.

New in Electrum 2.0.4 (Mar 30, 2015)

  • The password dialog will ask for password again if the user enters a wrong password
  • The Master Public Key dialog displays which keys belong to the wallet, and which are cosigners
  • The transaction dialog will ask to save unsaved transaction received from cosigner pool, when user clicks on 'Close'
  • The multisig restore dialog accepts xprv keys.
  • The network daemon must be started explicitly before using commands that require a connection
  • Example:
  • electrum daemon start
  • electrum getaddressunspent
  • electrum daemon status
  • electrum daemon stop
  • If a daemon is running, the GUI will use it.

New in Electrum 2.0.3 (Mar 30, 2015)

  • Do not use daemon threads (fix #960)
  • Add a zoom button to receive tab
  • Add exchange rate conversion to receive tab
  • Use Tor's default port number in default proxy config

New in Electrum 2.0.2 (Mar 9, 2015)

  • Fix transaction sweep (#1066)
  • Fix thread timing bug (#1054)

New in Electrum 2.0.1 (Mar 9, 2015)

  • Fix critical bug in Trezor address derivation: passphrases were not NFKD normalized. Trezor users who created a wallet protected by a passphrase containing utf-8 characters with diacritics are affected. These users will have to open their wallet with version 2.0 and to move their funds to a new wallet.
  • Use a file socket for the daemon (fixes network dialog issues)
  • Fix crash caused by QR scanner icon when zbar not installed.
  • Fix CosignerPool plugin
  • Label Sync plugin: Fix label sharing between multisig wallets

New in Electrum 2.0 (Mar 3, 2015)

  • Before you upgrade, make sure you have saved your wallet seed on paper.
  • Documentation is now hosted on a wiki: http://electrum.orain.org
  • New seed derivation method (not compatible with BIP39). The seed phrase includes a version number, that refers to the wallet structure. The version number also serves as a checksum, and it will prevent the import of seeds from incompatible wallets. Old Electrum seeds are still supported.
  • New address derivation (BIP32). Standard wallets are single account and use a gap limit of 20.
  • Support for Multisig wallets using parallel BIP32 derivations and P2SH addresses ("2 of 2", "2 of 3").
  • Compact serialization format for unsigned or partially signed transactions, that includes the BIP32 master public key and derivation needed to sign inputs. Serialized transactions can be sent to cosigners or to cold storage using QR codes (using Andreas Schildbach's base 43 idea).
  • Support for hardware wallets: Trezor (Satoshilabs) and Btchip (Ledger).
  • Two-factor authentication service by TrustedCoin. This service uses "2 of 3" multisig wallets and Google Authenticator. Note that wallets protected by this service can be deterministically restored from seed, without Trustedcoin's server.
  • Cosigner Pool plugin: encrypted communication channel for multisig wallets, to send and receive partially signed transactions.
  • Audio Modem plugin: send and receive transactions by sound.
  • OpenAlias plugin: send bitcoins to aliases verified using DNSSEC.
  • The 'Send' tab in the Qt GUI supports transactions with multiple outputs, and raw hexadecimal scripts.
  • The GUI can connect to the Electrum daemon: "electrum -d" will start the daemon if it is not already running, and the GUI will connect to it. The daemon can serve several clients. It times out if no client uses if for more than 5 minutes.
  • The install wizard can be used to import addresses or private keys. A watching-only wallet is created by entering a list of addresses in the wizard dialog.
  • New file format: Wallets files are saved as JSON. Note that new wallet files cannot be read by older versions of Electrum. Old wallet files will be converted to the new format; this operation may take some time, because public keys will be derived for each address of your wallet.
  • The client accepts servers with a CA-signed SSL certificate.
  • ECIES encrypt/decrypt methods, availabe in the GUI and using the command line: encrypt / decrypt
  • The Android GUI has received various updates and it is much more stable. Another script was added to Android, called Authenticator, that works completely offline: it reads an unsigned transaction shown as QR code, signs it and shows the result as a QR code.
  • Support for BIP70 payment requests:
  • Verification of the chain of signatures uses tlslite.
  • In the GUI, payment requests are shown in the 'Invoices' tab.
  • New 'Receive' tab in the GUI:
  • create and manage payment requests, with QR Codes
  • the former 'Receive' tab was renamed to 'Addresses'
  • the former Point of Sale plugin is replaced by a resizeable window that pops up if you click on the QR code

New in Electrum 1.9.8 (Mar 18, 2014)

  • Electrum servers were upgraded to version 0.9. The new server stores a Patrica tree of all UTXOs, an idea proposed by Alan Reiner in the bitcointalk forum. This property allows the client to directly request the balance of any address.
  • Command-line commands that require a connection to the network spawn a daemon, that remains connected and handles subsequent commands. The daemon terminates itself if it remains unused for more than one minute. The purpose of this is to make scripting more efficient. For example, a bash script using many electrum commands will open only one connection.

New in Electrum 1.9.7 (Jan 13, 2014)

  • Fix for offline signing
  • Various bug fixes
  • GUI usability improvements
  • Coinbase Buyback plugin