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
- Size73,288 KB
- Stars8,637
- Forks3,489
- Watchers8,637
Top Contributors
@SomberNight (5784)
@ecdsa (5459)
@accumulator (1737)
@f321x (664)
@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)
@EchterAgo (20)
@JeremyRand (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)
@MrNaif2018 (10)
@admin-slush (10)
@BlinkyStitt (9)
@nabijaczleweli (9)
@jhoenicke (9)
@haarts (9)
@zouppen (8)
@yanmaani (8)
@lzsaver (8)
@bigspider (8)
@mkramlich (8)
@doc-hex (8)
@asfin (7)
@jonathancross (7)
@lukechilds (7)
@shsmith (7)
@devdavidejesus (7)
@ser (6)
@sashazykov (6)
@ulrichard (6)
@marceloneil (6)
@JustinTArthur (6)
@ctrlcctrlv (6)
@BitcoinMitchell (5)
@nelisky (5)
@thgh (5)
@waheebyaqub (5)
@CodingAnarchy (5)
@Lastrellik (5)
@andrewkozlik (4)
@flatfly (4)
@myxmaster (4)
@pooler (4)
@sorenstoutner (4)
@ortutay (4)
@tiagotrs (4)
@coval3nte (4)
@prusnak (4)
@Alwoch (4)
@DiThi (4)
@fametrano (4)
@kevcooper (4)
@dpdtex (4)
@Emzy (4)
@EnigmaCurry (4)
@siddhantchawla (4)
@samueltardieu (4)
@scgbckbone (3)
@AbdussamadA (3)
@sunnyville01 (3)
@grnbrg (3)
@Azelphur (3)
@kazcw (3)
@fr3aker (3)
@fanquake (3)
@ai-christianson (3)
@imrehg (3)
@itxtoledo (3)
@tessus (3)
@fanatid (3)
@maxme (3)
@dhruv-joshi-7 (3)
@azhar3339 (3)
@nomoon (3)
@saleemrashid (3)
@pontius (3)
@MrKalipo (3)
Recent Commits
SomberNight(24 Oct 26)
release notes: 4.8.3: add links to security disclosures
ghost43(23 Oct 26)
Merge pull request #11072 from SomberNight/202610_fixes adb/txbatcher: assorted fixes
ghost43(23 Oct 26)
Merge pull request #11073 from f321x/regtest_ex_2_0 test: regtest: update regtest to e-x 2.0
ghost43(23 Oct 26)
Merge pull request #11074 from f321x/bump_appimage_alpine_deps contrib: appimage: fix type2-runtime build: bump musl-dev, base image
f321x(23 Oct 26)
contrib: appimage: fix type2-runtime build: bump musl-dev, base image musl-dev=1.2.6-r2 is no longer available in the alpine 3.24 repo, which breaks the type2-runtime build container. Bump it to 1.2.6-r3 and bump the pinned alpine:3.24 base image (3.24.3) which ships the matching musl.
f321x(23 Oct 26)
ci: regtest: bump electrumx to 2.0.0 Use the latest electrumx release in the regtest CI. Since 2.0.0 plyvel is no longer a default dependency, so install the leveldb extra.
f321x(23 Oct 26)
tests: regtest: update regtest conf for e-x 2.0 Add the flags required by electrumx 2.0 to the regtest config so the regtest tests can be run with the new e-x version.
ThomasV(23 Oct 26)
Merge pull request #11059 from f321x/release_4_8_3 release notes for 4.8.3
ThomasV(23 Oct 26)
txbatcher: amend mempool test
SomberNight(23 Oct 26)
Merge "txbatcher_rbf_stale_base": txbatcher: fix batch-5 ref SE#3 `run_iteration()` might broadcast a replacement of base tx. However on the next iteration `find_base_tx()` could still return the original tx1 base tx. So it would build the same replacement again. If in the meanwhile another output to pay got registered it might happen that we try to broadcast a replacement instead that doesn't pay sufficient fees to replace the newer, not yet detected transaction and broadcasting fails. It would then start a new batch, paying the same batch outputs again (double payment). So we should wait until the most recent base tx is found before building replacements of it.
f321x(22 Oct 26)
txbatcher: fix rebroadcast of local batch tx find_base_tx rebroadcast the tx returned by PartialTransaction.from_tx, which strips witnesses, so the broadcast always failed. Also, a batch tx that was never received from the server was only stored unsigned. Broadcast the tx as stored in the wallet, and store the signed tx after signing.
f321x(22 Oct 26)
txbatcher: add comments re add_transaction no-op and futile rebroadcast
f321x(22 Oct 26)
txbatcher: abort batch if parent went missing If the parent tx is missing it, it either got replaced or never even got funded (e.g. if the grandparent got replaced). However we cannot safely assume it won't get mined, so the simplest approach seems to be to abort the batch and not try paying the outputs again. A potential improvement would be to detect a direct replacement of _parent_tx and update the batch to it.
f321x(22 Oct 26)
txbatcher: wait until our replacement tx is received from the server adb.add_transaction drops a replacement of a mempool tx, so until the server sends it back, find_base_tx returns the tx it replaces. Building on that tx rebroadcasts the replacement, and a new payment or a fee change creates a tx that may fail to replace it (BIP125 rules 3/4). The failure branch then starts a new batch from the stale base tx, and outputs of the replacement can be paid a second time.
f321x(19 Oct 26)
version: bump version.py to 4.8.3 tag
f321x(19 Oct 26)
release: extend RELEASE-NOTES for version 4.8.3 Co-authored-by: SomberNight <[email protected]>
ghost43(23 Oct 26)
Merge pull request #11068 from f321x/get_full_history_labels wallet: use db instead of adb in _get_default_label_for_txid (speedup history)
SomberNight(23 Oct 26)
Merge "fix_batch16": create_batch_tx must return a child of parent_tx ref SE#4
ThomasV(23 Oct 26)
txbatcher: fix _create_inputs_from_tx_change we must ensure that _create_batch_tx returns a child of _parent_tx
ThomasV(23 Oct 26)
txbatcher: add test for parent tx replaced in mempool tx1' replaces tx1 in the mempool, but the server has not told us yet. When we learn about it, the txbatcher must not pay o2 again.
SomberNight(23 Oct 26)
Merge branch "txbatcher_verify_outputs" ref SE#2 `find_base_tx` adopted any tx spending the batch prevout if it had change, and the next batch tx then copied its non-change outputs. Such a tx may have been created by someone else, e.g. a counterparty that can spend one of our sweep inputs, or without the signature validation from SE#1 might even be fabricated by the Electrum server. Adopt it only if all its outputs are ours, batch payments, or txouts of the sweep inputs it spends. Otherwise, start a new batch, as for a replacement without change. As batch payments are not persisted, a replacement made from the GUI after a restart is no longer followed. Finding BATCH-4
SomberNight(23 Oct 26)
Merge "verify_sigs": adb: check sigs of is_mine txins of unconf txs verify signatures of wallet.is_mine inputs for mempool txs only PR: SE#1 (first 3 commits)
f321x(22 Oct 26)
wallet: don't sign batch replacements if they have different outputs Don't sign a replacement tx for a batch tx if the new tx has different outputs than the batch was supposed to pay. This is similar to the check done in TxBatcher.
f321x(22 Oct 26)
txbatcher: do not follow a replacement with outputs not in the batch find_base_tx adopted any tx spending the batch prevout if it had change, and the next batch tx then copied its non-change outputs. Such a tx may have been created by someone else, e.g. a counterparty that can spend one of our sweep inputs. Adopt it only if all its outputs are ours, batch payments, or txouts of the sweep inputs it spends. Otherwise, start a new batch, as for a replacement without change. As batch payments are not persisted, a replacement made from the GUI after a restart is no longer followed.
ghost43(22 Oct 26)
Merge pull request #11071 from f321x/qml_fix_string qml: RbfBumpFeeDialog: fix help text of output value rounding option
f321x(22 Oct 26)
fix typo in 'Use multiple change addresses' help text
f321x(22 Oct 26)
qml: RbfBumpFeeDialog: fix help text of output value rounding option The help button showed the description of the 'Use multiple change addresses' option. Use the ConfigVar descriptions instead, like ConfirmTxDialog does.
ThomasV(20 Oct 26)
adb: keep processing history after a rejected tx receive_history_callback catches InvalidTxSignature, so that the other transactions of the history are still processed. The history has already been stored at that point: aborting would leave it partly processed, and it would not be processed again if the server status matches it. Also, the rejected tx is a stored one, that may not have been received from the current server.
ThomasV(20 Oct 26)
adb: do not check signatures of SPV-verified txs A tx received from the server that it claims is mined is held, and added once it is SPV-verified, so that its signatures need not be checked. If the server then says the tx is not at that height, it is added and its signatures are checked. If the server moves it to the mempool, it is fetched again and its signatures are checked. Held txs are not requested again while they are held, and they are dropped when the server changes, because they were received from the previous server.
ThomasV(21 Oct 26)
adb: verify signatures of inputs spending our coins in add_transaction Inputs are verified when they get linked to one of our coins: - if the parent tx is known, the tx is rejected with InvalidTxSignature, before conflicting txs are removed. - if the parent arrives later, the spending tx is removed. The txid does not commit to witness data, so a stored tx may be received again with a different witness. The db never replaces a complete tx, so if one is stored, we check the stored tx instead of the new serialization, which is ignored. If the stored tx is not complete, the new serialization replaces it and is fully checked; if it is invalid, it is rejected and the stored tx is kept. Incomplete txs and inputs without a wallet descriptor (watch-only imported addresses, lnwatcher addresses) are not checked. Tests: - re-sign the fixture of _bump_fee_p2wpkh_csv, whose nsequence had been edited after signing. - fix test_rbf_batching__merge_duplicate_outputs, which re-added tx1 after make_unsigned_transaction(base_tx=tx1) had replaced its witness with that of tx2.
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 is one of the most popular Bitcoin wallets, in continuous development since 2011. Fast, secure and open source, for Windows, macOS, Linux and Android.
Redirects
Does not redirect
Security Checks
All 65 security checks passed
Server Details
- IP Address104.21.91.204
- LocationSan Francisco,California,United States of America,NA
- ISPCloudFlare Inc.
- ASNAS13335
Associated Countries
US
FR
Safety Score
Website marked as safe
100%
Trackers
No known trackers found
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!