SEARCH
NEW RPMS
DIRECTORIES
ABOUT
FAQ
VARIOUS
BLOG

 
 
Changelog for electrum-4.1.5-1.36.noarch.rpm :

* Sun Aug 01 2021 marecAATTdetebe.org- Update to version 4.1.5:
* update locale
* release.sh: dmg is now reproducible as well
* prepare release 4.1.5
* mac build: compare_dmg: \"diff\" should handle missing directory
* mac build: README: clarify note about reproducibility of unsigned dmg
* make_osx: disable set -e during test of signing identity
* mac build: attempt at \"reproducible\" codesigned builds
* mac build: re-add note about needing full Xcode...
* mac build: rm pyinstaller monkey-patch used to codesign embedded files
* mac build: add \"set -e\"
* make_osx: do not download python pkg unnecessarily
* set -e in compare_dmg
* mac build: download python from python.org instead of using pyenv
* mac build: trivial clean-up
* Improve _mythread checks (#7403)
* follow-up prev
* lnchannel: introduce HTLCWithStatus NamedTuple
* invoices: explain status constants
* fix typo (follow-up prev)
* compare_dmg: compare two files
* crash reporter: send traceback for full chain of exceptions
* Add lightning tag for commands
* mac build: don\'t create __pycache__ folders
* osx: add script to compare dmg binaries
* wallet: fire \"request_status\" event also when conf number changes
* qt init: on exc, let crash reporter appear instead of silently dying
* Don\'t cleanup lockfile is listen_jsonrpc is False
* mac build: build libusb from source
* kivy wizard: add explicit warnings at seed creation
* kivy crash reporter: warn users not to share sensitive info
* wallet: make sure payment requests are persisted
* qt: some fixes for send/receive tabs when window is small
* macOS builds: remove zip file after notarization
* LN private route hints: don\'t include low receive capacity channels
* trampoline: fix \"pay-to-legacy\" workaround when using ACINQ node
* Friendlier minimum sizing for small screens for air-gapped signing functionalities, i.e. main window and transaction dialog
* trampoline: improve payment success
* qr scanning: add comments to distinguish qrscanner.py and qrreader/
* qt: qrreader: keep both old and new toolchain; try to abstract it away
* qt: new qrreader using QtMultimedia; drop CalinsQRReader(mac)
* qt: (fix) make ScanQRTextEdit inherit Logger
* kivy: scan_qr_non_android: handle user closing window
* build: update zbar to fix build issue with autoconf 2.70
* contrib/osx/package.sh: fix paths, add link to issue regarding GCC 10.1
* build tools: set ZERO_AR_DATE to have deterministic timestamps on macOS
* slip39: follow-ups
* lnaddr: clean-up SEGWIT_HRP vs BOLT11_HRP confusion
* build: extend release.sh so that all builders can use it
* windows build: fix build.sh \"cp\" cmd
* rephrasing, removal of revealer website links (#7359)
* gitignore: exclude appimage fresh_clone
* kivy addresses list: add \"funded or unused\" filter option
* qt addresses list: add \"funded or unused\" filter option
* kivy: fix paying bip70 invoices
* build: try to consolidate instructions and decr codedupe in release.sh
* build/release.sh: add some comments
* (trivial) build/release.sh: convert indents to spaces
* build: rename some scripts
* build: fresh_clone: turns out we can just clone from a local dir :P
* android build: place binaries in ./dist/ instead of ./bin/
* readme: add a \"contributing\" section, mentioning new irc
* release script: follow-up prev commit
* Add net.BOLT11_HRP
* add signet support
* Add SLIP-0039 unit tests.
* Implement SLIP-0039 wallet recovery.
* Replace from_bip39_seed() with from_bip43_rootseed().
* Add SLIP-0039 wordlist.
* Fri Jun 18 2021 marecAATTdetebe.org- Update to version 4.1.4:
* prepare release 4.1.4
* commands: fix \"close_wallet\" cmd, which was deadlocking
* contrib/upload: use abbrev=0
* release.sh: fix path for android builds
* build-wine/unsign.sh: allow using before files are uploaded publicly
* release.sh: make sure correct commit is checked out
* kivy: fixes regression where non-LN wallet cannot open settings...
* update locale; again :P
* Fri Jun 18 2021 marecAATTdetebe.org- Update to version 4.1.3:
* follow-up 8ff49fa9bb5474974ac1cbf359f8b43828b3a08c
* update locale
* Remove signature verification from make_download. Signatures are verified by the website, before deployment.
* pubkeys: add new gpg key I will use to sign releases from now on
* prepare release 4.1.3
* imported wallets: respect \"use_change\" option; default off
* (trivial) wallet: rename parameter of a method
* kivy settings: more intuitive \"recoverable channels\" toggle
* kivy: settings dialog: call update() from __init__
* lnworker: rm unused import
* follow-up prev
* lnchannel: rm HTLC value upper limit of ~42 mBTC
* android build: add exec permission to apkdiff.py, and print hashes
* release script: call build_docker_image.sh
* Update release script with APK fresh clone instruction. Add android/fresh_clone to gitignore
* android reproducibility: add Signal\'s \"apkdiff.py\" tool, and instructions
* android build: attempt at reproducible builds
* wallet: rm get_txout_address method
* cmd: add sign with privkey and wallet (#7147)
* wallet: fix channels backups in .backup files
* wallet: RBF batching to only consider RBF-opted-in txs, even if local
* Update wallet backup access (#7300)
* wallet: add address corruption tests for imported wallets too
* invoices/lnaddr: LNInvoice.from_bech32 now raises InvoiceError
* fix tests: adapt to breaking change of ipaddress.ip_address in py3.9.5
* kivy: (fix) forbid creating LN payreq if LN is disabled for wallet
* appimage: update libc6-dev package (#7299)
* swaps: fix satoshi conversion bug
* fix prev
* wallet: (fix) \"batch_rbf\" must not mutate LN funding txs
* lnrouter: add inflight htlcs to liquidity hints
* lnworker: async gen create_routes_for_payments
* kivy: (trivial) clean-up imports in screens.py
* follow-up prev
* invoice: fail gracefully with large amount
* util: check bip21 url for amount
* android build: pin hashes of p4a recipes
* mac build: link to issue in README
* kivy: relocate atlas so it can be made a submodule later
* bip39 auto import, add coolwallet S weird derivation path (#7261)
* kivy: improve openchannel dialog for trampoline
* release script: add username to signature file, upload files into airlock.
* Do not perform webserver update from release script. (see publish.sh and deploy.sh in the electrum-web repo)
* contrib: fix find_restricted_dependencies for deps with version range
* network: also clear network.path_finder in stop_gossip
* tx dialog (Qt): if possible, save psbt and fully signed transaction under the same basename.
* lnworker: fix path_finder access
* qt send tab: when clicking \"Max\", show tooltip explaining max amt
* qt: cpfp: fix handling \"no dynamic fee estimates\"
* swaps: fix off-by-one sanity check
* qt coins tab: Ctrl+F now searches the whole prevout string
* Qt MyTreeView: rm usages of Qt.UserRole, use explicit roles instead
* (trivial) rm dead code
* tests: add test for payto command
* android build: update p4a/buildozer to latest upstream
* kivy: update wizard message: pin->password
* kivy: implement freezing channels
* gui messages: mv one more message to messages.py
* kivy: make ActionDropdown disappear when an action is selected
* kivy: use ActionDropdown in ChannelDetailsPopup
* kivy tx dialog: abstract away ActionDropdown, mv into its own file
* kivy tx dialog: dscancel btn text was too long
* kivy bump fee dialog: handle no dynamic fee estimates
* Avoid hiding QR codes with help_text
* appimage: update libudev-dev package
* commands, input sanitization: allow \'max\' amounts only in specific contexts (payto, paytomany)
* config: (trivial) add some type hints and rm unused variable
* kivy swaps: handle no dynamic fee estimates
* logging: don\'t lose log messages during early startup
* logging: (move-only) move module level code to near the end
* wallet: make sure we don\'t create zero input txs
* logging: handle \"cannot delete old logfile\" error
* fix running with --offline
* appimage build: bundle dependencies of Qt xcb plugin
* lnrouter: add hint timestamp
* lnrouter: remove blacklist boolean
* dnssec: trivial clean-up
* Prevent spaces from causing issues in make_osx (#7191)
* mnemonic: make sure newly generated seeds are not valid as bip39
* lnpeer test: payment now succeeds in two payments
* lnrouter: penalty code simplification
* lnrouter+lnworker: use liquidity hints
* lnrouter tests: add another channel to graph
* reorganize with_lock decorator
* Fri Apr 09 2021 marecAATTdetebe.org- Update to version 4.1.2:
* prepare release 4.1.2
* fix #7190
* android Makefile: do not try to deploy and run
* qt update notifications: add another key for redundancy
* android: update app icon; use \"adaptive icons\" on API 26+
* lnrater: use network.asyncio_loop instead of asyncio.get_event_loop()
* fix #7185
* android build: only build one apk for debug builds
* icons: clean up electrum svg icons
* add electrum svg icons
* new icons for android
* wizard: let UserCancelled propagate out in hw wallet flow
* qt init: move Ctrl-C handling earlier
* kivy: implement freezing addresses
* lnutil: add rationale for MIN_FUNDING_SAT
* qt channels dialog: handle funding tx missing
* Show txid in text GUI
* add missing release notes for old backports
* qt: fix some widget parenting issues
* qt init: rm gui.close() method
* qt init: shutdown properly if last open window was a wizard
* qt: even more clean-up before exiting
* android backups: fix missing parameter
* qt init: more clean-up for system tray
* qt init: (trivial) refactor system tray
* lnpeer.channel_establishment_flow: check funding_sat in bounds earlier
* qt init: don\'t catch BaseException unless there is good reason
* qt gui: some more clean-up when exiting
* release script: add hash comparison step before uploading
* Tue Apr 06 2021 marecAATTdetebe.org- Update to version 4.1.1:
* prepare release 4.1.1
* add contrib/release.sh script
* Qt swap dialog: do not call update() from the asyncio thread. Fixes some segfaults that were triggered by opening the dialog
* fix #7160
* qt tx dialog: handle fiat fee for zero-fee tx
* fix #7164
* fix #7165
* locale/i18n: set language as early as possible
* i18n: don\'t translate empty string
* android build: update kivy
* windows build: (trivial) convert whitespaces in unsign.sh
* Wed Mar 31 2021 marecAATTdetebe.org- Update to version 4.1.0:
* build: clarify which locale files are included
* gitignore: add some macOS specific stuff
* Do not display the warning about static backups in init_lightning. It is not useful to display the same message twice.
* make init_lightning callable at runtime, without reloading the wallet
* kivy: remove dead code (follow-up 64a931f21e)
* history_list: use from_timestamp and to_timestamp in summary
* kivy: remove unnecessary friction in _enable_lightning
* wallet: change init_lightning to sometimes create deterministic LN keys
* keystore: encapsulate \"can_have_deterministic_lightning_xprv\" logic
* wallet_db: put \'seed_type\' into keystores (incl db upgrade)
* add back \"lightning is experimental\" warning text
* tests: add test for keystore.get_lightning_xprv
* (minor) rephrasing
* final release notes
* lnworker: change crypto for onchain static backups
* update locale
* wallet: (minor) fix filtering history by year
* fix capital gains
* more release notes
* (minor) release notes
* update release notes
* detect conflicting channel backups, add warning before channel creation
* lnpeer: log both sent and recv msgs; use pubkey for incoming transports
* lnworker: fix another peer-handling race
* lnworker: handle multiple transports with same remote node id
* regtest backups: test both cases (onchain and imported)
* lnchannel: get_state_for_GUI minor fix
* fix remove_channel_backup (typo)
* lnrater: don\'t suggest nodes we have a channel backup with
* fix privkey in request_force_close_from_backup
* lnworker.num_sats_can_send should not return negative values
* qt channels list: hide unnamed column from \"Copy\" context menu
* prepare release notes for 4.1.0
* swaps: (fix) for forward swaps, correctly consider num_sats_can_receive
* swaps: revise send/recv amount calculation
* Qt: minor changes to open channel dialog
* (minor) rm confusing adjective
* Qt: invert trampoline checkbox in settings dialog. Share the help message with Kivy
* Qt: remove the \'local watchtower\' option from GUI.
* qt: tooltip formatting function
* add trampoline.hodlister.co
* AppImage build: Include libxcb into the image
* wallet.add_transaction: prevent channel backup from being added twice
* kivy: minor GUI improvements
* sdist build: let pip install put ~everything from tar.gz to site-packages
* sdist build: (minor) exclude more stuff from tar.gz, rm git clean log
* cosigner_pool: fix #7134
* bitcoin.address_to_scripthash: add net param (#7143)
* submarine swaps: use num_sats_can_receive_no_mpp, to prevent funds being locked
* hardcoded trampoline nodes: replace IPs with domain names
* add another DNS seed
* lnworker: guess routing fee in num_sats_can_send
* lnpeer: if close_channel times out, check unconfirmed_closing_txid before raising an exception
* commands: clean-up inject_fees cmd
* check_password_for_directory: safeguards
* fix wrong call to request_force_close_from_backup, make it private
* lnchannel: rename force_close_detected -> closing_detected, use it only if state is OPEN
* (minor) fix GUI if channel is force closing
* kivy: if password is unified, allow user to reset pin code
* commands: fix signtransaction cmd when used with \"privkey\" arg
* wallet: implement get_utxos at specific block height
* (minor) follow-up ed6eea9161e3600e33a4c173d252475f3b108d6c
* Add \'has_onchain_backup\' to channel storage, to fix the displayed icon.
* kivy: make sure there is only one resume dialog
* kivy: count open channels
* Change warning shown on first channel creation
* minor: fix channel backup icon
* qt: use the same \'nocloud\' icon in wallet information
* channels list: group icons to save space
* qt channels list: add \"features\" column with icons (e.g. trampoline)
* qt: change backup icon, add tooltip
* Android: unify password as soon as we know it is possible
* (trivial) just add some TODOs
* tests: rename TestSuccess(Exception) to SuccessfulTest
* Allow user to remove onchain backups.
* kivy: channels list improvements
* channels_list: use icon to tell apart channels from backups
* lnchannel: add pseudo-state force_close_detected for GUI
* lnwatcher: trigger \'verified\' callback with the main wallet object.
* set initial trampoline fee level to 1 unless we are testing
* (temporary) disable e2e and dual trampoline if first trampoline is ACINQ
* fix direct payment to trampoline node
* (minor) fix mutable default value
* wallet: store wanted_height in future_tx, instead of remaining blocks
* lntransport: optimise read_messages implementation
* tests: rework lntransport test a bit
* kivy: add option to request force-close
* Minor style changes
* Rename excluce to exclude (#7121)
* qt ChannelsList: fix opening channel with \"max\" amount
* dependencies: bump min aiorpcx, and enforce at runtime
* lnworker: filter active channels in create_routes_for_payment
* pay_to_route: raise PaymentFailure in case of dropped peer, so that we reset payment status
* lnwatcher.try_redeem: output log only the first time a tx is seen
* lnwatcher: try_redeem must return if tx is None
* follow-up d8352f1a0acbbaa4c4b8a995414ea2eb3fd69dba
* lnpeer: ignore unknown \'odd\' type messages
* lnworker: nicer logs/error msgs for payment failure
* Qt: clarify use_gossip checkbox text
* channels_list: improve menu for backups
* channels_list: show backup text in the state column. fix missing import in previous commit.
* On Android, if channels are not recoverable, display channel backup when a new channel is created. Remove the \'android_backups\' setting, which was unpractical.
* bump version number. initial release notes for version 4.1.0
* Deterministic NodeID: - use_recoverable_channel is a user setting, available only in standard wallets with a \'segwit\' seed_type - if enabled, \'lightning_xprv\' is derived from seed - otherwise, wallets use the existing \'lightning_privkey2\'
* lnpeer: send update_fee if channel was never used (workaround eclair issue 1730)
* lnpeer: add sanity checks in channel open flow re ln dummy output
* bitbox02: bump dependency to 5.2.0
* qt: use \'local\' icon for future transactions
* forwarding: temp chan fail on insufficient funds
* lnworker: use booleans for enable_htlc_settle, enable_htlc_forwarding
* test_backup: sleep is not needed anymore
* daemon: change stop() to use events, instead of polling
* commands: make stop() CLI cmd wait for daemon to stop
* test_backup: check onchain balance
* increase width of tx dialog, to have one line per input
* BIP-0350: use bech32m for witness version 1+ addresses
* tests: add missing test vectors from BIP-0173 (bech32)
* inspect_tx_candidate: tx output must be of address type
* request_force_close: close and reopen existing peer connection, because channel_reestablish cannot be sent twice in the same session
* channels_with_funds: self._channels -> self.channels
* network: trigger \'network_updated\' as soon as set_parameters finishes
* qt channels_list: separate on_success handlers for close_channel and request_force_close
* lnworker: merge request_force_close and request_remote_force_close
* mpp_split: use single nodes for mpp payments over trampoline
* tests: re bolt11 tests, also check invoice str in test_roundtrip
* lnworker: minor clean-up, fix typo
* lnchannel: verify sig of remote chanupd (for inc edge of direct chan)
* fix: add request_force_close method
* (trivial) lnbackups -> lnworker
* kivy: show channel backup before force-close
* kivy: show channel backup capacity
* ln gossip: run sig checks in a thread
* ln gossip: make sure all signatures are verified
* lnworker: (trivial) split handle_error_code_from_failed_htlc method
* fix regression from 652d10aa5f810d6db00ce4870ea7c779f9ff35a4
* channel_db: (fix) asyncio.Event.set() is not thread-safe
* channel backups: display status from lnworker instead of channel state
* kivy server selection: don\'t hide \':t\' protocol suffix
* (minor) word wrap qt tooltip
* (trivial) rm debugging code
* Qt: add \"save backup\" checkbox to force-close dialog
* Qt: add option to request force close of channel
* follow-up previous commit
* kivy: unify fee dialogs - confirm_tx_dialog and bump_fee_dialog inherit from FeeSliderDialog - changing the slider method does not require an extra popup
* remove newlines in get_tx_fee_warning, it does not render well on kivy
* binaries: bump python version
* appimage build: adapt to new PyQt (5.15.3+) layout
* rerun freeze_packages
* contrib: freeze_packages should pin latest pip/etc if possible
* Kivy: Show fee dialog before opening a new channel. Remove fee and rbf from settings, as they are now always proposed
* lnpeer: add comments to process_unfulfilled_htlc
* use mktx_for_open_channel in commands module. fix indentation
* qt receive tab: change \"Expires after\" label and help text
* add channel backups to result returned by list_channels
* qt lightning_tx_dialog: use historical fx rate for fiat amounts
* network.best_effort_reliable: use curio APIs instead of asyncio
* show capacity of channel backups in GUI
* commands: fix list_requests
* wallet: factor out \"what key to use for invoice\"
* follow-up 90b228de839d6474f6d23322cd2a80e1da73a254
* follow-up 90b228de839d6474f6d23322cd2a80e1da73a254
* add comments about ChannelBackup fields
* add request_force_close command to CLI add regtest for channel backup
* fix dict value assignment bug in import_channel_backup. In request_force_close, use Taskgroup with wait=any
* (formatting) lnsweep indentation
* fix wallet get_full_history: add onchain tx for channels not opened by us
* tests: add test for prev
* lnworker: try to fail pending HTLCs when shutting down
* lnhtlc: (trivial) rename method
* lnpeer.maybe_forward_htlc: add FIXME
* util: document CallbackManager behaviour
* add TODO, rename check_received_mpp_htlc
* mpp_split: add penalty for exhaustion of channels
* Qt: rm gossip menu item: already available in toolbar, and channel_db is not always present
* test_multipart_payment_with_timeout: give extra time for second HTLC to timeout before next test
* lnpeer: try to fix tests
* crypto: add comment about ripemd.py
* tests: fix tearDown() issue in test_lnrouter.py
* test_lnpeer: use 2s MPP_TIMEOUT, and split test_multipart_payment_with_timeout
* tests: maybe fix tearDown() issue in test_storage_upgrade.py
* network.stop: clean-up
* {daemon,wallet}|.stop: small clean-up
* kivy crash_reporter: a bit more logging
* follow-up prev: too much copy-paste
* crypto: add chacha20_decrypt; unused for now
* test_lnpeer: add test for mpp_timeout
* crash reports: fix get_git_version for kivy
* follow-up 652d10aa5f810d6db00ce4870ea7c779f9ff35a4
* kivy: fix GridLayout orientations all over
* Revert \"lnworker: simplify request_force_close_from_backup\"
* Appimage build: update git=1:2.7.4-0ubuntu1.10 15b5d9d (#7091)
* wallet: (trivial) use kwargs for get_tx_item_fiat
* daemon/wallet/network: make stop() methods async
* lnworker: simplify request_force_close_from_backup
* Remove LNBackups object: no longer needed since LNWorker is instantiated by default.
* lnworker: set request status after LN payment
* tests: test payreq status after getting paid via LN
* test_lnpeer: (trivial) prepare_invoice to return both LnAddr and str
* lnaddr: add get_features method
* Use new value of option_trampoline_routing flag, add it to our invoices. Keep supporting old value for Eclair/Phoenix. Do not add trampoline_routing_hints in invoices.
* lnpeer: (trivial) log htlc in on_update_add_htlc
* follow-up prev commit
* lnworker: fix amount in htlc_log after mpp bucket failure
* rm fixme; it was for intermediate stage, between commits.
* windows build: skip building pyinstaller if already there
* windows build: minor clean-up
* windows build: cache pip downloads
* windows build: separate 32/64 bit build caches
* windows binaries: update pyinstaller to 4.2
* android build: update kivy, and python
* lnworker.pay_to_node: re overpayment, raise before actually it happens
* test_lnpeer: add missing parameter in pay_to_route
* trampoline: do not add node in trampoline hints if it already is the last trampoline of the route
* lnworker: fix amount_inflight. (amount with routing fees were used on htlc failures)
* lnpeer: fix error code in logs
* lnworker: add assert amount_inflight <= amount_to_pay
* synchronizer: (trivial) add comment
* synchronizer: fix rare race where synchronizer could get stuck
* python 3.6 compat: asyncio.Task.set_name was added in 3.8
* fix trampoline forwarding: add_received_htlc must be indexed by payment_secret
* test_lnpeer: variables must be declared in MockLNWallet.__init__
* lnpeer: increase max_accepted_htlcs (5->30)
* remove trampoline and forwarding regtests, as they are covered by unittests
* test_lnpeer: add test for trampoline
* trampoline forwarding: return UNKNOWN_NEXT_PEER if we cannot find a route
* follow-up prev commit
* follow-up previous commit (this was for testing)
* use two trampolines: fix blacklisting, use local variables for trampoline_fee_level and use_two_trampolines
* follow-up prev
* network: close interfaces more aggressively (abort after 2 seconds)
* use functools.wraps() for some wrappers
* fix wallet.clear_history()
* Receive MPP: Use persisted payment status to decide whether to fulfill HTLCs. Without this commit, we might timeout a part of a payment if the client is shut down before all parts are fulfilled.
* wallet: don\'t put partial tx as UTXO into psbt
* lnutil: (trivial) add ShortChannelID.from_str() method
* Trampoline forwarding: - fix regression in create_routes: fwd_trampoline_onion was not added to the tuple - fix onion structure for e2e - maybe_fulfill_htlc: check the mpp_status of the outer onion, return trampoline_onion to be forwarded
* trampoline MPP: fix total_msat in trampoline onion, and bucketing
* lnworker: move buckets logic inside first branch of if statement (refactoring commit)
* lnhtlc: fix deadlock
* lnworker.pay_to_node: (fix) pass correct total_msat to pay_to_route
* kivy: InvoiceDialog: make LN invoice QR code scannable
* kivy: SendScreen: reliably show LN payment attempt progress for invoice
* fix #7078
* lnrouter.get_distances: fix exception due to rare race
* add unit test for basic mpp
* fix route for non-trampoline MPP
* qt channels_list: use monospace font for channel capacity
* qt: update all tabs when base_unit changes
* qt swap_dialog: use a single button to toggle direction
* (minor) fix typos and indentation
* lnpeer: more detailed logging in maybe_fulfill_htlc
* test_lnpeer: add test: multihop payment that routes around failure
* lnworker: run create_route_for_payment end-to-end, incl private edges
* lnutil: turn global forwarding fee params into Channel attributes
* Trampoline MPP aggregation: - trampoline node is the final recipient of MPP - each trampoline receives a bucket of HTLCs - if a HTLC from a bucket fails, wait for the entire bucket to fail - move trampoline route and onion code into trampoline module
* maybe_fulfill_htlc: add failure reason to logs
* lnworker: amount passed in HtlcLog must be without fees
* _calc_routing_hints_for_invoice: incl max 15 chans to avoid qr overflow
* _calc_routing_hints_for_invoice: also incl chans < invoice amount
* lnworker: fix handle_error_code_from_failed_htlc for private channels
* qt/kivy: lightning_tx_dialog: show LN invoice
* android build: (trivial) build arm64 apk first
* follow-up prev
* kivy channel dialog: fix unit of displayed feerate
* qt/kivy ChannelsList: if node alias is unknown, display node id
* qt ChannelsList: (trivial) format_fields should not know column order
* synchronizer/verifier: ensure fairness between wallets (follow-up)
* bech32: another around 10% speedup for bech32_decode
* bech32: around 5% speedup for bech32_decode
* lnaddr: 15x speedup for lndecode
* tests: fix test_lnpeer.test_payment_race
* Qt: fix running GUI offline
* test_payment_race: increase delay
* revert \'keep invoice INFLIGHT\', check HTLCs before payment attempt
* fix test_lnpeer (follow-up prev commit)
* lnworker: keep invoice status INFLIGHT as long as HTLCs are inflight
* qt channels dialog: fix for channel backups
* logging: eliminate \"fee_estimates\" log spam
* MPP receive: allow payer to retry after mpp timeout
* tx dialog: uniform high fee warnings between GUIs
* follow-up prev: some clean-up
* qt tx dialog: also display fiat amounts
* qt tx dialog: add legend for input/output colouring
* qt bump fee: rename \"Final\" checkbox to \"Keep Replace-By-Fee enabled\"
* qt bump fee: add \"advanced\" button, allow choosing strategy
* wallet.bump_fee: add new strategy: decrease payment amounts
* qt: move RBF dialog out of main_window.py into its own file
* lnpeer.maybe_fulfill_htlc: fix error case FINAL_INCORRECT_HTLC_AMOUNT
* lnpeer.maybe_fulfill_htlc: follow BOLTs re some errors
* mpp_split: tweak split parameters
* mpp_split: undo side effect in tearDown
* lnpeer: MPP recv: only fulfill htlc if amt sum exact-matches total_msat
* lnpeer: MPP receive: require payment_secret for each htlc
* lnworker/lnpeer: add some type hints, force some kwargs
* (trivial) wallet: fix over-indentation
* create_trampoline_route: check that we can pay the amount and the fees, and that the route is sane
* (trivial) lnrouter: fix type of TrampolineEdge.short_channel_id
* lnworker: add fees from private path to the amount passed to find_route. (see #7050)
* Refactor find_route_for_payment - remove duplicated code - rename variable names to be consistent with the \'path\', \'route\' terminology - compute private route before route
* calc_hops_data: total_msat should be optional
* lnworker: add \"endurance\" ACINQ testnet node as hardcoded trampoline
* tests: fix thinko in ElectrumTestCase base class
* tests: try to eliminate random failures from mpp_split tests
* synchronizer: better handle history-status mismatch
* qrscanner: nicer error messages
* kivy: add app.scan_qr_non_android
* qt: update swap button together with can_send
* mpp_split: fix tests for python versions < 3.8
* scripts: add script that broadcasts tx to lots of servers
* interface.get_history: enforce sorted order of heights
* DeviceMgr: don\'t mark client as failing if create_client() is None
* lnutil.LnFeatures: update LN_FEATURES_IMPLEMENTED
* lnutil.LnFeatures: update context for \"option_support_large_channel\"
* lnutil.LnFeatures: impl and use \"supports\" method for feature-bit-tests
* MPP: can_send/can_receive is now the sum, no longer the max
* enable MPP with trampoline
* follow-up prev commit
* MPP: refactor code
* lnworker: use suggest_splits for multiple routes
* lnonion: add total_msat to onion payment data
* mpp_split: implement splitting logic
* wizard: focus password field (fix #7048)
* network.py: update bitcoin core error msg whitelist
* lnpeer: remove recursve call in maybe_fulfill_htlc
* fix travis builds (update openssl)
* Add back the \'to_height\' and \'from_height\' to onchain_history command Exclude unconfirmed transactions from --to_height and include them into --from_height. The reason being that an unconfirmed transaction will end up eventually into the last block which most of the time will be higher than --from_height
* lnworker: move NoPathFound to lnutil
* kivy: receive request: fix RefLabel for \"Address\" so it can be exported
* interface: \"block.headers\": nicer error if server uses too low \'max\'
* minor fix following method rename
* kivy: show routing options explicitly
* lnrater: fix #6764
* invoices: validate \'amount\' not to be out-of-bounds
* util: assert that Decimal precision is sufficient
* bip32: add new test vectors from BIP
* minor: fix exception
* kivy and qt: adapt open_channel dialogs to trampoline
* Trampoline routing: - add support for trampoline forwarding - add regtest with trampoline payment
* Trampoline routing. - trampoline is enabled by default in config, to prevent download of `gossip_db`. (if disabled, `gossip_db` will be downloaded, regardless of the existence of channels) - if trampoline is enabled: - the wallet can only open channels with trampoline nodes - already-existing channels with non-trampoline nodes are frozen for sending. - there are two types of trampoline payments: legacy and end-to-end (e2e). - we decide to perform legacy or e2e based on the invoice: - we use trampoline_routing_opt in features to detect Eclair and Phoenix invoices - we use trampoline_routing_hints to detect Electrum invoices - when trying a legacy payment, we add a second trampoline to the path to preserve privacy. (we fall back to a single trampoline if the payment fails for all trampolines) - the trampoline list is hardcoded, it will remain so until `trampoline_routing_opt` feature flag is in INIT. - there are currently only two nodes in the hardcoded list, it would be nice to have more. - similar to Phoenix, we find the fee/cltv by trial-and-error. - if there is a second trampoline in the path, we use the same fee for both. - the final spec should add fee info in error messages, so we will be able to fine-tune fees
* kivy: show node alias in channels dialog. Rename the menu back to \'Channels\'
* windows build: update gnupg(2.2.19-3ubuntu2.1) (#7030)
* wallet: follow-up b080df9cff55675935ca3649c6aaa01e8e667b37
* open_channel_coroutine: do not timeout on sign_transaction. fixes #7027
* wallet.bump_fee: (fix) method2 was bumping too much if output was rm-ed
* wallet.bump_fee: (fix) make sure input signatures are removed
* synchronizer: ensure fairness between wallets
* ledger: bump min btchip-python (0.1.30->0.1.32)
* wallet: minor clean-up of tx.set_rbf() calls
* wallet.bump_fee: (fix) make sure all inputs have same sequence number
* ledger: give clear error that old HW.1 cannot send to bech32 address
* split code in htlc_switch: - raise OnionRoutingFailure whenever we want to fail a htlc - catch that exception in htlc_switch - this will avoid code duplication in the case of trampoline
* lntransport: CancelledError needs priority over LPConnClosed
* make_unsigned_request: set network for testnet
* Separate pay_to_node logic from pay_invoice: - pay_to_node will be needed to forward trampoline onions. - pay_to_node either is successful or raises - pay_invoice handles invoice status
* handle_error_from_failed_htlc: blacklist channel if cannot decode payload
* encapsulate get_routing_info in lnaddr
* rename lnworker._pay to pay_invoice, call it directly from GUIs
* Fix ledger sign message (#7004)
* lnpeer: fix timed out mpp
* minor: fix typo
* cleanup, follow-up f28a2aae73b8a4a2067f41d2f69809e2b1ec6a20
* Qt: fix deprecation warning
* Reorganize code so that we can send Multi Part Payments: - LNWorker is notified about htlc events and creates payment events. - LNWorker._pay is a while loop that calls create_routes_from_invoice. - create_route_from_invoices should decide whether to split the payment, using graph knowledge and feedback from previous attempts (not in this commit) - data structures for payment logs are simplified into a single type, HtlcLog
* fix tests (follow-up previous commit)
* follow-up c0bf9b4509cfdeace824a9054d9c90449ef46ad6
* basic_mpp: receive multi-part payments
* LNWorker: do not save PR_INFLIGHT status, detect it on startup instead
* paymentrequest: check network on PaymentRequest parse
* add function to determine script-type for all inputs in a psbt (#6984)
* build-wine/README.md: add comment about needing recent docker version
* Fix windows build(travis) (#6981)
* lnworker/swaps: add \'_sat\' suffix to arg names and force kwargs
* follow-up prev: fix units when calling lnworker.create_invoice: msat/sat
* PaymentInfo: use msat precision
* exchange_rate: (fix) rm need to restart app to disable FX rates
* windows binaries: bump wine version
* wallet: auto-freeze small unconfirmed UTXOs
* lnpeer.htlc_switch: (bugfix) don\'t fulfill htlc until add is irrevocable
* tests: lnpeer.htlc_switch: don\'t fulfill htlc until add is irrevocable
* rm unused parameter in maybe_fulfill_htlc
* lnpeer: fix flen in INIT
* qt network dialog: show protocol (if \":t\") for servers in NodesList
* qt main_window: add error handling to show_bitcoin_paper
* interface.get_transaction: stricter sanitisation
* util.is_hex_str: forbid whitespaces
* Fix error of showing bitcoin paper(testnet)
* Qt: download and show bitcoin whitepaper. fixes #6970
* Qt: set need_update on payment received (minor fix)
* kivy: disable gossip button is channel_db is None
* Qt: fix invoices refresh (follow-up 94708f63e4f237f5f4c143137de797f9c0ccc08e)
* add \'view log\' action for LN payments in tx history
* qt block explorer: allow custom URL
* commands: add \'freeze_utxo\' cmd; to expose this to CLI/RPC
* wallet: use lock when modifying frozen_{addresses,coins}
* wallet.remove_transaction: also rm dependent/child txs
* kivy: rename \'Channels\' dialog to \'Lightning\'
* kivy: simplify swaps dialog
* qt: fix handling BIP21 URI from e.g. website on macOS
* network: fix not retrying main interface in some cases
* interface.got_disconnected: change from Future to Event
* (trivial) kivy: add missing import
* qt send: handle simultaneous NoDynamicFeeEstimates+NotEnoughFunds
* kivy: add confirm_tx_dialog, similar to qt
* qt: fix PayToEdit.parse_amount (#6951)
* formatting (rm blank spaces)
* fee-slider: fix dialog crashes for float pos values
* swaps: add swaps to android
* fix #6341
* set the same features in LNWallet and LNBackups. fixes #6943
* bump_dee and dscancel: call tx.estimated_size() after add_input_info(). This is a workaround, see the FIXME. PartialTxInput.is_segwit() should return the correct value, or raise if information is missing.
* rbf_dialog: show error in the dialog window
* factorize code for bumb_fee and dscancel dialogs. Disable ok button if fee_rate is None
* upfront_shutdown_script: fix ChannelBackup constructor
* lnpeer: initialize new channel storage with lnworker db
* fix regtest/start_bitcoind.sh: createwallet needs to be called
* fix #6674: raise exceptions if dscancel or cpfp create dust or negative output.
* check_password_for_directory: skip non-files
* Kivy: use the same password for all wallets
* kivy wizard: verify seed extension
* kivy: fix confirm_seed_dialog (broken in 77e0d3745e990e97ddbac5550e399f3e695af788)
* remove broken payment requests. fixes #6350
* kivy: minor fix (follow-up 94708f63e4f237f5f4c143137de797f9c0ccc08e)
* Wizard: do not ask seed type, default to segwit
* invoices and requests: rm 3 seconds delay
* auto-remove paid invoices from GUI - delay 3 seconds in GUI - kivy remove \'delete\' buttons from send/receive screens
* add unconfirmed state for onchain invoices and requests
* Qt: rename incoming/outgoing payments to send/receive queue. fixes #6711
* windows binaries: bump python version (3.7.9->3.8.7)
* follow-up previous commit (variable name)
* pass blacklist to lnrouter.find_route, so that lnrouter is stateless (see #6778)
* fix tests (follow-up 3f5c1a017120f1e7a0cde83bb737779a5bb9f418)
* simplify lnrouter API
* upfront_shutdown_script: rm dead code, fix test
* lnpeer: remove unused imports, code cleanup
* lnpeer: add unit test for upfront shutdown script
* scripts: add Lightning feature analysis script
* lnrater: suggest nodes compatible with our LN features
* lnworker: enable upfront shutdown script
* lnpeer: implement upfront shutdown script logic
* wallet_db: migrate to upfront shutdown scripts
* lnwire: add upfront shutdown script tlvs
* lnpeer: await on_message handlers to raise exceptions
* hw plugins: log exception at import time (but only if interesting)
* pass daemon to Commands instance in qt console. fixes #6926
* ChannelDB: avoid duplicate (host,port) entries in ChannelDB._addresses
* ChannelDB: fix get_last_good_address
* plugins/coldcard/coldcard.py: include derivation path for each part of multisig (for v3.2.1 of firmware)
* plugins/coldcard/README.md: updates and cleanup
* rerun freeze_packages
* requirements: don\'t use dnspython 2.1 as it installs poetry at build-time
* binaries: update bundled PyQt version to 5.15.2
* windows binaries: update libusb to 1.0.24
* windows binaries: update pyinstaller to 4.1
* storage: speed up write() by using faster compression setting
* storage/db: use faster JSON encoder settings when wallet is encrypted
* qt send tab: mention frozen balance if \"not enough funds\" in more cases
* qt BlockingWaitingDialog: try harder to get label drawn (refresh bug)
* qt tx dialog: use WaitingDialog for network requests in __init__
* qt tx dialog: fix visual artifact when opening (widget parenting issue)
* lnpeer: fix a comment
* kivy wizard: checkum bip39 seeds, because the virtual keyboard imposes the English wordlist
* wizard: call on_restore_seed, on_restore_bip39 through self.run. fixes #6895
* fix #4326
* fix #6605
* fix reserve_sat in local_config. see #6896
* lnchannel.available_to_spend: return zero if frozen or not active. Without this, the channel details window displays can_send/can_receive values that are inconsistent with the main window
* Require gossip_queries in LNWallet (follow-up f83d2d9fee160e7b5475d397672559fc8f947470) - workaround lnd bug https://github.com/lightningnetwork/lnd/issues/3651 - also reduces bandwidth usage
* channel backups: fix exception in raised after channel is force closed
* add paste button to qt payto_e. fixes #6878
* qt: follow-up passing-around-config
* dns hacks: use a default timeout of 30 sec for dns requests
* Move the part of process_gossip that requires access to channel_db into in LNGossip.
* wallet: fix bump_fee and dscancel for \"not all inputs ismine\" case
* qt: move window.get{Open,Save}FileName to util
* qt: rm some usages of get_parent_main_window
* lnworker: follow-up 89a14996ced2463379e3d7b252b48a852762cdc9
* kivy: show exception raised by lnworker.pay. fixes #6495
* add method get_node_alias to lnworker
* Correct errors in command \'serialize(deserialize(pbst))\'
* Sat Dec 19 2020 marecAATTdetebe.org- Update to version 4.0.9:
* prepare release 4.0.9
* wallet: (fix) bump_fee sometimes created invalid tx that spent orig out
* travis: disable macOS build
* channels_list: display node_id if node_alias is not available
* convert_version_24: loop over list instead of dict items (see #6863 and #6349)
* fix #6859: height is must be passed to OnchainInvoice constructor
* lnchannel: reflect frozen amounts and disconnected channels
* Thu Dec 17 2020 marecAATTdetebe.org- Update to version 4.0.8:
* prepare release 4.0.8
* wallet_db: impl convert_version_33: put \'height\' field into invoices
* swaps: fix normal amount formulas
* swaps: limit forward amount to receivable amount on lightning
* swaps: disable button if no channel present
* qt swap dialog: attempt at clearer logic (at the cost of more lines)
* kivy: move \"lightning\" (gossip) btn inside \"channels\" dialog
* kivy: allow address reuse in imported wallets. (fix #6852)
* wallet: use height to determine request status (similar to outgoing invoices)
* synchronizer: request missing txs for addresses in random order
* network: increase MOST_RELAXED default timeout to 10 minutes
* kivy: initialize app.android_backups from config, and show error message if save_backup raises an exception
* lnworker: remove channel if it was not saved successfully after creation
* network: when switching servers, don\'t wait for old interface to close
* build: don\'t allow setuptools to sneakily install build-time deps
* Save height in invoices, use it to determine invoice status (fixes #6609)
* tweak electrum-env script
* transaction: put full derivation paths into PSBT by default
* keystore: ignore fingerprint for pubkeys in psbt, try to match all keys
* cleanup, remove if statement (follow-up 13b05f64e6a89b90b80a470538798c116f968170)
* mnemonic: tighten seed_type check for old \"2fa\" type seeds
* test_wallet_vertical: add test case for pre-2.7 \"2fa\" seed
* kivy: fix some resource path issues
* kivy: dismiss wizard dialog before calling go_back
* trustedcoin: fix two-step wallet creation (offline->online)
* appimage build: build most of our python dependencies from source
* rerun freeze_packages
* also support uppercase bip21 URIs
* Wed Dec 09 2020 marecAATTdetebe.org- Update to version 4.0.7:
* appimage: update package in dockerfile
* update locale
* update locale
* prepare 4.0.7
* qt StatusBarButton: use custom theme for macOS if using default theme
* qt StatusBarButton: use QToolButton instead of QPushButton
* kivy: add on_dismiss method to crash reporter dialog
* kivy: handle lightning invoices on wallets that do not have lightning. fix #6371
* keystore: handle unusual derivation paths in PSBT
* dnspython: fix deprecation warnings when using dnspython 2.0
* qt swap dialog: fix enabling OK button
* kivy: ensure WizardDialog.on_release is not executed more than once (see #6822)
* gitignore: add some more build artifacts
* update block header checkpoints
* rerun freeze_packages
* dependencies: rm python-ecdsa
* dependencies: support and require dnspython 2.0, rm monkey patches
* Qt: keep pending_invoice logic in main_window (follow-up 56579c2, fixes #5829)
* cli/rpc: fix \'sweep\' command
* network: set _loop_thread again as it helps debugging
* kivy: remove redundant declaration
* plugins: remove \'on_new_window\' hook
* mnemonic.make_seed: de-duplicate num_bits default magic number
* kivy: (fix) clicking \"max\" to send would raise for empty wallet
* kivy: fix open channel with \"max\" amt
* kivy: wizard does not need Factory
* Added new brazillian exchange to exchange rates plugin: Walltime.
* Use os._exit() for FORKed child browser opener process. Fixes #6404.
* follow-up c66c54a (simplification)
* revert a9fc440, use Clock.schedule_interval to set address. Fixes #6810 and #6817
* kivy: dismiss invoice_dialog before delete (fix #6816)
* kivy: do not save invoice until payment is confirmed by user. add confirmation screen for lightning payments.
* kivy screens: initialize is_max (fix #6813)
* Qt: do not save pending invoice before the user has confirmed payment
* kivy: disable send amount button if lightning invoice has an amount, and fix #6526
* fix #4503: in kivy, catch NotEnoughFunds raised on open channel.
* fix #4561
* Sat Dec 05 2020 marecAATTdetebe.org- Update to version 4.0.6:
* prepare release 4.0.6
* follow-up 427779350f92c4fd19d731474db3ec0db1d848c1
* remove unused declaration
* kivy wizard: if wallet creation is aborted, show message in the wizard and stop the GUI. (see #6796)
* kivy: split on_wizard_complete in two methods
* swaps: fix infinite recursion for max button
* kivy: save password after wallet creation
* kivy wizard: do call run() when password dialog is dismissed, it modifies the stack. (see #6582)
* kivy: do not use an event to call on_wizard_complete, initialize self.app in constructor
* rm dead code: first branch of the if never evaluated because WalletDB is called with manual_upgrades=False
* kivy: remove dead code (installwizard waiting_dialog)
* add debug option to avoid retyping the seed in kivy
* kivy: storage is already decrypted in on_open_wallet
* kivy: remove unused keyboard binding
* kivy: cleanup unused code
* fix #6351: set screen attribute right after screen is loaded
* Trustedcoin: call wizard.terminate with aborted set to True in various failure conditions (see #4496)
* Qt installwizard: raise UserCancelled if user clicks cancel (the wizard was hanging instead of terminating)
* fix \'max\' button in Kivy (fix #6169)
* lnrater: fix KeyError for unknown node
* fix #6757: truncate invoice description to 639 bytes
* kivy: do not display internal id of onchain invoice, show address instead
* Setconfig: set rpc_user rpc_password in daemon (fix #6762). Do not disable auth if password is an empty string.
* qt main_window: (trivial) fix error-handling for open_channel
* lnworker: better indentation (refactoring only)
* wallet: fix dscancel for \"not all inputs ismine\" case
* Move get_channel_info and get_channel_policy code, so that routing hints can be created without access to a ChannelDB instance.
* qt send tab: (regression) fix handling multiline fmt for single line
* lnrouter: nicer repr for PathEdge and RouteEdge
* lnaddr: fix decoding of min_final_cltv_expiry
* Fix get_running_loop (python<3.7) (#6765)
* Fix daemon being treated as a function (#6771)
* bitbox02: more robust account keypath
* add mempool.emzy.de
* qt send tab: \"max\" btn should not raise NotEnoughFunds due to fees
* mac build: call `git describe` after `git submodule update`
* convert Qt flags to int (fix Qt DeprecationWarning)
* Update contact_list.py
* fix typo
* Rename maybe_init_lightning(). Call load_data() from there
* exchange_rate: log full traceback in case of unexpected exception
* qt history list: fix #6746
* Thu Nov 19 2020 marecAATTdetebe.org- Update to version 4.0.5:
* android build: bump targetSdkVersion to 29 (follow-up)
* update locale submodule
* prepare release 4.0.5
* qt receive tab: rename \"create onchain\" btn to \"New Address\"
* ledger: suppress traceback during device enumeration for locked device
* ledger: fix enumerating ledger devices with new bitcoin app (1.5.1)
* Qt lightning invoice dialog: make payment_hash copiable
* coldcard: avoid creating keystore with testnet/mainnet mixed up
* qt swap dialog: fix disabling \"OK\" btn if NotEnoughFunds
* android build: bump targetSdkVersion to 29
* lnrater: follow-up
* logging: make sure file logging uses utf8 encoding
* daemon: fix local RPC server error messages to conform to jsonrpc spec
* qt console: fix usage in --offline mode
* build: partially revert 3cd52e2d7b576792c56666d480f6047243713060
* mac build: use a virtualenv instead of global python packages
* rerun freeze_packages
* contrib/freeze_packages.sh: trivial clean-up
* mac build: bundle old PyQt5 so that .app runs on macOS 11 \"Big Sur\"
* requirements: rename some files
* qt \"open channel\" dialog: detect invalid remote node id sooner
* invoices: rename \"Pending\" to \"Unpaid\"
* fix python 3.6 compat
* util.randrange: use stdlib \'secrets\' module instead of \'python-ecdsa\'
* qt: move local node id to info menu
* guis: reintroduce suggest button
* lnrater: module for node rating
* follow-up prev
* plugins/labels: better error message when using imported wallets
* wizard, multisig: on bip39/hw ks, only ask for script type for 1st ks
* wizard: on adding bip39/hw ks, don\'t offer path scanning for multisig
* config: fix get_fee_text for static fees
* interface: validate protocol-version negotiation on client-side too
* qt user interface: send tab: change \"Pay\" button text to \"Pay...\"
* config: distinguish knowing mempool is empty vs not having mempool_fees
* synchronizer: fix request_missing_txs(..allow_server_not_finding_tx=True)
* interface: validate field order in \"mempool.get_fee_histogram\" response
* qt history tab: fix shortcut in HistoryModel.refresh()
* qt send tab: show friendlier error on mistyped bitcoin address
* ledger: fix compat with hw.1 - signing flow deadlocked
* Transaction.get_preimage_script: support custom legacy-p2sh inputs
* transaction: change Transaction.is_segwit_input(txin) to txin.is_segwit()
* bitcoin: implement construct_script and use it
* bitcoin: move construct_witness from transaction.py to bitcoin.py
* fix #6676 and remove dead code
* Remove phishing server (#6660)
* lnchan.receive_revocation: tolerate not having htlc fail reason
* follow-up: fix qt lightning dialog if gossip is not started
* start lngossip if instantiated; this saves a boolean
* wallet.py: always instantiate lnbackups
* qt: reflect running gossip in lightning icon
* kivy: display warning when first channel is opened
* qt: display warning when first channel is opened
* kivy: remove enable/disable button
* qt: remove enable/disable button
* cli: remove enable/disable lightning
* qt: show channels tab by default if ln wallet
* qt: remove node suggestion
* gossip: start gossiping when channel is open
* network: load gossip db early
* lightning: enable by default but without gossip
* submarine swap: add comment to explain witness script asymmetry
* submarine_swaps: describe event-flow for both swap direction in docstr
* contrib: add instructions re cross-compiling libsecp to Linux x86
* kivy: fix app not even starting
* wallet.get_history: take locks.
* wallet: simplify get_history
* wallet: simplify get_wallet_delta
* wallet_db: WalletDB.get_txo_addr now returns dict instead of list
* wallet: rm wallet.txin_value
* wallet: use get_txin_value in get_wallet_delta
* qt tx dialog: always show input amounts if we know them
* lnworker: add request_remote_force_close which can be used without state
* lnworker: make sure to save new channel before we broadcast
* network: tighten checks of server responses for type/sanity
* kivy: use our logger, not kivy\'s; and log more exceptions.
* Use default sys.ps1 and ps2 as console prompts (#6651)
* fix main script hanging (not exiting after exception) in some cases
* Fri Oct 16 2020 marecAATTdetebe.org- Update to version 4.0.4:
* config: make sure fee_per_kb() returns Optional[int]
* (trivial) kivy: rename title of DSCancelDialog
* prepare release 4.0.4
* frozen deps: don\'t use colorama 0.4.4
* crypto: check version of pycryptodomex/cryptography at runtime
* update locale submodule
* rerun freeze_packages
* (fix) allow opening LN wallet with --offline
* plugins/bitbox02: add support for signing a message
* plugins/bitbox02: add support for p2wsh-p2sh multisig
* contrib/requirements/requirements-hw.txt: bump bitbox02 dep to 5.0.0
* update release notes
* wallet: don\'t try to get_input_tx from network when offline
* network dialog: include protocol in server address field (#6624)
* qt console: fix copying text using Ctrl+C
* qt coins tab: label(utxo) to consider both label(txid) and label(addr)
* wallet: make labels private, and access to need lock
* android build: update list of apt deps for buildozer (#6645)
* kivy: allow setting password for watch-only wallets
* Handle KeyboardInterrupt in Python Console (#6643)
* windows build: for the \"setup\" exe, put another \"-debug\" exe inside (#6603)
* kivy: implement dscancel
* wallet: implement cancelling tx by double-spending to self (\"dscancel\")
* wallet: cpfp to send to a change address instead of receive address
* wallet: fix clear_history
* wallet: (fix) bump_fee and cpfp now returns tx with all wallet-info
* Remove rogue phishing server enode.duckdns.org
* simplify prev
* storage: try to handle user deleting/renaming wallet file while running
* SqlDB: fix thread-safety issues re asyncio.Future
* qt TorDetector: close socket
* ledger: workaround to avoid on-device warning for unusual der path
* tx: add deserialize to locktime/version properties (#6633)
* cli: allow specifying --wallet at any arg position, as before
* commands: use channeldb.to_dict for dumpgraph
* channeldb: implement dictionary conversion
* Save indented lines in console history
* follow-up prev
* network: make MAX_INCOMING_MSG_SIZE configurable from config
* util: move json_normalize to util
* lnworker: minor improvements to \'lightning_listen\' handling
* lnworker: (fix) a listening node would busy-loop if remote DC-ed early
* daemon/rpc: include \"jsonrpc\" key in rpc responses
* (trivial) follow-up 7b91da9966fcef4b2c9b743e38178cd2fd8c20ca
* build: update some packages in dockerfiles
* transaction: fix regression: witness_utxo was not included in QR code
* transaction: impl tx.to_qr_data(): move logic from GUI to tx class
* Qt tx dialog: handle \"empty\" locktime field
* LNWatcher: implement diagnostic_name; for nicer log lines
* Pass wallet to invoice_status/request_status (#6595)
* Keep console input when switching server (#6607)
* windows build: some refactor to make building 64 bit binaries easier
* appimage: update openssl & libudev-dev (#6599)
* Qt history/address tab: defer refreshing while editing (e.g. label)
* (trivial) config.get_netaddress: use NetAddress.from_string
* Fix multiline script error (#6581)
* lnpeer: forbid creating Peer with ourselves (self-connect)
* LN cooperative close: avoid address-reuse (#6590)
* win binary: build zbar ourselves (#6593)
* lnpeer: handle cooperative close edge-case
* invoices: always validate that LNInvoice.invoice can be decoded
* fix arg order in sign_version
* sign_packages: upgrade python
* Mon Sep 14 2020 marecAATTdetebe.org- Update to version 4.0.3:
* prepare release 4.0.3
* update locale submodule
* storage: fix update-password edge-case
* keystore: improve check_password.
* keystore: add comment about find_my_pubkey_in_txinout quirk (re PSBT)
* gui: update stdio and text after db and storage separation (#6567)
* hardware devices: run all device communication on dedicated thread (#6561)
* binaries: pip install build requirements first
* rerun freeze_packages
* windows binaries: update pyinstaller to 4.0
* binaries: bump python version (3.7.7->3.7.9)
* dependencies: rm pyaes from requirements
* binaries: bundle \'cryptography\' instead of \'pycryptodomex\' in binaries
* hardware: update device conn. status faster (through GUI indicator)
* Qt QR code: when saving QR code as image file, don\'t include stretch
* lnhtlc: fix prev: too much copy-paste
* lnhtlc: add all_htlcs_ever, get_htlc_by_id, was_htlc_failed and use them
* lnhtlc: add lock to make methods thread-safe
* json_db: exempt keystore from StoredDict conversion
* tests: add tests for #6066 and #6401. latter is failing atm.
* reverse swap: check that received amount is higher than dust threshold
* Fix handling of constructs in console
* Added for_broadcast argument to payto/paytomany (#6532)
* add missing `wallet.save_db()` after adding or rm\'ing payment requests (#6435)
* scripts: add script to showcase bruteforcing wallet file password
* DeviceMgr.scan_devices: do all scanning on hidapi thread
* wallet set_tx_label_based_on_invoices: don\'t overwrite custom label
* wallet.get_relevant_invoice_keys_for_tx: take lock in callee not caller
* qt history: fixes for tx context-menu \"View invoice\" if more than one
* sdist: bundle make_libsecp256k1.sh in tar.gz
* trezor: cache whether TrezorBridge is available to speedup scan_devices
* qt wallet>info: use QStackedWidget, one stack item for each keystore
* qt wallet>info: show derivation path prefix for keystore
* Qt Receive tab: hide \"receive_tabs\" widget when empty
* util.NetworkRetryManager: fix potential overflow
* fix display of Zpub in Kivy during multisig wallet creation (see #6456)
* transaction: simply PartialTransaction constructor
* commands: fix signtransaction cmd
* Qt: add Key_Enter wherever Key_Return is used
* blockchain.py: maybe fix rare deadlock
* sql: test read-write permissions for given path and raise early
* windows dns hack: fix #6473
* trezor: use `init_device` instead of `ping` to check connection (fixes #6457) (#6471)
* scripts: update quick_start.py to work with 4.0.x internals
* wallet: get_full_history should populate acq_price/cap_gains if enabled
* bip39 scan: follow-up prev
* Automated BIP39 Recovery, squashed
* Change sourceforge URL
* fix the coldcard multi-sig show address issue
* Remove unused methods from Console
* Remove empty startup message from console
* Remove welcome_message from console.py
* transaction: allow PSBT input to have both UTXO and WITNESS_UTXO
* Brazilian Bitcoin index source included.
* removed scam exchange
* fix biscoint ticker path
* more price sources
* Remove __main__ from console.py
* kivy: fix fx history rates defaults.
* wallet.set_up_to_date: (trivial) reduce log spam
* kivy: fix fiat balance str if there are channels
* Size the wizard instantly, do not wait.
* bitbox02: add fingerprint to label
* bitbox02: implement label()
* bitbox02: drop unused `wizard` argument
* bitbox02: implement get_soft_device_id so multisig runs more smoothly
* Remove servers which are offline
* Keep current input when clearing Python console
* Clean console.py
* appimage build: pin glibc version in docker image, for reproducibility
* Thu Jul 09 2020 marecAATTdetebe.org- Update to version 4.0.2:
* prepare release 4.0.2
* android: handle on-chain/lightning URI on app open
* update locale submodule
* qt wizard: fix scanning qr code when restoring from xpub
* wallet: handle exception when deleting last addr from imported wallet
* qt lightning dialog: fix min size
* qt history list: only offer \"View Invoice\" if still have invoice
* invoices: rm old corrupted non-bip70 invoices
* qt channels tab: implement filtering items
* fix wording
* exclude qdarkstyle for android build
* gui swap: fix swap wording
* Update util.py
* qt receive tab: fix creating new payreq with all used imported wallet
* Sat Jul 04 2020 marecAATTdetebe.org- Update to version 4.0.1:
* release 4.0.1: prepare release notes, bump version number
* android: fix back button not working (main surface loses focus)
* interface: check server response for some methods
* qt PreviewTxDialog: change feerounding_icon to be a QToolButton
* qt PreviewTxDialog: if not enough funds due to fee, fallback to zero fee
* qt PreviewTxDialog: check for \"not enough funds\" also when shortcutting
* frozen deps: update bitbox02 and ledger libs
* ledger: speed-up sign_transaction
* ledger: bump min btchip-python version
* dnssec: fix compat with dnspython 1.16
* fix channel backups with old \"cryptography\" module
* plugins/bitbox02: fix compatibility with bitbox02-4.0.0
* fix raise UserCacnelled calls (#6304)
* android build: update p4a, buildozer, base ubuntu
* Qt: override \'persist_daemon\' option if users exits from menu
* improve help text regarding watchtower
* cosigner pool: use single thread to send messages
* cosigner pool: user certifi instead of system ssl cert store
* follow-up prev
* commands: allow setting custom \'nsequence\' in \'serialize\' cmd
* qt dark theme: on mac, AmountEdit units were using dark text on dark bg
* qt dark style: bandaid for dropdown item heights
* Remove warning on Segwit inputs and newer Bitcoin application, use generic signing for P2SH inputs
* synchronizer: enforce that unconfirmed txs must have fee information
* WalletDB: raise different exc if cannot parse given file
* invoices: make sure that OnchainInvoice .exp and .time are not None
* qt balance str: replace unicode char for LN symbol
* forward swaps: save the onchain amount we actually paid
* bump version number for next beta
* OnchainInvoice: make get_amount_sat return 0 instead of None. fixes #6203
* swaps: fix group_label
* fix #6275
* wallet.clear_requests. fixes #6279
* swaps: check_invoice_amount (fixes #6217)
* kivy: fix #6280 (share btn in qr_dialog)
* kivy: fix #6262
* qt sweep: raise more specific exception so that trace is not logged
* mac/qt: fix some refresh bugs in swap_dialog and new_channel_dialog
* qt new_channel_dialog: trivial fix in on_clear()
* kivy: use on_release instead of on_press in buttons
* frozen deps: update coldcard lib
* history: allow changing default label of swaps
* Add mempool.space option for mainnet block explorer (#6261)
* lnworker.add_peer: fix #6274
* fix amount_sat in kivy invoice/request dialogs. (follow-up d5f368c584afb1368f6904517db1ba59ac48989c)
* handle_error_code_from_failed_htlc: omg brainfart :(
* binaries: use sha256 instead of sha1 for Windows native signing scheme
* travis: build binaries if there is a tag (or is master)
* release notes: minor nit
* remote watchtower: enforce that SSL is used, on the client-side
* update release notes
* requirements: specify min \'attrs\' version
* update RELEASE-NOTES for 4.0.0b0
* update locale submodule
* update submodule
* mac build: add camera permission to entitlements.plist
* mac build: try to improve .app startup time on MacOS 10.15
* osx.spec: trivial formatting
* update submodule commit
* lnworker._check_invoice: add sanity check
* lnpeer: only process INIT if we are a backup. fixes #6241
* swaps dialog: handle make_unsigned_tx exceptions. fixes #6246
* wallet.export_{request,invoice}: replace \'amount\' field with sat/msat
* LN invoices: support msat precision
* minor: use wallet.has_lightning()
* swaps: update server URL
* Group swap transactions in Qt history (fixes #6237) - use tree structure of QTreeView - grouped items have a \'group_id\' field - rename \'Normal\' swap as \'Forward\'
* handle_error_code_from_failed_htlc: fix logic bug
* lnutil.PaymentAttemptLog: fix error formatting
* util: small clean-up for format_satoshis
* Update network_dialog.py
* Fix Readme to be consistent with commit 485422b072ab6d39ea80efbef8c0f3b6b93838af
* network: smarter switch_unwanted_fork_interface
* submarine_swaps: minor clean-up (preimage/locktime)
* wallet: simplify get_payment_status
* network: clarify local_height/server_height
* lnworker: rm dead code
* qt channel details: maybe fix #5728
* contrib: disable building secp256k1 exhaustive tests
* contrib: disable building secp256k1 benchmarks
* contrib: secp256k1 no longer has a --disable-jni option
* servers: minor refresh to default lists
* update block header checkpoints
* kivy: improve channels list
* fix display of short_channel_id for channel backups
* channel open: allow REMOTE to set htlc_minimum_msat to 0
* fix #6243
* lnchannel: explain why if REMOTE f-closes we remain OPEN until mined
* swaps: add testnet url
* trigger_force_close: set my_current_per_commitment_point to a valid point
* swaps: create invoice without saving the request
* fix channel backups for \"not initiator\" channels
* channel backups: try fixing force-close-trigger
* qt: easier import/export of channel backups
* (trivial) qt: disable \'swap\' button if lightning disabled
* follow-up prev
* filter callbacks to wallet: channel, payment_succeeded, payment_failed
* android: enable full logging if DEBUG build
* submarine_swaps: increase min locktime delta for reverse swap to 60
* qt swap_dialog: \"max\" now takes into account the server-provided value
* submarine swaps: fee_invoice is now a hold invoice
* qt swap_dialog: implement \"max\" button for reverse swap
* qt swap_dialog: \"max\" button now respects max htlc value
* qt main_window: fix threading for run_coroutine_from_thread
* qt swap_dialog: clean-up imports
* submarine_swaps: replace asserts with Exceptions
* submarine_swaps: small clean-up
* submarine_swaps: wallet.get_unused_address -> get_receiving_address
* channel backup versions: trivial clean-up
* channel backups: add MAC
* channel backups: add another version number, for the backup itself
* add encryption version to channel backups
* submarine swaps: disable merging of transaction in history
* add Max button to swap dialog, fix fee slider behaviour when max is selected
* swaps: mapping of prepay_hash to payment_hash
* swaps: store fee_preimage
* Submarine swaps: - improve gui - allow coin selection - allow spending \'max\'
* support new protocol (minerFeeInvoice)
* minor fix
* swaps: add safeguards to gui
* swaps: move fee logic to swap_manager, fix command line
* swaps: use StoredObject to store data
* swaps: perform 10 payment attempts
* swaps: show time left until tx can be refunded
* swaps: stop watching address once utxo is spent and mined
* swaps: improve history display
* swaps: disable rbf
* swaps: add fee_combo, hide min/max
* show swaps as single line in history main_window.run_coroutine_from_thread
* submarine swaps: fix expected amounts
* follow-up prev commit
* submarine swaps: verify amounts
* swaps: handle cancellation in password dialog
* submarine swaps: fix fee rounding and fee slider behavior
* submarine_swaps: add fee slider, improve gui
* submarine_swaps: simplification
* submarine swaps: new API url
* submarine_swaps: add SwapManager
* sub swaps: - fix invoice expiration - use p2wsh
* submarine swaps: add normal swaps to GUI, various minor fixes
* submarine swaps: fix refund tx (p2wsh-in-p2sh, locktime)
* qt: separate module for swap_dialog
* submarine swaps: create refund transaction
* submarine swaps: add forward swaps
* submarine swaps: - use lnwatcher callback - add gui button
* submarine swaps, initial implementation: - server uses Boltz API (https://docs.boltz.exchange/en/latest/) - reverse swaps only - command-line only
* lnsweep: claim our_ctx_to_local if we breach
* network: randomise the order of address subscriptions
* fix travis: regtest tests were failing with bitcoind 0.20
* crypto: chacha20-methods: make associated_data param optional
* on_payment_succeeded: use notify instead of show_message
* on_payment_succeeded: show description
* appimage: update package in dockerfile
* fix typo in prev
* git sanity: enforce \"git checkout commithash\" actually pulls commit
* add help text to channel backup QR code
* bump libsecp256k1 version
* lnchannel: update_fee: improve \"can afford\" check
* lnchannel.available_to_spend: LOCAL now respects \"fee spike buffer\"
* lnchannel.available_to_spend: minor refactor
* lnchannel.available_to_spend: consider both receiver\'s and sender\'s ctx
* ChannelConfig: add some clarifications
* crash reporter: propagate HTTP error as exception
* invoices: fix #6233
* try fixing email plugin
* invoices: minor clean-up (type hints, mark broken things)
* fix tests: follow-up prev
* sweeping via CLI: allow customising RBF
* README: update path to android build instructions
* sdist build: update message about reproducibility
* travis sdist: git clone repo a second time, to properly set umask
* move android stuff to contrib/android
* sdist build: stop making .zip distributables as they are not deterministic
* sdist build: when building docker image, no interactive prompts!
* sdist build: bump base image to ubuntu 20.04
* sdist build: umask should be specified for git clone
* sdist build: use modern pip
* attempt at reproducible tarballs (sdist)
* Fix typos
* build: fix win/appimage binaries following jsonrpc dep-removal
* setup.py: fix \'full\' extra
* appimage: update package in dockerfile
* rerun freeze_packages
* ChannelConfig.validate_params: fix sat/msat unit mismatch
* ln: make \'to_self_delay\' CSV configurable
* win/mac binaries: rm jsonrpc
* dependencies
* myAiohttpClient: add id counter, and rename to JsonRPCClient
* fix json-rpc interface (when not using CLI)
* Remove dependencies: jsonrpcserver, jsonrpcclient
* lnpeer: review safety check re channel open flow, and tweak params
* tx dialog: show various warnings if input amounts cannot be verified (#6217)
* config: allow changing \"skipmerklecheck\" at runtime
* qt qrcode: fix DeprecationWarning (float->int conversion)
* fix #6210: show_onchain/lightning_invoice dialogs
* kivy on_resume: check self.has_pin_code()
* (minor) fix missing parameter to PincodeDialog
* do not create backups for channels that do not have static_remotekey
* follow-up 88bb5309c4d74adb7ba1ac24e5bcb05ef34b2bf9
* wallet: when sweeping, do network reqs in parallel, and don\'t block GUI
* channels_list: minor fix (lnworker might be None)
* wallet fixes for lightning disabled (follow up 6058829870fde0ef17b2e08a567110ecc381ab94)
* import/exports to json files: - fix #5737 - add import/export or requests
* fix #6200: if we cannot parse an onion, send a failure code that has the BADONION bit
* split lnpeer.fail_htlc into two methods with less parameters
* requirements: bump min protobuf (follow-up prev)
* regenerate paymentrequest_pb2.py with new protoc
* bitbox02: get prev tx from psbt instead of wallet db
* Fix issue #6201: - Pass a proper callback to WalletDialog (we used to call load_wallet_by_name recursively) - Do not cache PasswordDialog instances
* HW_PluginBase: small clean-up for \'maximum_library\'
* fix tests: follow-up psbt changes
* invoices: follow-up fixes re clean-up
* psbt: always include full prev tx (#6198)
* fix tests: follow-up 154b9cab50e7de41fe878359e92f44fd3b07c484
* follow-up prev
* fix #6203: do not let request amount be None
* coinchooser: change \"enable_output_value_rounding\" default to True
* coinchooser: small clean-up re enable_output_value_rounding
* dependencies: update max qdarkstyle
* rerun freeze_packages
* contrib/freeze_packages: should not use too new python interpreter
* plugins/bitbox02: fix min version check
* plugins/bitbox02: fix compatibility with bitbox02-3.0.0
* follow-up 6058829870fde0ef17b2e08a567110ecc381ab94
* follow-up 1c436bbc220c54aa1095ee8c078185da628b4a3a
* do not display \'Expires in 100 years\' for LN invoices
* fix #6194
* Use attr.s classes for invoices and requests: - storage upgrade - fixes #6192 - add can_pay_invoice, can_receive_invoice to lnworker
* kivy: update devs list
* add confirmation dialog for lightning payments. fixes #6100
* kivy: (fix) popups had white background with recent kivy
* android build: use python3.7 for now
* kivy: (trivial) fix typo in error msg
* trustedcoin: (trivial) add a stub method in plugin base class
* Qt: do not show node_id in channels_list
* trustedcoin: use psbt format on wire. rm psbt to legacy tx conversion.
* Add extra state to distinguish shutdown negotiation from post- negotiation, where channel should not be reestablished. See #6182
* Qt: copy request to clipboard when it is created
* kivy: remove test_seed and test_xpub. fixes #6146 and #5925
* appimage: update openssl (#6186)
* fix #6176
* Qt: show fee combo next to fee slider, and remove it from settings
* follow-up previous commit: cleanup imports
* follow-up previous commit
* move units and amount formatting to simple_config
* qt plugins dialog: fix caching \"settings\" button
* wallet: better handle used change addresses reverting to unused
* wallet: fix minor locking thing in set_reserved_state_of_address
* plugins: fix labels plugin FIXME re \"just enabled plugin\"
* wallet: increase gap limit for change (6 -> 10)
* follow-up prev: don\'t reuse funding tx change address for static_remotekey
* wallet: implement reserving addresses, and use it for LN SRK to_remote
* wallet: (trivial) rename check_address
* wallet: (fix) get_receiving_address must always return an addr
* wallet: (trivial) define import/delete_address in Abstract_Wallet
* qt locktimeedit: fix max timestamp platform-dependent crash
* qt first-time network setup: fix edge case
* fix #6168: \"\'MySortModel\' object has no attribute \'item\'\"
* Move create_transaction logic from commands to wallet
* lnwatcher: use generic callbacks
* qt/kivy: show warning when sending tx with high fee/amount ratio
* kivy: fix some bugs when paying \'max\'
* kivy: confirm all actions even if there is no PIN set
* qt ConfirmTxDialog: (fix) allow sending tx with high feerate
* qt addresses list: custom sort order for \"Type\" and \"fiat balance\" cols
* qt MyTreeView: impl custom sort order framework, and use for invoices
* fix mac build: follow-up aac770404f9a1f91299ca76c9865465aac05116b
* qt receive tab: fix refresh bug on macOS
* binaries: update base docker image for wine/appimage
* mac build: pin hashes of more build dependencies
* mac build: bump libusb version
* binaries: bump python version (3.7.6->3.7.7)
* binaries: update bundled PyQt version: 5.11.3 -> 5.14.2
* (trivial) log Qt version at startup
* tests: lnpeer: make debug htlc failure hooks more uniform
* (trivial) lnpeer: rm AATTlog_exceptions from htlc_switch
* mac build: conform to macOS 10.15 Gatekeeper requirements
* commands: make \'wallet\'-mangling in decorator less obscure, and fixes
* network: validate server peers sent by main server
* kivy: fix \"choose from peers\" in network server-select popup
* coldcard: log exception traceback in create_client
* show watchtower db size in GUI
* appimage: update libudev-dev in Dockerfile
* daemon.py: Add authentication to Watchtower. Define abstract class AuthenticatedServer
* follow-up prev commit (fix regtest)
* add_lightning_request command: return request object
* ln invoices: more relaxed filtering of chans to include route hints for
* lnworker: catch exceptions raised in decode_msg
* fix #6157
* follow-up prev
* follow-up previous commit
* fix callback name: request_status
* payserver: do not allow create_invoice by default
* Simplify services (watchtower, payserver): - Do not expose services settings in GUI - Use a single netaddress configuration variable.
* lnrouter: blacklist channels for a limited time (see #6124)
* discard channel updates too far in the future, or too close apart (see #6124)
* RPC client: exit code 1 if RPC server returned error
* new command: get_ssl_domain
* One can now click the back button in the show_xpub_and_add_cosigners wizard step
* fix #6125: detect self-payments
* travis: use other \"coveralls\" package
* follow-up prev: trivial rename
* test_lnpeer: add some multi-hop payment unit tests
* lnworker._pay: allow specifying path as argument
* lnrouter: add PathEdge/LNPaymentPath for (node_id, scid)
* test_lnpeer: some clean-up, make it easier to add \"num_node>2\" tests
* lnworker.pay: small clean-up
* (trivial) follow-up c1b1638615c37268d2ca33c44abeec398b2d45e3
* small clean-up re \"extract preimage from on-chain htlc_tx\"
* follow-up prev commit: fix test_lnpeer
* lnpay: return payment log, increase timeout
* follow-up 8ba7e6806428a90ffe01293e2b0b8bd340d07c6b
* follow-up prev commit...
* follow-up prev commit
* follow-up prev commit
* fix htlc forwarding: - persist fail_htlc error messages - do not rely on payment_hash in htlc_switch
* add test with fail_malformed_htlc to forwarding regtest
* add config variable to test update_fail_malformed_htlc
* fix #6122: extract preimage from on-chain htlc_tx
* Fix \"backed\" typo in crypto.py
* android build: update p4a and buildozer
* remove UnknownPaymentHash (exception used as value)
* lnpay: save invoice
* jsonrpc: pass timeout to aiohttp session
* (minor) rename chan.sweep_htlc
* create_sweeptxs_for_our_ctx: fix static_remotekey
* qt send tab: (fix) allow user to set lower fees if \"not enough funds\"
* qt ConfirmTxDialog: fix exc for \"max\" invoice when \"not enough funds\"
* daemon: rm \"daemon.wallet\" reference
* qt update checker: do not keep main window ref so it can gc-ed
* qt exception window: turn Exception_Hook into singleton
* multi-wallet: properly stop lnworker/lnwatcher
* lnpeer: (trivial) log name for chan.state and chan.peer_state
* network: set .oneserver in __init__
* wallet: disallow fee-bumping/coinjoining ln funding tx
* lnpeer: add get_channel_by_id, for small speed-up
* lnworker: fix threading issues for .channels attribute
* use correct feerate when sweeping htlcs
* fix #6111, and show channels tab even if lightning is disabled (follow-up 527e0b9b897e07ae671ca180ab8e5f89423b8aec)
* qt main window: only show \"Channels\" tab if wallet has lightning
* qt wallet>info: add text if lightning is not available for wallet
* fix #6115: qt wallet>information was broken for imported wallets
* qt network dialog: merge \"Overview\" and \"Servers\" tabs
* network: handle unparseable server-str
* interface: make localhost exempt from ip-range bucketing
* interface: (trivial) make some methods private
* config: \"serverfingerprint\" key requires \"server\" key
* Add --serverfingerprint option (#6094)
* commands: \"notify\" cmd: stop watching addr if called with empty URL
* fixups for CallbackManager refactor
* lnworker: blacklist channel if policy is unchanged but has a new timestamp.
* channel_db: add verbose option to add_channel_update
* set more restrictive file permissions for exported private keys (#6106)
* build: update git in dockerfiles (#6107)
* follow-up c454564ed6e094aa36be9fbe7aa9e9113a28710c
* fix #6101
* fix #6103: local config contains remote reserve
* refactoring: remove inspect_edge
* separate method that runs Dijkstra and return distances
* follow-up prev
* fix #6096: bugfix for creating zero amount LN invoice
* qt crash reporter: html.escape traceback to avoid formatting issues
* hww: stop keystore.thread when closing wallet
* hww hidapi usage: try to mitigate some thread-safety issues
* hww: fix HardwareClientBase not having reference to plugin
* Use non-standard localhost port for server-string fallback (#6087)
* network/gui: unify host/port input fields to single server str
* network.NetworkParameters: merge host+port+protocol into \"server\" field
* network: allow mixed protocols among interfaces
* Add electrum_data to .gitignore (#6092)
* interface.get_certificate: use public asyncio APIs
* extend \'add_peer\', \'list_peers\' commands to gossip
* sql_db: do not require network object
* lnworker: clear peer retry times if proxy settings change
* lnworker.peers: follow-up b5811e8072dafda7e2e740f8e5ca604680271291
* lntransport: use network proxy if available
* lnworker.peers: fix threading issues
* daemon.on_stop: adapt to python 3.8
* build: update some packages in dockerfiles
* fix tests: follow-up prev few commits
* NetworkRetryManager: add random noise to time
* util: add NetworkRetryManager, a baseclass for LNWorker and Network
* lnworker: implement exponential backoff for retries
* network: (trivial) rename field to indicate private
* network: introduce NUM_STICKY_SERVERS
* network: rm server_queue
* network: implement exponential backoff for retries
* network: replace \"server\" strings with ServerAddr objects
* fix tests (follow-up prev commit)
* Move callback manager out of Network class
* run lnworker.main_loop directly on the event loop
* Hard fail on bad server-string (#6086)
* require aiohttp_socks>=0.3
* README: mention script location (for \"electrum\", after pip install)
* macOS: duplicate Qt \"Preferences\" menu item
* ln: check if chain tip is stale when receiving HTLC
* (trivial) rename lnchannel.channel_states to ChannelState
* lnchannel: make AbstractChannel inherit ABC
* lnpeer: move ping_if_required away from message_loop
* Do not wait wallet sync to reestablish channel (revert e32807d29d).
* adapt to new aiohttp_socks: fix deprecation warnings
* bitbox02: add to requirements-hw, and include in win/mac binaries
* bitbox02: rm plugin.get_client method: just use default impl
* bitbox02: rm BitBox02Client.label override
* hww: factor out part of hid scan code to HW_PluginBase
* bitcoin.py: change API of address_to_hash
* rm some unused imports
* bitbox02: don\'t run show_xpub on GUI thread
* bitbox02: rm some dead code
* bitbox02: fix pairing_dialog
* bitbox02: add udev rules
* bitbox02: adapt to updated master
* BitBox02 Electrum plugin support
* Rename \'On-chain\' button, add tooltips (see #6053)
* add list_peer command. (fix #6057)
* add more logging shortcuts
* translations: add note that f-strings cannot be translated
* qt wizard: tweak GoBack behaviour to recalc inputs to previous dialog
* rm dead code: wallet.wait_until_synchronized
* fix #6056
* fix #6075
* export channel backup from kivy gui
* do not use short_channel_id as state, use channel state for that. display it as soon as the funding tx is mined.
* Replace wallet backup with channel backups - channels can be backed up individually - backups are added to lnwatcher - AbstractChannel ancestor class
* build: add workaround for \"pyinstaller with new setuptools\" issue
* wizard hww: use exception handling to choose hw device again
* wizard: (trivial) add show_error to base class, document API
* wizard.create_storage: state API and abide by it
* wizard: hww creation flow: don\'t just swallow exception
* wizard hww: scan devices fewer times and move away from GUI thread
* wizard: fix crash when decrypting wallet hw device
* lnworker: check chain_hash when decoding channel update.
* setup.py: specify lnwire as package_data
* wizard hww: move devmgr.scan_devices() away from GUI thread
* hww: fix threading issue in DeviceMgr: enumerate_func needs self.lock
* HardwareClientBase: provide default implementation for label
* hww: show model name in device enum lists (e.g. \"Trezor T\")
* hww: select_device: only update label/dev_id after pairing succeeds
* hww: smarter auto-selection of which device to pair with
* hww: distinguish devices based on \"soft device id\" (not just labels)
* tests_lnpeer: trivial fix
* crypto.pw_decode: fix one case of raising incorrect exception
* crypto: trivial clean-up of pw_encode/pw_decode functions
* do not print the entire payment log again, this is redundant
* Use specific Exception when chain isn\'t synced
* trezor pin dialog: only show PIN \"strength\" when creating/changing
* qt PasswordLineEdit: try to clear password from memory
* qt: introduce PasswordLineEdit(QLineEdit)
* rerun freeze_packages
* follow-up prev (typo)
* lnpeer: do not assume our privkey is the same as lnworker\'s privkey.
* move maybe_save_short_chan_id to lnchannel
* localconfig: rename seed to channel_seed
* change derivation of ln channel keys: use hardened paths
* Save channel seed in localconfig
* android build: use \"cryptography\" instead of \"pycryptodomex\" fork
* android build: update buildozer/p4a/NDK
* include lnwire csv files in binaries (follow-up #6050)
* qt wizard: make \"GoBack\" unroll the call stack to avoid stack overflow
* follow-up previous commit
* LNWatcher: Distinguish between blockchain-triggered channel state transitions, and actions taken as a result. - state transitions are performed in lnchannel.update_onchain_state() - peer actions are in LNWorker.on_channel_update()
* save_short_chan_id: remove unneeded ćalls to lnwatcher
* pw_decode, pw_encode: separate bytes functions
* follow-up prev commit
* move should_channel_be_closed_due_to_expiring_htlcs into Channel class
* follow-up 371f55a0f922cf57196ae3d8d7c2fabc7a9f0f08
* lnmsg: small speed-up: read first, check length after
* ln feature bits: validate transitive feature deps everywhere
* lnaddr: small clean-up
* ln: implement option payment_secret
* lnpeer: better error handling when processing onion packets
* use option varonion: actually use TLV payloads, and signal support
* lnaddr: add feature bit support to invoices
* lnonion: implement basis of varonion support
* ln feature bits: flatten namespaces, and impl feature deps and ctxs
* lnmsg: add more tests (for encode_msg, decode_msg)
* lnpeer: send and handle \"networks\" param in \"init\" msg
* lnmsg: implement tests from BOLT-01
* lnmsg: encode/decode TLVs as part of messages
* lnmsg: handle \"...\" as field count
* lnmsg: initial TLV implementation
* lnmsg.decode_msg: dict values for numbers are int, instead of BE bytes
* lnmsg: rewrite LN msg encoding/decoding
* hww: fix some threading issues in wizard
* hww: rm some code duplication: add \"scan_and_create_client_for_device\"
* wizard: (trivial) add some type hints
* qt hww show_settings_dialog: don\'t scan devices in GUI thread
* digitalbitbox: (trivial) user handler instead of handler.win
* DeviceMgr: clean-up locks a bit
* hww wizard: better handle UserFacingException in one case
* hww: catch exceptions when user clicks on hww qt status bar icon
* keystore: add workaround for StoredDict issue #6066
* (trivial) follow-up 570f7b7790e6716cff49ba75992728cab3375e21
* hw wallets: during wallet creation, make sure to save correct label
* qt wizard decrypt wallet with hww: just pass through cancellation
* hw wallets: show e.g. \"An unnamed trezor\" if no label in select_device
* hw wallets: handle cancellation for \"query_choice\" in wizard
* hw wallets: introduce HardwareHandlerBase
* trezor: bump lib version, implement new passphrase-on-device UI
* wizard: add a warning to multisig wallet creation to backup xpubs
* network: update tx broadcast error msgs whitelist
* commands: add new cmd \"getprivatekeyforpath\" to export a WIF for a path
* Commands: clarify description of getservers
* lnchannel: add more type hints
* trivial: use \"chunks()\" for htlc_sigs in lnchannel
* lnchannel: clean-up docstrings a bit
* lnchannel: better checks for \"update_add_htlc\"
* small clean-up re max CLTV delta for LN
* UTXOList: Split stretch_column out of __init__
* make_libsecp256k1.sh: add comment how to cross-compile to Windows
* Readme: Clarify dependencies of make_libsecp256k1.sh
* follow-up prev: htlc direction madness
* lnchannel: fix included_htlcs
* do not show freeze/unfreeze channel options if channel is closed
* wallet_db.clear_history: now clears prevouts_by_scripthash too
* lnchannel: implement freezing channels (for receiving)
* lnworker: rename can_send to num_sats_can_send
* lnchannel: when adding HTLCs, run checks for both directions
* storage upgrade: move \"htlc_minimum_msat\" to base channel config
* lnchannel: test for max htlc value (needs to be below protocol maximum)
* lnchannel: partly fix available_to_spend
* lnchannel: implement \"freezing\" channels (for sending)
* qt channels list: sort by short chan id by default
* qt channels list: make selection more in line with other tabs
* qt channels: expose long channel id (in ctx menu and details dlg)
* Document how to disable proxy
* follow-up prev
* lnworker: fix type error re pending_payments, and impl malformed htlcs
* follow-up prev: try to handle json db int key madness :/
* lnpeer: implement basic handling of \"update_fail_malformed_htlc\"
* lnutil.UpdateAddHtlc: use attrs instead of old-style namedtuple
* wallet_db: encapsulate type conversions with attr.s converter
* Quantitative easing of lightning fees
* fix #6037
* lnonion: use random starting bytes in Sphinx packet as in updated BOLT4
* wallet: dust limit calculation should round up (not down)
* wallet: put hard limit on minimum of relayfee: 1 sat/byte
* lnwatcher: unwatch deeply mined channels
* travis: change ppa for bitcoind
* follow-up prev: network.interface might be None
* fee estimates: use median if auto-connect
* Qt: improve channel details window
* follow-up prev: rm decorator, preprocess channel_id for all messages
* lnpeer: channel_update decorator
* Fix #6021: Do not transition channel state to CLOSED if tx is unconfirmed.
* follow-up 46d8080c76e79670e8abaaaa0eb2d4d4a74544c1: own channels are no longer in channel_db
* kivy: switch position/size of camera and clear buttons
* appimage: update package in dockerfile
* lnworker.pay: run path finding in sep. thread (don\'t block evt loop)
* kivy: add delete button for invoices/requests
* kivy: show payment log details
* kivy: requests/invoices dialogs improvements
* channel_db: raise specific exception if database is not loaded when we try to find a route
* (minor) fix typo
* follow-up prev commit
* improve payment status callbacks: - add \'computing route\' status for lightning payments - use separate callbacks for invoice status and payment popups - show payment error and payment logs in kivy
* qt update checker: subclass QDialog instead of QWidget
* lnrouter: add comments about path-finding blocking the asyncio loop
* (minor) simplification
* kivy: update screen in on_activate, remove dead code
* kivy: align icons in password_dialog, use IconButton
* improve kivy password dialog: - separate classes for pin code and password - add file selector to initial screen
* follow-up previous commit
* follow-up previous commit
* kivy: remove dynamic screen loading.
* kivy receive screen: - change behavior of delete button - screen must call parent\'s methods
* invoices list: show \'batch pay\' option only if all selected invoices can be paid
* kivy: fix display of request messages
* Add short channel id to tx labels
* Qt history: Do not use monospace font for description column
* Fix bug with save_funding_height, save_closing_height (it would enter a state where only closing_height was saved)
* lnchannel/lnhtlc: speed up balance calculation for recent ctns
* lnhtlc: speed-up methods for recent ctns
* move feerate warning to lnpeer
* update force-close warning message
* lnworker.reestablish_peer_for_given_channel: give each addr a chance
* Qt: add info about force closing
* fix test_lnpeer
* follow-up previous commit: fix test_lnpeer
* follow-up previous commit: broadcast_transaction does not return txid
* Propagate exceptions raise by force_close to the GUI. Define \'try_force_closing\' for cases where we do not want exceptions to be raised.
* allow transition from FORCE_CLOSING to REDEEMED. define REDEEM_AFTER_DOUBLE_SPENT_DELAY
* do not try to reestablish channel if state is FORCE_CLOSING
* Qt: test if lightinng is running
* follow-up 17a893441a88eb1b3bc89fd960edfc28140e266f: fix regtest
* follow-up 17a893441a88eb1b3bc89fd960edfc28140e266f: satoshis
* (minor) fix typo
* CLI: show channel reserves and unsettled balances. fixes #5817
* qt: add extra fields to copy submenus
* Qt: add \'View channel\' to history menu, \'View funding transaction\' to channel menu
* kivy: show closing transaction in channel dialog
* kivy: improve channel detaild dialog
* fix #6017
* ln: store network addresses for channel counterparties in channels
* kivy README: add instructions re accessing internal storage
* kivy pw dialog: don\'t enforce min length for existing generic password
* commands: gate get_channel_ctx behind --iknowwhatimdoing
* update block header checkpoints
* wallet_db: fix _convert_version_25 (bip70 expiration)
* fix for old channels
* (minor) typo
* kivy: show warning if request/invoice exceeds channel capacity
* kivy invoices and requests: show most recent items first
* kivy: Show lightning balance. Remove \'unmatured\', \'unconfirmed\' from info dialog, as this is visible in history.
* kivy: fix layout of addresses dialog
* kivy: improve open_channel dialog
* fix test_lnpeer
* lnworker: set invoice status if htlcs are received from previous session
* (minor) ButtonsWidget: add 10px offset because of scrollbar
* Fix detection of payments.
* replace await_local/remote
* try to clean-up README
* clear up requirements re pycryptodomex
* crypto: add \'cryptography\' as alt dependency for \'pycryptodomex\'
* crypto: move LN-related chacha20/poly1305 code into crypto.py
* tests: made TestLNTransport.test_loop more robust
* invoices: deal with expiration of \"0\" mess
* less verbose update_fee log
* lnworker.add_peer: don\'t block event loop with DNS
* lnworker: peer-bootstrapping: add IPv6 fallback nodes
* lnworker: re-enable dns seeds for peer-finding bootstrap
* backup help text
* open channel dialog improvements
* Qt: do not filter out paid invoices/requests. let user delete multiple items
* (minor) text change: \'Expires after\'
* Qt: list requests and invoices in descending order
* Simplify receive tab: - display receiving address in receiving tabs - display lightning invoice as \'address\' - save last active tab in preferences
* ChannelDB.load_data: add comment re bad performance, and some speed-up
* ChannelDB: fix typo in sql query - seems harmless though?
* ChannelDB: (trivial) add prefix to names of db methods
* ChannelDB: rm NodeAddress class, just use LNPeerAddr
* lnrouter: change edge cost estimate (distance metric)
* (minor) rm unneeded decorator
* maybe_forward_htlc: catch exceptions raised by nexp_peer. return only error
* lnrouter: simplify max fee sanity checks
* bolt11 invoice: strip (and so accept with) leading/trailing whitespaces
* commands: add changegaplimit and getminacceptablegap cmds
* wallet: min_acceptable_gap should mimic wallet.synchronize
* Qt LN gossip sync indicator: hide if 100%; rescale 95%->100%; tooltip
* ChannelDB: make gossip sync progress updates cheaper
* move htlc_switch task to lnpeer
* htlc_switch: decouple maybe_send_commitment from htlc processing
* lnworker: dissociate htlc forwarding and fulfillment
* make maybe_fulfill_htlc, maybe_forward_htlc synchronous. move async operations to lnworker.htlc_switch
* lnpeer: do not drop channel updates if cannot send
* HTLC switch: - fulfills/fails/forwards HTLCs - onion_packets are saved when update_add_htlc is received
* kivy wallet info screen: handle \"show seed\" for watch-only/no-seed case
* kivy tx dialog: don\'t show \"remove tx\" option so eagerly
* wallet/GUI: don\'t allow \"removing\" a LN force-close-tx from history
* qt channels list: show node aliases in new column
* ChannelDB: trivial fixes re node alias
* lnworker: allow changing labels of chan-open/chan-close txns
* ChannelDB: fix get_recent_peers
* transaction: follow-up prev
* transaction: (fix) invalidate ser cache when changing locktime/version
* Qt tx dialog: show txid as \"unknown\" while not finalized
* Qt tx dialog: allow setting custom locktime
* Qt addresses list: show derivation path in tooltip (also addr dialog)
* Qt main_window: handle event \'ln_gossip_sync_progress\' if LN disabled
* Qt history list: add tooltip for \"local\" transactions
* Qt ln tx dialog: small fixes
* lnpeer: Peer.is_initialized() should not raise
* add LN gossip sync progress estimate indicator to Qt GUI
* ChannelDB: add self.lock and make it thread-safe
* Qt address list speedup: wallet.is_beyond_limit was slow
* mnemonic: implement Wordlist class
* Qt tx dialog: fix file extension when exporting (on MacOS...)
* trivial clean-up (typing/imports)
* wallet_db.get_transaction: tolerate if tx_hash is None
* clean-up hw-wallet \"get_password_for_storage_encryption\"-related code
* network UntrustedServerReturnedError: add \"DO NOT TRUST...\" tag
* follow-up previous commit (fix tests)
* store raw messages in gossip_db. Fixes #5960
* Replace lightning_settle_delay with enable_htlc_settle (asyncio.Event)
* blockchain: move init_headers_file from network.py to blockchain.py
* taskgroups: don\'t log CancelledError
* lnpeer: fix json serialization of funding_inputs
* make sure we can send shutdown
* rename all TaskGroup() fields to \"taskgroup\"
* lnworker: add own taskgroup (run in daemon.taskgroup)
* fix regression in shutdown (from 1c5dc7929838fbb7307faeac6506c95821002049)
* Set channel state to OPENING as soon as we receive \'funding_signed\', instead of when the funding transaction has been broadcast, because we have no reliable way to know when it will be broadcast.
* (minor) fix typo in comment
* follow-up e54c69b861c2990adf9cf618b68c6f1c7dd3ebea: we must settle HTCLs after during shutdown
* test_close: add unsettled htlc (fails with the current code)
* follow-up prev: do all checks, and add tests
* keystore: make add_key_origin \"API-user-friendly\"
* Qt tx dialog: warn if user asked for full bip32 paths but info missing
* Qt tx dialog: make \"export with xpubs\" option always available
* rm more cruft from test_lnchannel
* lnpeer: reduce log spam due to incompatible feature bits
* add lnchannel.can_send_ctx_updates. just drop illegal updates for now
* (trivial) lnworker: move LNGossip.peer_closed to parent class
* restore log lines for send_commitment, on_commitment_signed
* define channel.has_pending_changes method
* shutdown: - resend shutdown on reestablish - wait until no more pending updates before sending shutdown
* (minor) follow-up previous commit
* simplify previous commit (revert changes on transaction.py)
* lnpeer: verify signature in closing_signed
* (minor) simplification
* the funder sends the first \'closing_signed\' message
* transaction.deserialize: more sanity checks
* follow-up prev
* lnpeer: add \"DO NOT TRUST...\" remark to errors sent by remote
* transaction.BCDataStream: minor fixes
* fix BCDataStream.read_bytes (#5991)
* fix SPV.hash_merkle_root, add tests/test_verifier.py
* lnpeer: cooperative close: verify scriptpubkey matches templates
* Added ELECTRUMDIR env variable (#5543)
* lnpeer: closing fee negociation: - use fee_rate from config - set upper bound on fee - add test_close to test_lnpeer
* lnpeer: await_remote/await_local now more restrictive, and docstring
* fix test: test_reestablish_with_old_state
* follow-up prev
* WalletDB: add type hints, and also corresponding asserts for sanity
* lnpeer/lnwatcher: include channel id in log lines
* fix undefined name \'CHANNEL_INIT_TIMEOUT\'
* travis: fix regtest
* (minor) fix log
* follow-up previous commit
* Fix #5975: Forget or redeem channels that are never funded. - initiator: wait until double spent - non-initiator: wait until timeout
* Qt: disable preview button in open_channel
* db upgrade: store channel tx height and timestamps in \'channels\'
* Do not save new channels before they are added to lnworker
* travis: use more recent Ubuntu, get libsecp from Ubuntu apt (rm ppa)
* qt request_list: clear receive addr/req when hiding list
* qt receive tab: better \"Clear\" behaviour
* follow-up 54ef6db762b5ea120a59af0a2470eac999c55d93: set channel state to OPENING if funding tx was broadcast later (e.g. cold storage)
* cosigner_pool plugin: don\'t show button in tx dialog before finalizing
* qt channels_list: early exit if lightning is disabled
* qt coin control status bar: don\'t defer \'Coins\' tab updates
* don\'t raise BaseException
* qt open channel: early return if fields are left empty
* lnpeer: Use a single queue per channel for messages that are ordered. Forward error messages with \'temporary_channel_id\' to the correct channel_id
* follow-up previous commit
* do not try to reestablish channels in PREOPENING state (per BOLT2).
* return preimage in lnpay. fixes #5794
* remove double definition of lightning_history. fixes #5984
* add_future_tx should return success
* Qt: show amounts sent to channels in show_transaction
* lnpeer: do not dump exceptions raised in initialize
* (minor) trigger \'wallet_updated\' callback when adding future tx
* qt: add menu item to view closing transaction of channel
* do not show channel balances if channel is closed
* Qt: ask confirmation before closing channel.
* sweep_ctx: do not log if channel was not force closed
* Qt open channel dialog: suggest and clear buttons
* require option static_remotekey in lnwallet
* Use a Future for lnpeer.initialized, so that exceptions are passed to the GUI
* android build: fix accepting licenses
* win binaries: bump python version (3.6.8->3.7.6)
* README: rm \"Compile the protobuf description file\" section
* Revert \"qt/hww: temporarily bundle our own version of safetlib.qt.pinmatrix\"
* add comment about minor issue with closing_signed
* requirements: bump min archos safet version
* disable peer filtering in lnworker
* lnwatcher: fix keep_watching if the wallet was not force-closed
* libsecp: log exception if failed to load
* follow-up previous commit (backward compatibility)
* Generate channel keys from random seed
* kivy: set pin_code timeout to 5 minutes
* select peers with desired features before connecting
* lnpeer: - print parent classname in diagnostic name, - fix error message when requested feature is not supported
* restrict lightning to p2wpkh wallets
* support option_static_remotekey
* minor fix: can_send, can_receive
* trustedcoin: fix wallet constructor
* do not allow channel creation from backup file
* revert prrevious commit (used in tests)
* remove ChannelDB.add_channel_update (no longer needed after 46d8080c76e79670e8abaaaa0eb2d4d4a74544c1)
* move list_channels to commands.py
* Lightning: Show sending and receiving capacity. Fixes #5967
* daemon.run_gui: make sure to exit process on exception
* fix path for payserver static files
* follow-up previous commit
* storage upgrade for invoices and requests. fixes #5959
* do not store \'outputs\' field in requests (it is unused)
* ecc.ECPubkey: also accept bytearray in __init__
* qt InstallWizard: turn some instance variables to locals
* follow-up previous commit
* remove channel from channel_timestamps if funding_tx has been dropped from mempool
* fix get_payments
* lnwatcher: use is_mine(addr) instead of (addr in get_addresses())
* fix race in check_onchain_situation
* fix flake8 test
* follow-up previous commit: show onchain tx dialog for channel open/close transactions
* Add lightning tx dialog (qt and kivy)
* follow-up a6302b3a124a2bc9a208e0e78ddcb81d53d6bdf9
* ln gossip: don\'t put own channels into db; always pass them to fn calls
* Qt ChannelsList: cosmetics (set font, enable sorting)
* qt exc reporter: add FIXME re HTML tags in traceback
* lnutil.split_host_port: fix for IPv6 connection string
* util.Satoshis: note that sometimes this actually has \'msat\' precision
* fix wallet history order: incl both on-chain and LN, sorted by time
* Qt: fix balance column
* Catch exceptions raised in LNWorker._pay_to_route Reset payment status if an exception is caught. Also, do not pass status to the \'invoice_status\' network callback. This fixes #5869, #5870, #5964.
* fix lnchannel.get_payments: unsettled htlcs may have overwritten the returned results.
* breach remedy: get spender transaction from LNWatcher\'s db
* kivy: pass message to password_dialog (follow-up d9172ade714e659d87614e0376e53d8bad155159)
* kivy send screen: always show field separators. fix on_clear.
* (minor) kivy: initialize invoice_popup
* detect redeemed channels (fix #5963)
* follow-up previous commit
* Do not use network callback to update channel states; call LNWorker methods directly instead. A callback was used because a single LNWnwatcher object used to be shared for all wallets. Since wallet now have their own LNWatcher instance, this can be simplified.
* Define network.try_broadcasting() method. Use it when rebroadcasting a force-close tx, because the channel state is already set.
* lnwatcher: use height == TX_HEIGHT_LOCAL to determine channel onchain state
* switch menus: status <-> wallets
* message formatting
* kivy: make backups optional
* kivy: use password + pin_code - password is per wallet, is retained in memory - pin code is saved in config
* kivy/android: ask for STORAGE permission at runtime
* kivy: save pin code in memory
* Automate backups: - backup wallet file on each channel creation - on android, a backup password is entered in settings - on desktop, the backup path is in settings
* save_backup: use db.dump() to clone the db
* fix test_lnpeer
* wallet backup function for kivy/android
* kivy: allow generic passwords for wallets
* reestablish: force_close if we are a recent backup
* Save and read lighting backups (Qt)
* fix lightning \"init\" msg assertion error
* add comment re lnchannel channel_states
* (minor) call lnwatcher.add_channel from lnworker.add_channel
* follow-up previous commit
* channel states: make sure that closing_txid is saved if channel is closed
* follow-up fixes to storage-db separation
* kivy: more reliable saving of \"last wallet\"
* android build: update buildozer and p4a versions
* wallet: fix is_mine/can_sign. don\'t just rely on ks, also check script
* wallet: (sanity) is_mine now guaranteed to handle \'None\' input
* keystore: \'get_tx_derivations\' no longer public
* fix data_loss_protect (missing return, json conversion)
* test_lnpeer: use less side-effects
* test_lnpeer: test_reestablish_with_old_state
* reestablish_channel: shorter varnames
* channel_reestablish: assume that DLP is enabled, because we require it
* windows: dll-load \'hack\' needs to be applied not only from main script
* windows: when running from source, load DLLs from main dir
* gitignore: add .so/.dll in inner \'electrum\' folder
* add new peer_state for the case where we are waiting for the remote party to force close a channel
* reestablish_channel: do not send second channel_reestablish message if they are ahead (they should know it)
* test_lnpeer: simple test of channel_reestablish
* update README to mention libsecp
* build: workaround for \'realpath\' missing on macOS
* build: create a standalone build script for libsecp256k1
* ecc: hard fail if libsecp256k1 is not found/usable
* tests: rm \"needs_test_with_all_ecc_implementations\" decorator
* ecc: small API clean-up
* ecc: use libsecp256k1 for pubkey recovery (from sig and msg)
* ecc: use libsecp256k1 for signature conversions
* ecc: use libsecp256k1 for sign/verify/mul/add
* ecc: abstract away some usage of python-ecdsa: bytes<->int conversions
* ecc: abstract away some usage of python-ecdsa: randrange
* move wrapper definition outside of main_window class
* Separate db from storage - storage is content-agnostic - db and storage are passed to wallet contructor
* fixes for text interface
* qt: don\'t clear send tab in broadcast_done
* cosigner pool: easy fix (works but with worse than previous behaviour)
* appimage: update libudev-dev (#5936)
* regtest: wait_for_balance
* blockchain.fork: better exception if datadir was deleted while running
* qt update checker: use longer timeout
* cli: history commands: only json-encode once
* Restructure wallet storage: - Perform json deserializations in wallet_db - use StoredDict class that keeps tracks of its modifications
* (minor) rename class: StoredAttr -> StoredObject
* (minor) json_db: add file header, fix formatting
* storage upgrade: convert lists to dict (txi, txo, revocation_store channels)
* storage: take the DB lock when writing to disk.
* regests: organize tests in two classes
* Separate JsonDB and WalletDB
* use setEnabled() for Qt menu items: Network, Lightning, Watchtower
* faster and improved regtests - print the test name before each test - start only needed agents (alice, bob, carol) - set settle_delay using setconfig instead of restarting daemon - test the watchtower ctn in test_watchtower
* Start watchtower if run_watchtower is set, even if lightning is not activated (fix #5896). Fix parameters of sweepstore.add_sweep_tx, rm dead code.
* Added coloring to the AddressPopup dialog:
* Use attr.s for Feeupdates and Outpoints Storage upgrade to version 23
* lnpeer: code factorization
* Use attr.s instead of namedtuples for channel config
* Fix travis regtest
* Fix travis appimage
* network dns hacks: split from network.py into its own file
* dns hacks on windows: resolve A and AAAA records in parallel
* follow-up prev (oops, only committed part of the changes)
* Build: Install libxkbcommon-x11 in AppImage
* windows build: maybe fix reproducibility (jsonschema-
*.dist-info)
* Build: Uninstall Cython from AppImage
* requirements-hw: re-add Cython
* mac build: bump pyinstaller version
* mac build: bump python version (3.6.4->3.7.6)
* wallet: log when saving already paid invoice
* fix incorrect type hint
* qt broadcast tx: don\'t complain about being \"offline\" for partial tx
* qt send tab paytoedit: use monospace font
* qt main_window: trivial clean-up re is_onchain
* qt send tab: show \"Pay\" button even in watch-only wallets
* Add command line option to forget config on exit.
* follow-up prev
* qt: defer refreshing tabs until they are visible
* qt: clean-up in some MyTreeView children (mv code from update to init)
* json_db: only deserialize transactions on-demand
* tests: also run unit tests with python 3.8 on Travis
* qt paytoedit: properly handle multiple max (\'!\') outputs
* qt main_window: rm require_fee_update (dead code)
* qt paytoedit: fixes for pay-to-many (when including \"!\")
* Add block explorer support for mynode.local (#5892)
* appimage binary: bump python version (3.6.8->3.7.6)
* interface: better error msg for main server re SSL cert issues
* fix daemon (don\'t close instantly)
* windows binaries: update nsis
* windows binaries: update wine
* windows binaries: update pyinstaller to 3.6
* requirements: rm pycryptodomex from \"binary\"-specific list
* binaries: use \"--no-dependencies\" option for pip install
* network.get_transaction: move some response validation logic from Synchronizer
* try to fix \"--offline\" mode
* split network main_taskgroup: create daemon.taskgroup
* Restoring old behavior of the outpoint copy to clipboard feature (#5879)
* ecc.ECPubkey: add custom __deepcopy__ implementation
* qt CPFP: handle empty fee field
* qt installwizard: fix empty filename crash
* wallet: only select mature coins by default
* dns hacks on windows: cache dns when using dnspython
* network/util: increase default timeout of make_aiohttp_session (30->45s)
* fix paying bip70 payment request with Kivy GUI
* fix paying bip70 payment request with Qt GUI
* interface: make changing max incoming msg size (1 MB) easier
* Remove phishing server
* appimage build: add notes re investigating reproducibility failure
* requirements: bump min python-keepkey to 6.3.1
* commands/jsonrpc: fix specifying \"wallet\" to commands that need it
* util.standardize_path: properly handle \"~\" (user\'s home directory)
* requirements: bump min python-keepkey to 6.3.0
* keepkey: use libusb to enumerate devices instead of hid
* trezor: when restoring, hide Shamir options by default
* wallet: encrypt storage by default
* windows binaries: skip building libusb if already done
* windows binaries: build libusb ourselves
* trezor: use BIP39 backup by default even if Shamir is available
* trezor: bump library requirement
* trezor: implement support for Shamir recovery
* trezor: link button messages to enum names
* wallet._is_onchain_invoice_paid: support \"zero amount\" invoice
* AppImage: Improve binary stripping
* ledger.sign_transaction: always do certain output checks
* ledger: faster sign_transaction startup
* ledger: support sending to OP_RETURN outputs
* kivy: implement opening storage-encrypted wallet files
* synchronizer: request tx from server if we only have partial local tx
* payment requests: fix explicit \"None\" expiration
* CLI: properly auto-upgrade storage when needed even if storage-encrypted
* windows: when running from source, with py3.8+, load DLLs from \'.dlls\'
* follow-up previous commit
* lnworker: save timestamp regardless of channel state
* qt: also use BlockWaitingDialog in PreviewTxDialog
* qt TxDialog: visibility of widgets should be set after parenting
* wizard: (qt) add dedicated button to create new wallet
* python 3.8: adapt to breaking changes re asyncio.CancelledError
* build: update some packages in dockerfiles
* trivial: add a few log lines for startup
* python3.8: fix DeprecationWarning in qt/paytoedit
* adapt to aiohttp 4.0
* Aiohttp must be lower than 4.0.0
* keystore: change derive_pubkey API to return bytes
* wallet: faster decrypt_message for Imported_Wallet
* wallet: use abstract base classes
* Allow requests that never expire
* qt: introduce BlockingWaitingDialog
* lnworker: don\'t log InvoiceError
* lnworker: introduce PaymentAttemptLog NamedTuple
* ln chan verifier: fix code rot
* keystore: use abstract base classes, introduce MPKMixin
* qt: rm redundant line: ConfirmTxDialog.update_tx()
* follow-up prev: add comment
* keystore: cache BIP32Node.from_xkey(self.xpub)
* keystore: cache derive_pubkey
* bitcoin.py: base58 address: make sure all public methods test checksum
* base_encode/base_decode: change to saner API
* base_encode/base_decode: performance improvement
* ln channel open: save funding tx as local tx into wallet
* wallet: allow saving partial txns as local (but require txid)
* qt: handle exceptions when pressing \"Max\" button
* qt receive tab: show plain bitcoin address
* receive requests: encode lightning invoices as uppercase -> smaller QRs
* wallet: some clean-up re get_address_history vs db.get_addr_history
* qt requests/invoices: use TreeView.sortByColumn instead of model.sort
* appimage: update package in dockerfile
* add SECURITY.md
* qt ConfirmTxDialog: don\'t catch BaseException for make_tx
* fix race in NetworkJobOnDefaultServer constructors
* (fix) qt coin selection: signatures for coins would persist in memory
* also grind ecdsa low R when using libsecp256k1, and fix tests
* Add signature Low R grinding to match with Bitcoin Core
* trezor: rm obsolete gui text
* appimage: update package in dockerfile
* Tests: Remove on_channels_updated (#5819)
* rerun freeze_packages
* on_open_channel: rm call to non-existing method on_channels_updated
* hardware wallets: wizard no longer requests xpub at path \"m\"
* network: make best_effort_reliable smarter and a bit more lenient
* require ecdsa version >= 0.13.3
* wallet: better (outgoing) invoice \"paid\" detection
* wallet: minor clean-up
* tests: fix testcase test_restoring_wallet_with_manual_delete
* LNPeerAddr: fix equality tests and hence lnworker._last_tried_peer
* Color-Code Addresses in Kivy UI (#5774)
* qt history list: rm and fix magic number
* remove GreenAddress instant plugin
* interface: fix connecting to raw IPv6 (as hostname) on Windows
* qt history list: fix UnboundLocalError when searching
* interface.deserialize_server: better ipv6 handling
* LNPeerAddr: validate arguments
* LNPeerAddr: nicer str formatting for IPv6 hosts
* kivy: fix open_channel (API was changed)
* add/fix some open_channel related type hints
* minor follow-up prev commit
* Open lightning channels with partially signed tx. Fixes #5379.
* fix #5729
* fix #5728
* simplify add_transaction
* follow-up previous commit
* fix #5733
* add some type hints
* fix tests
* trivial: don\'t print frequent-case log line in lnpeer.mark_open
* lnpeer: only set initialized after both sent AND received \"init\"
* Refactor channel states: - persisted states are saved - state transitions are checked - transient states are stored in channel.peer_state - new channel states: \'PREOPENING\', \'FUNDED\' and \'REDEEMED\' - upgrade storage to version 21
* cli: clear up \"rbf\" arg for \"payto\" cmd in help text; and use eval_bool
* cli: load_wallet now auto-upgrades the WalletStorage when needed
* cli: fix load_wallet for storage-encrypted wallets
* simplify network callbacks in lnworker
* check channel funding_tx amount and script in save_short_channel_id
* bitcoin.py: remove some remnants of TYPE_ADDRESS, TYPE_SCRIPT
* trivial: use logger.exception instead of traceback.print_exc
* qt coin selection: allow selecting an empty set
* qt utxo list: spend_list is now a set (and renamed)
* lnpeer: (fix) force_close_channel was not awaited in some cases
* Return 401 from RPC server for missing auth.
* wallet: \"future\" txns num conf is now negative
* qt: consistently show tooltip when copying to clipboard
* Qt: Remove unused color from color scheme
* kivy: support invoices with \"max\" amount
* wallet: bump fee now supports coin selection
* qt open channel: minor dialog fixes
* ln: qt channel open: fix max channel size
* ln: update list of fallback nodes
* lightning qr codes: more robust parsing
* qt tx dialog: small clean-up in constructors
* qt send tab: subtract 2fa fee when clicking \"spend max\"
* qt send tab: don\'t allow paying multiple invoices that spend max \'!\'
* qt tx dialog: allow blanking feerate
* qt tx dialog: disable \"Finalize\" btn if tx is None
* qt tx dialog: small fee edit fix
* qt tx dialog: only allow \"save as local\" for complete txns
* qt: clean-up imports
* hardware wallets: handle when label is None
* fix #5761
* fix #5761
* fix #5765
* Fix missing wallet argument to _resolver
* fix #5767
* fix #5772
* fix #5766
* fix #5770
* fix #5764
* Show outgoing Lightning paymenst with red description
* hardware wallets: detect if label changed and update it in wallet file
* hardware wallets: better handle label collision when selecting device
* fix qt seed dialog (follow-up af86c7e3fdc80cace11de331abafddc012f36867)
* hardware wallets: pull udev rules into our repository
* old_mnemonic: speed up mn_decode
* fix: cache wordlists
* make Mnemonic.mnemonic_decode faster
* fix #5757
* Pass make_tx function to ConfirmTxDialog - allow \'spend max\' when opening a channel (fixes #5698) - display amount minus fee when \'max\' buttons are pressed - estimate fee of channel funding using a template with dummy address
* qt coin control: introduce second status bar
* qt addresses tab: fix \"Spend from\"
* TxDialog: fix hooks. only show psbt widgets when applicable.
* PreviewTxDialog: small UI changes
* qt utxo list fixes
* PreviewTxDialog: fix RBF checkbox
* fix Qt tx dialog randomly disappearing (due to gc)
* qt/confirm_tx_dialog: fix qt warning
* add option to pay multiple invoices
* GUI: Separate output selection and transaction finalization. - Output selection belongs in the Send tab. - Tx finalization is performed in a confirmation dialog (ConfirmTxDialog or PreviewTxDialog) - the fee slider is shown in the confirmation dialog - coin control works by selecting items in the coins tab - user can save invoices and pay them later - ConfirmTxDialog is used when opening channels and sweeping keys
* hardware wallets: create base class for HW Clients. add some type hints
* qt address list: check internal address corruption when copying address
* CoinChooser: avoid NotEnoughFunds if zero buckets are sufficient
* rename \'copy column\' to \'copy\'
* tx_from_any: strip whitespaces
* qt FileDialogs for transactions: better file extension filter
* transactions (qt): fix opening raw bytes files
* transaction.tx_from_any: recognise even more types, and add tests
* wallet: fix #5748
* psbt follow-up: fix ln cooperative close, and minor type clean up
* transaction: helpful error msg if user tries to load old partial tx
* transactions: reading QR codes: clean-up and accept all encodings
* psbt: implement PSBT_GLOBAL_VERSION field
* psbt: implement CompactSize key types (previously single-byte types)
* psbt: allow insecure signing of legacy UTXOs without full previous tx
* kivy tx dialog: was missing tx.add_input_from_wallet() call
* tx dialog: try harder to show fee
* test_wallet_vertical: add test for manual coinjoin
* psbt: \"updater\" must swap NON_WITNESS_UTXO for WITNESS_UTXO if txin is segwit
* psbt: test_wallet_vertical: add asserts to avoid silent breakage of psbts we create
* transaction: to_json() debug methods display bip32 str (not int) paths
* psbt: follow-ups: BCDataStream.read_bytes() should return bytes
* psbt: follow-ups: fix trezor
* psbt: follow-ups: fix digital bitbox
* psbt: follow-ups: fix ledger
* psbt: cleaner API for serialize
* methods
* psbt: only include xpubs for multisig wallets
* psbt: fix bug re witness_utxo serialization
* qt tx dialog: add export options for coinjoins and for coldcard
* psbt: don\'t put xpubs and full paths into tx by def; only while signing
* psbt: put fake xpubs into globals. keystores handle xfp/der_prefix missing
* add support for manual coinjoins
* integrate PSBT support natively. WIP
* qt tx dialog: show dropdown for \"export\", instead of separate buttons (#5739)
* plugins/coldcard/qt.py: bugfix for API change on main_window.show_transaction
* build(deps): bump ecdsa in /contrib/deterministic-build
* qt settings dialog: small fixes
* commands: gettransaction cmd now tests txid before returning tx
* fix qt invoices list: handle lightning disabled
* (trivial) logging \"verbosity_filter\" was renamed to \"LOGGING_SHORTCUT\"
* fix logic error in lnworker.on_channel_closed
* fix #5731
* fix #5726
* kivy: - simplify menu - add lightning network dialog
* minor fix: show_transaction params
* pass both invoice and description to show_transaction
* follow-up a0ec2690cf0a1c36bc468fbfb5aec1954eff72ae
* fix clear_requests button
* Call wallet.set_paid after onchain broadcast. Check if invoices are expired in util.get_request_status
* kivy: fix can_pay in invoice_dialog
* delete channel from db in remove_channel, becaose it is called from lnworker
* filter out None in wallet.get_invoices
* fix test following aac0fe9ae6d36b0500f00ad0d5d3378c54a30a5a
* fix fee in lnworker.get_history (sign error)
* wallet: fix bump_fee when there are only change outputs
* kivy: show status with color. show inflight attempts.
* kivy: add \'delete channel\' button
* kivy: minor fixes
* segwit_addr: Use normal comparison for tuple literal (#5712)
* folllow-up c721e880d0e203c770328d0830a37bd78eeae0e2
* Qt: generic add_copy_menu method for MyTreeView lists
* fix #5702
* misc Qt fixes - improve layout of send tab - use tabs to show receive widgets - add menu item to copy address from request - show copied content in copy dialog
* fix #5704
* fix #5701
* follow-up prev
* fix typo: wallet.requests -> wallet.receive_requests (#5706)
* fix expected returned peer address values when opening channel.
* fix typo
* kivy: toggle lightning dialog
* add remove_lightning command
* lnworker: less verbose
* minor: callback unknown_channels (follow-up 0966edc637ba927ea6767b44aa937b0ca7805dd7)
* Allow user to enable lightning in the GUI. Make it a per-wallet setting.
* Qt: add lightning button to status bar
* fine-grained callbacks for lightning network dialog
* payment log: show whether channel have been blacklisted
* move handle_error_code_from_failed_htlc to lnworker because it requires access to the network object
* Qt: separate lightning and watchtower dialogs
* fix #5695
* follow-up previous commit
* improve payment log dialog
* follow-up dd0be1541eb696d6a41420178543f2c36d20f80e
* lnonion: get_failure_msg_from_onion_error might raise in python 3.7
* bump version number to 4.0.0a0 (alpha version)
* Improve handling of lightning payment status: - Move \'handle_error_code_from_failed_htlc\' to channel_db, and call it from pay_to_route, because it should not be called when HTLCs are forwarded. - Replace \'payment_received\' and \'payment_status\' callbacks with \'invoice_status\' and \'request_status\'. - Show payment error logs in the Qt GUI - In the invoices list, show paid invoices for which we still have the log.
* lnworker: return error reason in await_payment
* follow-up previous commit
* Encapsulate lightning payment events: - make LNWorker.pending_payments private - public methods: payment_sent, payment_received, await_payment
* lnworker: rename \'invoices\' to \'payments\' when they can be in both directions
* remove another instance of lnworker accessed in lnchannel
* Remove lnpeer.payment_preimages: - we can await lnworker.pending_payments instead, because the preimage is saved - also, remove one instance of lnworker being accessed from lnchannel
* fix #5681
* wallet: minor invoices fix
* do not decode LN invoices in channel_details. fixes #5676
* remove redundant test from lnworker._pay, rename pay_to_route parameter to lnaddr
* fix tests: follow-up prev
* qt send tab: handle invalid ln invoice; and ln invoice with ln disabled
* bug fix in electrum/wallet.py
* tests: fix test_find_path_for_payment. need to close sqlite connection
* config: no longer singleton. it is passed to Wallet.__init__
* follow-up previous commit
* qt settings: create services tab for both watchtower and payserver
* Refactor invoices in lnworker. - use InvoiceInfo (NamedTuple) for normal operations, because lndecode operations can be very slow. - all invoices/requests are stored in wallet - invoice expiration detection is performed in wallet - CLI commands: list_invoices, add_request, add_lightning_request - revert 0062c6d69561991d5918163946344c1b10ed9588 because it forbids self-payments
* qt send tab: use monospace font in \"from\" UTXO-selection section
* Add from_coins arg to payto/paytomany
* qt: fix export history
* qt: fix address dialog
* commands: add type hints for \"wallet\" param, and fix code rot found via
* lnworker.sync_with_remote_watchtower: use proxy
* lnworker: accessing self.channels needs lock
* qt: show_info -> show_error
* lnworker: fix detection of already paid invoices
* lnworker: fee_msat is expected for all entries in history
* settings: add vbox with stretch
* settings: move block explorer to \'Transactions\' tab
* bitcoin.relayfee: minor clean-up
* fix dns issue on Windows
* coldcard tx dialog: \"export PSBT\" button should not raise on foreign ks
* coldcard: show multisig address: more intuitive error msg
* coldcard qt: change receive_menu to be similar to other hw plugins
* coldcard: do link_wallet in load_wallet hook instead
* coldcard: follow-up prev
* build_psbt.py: provide witness vs redeem or both scripts
* coldcard/build_psbt.py: bugfix: dont assume all keystores implement get_derivation, see BIP32Keystore
* Add multisig support for Coldcard plugin
* qt: (trivial) some type hints
* ecc: small clean-up
* simplify prev
* ecc: also use libsecp256k1 for point addition
* kivy: receive to ln invoice should be disabled if lightning is disabled
* kivy: fix \"use change addresses\" setting (previously ignored, always on)
* minor qt send tab fixes. notably \'send max\' was broken
* qt wizard: follow-up prev; simplify
* qt wizard: still show selector window if storage.__init__ raises WFE
* kivy: fix paying onchain invoices
* qt history tab txn drag and drop: fix #5635
* add SSL context to watchtower server
* move lightning settings to settings dialog
* Simplify invoices and requests.
* qt console: fix commands that do not expect a \'wallet\' arg
* get_tx_fee: further follow-up 7b828359c6049ab1910154e80490fbb1baaf5fa3
* follow-up 7b828359c6049ab1910154e80490fbb1baaf5fa3
* kivy: do not remove fee from tx value in history (minor)
* simplify get_tx_fee
* wallet: organise get_tx_fee. store calculated fees. storage version 19.
* follow-up 241873f0a4bcf907f5a4ae3bba087355a5f14c34
* wallet: txi/txo small clean-up
* address_synchronizer.get_history now returns HistoryItem(NamedTuple)s
* return fees in history, show them in kivy GUI
* follow-up prev
* fix bug in lightning get_history: filter settled htlcs first
* kivy: request PIN to load_wallet only on android
* define LNWatcher.do_breach_remedy
* fix simple_config.estimate_fee
* kivy: attempt at handling (some) exceptions on startup
* storage: read/write sanity checks
* qt wizard: turn \'temp_storage\' into local variable
* follow-up prev
* fix tests
* wallet: address_is_old is now checked using SPV (during sync)
* config: enforce that SimpleConfig is singleton
* follow-up on SingleConfig
* config: remove \'open_last_wallet\' side-effecting
* follow-up: SimpleConfig is supposed to be singleton
* follow-up cefa4762ba904ef92d32b4c90005013dd7a7ac4a
* add comment in storage._write
* do not create multiple instances of SimpleConfig (fix #5629). Add config field to wallet
* qt: add some type hints
* daemon: make \'wallets\' dict private
* transaction: kill \"name\", \"csv_delay\", \"cltv_expiry\" fields
* uncomment breach_remedy in watchtower
* Digital BitBox: Fix sending to self
* fix #5513
* add wallet_path to kwargs in run_cmdline
* remove --wallet option for daemon. fixes #3752
* wallet: address_is_old minor clean-up
* qt addresses list: use IntEnum for dropdown filters
* follo-up 35761d1241dbf2685f3fe2d7ee0c4795daec4260
* Save remote policy of chanel in wallet file (for private channels)
* wine build: add --build to ./configure: prevents cross-comp. misdetect
* build: when building libsecp256k1, patch Makefile.am before autogen.sh
* wallet: fix maturity off-by-one
* kivy: commit png icons (for svg resources) into repo
* kivy amount_dialog: truncate btc amounts to max precision
* fix #5618
* lnchannel: handle htlc-address collisions
* lnpeer: somewhat nicer log messages
* lnrouter: fix off-by-one in NUM_MAX_EDGES_IN_PAYMENT_PATH
* lnworker.invoices access now uses lock
* create class for ShortChannelID and use it
* only require libsecp256k1 if lightning is enabled
* fix #5605
* fix CLI exception handling
* Fix CLI. Some commands require wallet_path. Return error on exception.
* ignore exceptions in payserver
* commands: try to fix tests
* channeldb.load_data: attempt at fixing race
* lnpeer: longer timeouts
* follow-up prev (commands)
* CLI: always use the daemon\'s cmd_runner, and pass the \'wallet\' parameter explicitly to each command that requires it. Previous code was relying on side effects to set the wallet. This should fix #5614
* kivy: fix ln channel open via scan_qr
* qt: minor fixes
* add PayServer settings to settings_dialog
* Qt: move settings dialog to a separate module
* fix websocket messages
* fix ssl config names, add new config tab
* for now, use PR_PAID for onchain unconfirmed
* http server: add ssl and bip70 signed requests
* commands: fix \"close_wallet\"
* commands: fix \"restore\" cmd
* CLI: remove timeout for offline commands
* README: mention submodule init
* fix #5617
* storage: replace STO_EV_
* ints with IntEnum
* disable http server by default
* Qt: fix request menu
* fix submodule
* Integrate http_server (previously in electrum-merchant) Use submodule to fetch HTML and CSS files
* do not raise exception when add_own_channel adds channel update from the cache
* add_own_channel does not need to be async
* hw wallets: show DeviceUnpairableError nicely in qt gui
* qt main_window: fix receive_at, rm dead code
* hw wallets: fix \"show address\" functionality in qt receive tab
* qt receive tab: fix on-chain pay.requests without amount
* follow-up a4b24df4bb123db86d0d75113b889c2453bdf25f
* wallet/keystore: small inheritance clean-up
* fix json error in listrequests
* fix create_menu error #5609
* wallet.add_hw_info: also store \"is_change\" in output_info
* wallet.add_hw_info: minor clean-up
* (trivial) wine build: rm keys in Dockerfile
* appimage: don\'t rm jsonschema-
*.dist-info as pkg needs it
* replace daemon \'start\' subdommand with -d
* android build: persist gradle datadir
* only build one android apk on Travis (take 3...)
* Restructure invoices and requests (WIP) - Terminology: use \'invoices\' for outgoing payments, \'requests\' for incoming payments - At the GUI level, try to handle invoices in a generic way. - Display ongoing payments in send tab.
* Fix for onchain_history summary building
* (trivial) travis: move flake8 tests to first stage
* only build one android apk on Travis
* local jsonrpc: log exceptions daemon-side
* commands: add feerate param to payto/paytomany
* follow-up prev: only build one apk on Travis
* android apk: build two apks. ARMv7 and ARMv8
* android build: don\'t download Apache ANT on every build
* android build: update kivy, p4a, buildozer
* kivy: call register_callback only from main_window. Display CTN in channel details.
* Syntax change: Require --offline to run commands without a daemon. That makes the syntax less ambiguous. It also makes it possible to implement a CLI that does not import all the electrum modules.
* remove redundant \'stop\' in regtest setUp (should run a bit faster)
* main script: rm init_daemon (dead code), call sys_exit in init_cmdline
* pyinstaller binaries: include files needed by new jsonrpc libs
* lnpeer: make per-peer TaskGroup a field (as for interfaces), and use it
* network: handle main_taskgroup dying better. passthrough CancelledError
* Revert \"Remove early return in create_sweeptxs_for_our_ctx.\"
* test_breach_with_spent_htlc: do not overwrite default_wallet, load toxic_wallet instead
* revert ed086934e5f57745580628a5706a6a40856c695a (this does not work well with travis)
* make regtests more robust
* In \'daemon start\', do not return until the daemon can be reached
* Ignore exceptions raised in lnworker.on_network_update. Exception raised there may cancel the network\'s main taskgroup.
* Remove early return in create_sweeptxs_for_our_ctx. - This was added because we did not store the complete htlc history. - It makes the result dependent on the current channel state - That creates a race condition in sweep_info, because the result is cached. - As a result, test_breach_with_spent_htlc was randomly failing.
* android build: make sure to use correct pycryptodomex
* Remove electrumx.ml because of phishing (#5596)
* lnpeer: reestablish_channel - don\'t replay unacked msgs they alrdy have
* Fix travis error
* qt channels list: fields should not be editable
* bip70 payreq: catch TimeoutError to avoid hanging \"please wait\" dialog
* make parsing lightning qr codes more robust
* (trivial) fix variable name
* minor fix: ensure request amount is not None
* Travis: run regtests in separate job
* buildozer: use log_level=1
* lnaddr: Pull in Bech32 and Base58 prefixes from constants
* store qt-console-history in wallet file (fix #5563)
* test_lnrouter: Pull in chain_hash from constants
* Use NamedTuple notation for TxOutput in test_lnchannel
* kivy: remove hidden state in RefLabel, use it for seed and private keys
* kivy: remove context menus, cleanup unused files
* Kivy GUI improvements: - create unique instances of channels_dialog and addresses_dialog - display and refresh balances in channels_dialog - improve formatting of tx history - repurpose left button in receive_tab
* Display and refresh the status of incoming payment requests: - All requests have an expiration date - Paid requests are automatically removed from the list - Unpaid, unconfirmed and expired requests are displayed - Fix a bug in get_payment_status, conf was off by one
* kivy: add expiration button to receive screen
* kivy: update receive screen after adding request
* lnpeer, minor fixes: - pass orphaned_ids to lnworker.add_new_ids - fix enumeration of get_unacked_local_updates()
* kivy: minor fixes
* fix Flake8 tests
* run freeze_packages
* Turn daemon subcommands into RPCs
* minor fix
* remove jsonrpclib dependency
* Rewrite JsonRPC requests using asyncio. - commands are async - the asyncio loop is started and stopped from the main script - the daemon\'s main loop runs in the main thread - use jsonrpcserver and jsonrpcclient instead of jsonrpclib
* (trivial) fix type annotation
* lnpeer: in onion errors, handle channel updates both with and w/o type
* lnpeer: use correct failure codes in _maybe_forward_htlc
* do not raise BaseException
* lnrouter/channeldb: small import clean-up
* lnpeer: send own outgoing channel updates to remote peer
* channeldb: also store \"message_flags\" field for channel updates
* lnpeer: restore \"temp save orphan channel updates\" functionality
* lnworker: fix silent TypeError in _calc_routing_hints_for_invoice
* tests: some regtest tests need to mine more blocks to expire CLTVs
* tests: regtest.sh now uses consistent indentation
* commands.py: fix type of \"timeout\" arg
* lnpeer: on_channel_open should not fail on server error
* minor fix: always initialize Commands.lnworker
* Daemon: Replace get_server with request. This function performs a single RPC, and may raise a DaemonNotRunning exception.
* (trivial) fix getbalance
* daemon: simplify get_fd_or_server
* lnpeer: shutdown should wait until no HTLCs remain
* lnpeer: failed htlc error handling ignored length of channel_update
* lnpeer: add a few sanity checks to payment-forwarding (and related)
* lnworker: rework \"is_dangerous\"
* lnhtlc: htlcs_by_direction now returns dict keyed by htlc_id
* add jsonrpcserver/jsonrpcclient to requirements
* use aiohttp + jsonrpcserver in watchtower
* remove unused import
* lnpeer: make sure forwarding is disabled by default
* lnhtlc: local update raw messages must not be deleted before acked
* lnpeer: reestablish_channel - always replay unacked local updates
* qt: do not show paid requests
* fix race condition with channel_timestamps
* require data loss protect
* test funding_txn_minimum_depth, show it in GUI
* lnpeer: fix and simplify tests in maybe_send_commitment
* channel_db: load_data should load node_info
* kivy: show pending requests in receive tab instead of dialog
* kivy: lnpay_thread
* qt gui: simplify signals
* simplify tx history: do not use separate columns for lightning
* simple_config.estimate_fee: make sure method never fails
* lnhtlc.discard_unsigned_remote_updates: fix edge case
* lnpeer: should not mark channel as OPEN if reestablish did not complete
* lnpeer: reestablish_channel - fix data_loss_protect edge case
* move all ctn book-keeping to lnhtlc (from lnchannel)
* lnchannel: ctx output-ordering: identical htlcs are ordered by CLTV
* lnchannel: start using \"latest\" and \"next\" instead of \"current\" and \"pending\"
* lnworker: only reestablish channels after on-chain state is synchronized
* implement data_loss_protect
* lnpeer: make feature-bit testing easier
* lnpeer: reestablish_channel - replay un-acked local updates
* lnpeer: reestablish_channel - discard unsigned remote updates
* lnhtlc: move \'next_htlc_id\' from ChannelConfig to lnhtlc log
* lnpeer: make reestablish_channel saner
* lnhtlc: rename ctx_pending to revack_pending, and persist it
* lnworker: small clean-up of short_channel_id format
* lnpeer: channel_reestablished is now a queue (instead of future)
* lnchannel: trivial clean-up
* lnpay: check whether invoice has been paid
* kivy fix: get_latest_feerate
* lnworker.get_invoice_status: test if invoice is expired
* use aiohttp+jsonrpcclient to sync with remote watchtower
* fix: remove unused parameter to add_sweep_tx
* refactor a few lnchannel methods
* fix: constraints.feerate -> get_latest_feerate
* Synchronize watchtower asynchronously:
* (trivial) fix type annotation
* lnchannel: move fee update logic to lnhtlc (and hopefully fix it)
* revamp fee updates (draft)
* lnhtlc: (fix) was locking in too many updates during commit/revoke
* cli: fix add_peer cmd
* cleanup revoke_current_commitment
* follow-up prev commit: pass is_mine to _edge_cost
* Do not route through channels for which we did not receive both updates, because this often means one of the nodes is offline.
* fix: delete from channel_db
* channel_db: update channels_for_node when removing channel
* Use one LNWatcher instance per wallet
* improve regtest.sh with wait functions
* fix type: list
* regtest: remove cost limit
* lnwatcher: wait until lnwatcher is fully synchronized before check_onchain_situation
* Perform breach remedy without sweepstore: - add functions to lnsweep - lnworker: analyze candidate ctx and htlc_tx - watchtower will be optional - add test for breach remedy with spent htlcs - save tx name as label
* get rid of sql_alchemy
* Do not store message payloads in channel db. Use single primary key for addresses.
* optimize channel_db: - use python objects mirrored by sql database - write sql to file asynchronously - the sql decorator is awaited in sweepstore, not in channel_db
* separate channel_db module
* comment out convert, add logging statement
* kivy: simplify open_channel dialog
* pycryptodomex for android
* remove expensive sql request, python set comparison is faster
* Rework wallet history methods: - wallet.get_full_history returns onchain and lightning - capital gains are returned by get_detailed_history - display lightning history in kivy - command line: separate lightning and onchain history
* lnpeer: some exception handling clean up
* lnworker: set DATA_LOSS_PROTECT flag for LNGossip too
* qt channels list: add \"short channel id\" column
* do not \"import
*\"
* qt ChannelsList: some clean-up
* qt receive tab: fix update_receive_address_styling
* qt main window: hide \"Channels\" tab if lightning is disabled
* GUI refactoring for Kivy and lightning. This also touches Qt and wallet code.
* display lightning payment attempts using signal
* on_revoke_and_ack: be robust to exceptions raised in lnwatcher
* fix watchtower: sweep_tx must not be None
* lnworker: fix reestablish_peer_for_given_channel by passing chan explicitly
* fix encode_msg: optional fields were not sent
* send data_loss_protect fields if we support it
* on_commitment_signed: distinguish between exceptions
* qt: add clear button to receive tab, show invoice right after it is added
* request_lists: remove non-sense
* lnworker improvements: - enable option data_loss_protect - separate add_peer from open_channel - display exceptions raised in open_channel
* regtest: use while loops instead of fine-tuned delays
* encapsulate detect_who_closed in channel
* lnworker: catch exceptions raised by add_future_tx
* simplify_lnsweep
* lnhtlc: use boolean instead of int in ctn_latest
* lnhtlc: fix adding htlc between sending commitment_signed and receiving revoke_and_ack
* raise PaymentFailure in case of timeout (follow-up previous commit)
* move lnpay attempts logic to lnworker.pay
* lnsweep: minor fix
* lnworker: do not create sweep transactions before outputs can be redeemed
* fix tests broken by previous commit
* Let lnworker sweep HTLC outputs after breach, instead of lnwatcher
* on_network_update: check if channel is closed
* redeem htlcs: - fix bug in lnsweep: lnwatcher transactions were indexed by prev_txid - add test for breach remedy with unsettled htlcs - add timeout option to lnpay, and replace DO_NOT_SETTLE with SETTLE_DELAY so that we can read intermediate commitment tx in regtest
* lnsweep: simplify a few methods
* rework on_channel_closed in LNWorker: - use detect_who_closed; this allows us to redeem to_remote of breach ctx - do not redeem to_local of breach ctx, because it is redundant with lnwatcher - rename a few methods
* channel close handling: detect situation based on output addresses
* set default to_self_delay to 1 day
* ChannelDB: trivial bugfix for get_channels_for_node
* add to_remote to breach test
* add function new_blocks to simplify regtests
* qt ChannelDetails: fix show_tx
* move lnworker.first_block to constants
* lnpeer: process gossip in chunks
* ChannelDB.on_node_announcement: some speed-up
* fix ChannelDB.compare_channels: was raising \"too many SQL variables\"
* tests/regtest: stop using \"bitcoin-cli generate\" (deprecated)
* gui: channel_details minor fix
* minor fixes: remove_channel
* redo LNWorker pay: - wait until htlc has been fulfilled - raise if htlc is not fulfilled - return boolean success - try multiple paths in GUI
* gui channels_list fixes
* improve lightning_dialog GUI settings
* update electrumx starting script
* channel blacklist: minor fix
* add option to remove channel after it has been closed
* do not include \'force_closing\' in channel states, because it is not part of the peer protocol
* fix: key must be unique (sql)
* gui: improve display of lightning status
* improve filter_channel_updates blacklist channels that do not really get updated
* query_short_channel_ids: use Event instead of Lock
* fix: add_channel_update
* prune channels older than two weeks from database
* verify channel updates in peer\'s TaskGroup
* use a single queue for gossip messages, so that they are processed in the correct order
* verify node and channel announcements before entering sql lock
* lnpeer query_short_channel_ids: BOLT-07 says ids must be sorted
* lnpeer reply_channel_range: handle lnd
* parallelize short_channel_id requests
* LNGossip: sync channel db using query_channel_range
* save lightning invoice descriptions as labels and allow user to edit them
* post-rebase fix
* lightning network dialog
* use config instead of watchtower_window to decide if we close the app
* add labels to lightning history
* lightning: GUI improvements
* get_payments: do not include failed payments
* wallet: add lnworker in constructor for CLI
* fix column names
* do not SPV channel announcements; this is too resource intensive
* update regexp syntax
* follow-up previous
* enable lightning through command line option
* logging (follow-up rebase)
* fix tests
* logging: adapt lightning branch to logging changes
* Use separate lightning nodes for gossip and channel operations.
* remove test_require_data_loss_protect
* lnrouter: load data before finding path
* minor fix
* lnhtlc: handle fails asymmetrically
* lnchan: make_commitment and balance (follow-up prev)
* lnhtlc: small clean-up / docstrings
* lnhtlc: add type hints
* follow-up prev commit
* fix verify_sig_for_channel_update: use raw message
* lnpeer: - disable option data_loss_protect - disable query_short_channel_ids - increase timeouts in pay
* lnwatcher fixes
* increase timeout in open_channel
* lnpeer: - send data_loss_protect fields with channel_reestablish - close connection if we receive an unknown channel_reestablish - log all exceptions that make us close a connection - formatting
* lnrouter: fix get_last_good_address: one_or_none -> all
* lightning tx: remove amount from label
* channel_db: fix timestamp_range, reduce verbosity
* lnrouter fixes: - use gossip_queries_req instead of initial_routing_sync - add connected nodes to recent peers only after successful init - derive timestamp used with gossip_timestamp_filter from channel_db - fix query_short_channel_ids: 1. channel IDs must be sorted with zlib 2. limit request to 100 3. do not abuse this to request node_announcements; it is fine not to have all nodes. - fix get_recent_peers: 1. do not set last_connected_date to \'now\' if we never connected a node 2. sql query was misconstructed and was returning only one peer - populate FALLBACK_NODE_LIST_MAINNET with nodes that have the requested flags
* fix sql conflicts in lnrouter
* gui: show only initialized peers
* lnpeer: spawn wait_for(self.initialized) to kill the TaskGroup if it times out
* lnrouter: fix primary key conflict in Policy update
* add get_channel_ctx to CLI, for testing breaches
* cleanup tests that use regtest: - separate setup from execution - install bitcoind and electrumx in travis - use the same framework for lnwatcher and forwarding - make tests runnable locally
* fix local_index in channel _shutdown
* basic watchtower synchronization
* follow-up variable renaming
* test forwarding
* fix icons in receive tab
* force-close channel if unfulfilled htlc is close to cltv expiry
* fix tests (follow up prev commit)
* save timestamps in htlc log
* follow-up previous commit
* factorize channel opening code into chan.open_with_first_pcp
* simplify points, remove side-effect in reestablish_channel
* fix local/remote confusion in reestablish_channel
* do not duplicate ctn in channel log and config
* lnhtlc: remove unused field in log
* reestablish_peers_and_channels: spawn tasks in for loop
* post rebase fixes
* lnhtlc: rename ctnheights -> ctn
* lnwatcher: store transactions as binary
* create parent class for sql databases
* lnwatcher: save sweepstore in sqlite database
* start asyncio loop in test_lnrouter and test_lnpeer
* sqlite: do not use scoped_session
* add sqlalchemy to requirements
* follow-up previous commit
* lnrouter: perform SQL requests in a separate thread. persist database.
* Flatten the structure of lnrouter, so that DBSession is not used outside of ChannelDB
* sqlite in lnrouter: lnpeer: introduce _gossip_loop for gossip handling separated from message handling
* sqlite in lnrouter: remove useless InDB suffix
* sqlite in lnrouter: request missing channel_announcements and node_announcements
* sqlite in lnrouter: avoid exceptions on shutdown
* sqlite in lnrouter
* add \'txpos\' field to lightning history items, in case two transactions have the same timestamp
* add future transactions to address synchronizer
* history: add column for ln amount
* fix amount_msat sign in get_history
* follow-up previous commit
* improve watchtower gui
* lightning: display forwarded payments as a single history item
* lnchannel: pass reference to lnworker
* lnchannel: save timestamp when we settle
* ln_message: trigger notification instead of popup
* lnchannel: save htlc preimages as soon as possible but horribly hacky
* lnchannel: only consider payments finished when we revoke our old ctx
* lnhtlc: revert 0c4e7b856f8c96c4f0a33bf3e0d1c8fd8184bd36
* travis: don\'t build binaries on ln branch (also for appimage)
* qt: update whole gui on every LN payment
* lnpeer: check that remote only sends commit_sig if there are changes
* qt: handle LN invoices better in Send tab
* lnworker: minor clean-up re payment_completed
* lnhtlc: fix received_in_ctn (LOCAL->REMOTE)
* tmp fix for circular imports
* qt request_list: disable editing existing items
* qt request_list: minor fix for context menu
* qt request_list: fix changing between items
* lnhtlc: handle settles like adds (asymmetrical across ctns)
* more post-rebase fixups
* lnchannel: add_htlc and receive_htlc now take and return UpdateAddHtlc
* lightning: Save invoices and preimages separately. Save preimages when forwarding
* lnpeer: distinguish local and remote pending updates
* lnchannel: reformatting
* lnpeer: send commitment after receiving updates
* move lightning icon
* lightning post-rebase fixups
* follow-up previous commit
* lnpeer: replace asyncio.sleep with events
* code refactoring: _maybe_fullfill_htlc, _maybe_forward_htlc
* lnchannel: fix error message
* Refactor LNPeer in order to support HTLC forwarding: 1. Do not perform channel updates in coroutines, because they would get executed in random order. 2. After applying channel updates, wait only for the relevant commitment (local or remote) and not for both, because local and remote might be out of sync (BOLT 2). 3. When waiting for a commitment, wait until a given ctn has been reached, because a queue cannot be shared by several coroutines
* test_lnpeer: add names
* Rename lnchan, lnchannel_verifier, lnbase Auto-completions are a pain if files share a long prefix
* lnworker: save outgoing invoice when initiating payment
* qt: channel_details: prevent crash on stuck SENT htlc
* move lightning message encoding to new lnmsg module
* lightning: post-rebase fixes, read_QIcon and invalid import
* test_forwarding: do not set HOME
* lnbase: rename methods, fix tests
* script that tests htlc forwarding
* Forward HTLCs
* lnworker: get_channel_by_short_id
* lnpeer: receive_and_revoke, send_and_revoke
* set short_channel_id regardless of channel state, because peer might be disconnected
* show amount in channel opening/closure
* fix: test short_channel_id before removing from channel_db
* history tab: render channel opening/closure on a single line
* restructure channel_reestablish, resend funding_locked if needed
* fix tests
* move LNPeer handshake back into initialize
* history: better handling of None timestamps
* follow-up previous commit
* create transport and perform handshake before creating Peer
* do not add ephemeral addresses to recent peers
* fix channel closure when it was requested by the remote party
* CLI: use funding_point in channel_open and channel_close. add host:port to nodeid
* rpartition->rsplit
* follow-up prev commit: use maxsize to sort timestamps
* save channel timestamps, and show lightning payments in history tab
* channel: is_closed
* fix lnworker.get_balance
* gui: display lightning balance in status bar
* ln: show full chan id in list, use Event for initialized, more timeouts, return peer from add_peer, set max_htlc_value_in_flight_msat to capacity
* add watchtower_window
* gui: show incoming lightning requests, add on-chain icon
* Store boolean is_received in lightning invoices. Sort lightning history with timestamp. Minor fixes
* tests: update lnbase test to use 4-tuple for invoices
* follow-up prev commit
* lightning:
* store invoices for both directions
* do not store lightning_payments_inflight, lightning_payments_completed in lnworker
* payment history is returned by get_payments method of LNChannel
* command line: lightning history, lightning_invoices
* re-enable push_msat
* lnbase: fix on_open_channel, add TODOs for missing validation
* revert low max_htlc_value_in_flight_msat, fix test
* ln: handle channel limits better, show remote limits in details dialog, replace rusty\'s testnet peer (doesn\'t work currently)
* rename paying -> inflight
* turn lightning_payments_completed into dict. Show status of lightning payments in GUI. Make \'listchannels\' available offline
* fix test
* remove deterministic derivation for testing
* instanciate LNWorker without Network
* ln: warn when negotiated feerate is too low
* ln: add test_lnwatcher
* lnworker: handle null whitelist correctly
* lnworker: fix \'channel details\' with stuck htlc
* lnbase: work around peer not sending funding_locked so channel doesn\'t get marked open
* ln: add closechannel cli command
* lnworker: return txid from force_close_channel as expected
* lnwatcher: fix incorrect tuple unpacking in do_breach_remedy
* lnchan: fix per_commitment_point number in verify_htlc
* ln: request_list: post rebase fixup (remove new_request_button deactivation)
* sort requests by date
* simplify requests list
* confirmation dialog before force closure
* channel_details: minor fix
* lightning: simplify request tab
* ln: fix sweeping htlc output from remote ctx (timeout e.g. without htlc tx)
* lnchan refactor
* request_list: select new items
* lnpeer: print port in error_messages
* ln: two remaining encumberedTx removal remnants
* use to_dict (follow-up baa03a469f3e0e0ae61593272f5cb7e2483d49ad)
* request_list: do not mention that ln invoice is bolt-11
* request_list: fix qr code display and keyboard selection of lightning invoices
* formatting
* remove useless returns and cryptic names
* ln: remove EncumberedTransaction
* lnbase: fix sig encoding in mutual close
* lnsweep: use dicts consistently
* lnchan: remove debugging code, commented out code
* lnchan: only sign force_close_tx when demanded, assure consistency, fix test
* lnbase: fix NameError
* lnchan: make force_close_tx() assure that tx is valid, trigger failure in test
* fix error message
* fix lnsweep: prevout
* fix test_lnchan
* lnchannel: store pre-signed sweep transactions after each new commitment
* on_close_channel: fix output index, and simplify lnsweep
* LNWatcher refactoring: - do not store non-breach transactions - send \'channel_open\' and \'channel_closed\' events - force-closed channels are handled by LNWorker
* lnsweep: return ctx.txid instead of None
* qt main_window: do not unregister on shutdown
* lnsweep: make maybe_create_sweeptx_for_their_ctx_to_local consistent
* Channel: add current_commitment method
* format message
* show lightning network capacity in GUI
* lnsweep: fix create_sweeptxs_for_their_just_revoked_ctx
* update lightning.json
* lightning: post rebase qt gui fixes
* add pycryptodomex to requirements
* use gossip_timestamp_filter instead of request_initial_sync
* qt: channel_details: add more info: sent/received, channel id, funding tx, short channel id, node id
* lnaddr: make it possible to use lnaddr to decode arbitrary invoices on the cmd line
* rm \'cryptography\' as dependency; use new pycryptodomex version
* fix channel closure: - add \'CLOSING\' state - wait until channel has no inflight HTLC - end fee negocitation when both parties agree on the fee (previously code ended it only when the other party had broadcast) - broadcast the closing transaction
* follow up \'replace properties with functions\'
* further simplify lnwatcher
* lnchan: restore process_new_offchain_ctx
* fix prev
* move sweeping methods from lnchan.py to new file
* lnchan: follow-up \"replace properties with functions\"
* make LNWatcher inherit AddressSynchronizer
* lnchan: replace properties with functions
* qt: channel_details: remove demo code
* channel details with list of htlcs
* Kivy: Lightning support in Receive tab
* tests/lnbase: stub on_channels_updated
* Kivy: open channel dialog
* follow-up prev commit
* lightning: do not handle more than one fee update at a time
* Kivy: Support Lightning in Send tab
* kivy: restore channel list to working state, add [force-]closing functionality
* fix ln tests
* lnutil: restructure channel config namedtuples (local/remote config)
* add command for listing invoices and their progress, fix list_channels
* function that returns map from commitment number to list of HTLCs
* after rebase fixes
* do not co-op close channels with pending htlcs
* call force_close_channel on LNWorker, not Peer
* avoid leaving FORCE_CLOSING state, rebroadcast closing tx if reorged out
* move force_close_channel to lnbase, test it, add FORCE_CLOSING state
* lnwatcher: do not get_transaction before broadcast
* lnwatcher: more detailed logging, support notifying test suite of txs
* lnwatcher: ensure probable spendability of prev_tx
* use IntEnum for TxMinedDepth
* watchtower: add watch_channel rpc
* lnchan: use NamedTuple for logs instead of dict with static keys (adds, locked_in, settles, fails)
* lnchan: make sign_next_commitment revert state
* remove incorrect docstrings, attribute docstring sources where applicable
* after rebase clean-up
* test_lnbase: add test that pays to another local electrum
* lnbase: more type annotations, and minor fix
* add licence headers to more files
* add lnd copyright boilerplate to lnchan, test_lnchan
* lnbase: mark initialized later, add tests, etc
* lnworker: fix listchannels
* lnbase: do not assert only one htlc in commitment
* lightning channels reserves: use pretty balance in Qt, fix bugs, add tests
* use WaitingDialog to close channels
* add close_channel method to peer
* fix typo
* parse invoices with lightning: prefix
* lnbase: self.channel_reestablished is not a queue
* lightning channel reserves
* lnworker: store invoices based on payment_hash
* lnbase: call save_channel in revoke and receive_revoke
* fix co-op close
* follow-up redeeming of local outgoing htlc outputs, fix tests
* lnutil.make_funding_input: don\'t return payment pubkeys
* redeem htlc outputs of our local commitment transaction back to wallet
* some more type annotations that needed conditional imports
* lnchan: set diagnostic_name
* better handling of channel updates for private channels
* lnrouter: can_pay for own channels should use amount_to_forward
* lnrouter: run Dijkstra in reverse direction
* fix confusion re max path length
* protect against getting robbed through routing fees
* lnbase: when opening channel, test if we have enough balance first
* start failing htlcs
* lnonion: implement error packet construction
* invoice \'r\' field fallback: change cltv to 1
* unify hardcoded regtest fee
* Qt gui: show messages about payment outcome
* encapsulate get_invoice in lnworker
* make on_update_add_htlc async
* follow-up prev
* fix multi-hop payments
* lnchan: add available_to_spend()
* lnchan: make function for onion_keys decoding/encoding
* follow-up 3460ba738e
* lnaddr: encode min_final_cltv into invoice
* log if no invoice has no routing hints
* revert rbf on funding tx
* lnbase: fix peer clean-up
* improve suggest_peers; add htlcs to list_channels.
* funding tx: use fees from config and set rbf
* clean-up Peer init
* if channel_update for our channel is missing, fill invoice with zeroes
* if payment fails with UPDATE onion error, also utilise channel_update for private channels
* ln: add lightning_listen config option
* lnrouter: use htlc_maximum_msat
* lnworker: make add_peer async
* follow-up prev commit: channel_flags, message_flags, htlc_maximum_msat
* add htlc_maximum_msat feature (bolt7)
* lnbase: typo in on_channel_reestablish
* path finding: minor clean-up
* make function for determining who pays fee
* fix prev
* lnrouter: filter out unsuitable channels
* gather definitions of LN exceptions
* fix tests (follow-up previous commit)
* move transport code to its own file
* future and callback are not needed here
* lnbase: split out BOLT-08 (Noise) implementation
* fix tests
* follow-up prev
* channel verifier: NetworkJobOnDefaultServer, and some error handling
* start channel verifier in network.start()
* add \'recḱless\' option to allow using lightning on mainnet
* minor fix
* fix race between network and lnwatcher (network.add_job does not always work)
* add watchtower class, send encumbered tx as json
* fix tests
* rebase follow-up
* lnbase: resend revoke_and_ack if necessary
* watchtower: use network job, catch exceptions
* remote watchtower: initial commit
* rebase fixup: use new broadcast_transaction API
* lnbase: use 45000 feerate on regtest for eclair compatibility
* open_channel: improved success message
* run open_channel in a WaitingDialog
* rename lnhtlc->lnchan, HTLCStateMachine->Channel
* lnhtlc: only store feerate once, don\'t store heights since we do not roll back
* lnhtlc: merge config and state, remove unnecessary properties
* lnhtlc: remove lookup_htlc, use heterogeneously typed lists
* lnhtlc: save settled htlc amounts separately
* qt channels_list: use repr() and not str() for exceptions
* fix previous commit
* follow-up 1c8a4bcfa497b117e4511c2f108dbca8a1adb793
* lnbase: handle some error codes re htlc failures (\'UPDATE\' flag)
* lnonion: use IntEnum and IntFlag for failure codes
* handle failing htlc after restart
* clean up local/global features
* on_channel_reestablish: try to get remote to force close channel if out-of-sync.
* on_update_fail_htlc: don\'t send commitment without changes
* simplify ChannelDB.on_channel_update
* travis: don\'t build binaries on ln branch
* when paying and there are multiple \'r\' hints, use one at random
* use \'r\' field in invoice when making payments (routing hints)
* make our channels private, and put routing hints in invoices we create
* lnworker: fix race
* lnaddr: clean up imports
* follow-up previous commit
* get rid of callbacks in lnwatcher, use network events instead
* lightning: fix tests
* follow-up lnwatcher changes
* lnwatcher simplification: remove ctn tests and pubkeys
* add more fields to list_channels
* aiosafe: define user visible exception class
* lnbase: propagate error messages received in on_error to their relevant coroutines
* create sweep transaction outside of lnwatcher
* fix race between lnwatcher/lnworker
* fix tests
* lnbase: Peer handles its own disconnection instead of lnworker
* follow-up prev: avoid storage key collision with old \'lightning_privkey\'
* make key derivation reasonable
* fix lnwatcher for channels initiated by remote
* lnutil: missing import
* lnhtlc: don\'t save FeeUpdates to disk, only keep FeeUpdate in memory while in progress
* ln: fix opening of channels (NameErrors)
* lnbase: update gui after accomodating channel opening request
* accept channel opening requests initiated by remote
* lnchannelverifier: (minor) use named fields of namedtuple
* fix lnworker.choose_preferred_address
* new network API: use broadcast_transaction with run_from_other_thread
* lnhtlc: multiply weight by feerate before rounding
* lnworker.pay(): lightning-integration support
* lnhtlc: generalize balance/pending_commitment code over htlc direction
* lnworker: add missing import
* lnbase: remove code duplication by introducing send_commitment(chan)
* lnbase: remove unnecessary branching and duplicated code in receive_commitment_revoke_ack
* lnhtlc: save settled or failed htlcs
* move connection string decoding to lnworker, fix test_lnutil
* qt channels_list: min width, not fixed with (for hiDPI displays), use OK as default button
* ecc_fast: require libsecp256k1 on lightning, channel graph breaks electrum without
* commands: add dumpgraph command to see which nodes electrum knows about
* requirements: require bitstring for lnaddr, cryptography for lnbase
* avoid code duplication between methods that send channel updates
* ln: commit fee updates as soon as possible
* ln fees: avoid resending same fee update before it has been committed to, docs
* lnwatcher: fix parameters to broadcast_transaction
* lnhtlc: decrease next_htlc_id counter when removing htlcs when saving
* simplify syntax
* ln: don\'t save htlcs that are not locked in
* lnhtlc: bip69 ordering of htlc signatues we generate
* ln: avoid duplicated htlc filter code, support multiple htlcs better
* lnutil: remove LI01 sort after Tx.from_io: fixup after rebase on da9d1e6001e3d1133901f5c2b4f16ba1b7a177e0
* avoid reading from queues concurrently in pay()
* add pong handler to reduce verbosity
* keep htlc history in case a htlc fails
* add command to clear ln blacklist, prevent error in pay() from killing Peer
* lnchannelverifier: some clean-up
* fix lnwatcher: network triggers were renamed
* rename LNChanAnnVerifier
* fix prev
* lnbase: save_channel in revoke
* fix: broadcast_transaction from non network thread
* partial revert of df24fb00578309b5db27876769306196238ec3f2: process_message should not be async
* channel verifier: fix request_chunk args
* add lnworker in start_network
* lnwatcher: do not assume addr_sync.synchronizer
* lnhtlc: also check received htlcs when validating commitment sigs
* ln: cooperative close with remote peer initiating
* lnhtlc: don\'t settle htlc with HTLCStateMachine too early
* lnhtlc: save logs and feeupdates
* lnhtlc: don\'t throw away fee updates or htlcs
* lnhtlc: cleanup and save settled htlcs
* lnhtlc: test that sent amount is received
* lnwatcher rebased
* lightning: post aiorpcx rebase fixup
* remove our closed channels from channeldb. note some FIXMEs
* lnbase: fix payments
* rebase follow-up: use namedtuples from master in new code (TxOutput, TxMinedStatus)
* decode onion errors to failure message type
* qt: pay_lightning_invoice - attempt paying multiple times in case of failure
* lnbase.pay: test if htlc can be added
* qt send tab: hide fee fields when paying with lightning
* qt open channel dialog: allow pasting invoices to open a channel
* lnrouter: use \'disable\' flags from channel updates in path finding
* ln onchain fees: use 2 block ETAs with 150 s/b fallback
* more reliable peer and channel re-establishing
* lnworker: fix confusion re what is in self.peers
* don\'t connect to same peer multiple times
* fix tests
* persist recent peers. implement dns seed bootstrapping.
* persist nodes in channel_db on disk
* move bolt-04 onion stuff to its own module
* ln: share more code with control path for failed htlc, verify ctx\'es
* ln: fix forwarded payment fees by removing separation between fee and amount in htlc objects
* ln: verify received commitment transactions during payment
* ln: use START_INDEX instead of 2
*
*48-1
* ln: save htlc signatures
* ln: avoid dust sends breaking channel, avoid inline functions
* channeldb: allow injecting trusted edges
* special case receiving payment after fee update, fee update injector
* persist channel db on disk. verify channel gossip sigs.
* start using electrum protocol 1.4
* lightning.json with gossip_queries
* constants.py: remove duplicate Simnet declaration
* ln: do not use mSAT accuracy for commitment fees
* ln: fundee must commit to fee first
* bolt-08 handshake must use ephemeral key
* avoid crash if don\'t have peer for open channel
* use correct dust limit for their to_local/to_remote outputs
* ln: initialize genesis with object, fix method name typo, use depth_target_to_fee
* lnwatcher: pass address instead of wallet reference
* encapsulate funding_address_for_channel
* allow paying invoice without amount. min feerate 253 sat/kw.
* lnbase: fee handling: add todo since depth_to_fee is inappropriate
* asyncio: do not set event loop from wallet
* ln: fix race in on_network_update
* ln: send update_fee on fee change, handle nodes without data_protect
* lnrouter: ignore duplicate channel announcement
* remove unused method
* ChannelDB: print_graph
* qt channels list: update channel when detecting close
* qt/channels list: show error in dialog
* lnwatcher improvements
* move channel_state into HTLCStateMachine
* follow-up a7e5b9421c014fc0be72696837cb9d77519c5e03
* lightning: improve request tab layout
* do not set background in frozen_style, it does not look good with dark theme
* fix crash in lnworker main_loop
* lightning: improve receive in Qt GUI
* add peer suggestion to open channel dialog. move add_peer code back to lnworker constructor
* add lnworker.main_loop to network.futures so it gets cancelled on exit. fix aiosafe verbosity.
* diagnostic_name: convert to str
* LNWorker: connect to multiple peers. save exceptions in aiosafe. enable adding peer in GUI.
* lightning: fixup after rebasing on restructured master
* Refresh LN status in GUI using network callback.
* lnhtlc: remove unnecessary double application of pending feerate
* ln: enable receiving dust htlcs
* lnwatcher: naive code to sweep to_local from our ctx (will not wait for timelock yet)
* ln: use pending_local_commit while closing (won\'t be revoked)
* ln: raise our dust/reserve to 546 to be compatible with c-lightning
* ln: test fix: our commit fee is implicit from outputs
* lnbase: do not revoke more than once if we have missed reading commitments
* lnwatcher: sweep to_remote and to_local outputs if they close
* ln: revoke before sending bare ctx in pay(), remove subtraction of trimmed amt from fee
* ln: add two trimming tests, avoid negative numbers in htlc trim decision
* lnhtlc: fee update upgrade and passes ReciverCommits and SenderCommits tests, fix NameErrors in lnbase
* lnaddr: remove remnants of lightning_payencode directory
* lnaddr: fix imports
* move comment
* move lnaddr.py to lib
* ln: avoid code duplication
* ln: avoid recursive dependencies, make new lnutil
* ln: merge OpenChannel and HTLCStateMachine
* ln: shortcut some OpenChannel fields to traversing too much
* ln: store HTLCStateMachine in lnworker.channels
* improve Qt Receive tab for LN payment requests
* Separate open_channel dialog. In open_channel_coroutine, use host and port from channel announcements
* ln: use new non-classmethod add_signature_to_txin
* ln: trim dust htlc outputs
* do not set channel state in close_channel; the watcher should do it
* lightning: single shared instance of Watcher, ChannelDB and PathFinder
* disable lightning on mainnet
* ln: improve lnhtlc, passes test
* lnhtlc: use current_per_commitment_point, current_commitment_signature
* fix reestablish_channel
* reestablish channels in network callback
* channel watcher class
* ln: add was_announced in test_lnhtlc
* ln: close channels
* ln: don\'t corrupt channels storage when multiple funding_locked are received
* ln: don\'t break channel when failing htlc
* ln: announcement reliability fixes for qt, remove asserts forbidding unbalanced channels
* ln: begin handling htlc failures
* add minor comment for RouteEdge as clarification
* LNPathFinder: cltv delta of first edge in a path should be ignored
* ln: channel announcements
* ln: lnpay: revoke until we get a commitment tx without htlcs
* ln: fix reestablishing channel with no mined funding tx
* ln: fix repeated payments
* ln: avoid code duplication
* ln: save remote\'s secrets in RevocationStore, not our secrets. call lnhtlc.receive_revocation
* lnbase/lnhtlc: use lnhtlc more instead of manually constructing tx\'es
* lnbase: use sign_next_commitment for initial remote_ctx
* lnbase: use lnhtlc when verifying our initial commitment tx
* lnbase: use broadcast_transaction instead of broadcast (follow up e57e55aad)
* test_lnbase: use new Peer API (with lnworker)
* ln: remove unneeded forwarding htlc features, check commitment sig using lnhtlc while receiving
* ln: integrate lnhtlc in lnbase, fix multiple lnhtlc bugs
* ln: request_initial_sync, increase our max_htlc_value, fix receiving payment
* do not block GUI with open_channel
* lightning: display remote balance in gui
* lnbase: mark_open on startup
* revert the introduction of add_invoice_coroutine in a612c2b09
* do not pass channel list to update_rows signal, as it is sent to all windows
* wait for peer.initialized in channel_establishment_flow
* follow up 0b3a882e7d57c8a42be48c491a46dc814eab6acb
* simplify funding_locked expose lnworker in peer update channel_db when channels are open
* Display channel status in the GUI.
* integrate channels_list with existing framework
* qt: fix unit of lnaddr.amount
* follow-up a612c2b0983ab4c6798156aebf1cd550fb3e0447
* ln: htlc state machine (not used yet)
* ln: save channels in dict, warn on invoice exceeding max_htlc amount
* lightning: connect send button
* lightning GUI: use existing receive and send tabs with lightning invoices
* ln: don\'t make invoice if peer can\'t possibly pay, append _sat to sat parameters to avoid confusion
* lnworker: generate and save private key
* lnworker: separate invoice creation from payment flow
* ln: restore channels correctly after restart
* fix channel_reestablish
* lnbase: fix read_message
* ln: restore functionality
* ln: save remote node_id in channel
* split lnrouter from lnbase
* remove function H256
* fix amount in open_channel, add listchannels command
* move on_funding_locked to lnworker
* lightning: add payment methods to lnworker
* lightning: move lnworker code to its own module
* fix lnaddr.py following rebase
* update lnbase after crypto refactoring
* lnbase: remove lnbase stub
* lnbase: pass password to mktx
* qt: fix password passed to open_channel, cleanup
* lnbase: mSAT hygiene, multiple multi-hop payments can be received
* kivy: port lightning ui to lnbase
* lightning: remove hub based approach, port qt gui to lnbase
* lnbase: use small buffer when reading, support new_channel without payment in online test, send channel_reserve_satoshis
* lnbase: use correct cltv_expiry calculation (use invoice)
* lnbase: fix multi-hop payments
* lnbase: fix onion-hop payload construction again (cltv currently broken)
* lnbase: fix multi-hop fees, initial handling of received update_add_htlc during payment
* lnbase: calculate cltv_expiry for onion_packet correctly
* lnbase: try multi-hop onion package, type safety
* PathFinder: change path element semantics from \"from node, take edge\" to \"to get to node, use edge\"
* create route from path, that includes extra info needed for routing
* bolt-04: decryption of errors
* lnbase online test: use random node key when making new channel, save node key, multiple actions per invocation
* lnbase: fix pay(), save htlc_id\'s, generate onion packet correctly
* lnbase/online_test: save short_channel_id to wallet and build onion packet with it
* calc short_channel_id after funding locked
* lnbase: initial \'payment to remote\' attempt
* lnbase: formatting, remove imports
* lnbase: verify commitment tx\'es again
* lnbase: infinite amount of incoming payments
* lnbase: two payments working, temporarily disable sig check
* lnbase: store remote revocation store, don\'t store all remote revocation points, verify ctn numbers in reestablish
* lnbase: add RevocationStore test, remove unnecessary lnd helper functions
* lnbase: compact commitment secret storage
* lnbase: no negative commitment number nonsense
* lnbase: move channel commitment number increment to function
* lnbase: receive repeated payments
* tests: don\'t use default lightning_peers in online test
* lnbase: channel reestablishment working
* bolt-04: implement processing of onion packets
* minor clean-up of prev. util.xor_bytes
* implement bolt-04 onion packet construction
* lnbase: save channel details in wallet, enable running online test with reestablishment_mode
* lnbase: move waiting for funding_locked to new function, make function for signing and sig conversion
* lnbase: make function for building htlc_tx depending on if it is for_us/we_receive
* lnbase: verify their htlc signature
* lnbase: standardize to_bytes calls
* lnbase: fix custom local to_self_delay, use node privkey derived from timestamp in online test
* test_lnbase_online: pass password=None to channel_establishment_flow
* lnbase: avoid copying variables, insert newlines
* lnbase: derive keys from wallet keystore
* lnbase: avoid local variables, remote useless comments, name basepoints as such
* lnbase: set new field in Transaction instead of returning a tuple in make_commitment
* lnbase: set to_self_delay back to 144, defer cltv_expiry problem
* lnbase: use correct delay
* lnbase: avoid code duplication, return htlc outpoint dict in make_commitment
* lnbase: simplify commitment transaction building with open channel
* lnbase: organize channel data
* lnbase: allow passing KeypairGenerator to channel_establishment_flow, fix derive_privkey
* lnbase: receiving invoice payment works
* lnbase: commitment_signed, revoke_and_ack now accepted without errors
* bitcoin.py: SCRIPT-related clean-up. transaction.py: construct_witness
* lnbase: fix their new commitment transaction (htlc tx construction still incorrect)
* lnbase: fix bug in message parsing
* follow up b5eb7dd7683f24f03c80ab8f612658b5f3966eb1
* lnbase: attempt at making htlc_signature to send (currently remote fails due to wrong num_htlcs in commitment_signed)
* simplification
* lnbase: add TODO explaining how to verify htlc_signature given to us
* lnbase: verification of new local commitment working
* lnbase: derive next keys when making updated local commitment transaction
* lnbase: try to receive payment, work on commitment tx with htlcs
* lnbase: handle commitment transaction update (receive funds, not working yet)
* simnet/testnet support in bolt11, set max-htlc-value-in-flight
* transaction.py: sign_txin. allow override for get_preimage_script. test_commitment_tx_with_all_five_HTLCs_untrimmed_minimum_feerate now passes
* redundant: you subscribed only to \'updated\'
* lnbase: verify remote signature
* channel_establishment_flow: use get_per_commitment_secret_from_seed
* lnbase: improve htlc_tx generation (only localsig wrong)
* get_per_commitment_secret_from_seed: small clean-up
* fix derive_secret
* get_per_commitment_secret_from_seed (not working yet)
* lnbase: avoid race while waiting for funding_locked, wait for un-reversed hash
* complete bolt11 port to ecdsa instead of secp256k1
* channel_establishment_flow: wait for confirmations of funding txn
* add processing flow for funding_locked
* lnbase: fix parameters to make_commitment in htlc test
* transaction.py: shortcut witness/scriptSig serialisation
* lightning channels list: add mock server for testing
* lnbase: add some comments
* constants.py: Simnet inherits from Testnet
* use same servers for simnet as for regtest
* lightning-hub: update rpc stubs, do not ignore them in gitignore
* lnbase: fix initial commitment transaction
* refactor storage of channels, path finding
* avoid duplicating bech32 module
* lnbase: more work on make_htlc_tx
* lnbase: make_htlc_tx
* fix: use remote_per_commitment_point
* lnbase: derive blinded pubkey
* lnbase: fix variable name
* lnbase: add privkey derivation
* add test for key derivation
* lnbase: key derivation (WIP)
* lnbase: test signing of first htlc test case
* lnbase: make_received_htlc
* fix hash in make_offered_htlc
* cleanup lnbase tests
* lightning-hub: remove path hack, use relative imports
* naive route finding
* lnbase: offered htlc script construction
* use acceptable variable names
* lightning: separate testing from main code
* lightning: store network view
* lnbase: parse ipv6, fix transport bug
* lnbase: fix read_message, reduce verbosity
* lnbase: implement key rotation, request initial sync in localfeatures
* lnbase: verify signature in node_announcement
* bitcoin.py: implement add_number_to_script. fix CSV arg in make_commitment.
* lnbase: fix test
* implement script_num_to_hex. fix encoding of argument for CSV in make_commitment
* lightning_channels_list: use signals to avoid segfault
* fixes for make_commitment, but still incorrect destination address (csv arg?)
* lnbase: fix tx amounts
* lightning-hub: include ln relative to current directory
* lnbase_test: add first commitment tx with 5 htlcs test
* lnbase: fix locktime and nsequence
* lnbase_test: insert remote_signature and compare fields independently
* lnbase: create unit test for commitment tx
* lnbase: fix signature index
* lnbase: initial commitment transaction
* lnbase: fix funding address, funding_output_index
* follow up 1aac9e59ed957898fceef99b29b9cc17d7843569
* lnbase: communication privkey belongs to peer
* lnbase: more parts of channel establishment
* lnbase: remove unnecessary try/except
* lnbase: lnbase_test must use threadsafe task submission
* lnbase: decorator that handles exceptions
* lnbase: fix shutdown when lnbase has exception in main_loop
* lnbase: print exceptions from main_loop
* lnbase: initialize loop variable in main
* lnbase: add lnbase_test
* lnbase: expose wallet object in LNWorker
* lnbase: merge initialize and main_loop
* lnbase: handle error during channel establishment
* lnbase: channel establishment flow, avoid using Wallet instance
* lnbase: use relative imports
* lnbase: support simnet/testnet, create accepted open_channel message
* lnbase: use valid pubkeys in open_channel
* lnbase: try sending open_channel
* lnbase: add draft handlers
* lnbase: avoid reimplementing int.to_bytes
* lnbase: avoid reimplementing int.from_bytes
* lnbase: do not catch all exceptions, tolerate calculations with variables from kwargs
* integrate lnbase with network
* lnbase: process ping messages
* lnbase: create main loop
* lnbase: save buffer for next read
* lnbase: Peer class
* lnbase: fix json loading and indentation
* lightning: do not list python files as resources, use lightning spec generated serialization
* lightning network base
* lightning: qt channel dialog, fix for shutdown when lightning disabled
* lightning: channel details popup
* lightning: do not catch BaseException unnecessarily, fix clearSubscribers, detect passworded wallet correctly
* simplify parameters, add lndhost to config
* lightning: add --simnet and --lightning switches
* lightning: paste sample using clipboard
* kivy: fix channel list error handling, close functionality for inactive channels
* lightning: assert result type, add invoice qr dialog
* lightning: kivy: open channel button in invoice
* lightning: fix kivy channel close
* lightning: python3.5 compat
* lightning: fix channels dialog
* lightning: add missing import, set console to none initially
* lightning: do not require lock for broadcast tx, it is thread-safe
* lightning: save key derivation point
* lightning: separate thread for publish transaction
* lightning: use queueing lock
* lightning: less junk on console, quicker shutdown
* lightning: don\'t receive too much data, workaround by reading byte by byte
* lightning: complete moving of lightning objects, acquire net/wallet lock while answering lightning requests
* lightning: misc patches, launch asyncio loop on separate thread
* lightning: march 2018 rebase, without integration
* rename WizardChoiceDialog (ambiguous)
* wizard: try harder to have temporarily stored pw erased from memory
* qt preferences: cast some config values to bool
* signtransaction: pass pubkey to tx.sign (fix #5522)
* fix #5558
* disable go_back button in wizard password dialog (fix #5509)
* (trivial) time.clock is deprecated, replace with time.process_time
* kivy wizard: script type dialog now uses toggle buttons
* kivy wizard: dedicated button for seed options
* kivy: support bip39 seeds
* kivy wizard: undo Window.bind callbacks
* Travis CI: Use flake8 to find Python syntax errors and undefined names (#5467)
* qt gui: fix qrcodewidget pen for retina display
* commands: change API of \"make_seed\" and \"create\" commands
* rerun freeze_packages
* requirements: allow using newer pycryptodomex
* appimage build: change base to ubuntu 16.04
* ledger nano: fix monospace font on Windows, and text readability
* ledger: remove mobile pairing 2FA support for Ledger Nano
* build: update pyinstaller to 3.5
* wine build: pin build dependencies
* update block header checkpoints
* storage: better error msg on unsupported seed version
* qt console: accept kwargs for commands.py methods
* Unit tests for Blockchain.verify_header.
* Make sure bash can be found on
*BSD
* bitcoin.py: dedupe pubkeyhash_to_p2pkh_script
* wallet: fix offline hw wallet signing when not specifying --offline
* gui/kivy: fix installwizard back button behaviour
* Build: Set a fixed umask before starting Docker
* Removed dead exchange.
* Removed dead exchange.
* appimage build: rm \"build\" folder if present as it makes build non-reproducible
* change many str(e) to repr(e) as some exceptions were cryptic
* exchange_rate: fix #5495
* load version module in make_download
* pass host to upload script
* Update utxo list when label is changed on history list
* Thu Jul 11 2019 marecAATTdetebe.org- Update to version 3.3.8:
* prepare release 3.3.8
* windows build: calculate COFF checksum ourselves
* appimage build: build was failing on some host systems
* wallet: loosen bump_fee sanity check further
* transaction: segwit input signing was doing quadratic hashing
* transaction.serialize_preimage: trivial clean-up
* qt coins tab: let user filter by prevout_hash/prevout_n
* servers: follow-up prev
* servers: rm phishing domain
* transaction: fix remove_signatures
* wallet: fix restore_wallet_from_text edge case
* verifier: further sanity checks for SPV verification.
* android build: make buildozer.spec more similar to upstream example
* AppImage: Fix webbrowser.open not opening links
* AppImage: Bundle more binaries to increase compatibility
* Wine Build: Make it less noisy
* AppImage: Disable pip warnings about script install locations
* qt network dialog: let user edit server host/port in peace
* build macOS README: mention how Qt affects min supported macOS version
* exchange_rate: fix #5487
* crash reporter UX
* added trigger_crash method for testing crash reporter
* wallet: fix type error in _bump_fee_through_decreasing_outputs
* build readme nits
* Wed Jul 03 2019 marecAATTdetebe.org- Update to version 3.3.7:
* update make_locale doc references, and small nits
* mac build: fix locale in binaries
* make_tgz: build locale from deterministic submodule
* chmod push_locale
* separate push and pull locale
* update submodule
* prepare release 3.3.7
* fix prev: conditional import / type hint failure
* wallet: follow-up prev
* Do not pass storage to address_synchronizer
* trezor: use only Bridge when available
* crash reporter: in Qt subclass, do network request using WaitingDialog
* build-wine: build our own pyinstaller bootloader
* build-wine: some clean-up. cache downloads. better status messages
* build-wine: don\'t use gpg keyservers
* change electrum.png to square (by padding)
* wallet.bump_fee: loosen sanity check a tiny bit
* coinchooser: clarify docs for make_tx
* synchronizer: fix race in _on_address_status
* qt high dpi: fix some text fields
* TorDetector: minor clean-up
* Update block explorer URL for btc.com (#5438)
* ledger: (trivial) rm some remnants of hw1 setup
* interface: check if future already done in handle_disconnect
* wallet: some performance optimisations for get_receiving_addresses
* network: harden against eclipse attacks
* android build: persist debug keystore
* fix #4777 again...
* build: note whether binary is reproducible in each case
* interface.debug will now also print errors
* do not log client-side RPC executions
* build: make NSIS windows binary deterministic by changing the .ico file
* Appimage: follow-up b69249f6c333c56aa62761974bcf58a4cf3e8db1
* Appimage: nits. use \"fail\"
* AppImage: Patch Python sysconfigdata
* qt: set WWLabel text to be mouse-selectable by default
* build-wine: print some text before \"pip install\"
* requirements-hw: rm Cython
* AppImage: Remove unused binaries
* AppImage: Improve reproducible Python build reliability on Linux
* AppImage: Make build reproducible
* coinchooser: clear up what \"fee_estimator\" expects
* coinchooser: don\'t spend buckets with negative effective value
* tests: new tests for bump_fee and rbf_batching
* tests: fix existing bump_fee tests
* wallet: RBF batching will now reuse the change address
* wallet: make \"increase fee\" RBF logic smarter
* wallet: split \"change address logic\" from make_unsigned_transaction
* coinchooser: tweak heuristic scoring.
* coinchooser: refactor so that penalty_func has access to change outputs
* wallet: fix rbf_batching edge case
* qt crash reporter: add warning that report contents are public
* TxOutput usage: trivial clean-up
* kivy: show tx fee rate in tx dialog
* coinchooser: better account for fees in penalty_func
* json_db: fix remove_spent_outpoint
* qt msgbox: when using rich text, set text format to \"AutoText\" instead
* qt history list: tweak sort order of items
* plugins: on some systems plugins with relative imports failed to load
* follow-up prev
* wallet: stricter validation in export_private_key
* AppImage: update appimagetool version
* builds: parallelise \"make\" by setting \"-j4\"
* update block explorer URL for blockchain.info
* qt seed completer: colour words yellow if only in old electrum list
* android: update kivy, p4a, buildozer
* storage: fix bug in convert_version_17
* storage: fix some madness about get_data_ref() and put() interacting badly
* bip70 payreq: do not show error messages in gui
* follow-up prev
* qt payment requests: fix some races
* kivy tx_dialog: fix size of buttons in \"Options\" dropdown
* rerun freeze_packages
* requirements: restrict qdarkstyle to <2.7
* kivy: offer to copy raw hex tx to clipboard
* qt lists right click: fix #5365
* rm dead code
* hw: allow bypassing \"too old firmware\" error when using hw wallets
* deprecation warnings: only show when running from source
* interface: hide some server-induced errors from log
* interface: fix for aiorpcx 0.18
* qt receive tab: \"receive address\" is now coloured red if already used
* update to aiorpcx 0.18
* interface: fix connecting to new servers using self-signed certs
* wizard/hw: less spammy logs when hw library unavailable
* util: add function \"chunks\"
* kivy: \"paste\" button now works for transactions
* qt: allow QR codes to store a bit more data
* qt: \"Help\" and \"?\" buttons can show rich text
* interface: add comment
* fix #5376
* util.parse_URI: more granular exceptions
* interface: follow-up 6ec1578a90916436b3bfabe90cafd9bfc804a332
* qt settings: restart needed after toggling log_to_file
* follow-up prev
* interface was suppressing storage r/w exceptions
* keystore/transactions: fix overflow of derivation path indices
* Update Johoe\'s server address (#5363)
* Spreading malware (#5356)
* kivy: warn user during \"Send\" if high fee (change condition)
* Add AppImage to \"Creating Binaries\" in README.md
* Thu May 16 2019 marecAATTdetebe.org- Update to version 3.3.6:
* prepare release 3.3.6
* update release notes
* interface: follow-up 6cc70bc7a216afd129d24992029dcbd8e9dc861b
* AppImage: Remove unused PyQt5 modules
* AppImage: Remove Qt.so to prevent importing from PyQt5.Qt
* AppImage: Copy libusb binary into image
* wallet: (fix) synchronizer would also resub closed wallets...
* interface: when disconnecting due to RPCError, don\'t dump traceback
* fix 2fa wallet creation via qt gui
* qt wizard: change wizard_dialog semantics to raise exceptions
* (trivial) qt main_window: rm unnecessary indendation
* qt: factor out util.MessageBoxMixin.msg_box into function and use it
* wallet: test_addresses_sanity to include (part of) address in exception
* qt wizard: catch wallet/bitcoin exceptions (regression)
* kivy fx dialog: fix #5329
* json_db: enforce order of \'load_transactions\' and \'upgrade\'
* qt send tab: fix tx_size and fee calc in case of payment requests
* kivy wizard: fix #5333
* qt dark: fix2 \"In History tab, labels while edited were being clipped\"
* wallet: fix deleting address from Imported_Wallet
* wallet: fix balance_at_timestamp
* Thu May 09 2019 marecAATTdetebe.org- Update to version 3.3.5:
* requirements: pin PyQt5-sip version due to build problems
* update version
* date release notes
* update locale
* gitignore: add more build folders
* buildozer: add tests to exclude_dirs
* update release notes
* logging: don\'t log to file by default
* qt dark: fix \"In History tab, labels while edited were being clipped\"
* logging: \'-V\' cli option can blacklist/whitelist classes with short names
* synchronizer: show progress in GUI
* interface: use itertools.count
* logging: fix another call with multiple args
* logging: fix call with multiple args
* kivy: fix a race at startup
* fix wine build dir references
* requirements: bump python-ecdsa minimum
* kivy: fix IPv6
* kivy: fix crash in logging.py; platform.platform() not available
* wine build: rm old README
* servers: remove phishing server
* requirements: use older pycryptodomex for now
* qt console: failed to print certain objects with custom __eq__
* rerun freeze_packages
* network: sanitize_tx_broadcast_response - new strings in bitcoind 0.18
* qt dark style: fix padding of PayToEdit
* update release notes
* logging: expose \'disablefilelogging\' option in Qt preferences
* qt paytoedit: enable up/down keys
* qt paytoedit: better height adjustment
* servers: update mainnet default list (emzy)
* servers: update mainnet default list
* network.broadcast_transaction: add \"do not trust\" text to log messages
* rerun freeze_packages
* fix prev
* commands: fix encrypt/decrypt
* logging: port ugly accidental side-effect into readable explicit feature
* logging: log exceptions caught by crash reporter
* logging: make console log lines shorter
* logging: fix for kivy
* logging: cli options to filter for modules using -v
* logging: basics
* standardized logging base with ISO8601, UTC, rotating file logs, and more!
* Decouple my GPG pubkey from Animazing
* qt txdialog: word-wrap blockhash
* interface: partially fix ipv6 proxy
* qt: maybe batch do_update_fee() on network fee update
* coinchooser: improve performance significantly
* qt network dialog: \"use Tor proxy\" cb would get auto-checked incorrectly
* rerun freeze_packages
* requirements: relax qdarkstyle version
* update to aiorpcx 0.17
* keepkey: rm homescreen stuff (remnants from trezor?)
* Trezor: Minor nit in settings screen. Image size was shown as H x W
* qt tx dialog: show block height and block hash
* wallet: get_tx_info now returns NamedTuple instead of abomination
* qt tx dialog: two columns for tx stats
* qt: warn user if in testnet mode
* servers: update testnet default list
* Remove luggs\' server from default list (#5300)
* x509: show cert expiration date in error
* bitcoin: stricter check on WIF for compressed pubkeys
* update bitcoin explorer options (#5285)
* util make_aiohttp_session: use longer default timeout
* minor fix re translated string
* kivy tx dialog: allow removing local transactions
* kivy tx dialog: \"action button\" can have multiple options -> dropdown
* kivy: fix history tab fiat values
* cpfp: include fee already paid by parent tx in calculation
* util/Fiat: Fiat(No Data) should equal Fiat(No Data)
* qt tabs: restore filter state after refresh
* bitcoin: disallow importing/sweeping segwit scripts with uncompressed pubkey
* sweep/import key: show error in Qt GUI to user as tooltip
* network: allow longer timeouts in _run_new_interface
* leave max_button pressed (fix #5251)
* network: fix proxy case
* interface: better exception handling for _try_saving_ssl_cert_for_first_time
* network: do not connect to multiple servers on same /16
* network: cap number of server peers accepted from main server
* verifier: trivial clean-up
* interface: in server.version, send \"electrum/3.3.4\" as client name
* kivy: \"server lagging\" -> show number of blocks
* appimage build: nits.
* binary builder dockerfiles: update packages
* Strip whitespace from amounts when copying. Fix bug in request list where address was copied instead of column specific data (#5228)
* fix more DeprecationWarnings
* fix-up prev
* exchange_rate: add Bylls BTC/CAD rates
* fix some DeprecationWarnings
* make sure DeprecationWarnings are shown
* default servers: rm electrum3.hachre.de
* keystore: speedup for Old_KeyStore
* verifier: fix logic bug. after reorg, some verifs were not undone
* blockchain: fix bug when swapping chain with parent
* follow-up prev
* remove currency from amount fields in exported history
* windows DNS resolution: handle domain with only AAAA records
* qt invoice list: fix #5222
* windows DNS resolution: follow-up 9b0773cf2bf139eafe4a828c8964461d34ea9e23
* trustedcoin: longer timeout for server signing
* windows DNS resolution: handle IPv6
* follow-up prev
* android- all fiat currency with history option
* network: (trivial) ignore empty string donation address
* labels: don\'t dump trace if failed to connect to server
* exchange_rate: change default provider to CoinGecko
* exchange_rate: minor clean-up
* fx: add CoinGecko and CoinCap
* fix Revealer in binaries
* appimage: build python with curses and sqlite3 included
* rerun freeze_packages
* requirements: use PyQt <5.12 in binaries for now. for AppImage
* fix sign message not accept rich text (#5210)
* interface: if iface conn fails early, don\'t wait for timeout of \'ready\'
* rerun freeze_packages
* requirements: bump min keepkey
* keepkey: support v6.0.0+ firmwares (webusb)
* trustedcoin: better UX in Qt when cannot connect to TC server
* daemon: in detached modde, redirect strandard file descriptors
* qt Coins tab: better tooltip for frozen items
* qt Coins tab: add \"Copy ...\" option to context menu
* qt Coins tab: reorder columns so that outpoint is first
* add option to freeze individual UTXOs
* trivial wallet clean-up
* exchange_rate: raise for http status so empty hist rate dicts don\'t get saved
* labels plugin: no need for \'proxy_set\' callback
* commands: explicitly mention \"?\"/\":\" magic chars for \"create\" cmd
* qt network dialog: increase min size
* appimage: towards deterministic builds
* accept base43-encoded tx in Qt \"Load transaction\"
* new cli command: get_tx_status
* let DB handle addresses
* wallet: cache get_addr_balance
* wallet: towards restoring previous performance 2
* keystore: rm dead code
* wizard: fix regression: unencrypted wallets were not getting upgraded
* qt qrcodewidget: on MacOS, was grabbing whole screen
* daemon: make sure wallet paths are standardised everywhere
* storage: fix path standardisation
* wizard: partial revert of 2da6692f73921f3b651569900a63e9f3ce7fbc57
* qt wizard: minor clean-up
* wizard: some fixes
* [trivial] use namedtuple field by name
* wizard: fix decryption of hw wallet files
* wizard: allow kwargs in run()
* qt \"new transaction\" notifications: change wording
* wallet: fix RBF batching
* fix storage upgrade tests: \"fixture \'func\' not found\"
* wallet: rm dead code
* qt: close wizard after splitting an old multi-account wallet
* storage: fix convert_version_18
* storage: fix convert_version_17 and add new test case
* qt wizard: don\'t consider old version storage to be incomplete
* json_db: store Transaction objects in memory, not raw hex
* wallet: towards restoring previous performance
* post-storage_db-merge fixups
* wallet: generate addresses in Deterministic_Wallet constructor
* scripts: simplify quick_start
* commands: fix gettransaction
* wallet: fix bug in restore_wallet_from_text, and write tests
* commands/wallet: separate out \'create\' and \'restore\' core parts
* ledger: suppress error message if user cancels tx signing
* json_db: add missing lock
* json_db: private methods. return tx in remove_transaction
* storage: call load_plugins in decrypt
* json_db: make get operations threadsafe
* fix: load trustedcoin plugin for two-step wallet creation
* storage_db: fix tests, add modified flag to db class
* fix tests for json storage
* fix json_db list
* load wallet plugin in Wallet factory, fix trustedcoin wizard on kivy
* jsondb: convert lists to sets
* small fixups
* abstract database away from wallet and address_synchronizer
* separate storage and database (JsonDB)
* wizard: do not use on storage object during wallet creation
* exchange_rate: small fixups. BitcoinAverage, BitStamp
* exchange_rate: some clean-up and fixes
* tests: base43/base58 encoding/decoding
* do not raise BaseException
* wizard: normalize bip32 derivation path
* bip32: refactor whole module. clean-up.
* mv \"electrum seed\" stuff from bitcoin.py to mnemonic.py
* move opcodes to bitcoin.py
* transaction: replace custom enum type for opcodes with stdlib enum
* trustedcoin: nicer \'ErrorConnectingServer\' exception
* util: mv create_URI to create_bip21_uri, and small clean-up
* commands: introduce \'removelocaltx\'
* wallet: default to get_addresses() in get_history()
* Add support for Ledger Nano X and future devices (#5140)
* qt installwizard: fix small regression
* trustedcoin: print messages in both direction when debugging
* interface.is_server_ca_signed: don\'t rely on assert
* fix get_fee_text for static fees
* test python version in main script
* scripts: add \"quick_start\" to showcase some basic functionality
* improve network send_multiple_requests
* synchronizer: disconnect from server if cannot deserialize txn
* synchronizer: allow server not finding txn sometimes
* fix variable name in contrib/sign_version
* update make_download
* trezor: during device init hide some options behind an \"expert\" button
* trezor: implement \"seedless\" mode (option during initialization)
* Thu Feb 14 2019 marecAATTdetebe.org- Update to version 3.3.4:
* prepare release 3.3.4
* update locale submodule
* add contrib/sign_version
* update release notes
* trezor: fix minor error handling issue
* keystore bip39: minor clean-up
* network: reintroduce network.debug (#5093)
* wallet get_full_history: add from/to_height info to summary
* network: follow-up 38ab7ee554b89b96c5ac7ea1b83d275d6cdb3cad
* cli history: add option to filter by block height
* Tue Jan 29 2019 marecAATTdetebe.org- Update to version 3.3.3:
* document linux release process
* update release notes
* update submodules
* validate version update announcements using \"bitcoin address\" message signing
* [Qt] Add optional update notifications
* hardware cmdline handler: print messages to stderr
* fix wine build: pyinstaller failed to install with new pip
* prepare release 3.3.3
* Give visual feedback while starting (#4997)
* rerun freeze_packages
* Sat Dec 22 2018 marecAATTdetebe.org- Update to version 3.3.2:
* prepare release 3.2.2
* update icons submodule
* [Qt] Fix wrong orientation of finger in clock icons
* qt: show_message and friends display plaintext by default
* gui: prepend broadcast_transaction errors with explanatory message
* kivy network dialog: update server and proxy properly
* win build: rm win_inet_pton
* util.profiler: simplify
* network: put NetworkTimeout constants together (#4945)
* qt history: fix exporting history
* Fri Dec 21 2018 marecAATTdetebe.org- Update to version 3.3.1:
* prepare release 3.3.1
* kivy: do not request PIN for watching-only wallets
* kivy: improve context menu
* kivy: use on_state instead of on_release
* kivy: use default scroll_distance and scroll_timeout
* revealer: warning re version 0 now includes URL
* qt: fix invoices tab
* release notes: mention 2fa, shorten qt
* win build: wine upstream gpg key weirdness
* revealer: warning re version 0 vulnerability
* revealer: fix unlucky hex seed causing crash
* revealer: split some core parts out into separate file
* revealer: clean-up noise-generation. support regeneration of v0 again
* Mon Sep 03 2018 marecAATTdetebe.org- Update to version 3.2.3:
* include plugins in win/mac binaries
* follow-up prev
* fix #4078
* update submodules
* update submodules
* prepare release 3.2.3 and release notes
* network: don\'t ask for block -1 if server is on wrong chain
* test_bitcoin: fix decorators for running tests twice (#4669)
* fix -v syntax
* Update __init__.py (#4668)
* Mon Jul 02 2018 marecAATTdetebe.org- Update to version 3.2.2:
* version 3.2.2
* Qt send tab: disable \"max\" button for invoices
* Fix a bug in PaymentRequest __str__() function
* don\'t dns resolve raw IP addresses
* socket.getaddrinfo on win32: do our own dns resolution
* Revert \"socket.getaddrinfo on win32: do our own dns resolution outside the lock\"
* fix #4481
* fix websockets
* Sun Jul 01 2018 marecAATTdetebe.org- Update to version 3.2.1:
* prepare release 3.2.1
* Revert \"Test with Python 3.7\"
* Test with Python 3.7
* network: disconnect from server if headers sub encounters error
* ecc: only print warning about missing libsecp when in verbose mode
* initial release notes for 3.2.1
* fix #4475
* fix #4037 (new issue but was merged into that)
* docker windows build: fix missing translations
* Add date to 3.2 release notes
* Sun Jul 01 2018 marecAATTdetebe.org- Update to version 3.2.0:
* winbuilds: update README. Do not sign in unsign.sh
* Pyinstaller: Clean cache before building
* windows builds: sign the windows-signed files with gpg
* travis builds windows binaries in docker
* wine build: use docker to (try to) have reproducible builds
* update icons submodule
* update commit number of locales submodule
* add code name for version 3.2
* labels plugin: fix it. and extend to cli/daemon.
* fix: i18n is not imported
* Tue Apr 17 2018 marecAATTdetebe.org- Update to version 3.1.3:
* prepare release 3.1.3
* Fix typos
* fix #4266
* qt: allow copying receiving address using ctrl-c (#4258)
* bitcoin.py: fix op_push
* contrib: detect builds with uncommitted changes
* release notes for 3.1.3
* fix: android HistoryScreen was not displaying fiat value of unconfirmed txns
* fix #4255
* fix #4253
* Fri Mar 30 2018 marecAATTdetebe.org- Update to version 3.1.2:
* update release date
* fix #4136: revert to extras_require
* remove print statement
* fix #3294
* freeze_packages (partial): up btchip-python
* electrum-env: run from script\'s dir
* fix #4184
* prepare version 3.1.2
* osx builds: use version number from Info.plist
* Mon Mar 12 2018 marecAATTdetebe.org- Update to version 3.1.1:
* version 3.1.1
* Fix crowdin upload
* fix #4098
* fix #4100: spent_outpoints does not track everything
* fix #4109
* fix #4108
* close #4102 close #3337
* follow-up 3c505660a6c0827b72d12bd9bb7d5756974d5285
* Switch labelsync to electrum.org
* version 3.1.0
* Mon Mar 05 2018 marecAATTdetebe.org- Update to version 3.1.0:
* version 3.1.0
* wizard: rename option to \"use a master key\"
* Add JPY exchange rate (#4016)
* fix #4026
* update release notes, add date
* simplify fee preferences dialog
* improve fee status message
* typo in prev
* release notes: 3.1 - more stuff
* Sat Feb 03 2018 marecAATTdetebe.org- Update to version 3.0.6:
* prepare release 3.0.6
* ledger: mention \"bitcoin\" app when update is needed
* follow-up 70aa1f1db9ccb3954501849f9c872ab7053c8ff1
* follow-up prev commit. better handling of p2sh-segwit. added comment to describe the problem for native segwit.
* Fix PNG file
* fix #3788
* fix #3790
* fix #3783
* Change number of zero when base unit changes
* revert adding handling of \'blockchain.address.subscribe\' in network.py
* Mon Jan 08 2018 marecAATTdetebe.org- Update to version 3.0.5:
* version 3.0.5
* Password-protect the JSON RPC interface
* disable jsonrpc commands in the GUI
* disable jsonrpc on android
* update hw wallet versions
* release 3.0.4
* Bundle QR scanner with Android app
* fix #3411
* Avoid modifying self.transactions in prepare_for_verifier
* fix #3217: make sure qt quits
* Sun Jan 07 2018 marecAATTdetebe.org- Update to version 3.0.4:
* release 3.0.4
* Bundle QR scanner with Android app
* fix #3411
* Avoid modifying self.transactions in prepare_for_verifier
* fix #3217: make sure qt quits
* fix kivy refresh bug with Addresses tab
* fix #3601
* fix: kivy Addresses tab crash for Imported_Wallet change
* fix #3578
* fix: address filters for Imported_Wallet: wallet.is_used()
 
ICM