Electrum
electrum.orgBitcoinLong-standing Python-based Bitcoin wallet with good security features. Private keys are encrypted and do not touch the internet and balance is checked with a watch-only wallet. Compatible with other wallets, so there is no tie-in, and funds can be recovered with your secret seed. It supports proof-checking to verify transactions using SPV, multi-sig, and add-ons for compatibility with hardware wallets. A decentralized server indexes ledger transactions, meaning it's fast and doesn't require much disk space. The potential security issue here would not be with the wallet, but rather your PC - you must ensure your computer is secure and your wallet has a long, strong passphrase to encrypt it with.
- Homepage:electrum.org
- GitHub:github.com/spesmilo/electrum
- Privacy:tosdr.org/en/service/2761
- Web info:web-check.xyz/check/electrum.org
Electrum Source Code
Author
Description
Electrum Bitcoin Wallet
Homepage
https://electrum.orgRepository
- LicenseMIT
- Created02 Aug 12
- Primary languagePython
- Size71,876 KB
- Stars8,579
- Forks3,477
- Watchers8,579
Top Contributors
@SomberNight (5685)
@ecdsa (5389)
@accumulator (1689)
@f321x (515)
@ysangkok (353)
@bauerj (150)
@genjix (128)
@bitromortac (113)
@wozz (73)
@jimboman77 (59)
@romanz (57)
@neocogent (40)
@btchip (34)
@chrisglass (28)
@benma (26)
@wakiyamap (24)
@akshayaurora (23)
@fluffypony (21)
@JeremyRand (20)
@EchterAgo (20)
@matejcik (19)
@dabura667 (17)
@verretor (16)
@oren-z0 (16)
@toxeus (15)
@ovidiusoft (14)
@m0mchil (14)
@cculianu (14)
@stefaang (13)
@zebra-lucky (12)
@gruve-p (11)
@darrindaigle (10)
@rofl0r (10)
@admin-slush (10)
@MrNaif2018 (10)
@BlinkyStitt (9)
@haarts (9)
@jhoenicke (9)
@nabijaczleweli (9)
@zouppen (8)
@yanmaani (8)
@lzsaver (8)
@bigspider (8)
@mkramlich (8)
@doc-hex (8)
@asfin (7)
@jonathancross (7)
@lukechilds (7)
@shsmith (7)
@ser (6)
@ulrichard (6)
@marceloneil (6)
@JustinTArthur (6)
@ctrlcctrlv (6)
@Lastrellik (5)
@CodingAnarchy (5)
@waheebyaqub (5)
@thgh (5)
@nelisky (5)
@BitcoinMitchell (5)
@prusnak (4)
@coval3nte (4)
@tiagotrs (4)
@ortutay (4)
@sorenstoutner (4)
@pooler (4)
@myxmaster (4)
@flatfly (4)
@andrewkozlik (4)
@Alwoch (4)
@DiThi (4)
@kevcooper (4)
@EnigmaCurry (4)
@dpdtex (4)
@siddhantchawla (4)
@sashazykov (4)
@samueltardieu (4)
@scgbckbone (3)
@AbdussamadA (3)
@sunnyville01 (3)
@grnbrg (3)
@Azelphur (3)
@kazcw (3)
@fr3aker (3)
@fanquake (3)
@imrehg (3)
@itxtoledo (3)
@tessus (3)
@fanatid (3)
@ai-christianson (3)
@maxme (3)
@dhruv-joshi-7 (3)
@azhar3339 (3)
@nomoon (3)
@Emzy (3)
@saleemrashid (3)
@pontius (3)
@ekzyis (2)
@coblee (2)
@fiatjaf (2)
Recent Commits
Felix(03 Sept 26)
Merge pull request #10903 from SomberNight/202608_fix_type_hints_optional type hints: (trivial) add missing "Optional" qualifiers
SomberNight(28 Aug 26)
transaction: fix return value of already_has_some_signatures() harmless in current usage.
SomberNight(28 Aug 26)
type hints: (trivial) small fixes all over
SomberNight(27 Aug 26)
type hints: (trivial) add missing "Optional" qualifiers In many cases with our type hinting, we do not explicitly specify that variables are allowed to be None when they have a default value of None. This PR now adds the missing explicit "Optional" markers. ----- Consider: ``` class Foo(NamedTuple): field: str = None ``` This type-hinting is technically incorrect, we should type hint it as either one of these options: - `field: Optional[str] = None` - `field: str | None = None` PyCharm has had soft-warnings about these lines for quite a while, however when doing type-inference, it used to internally "fix" the type by allowing None. Recently however it seems it is not doing the internal inference-fixing anymore, but assume that `path` has type `str` (as we specified) and then make "incorrect" inferences: ``` class Foo(NamedTuple): field: str = None def func(foo: Foo): assert foo.field is None print("function body") # <<< PyCharm now says this code is unreachable ``` I have whole function bodies grayed out and marked as dead code due to this. Example: https://github.com/spesmilo/electrum/blob/c82a0d12ef1e03a96d6180839f215c05efe9efe3/electrum/lnpeer.py#L2320, where htlc_set.parent_set_key is type-hinted as str, so the assert "must" always fail
SomberNight(27 Aug 26)
lnutil: rm unused "name" param from make_htlc_tx_with_open_channel()
ThomasV(03 Sept 26)
Merge pull request #10914 from SomberNight/202608_tests_lnhtlc lnhtlc: add sanity check we don't revoke our last valid commitment
ThomasV(03 Sept 26)
Merge pull request #10922 from accumulator/fix_use_change_config_sweeps wallet: make sure there is a change address in case of sweeps
ThomasV(02 Sept 26)
Merge pull request #10919 from f321x/qml_dont_delete_paid_invoices qml: prevent deleting paid invoices
Sander van Grieken(02 Sept 26)
wallet: make sure there is a change address in case of sweeps, or not all inputs are ismine. if config option `use_change` is `False`, wallet.make_unsigned_transaction can call the coinchooser without a change address. without one, coin chooser will take the first input of a tx to send change to, but this is not always an ismine address, e.g. for sweeps/swap-claims, and for batching sweeps with payments. make sure there is a change address for len(txo) == 0, or for not all inputs are ismine.
f321x(02 Sept 26)
qml: automatically remove paid invoices from invoice list Automatically remove an invoice from the invoice list if it was paid. Previously the user could manually delete it from the list in the same session, after a restart it was not added to the list anymore anyway.
f321x(02 Sept 26)
wallet: don't delete payment infos when deleting paid/inflight invoice/req Don't try to delete a `PaymentInfo` when deleting the attached `Invoice`/`Request` if they were already paid (or the payment is still inflight).
ghost43(02 Sept 26)
Merge pull request #10899 from spesmilo/harden_check_unfulfilled_htlc lnpeer: harden _check_unfulfilled_htlc
ThomasV(02 Sept 26)
Merge pull request #10906 from f321x/fix_lnchannel_preimage_extraction lnchannel: extract_preimage: fix len(witness) check
ThomasV(02 Sept 26)
Merge pull request #10910 from f321x/report_exception crash reporter: keep queue bounded, log enqueued exceptions
f321x(28 Aug 26)
lnwatcher: catch exc during ctx output sweeping Catch exceptions occuring during the sweep of a single ctx output and keep going sweeping the other outputs so we sweep at least those that do not crash and don't leave them on the table.
ThomasV(28 Aug 26)
lnpeer: move HTLC payment_hash check earlier in the flow. We must fail a HTLC to forward if its payment_hash matches one of our invoices. Instead of allowing the HTLC to enter a MPP set, we fail it before, in _check_unfulfilled_htlc. Also rewrite test_refuse_to_forward_htlc_that_corresponds_to_payreq_we_created: The new test uses send_trampoline_htlc_to_forward and only two peers, so it belongs in the TestPeerDirect class. The new test is logically equivalent and 4~5 times faster.
ghost43(01 Sept 26)
Merge pull request #10920 from SomberNight/202609_ln_chan_backup_db_upgrade lnutil: refactor channel backup classes to dataclass
SomberNight(01 Sept 26)
tests: db upgrade: add test for convert_version_72 It's a quite complicated conversion, that even pulls in BCDataStream as dependency. (though BCDataStream is kind of bitcoin-consensus-critical, so unlikely to change.) This test should hopefully catch and prevent future regressions.
accumulator(01 Sept 26)
Merge pull request #10917 from f321x/qml_fix_10916 qml: prevent concurrent biometric auth requests
SomberNight(31 Aug 26)
merge part of "lnpeer: harden _check_unfulfilled_htlc" extracted from https://github.com/spesmilo/electrum/pull/10899
ghost43(31 Aug 26)
Merge pull request #10909 from accumulator/lnpeer_fix_connection_wedges lnpeer: fix wedged peer connections
f321x(28 Aug 26)
crash_reporter: keep queue bounded, log if hook is not ready We universally use `send_exception_to_crash_reporter(e)` in the codebase, but if no exc hook was registered through a GUI the exceptions are just enqueued in an unbounded queue and never logged. If there is no additional log call they will go unnoticed when e.g. running in daemon mode without exc hook.
f321x(31 Aug 26)
qml: prevent concurrent biometric auth requests Don't allow initiating a new biometric auth request if there is still a pending one. I assume this can happen if the phone is slow to open the biometric auth prompt after the user requested auth, giving them enough time to e.g. click on the wallet again and request a second auth. Fixes https://github.com/spesmilo/electrum/issues/10916
Sander van Grieken(29 Aug 26)
lnpeer: fix wedged peer connections. On android, when the app is suspended in the background long enough that LN peer sockets die, electrum failed to recover these wedged connections. On desktop, the same issue occurs when suspending the system. - add timeout on ping messages. avoid wait forever on a dead socket - add connection monitor task on Peer taskgroup, similar to Interface.
ThomasV(29 Aug 26)
Merge pull request #10911 from SomberNight/202608_transaction_var_int transaction: de-dupe write_compact_size and var_int
ThomasV(27 Aug 26)
lnpeer: check the trampoline onion against the outer onion in all cases Apply the comparison of BOLT4 L547-L553 to forwarding requests too, not only if we are the final recipient: the difference between the two onions is the fee/cltv budget we are given (see _maybe_forward_trampoline). Also tolerate an inner payload with missing fields. Collapse the mpp and non-mpp cases while here: they are the same comparison, as a sender not using mpp must set total_msat equal to amt_to_forward (BOLT4 L406).
ThomasV(29 Aug 26)
Merge pull request #10904 from SomberNight/202608_tests_lnpeer_htlc_tracker tests: lnpeer: factor out "SenderHtlcResolvedTracker"
SomberNight(29 Aug 26)
lnhtlc: add sanity check we don't revoke our last valid commitment
SomberNight(29 Aug 26)
tests: lnhtlc: add a test showing local and remote ctns can drift apart
ghost43(29 Aug 26)
Merge pull request #10900 from Alwoch/unskip_chan_reserve_tests tests: Unskip, repair and make discoverable tests under TestChanReserve
Electrum Security
Security Advisories (5)
- mediumPatched
GHSA-vw94-r84p-66qfExternal Plugin authorization bypass: local code execution
- lowPatched
GHSA-q7m2-785w-r585Nostr Wallet Connect plugin: daily spending limit bypass
- mediumPatched
GHSA-8r85-vp7r-hjxfreceiving with Lightning: partial MPP might be accepted
- highPatched
GHSA-9gpc-prj9-89x7sending with Lightning: payment_preimage validation is skipped on Android
- mediumPatched
GHSA-4fh4-hx35-r355BIP70 payment requests `?r=` field supports `file://` URIs, allowing attacker to trick victim machine to `open()` arbitrary file
Electrum Website
Website
Electrum Bitcoin Wallet
Electrum Bitcoin Wallet.
Redirects
Does not redirect
Security Checks
All 65 security checks passed
Server Details
- IP Address172.67.179.87
- LocationSan Francisco,California,United States of America,NA
- ISPCloudFlare Inc.
- ASNAS13335
Associated Countries
US
FR
Safety Score
Website marked as safe
100%
Blacklist Check
electrum.org was found on 0 blacklists
- AntiSocial Blacklist
- Artists Against 419
- Badbitcoin
- Bambenek Consulting
- CERT Polska
- CoinBlockerLists
- CRDF
- CryptoScamDB
- EtherAddressLookup
- EtherScamDB
- Fake Website Buster
- MetaMask EthPhishing
- NABP Not Recommended Sites
- OpenPhish
- PetScams
- PhishFeed
- PhishFort
- Phishing.Database
- PhishStats
- PhishTank
- Phishunt
- RPiList Not Serious
- Scam.Directory
- SecureReload Phishing List
- Spam404
- StopGunScams
- Suspicious Hosting IP
- ThreatFox
- ThreatLog
- TweetFeed
- URLhaus
- ViriBack C2 Tracker
Website Preview
Electrum Reviews
More Crypto Wallets
Open source hardware wallet, supporting secure multisig with the option for making encrypted backups on a MicroSD card.
A steel plate, with engraved letters which can be permanently screwed - CryptoSteel is a good fire-proof, shock-proof, water-proof, and stainless cryptocurrency backup solution.
Sparrow is a Bitcoin wallet for those who value financial self-sovereignty. Sparrow’s emphasis is on security, privacy, and usability. Sparrow does not hide information from you - on the contrary, it attempts to provide as much detail as possible about your transactions and UTXOs, but in a way that is manageable and usable.
Open source, cross-platform, offline, crypto wallet, compatible with 1000+ coins. Your private key is generated on the device, and never leaves it, all transactions are signed by the Trezor, which ensures your wallet is safe from theft. There are native apps for Windows, Linux, MacOS, Android, and iOS, but Trezor is also compatible with other wallets, such as Wasabi. You can back the Trezor up, either by writing down the seed, or by duplicating it to another device. It is simple and intuitive to use, but also incredibly customizable with a large range of advanced features.
An open source, native desktop wallet for Windows, Linux, and MacOS. Wasabi implements trustless CoinJoins over the Tor network. Neither an observer nor the participants can determine which output belongs to which input. This makes it difficult for outside parties to trace where a particular coin originated from and where it was sent to, which greatly improves privacy. Since it's trustless, the CoinJoin coordinator cannot breach the privacy of the participants. Wasabi is compatible with cold storage and hardware wallets, including OpenCard and Trezor.
About the Data: Electrum
Edit Electrum Data
You can edit Electrum's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
Note that some of the information shown above has been aggregated from external
sources, a list of these can be found data documentation.
Origin Data
Modify Data
API
You can access Electrum's data programmatically via our API. Simply make a GET request to:
https://api.awesome-privacy.xyz/v1/services/electrumThe REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.
Share Electrum
Help your friends compare Crypto Wallets, and pick privacy-respecting software and services.
Share Electrum and Awesome Privacy with your network!