EL
← All projectsElectrum

Electrum

Long-running lightweight Bitcoin wallet for desktop and mobile platforms.

BitcoinSoftware walletsNormal
Repository coverage

935 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

67security candidates208second-pass queue929AI analyses
61commits · 30 days
115commits · 60 days
465commits · 180 days
931commits · 365 days
Backfill bands
Aug 5 → Feb 6470 seen11 candidatesComplete
Feb 6 → Jun 6346 seen10 candidatesComplete
Jun 6 → Jul 653 seen2 candidatesComplete
Jul 6 → Aug 554 seen3 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

65/100 average clarity
194Strong · 80–100
415Adequate · 60–79
287Thin · 40–59
39Opaque · 0–39
2security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
ThomasV73272156
SomberNight35226350063
f321x37121371070
Sander van Grieken991098057
user323062
Roman Zeyde515053
Sasha Zykov414076
Aaron Fiore414068
ghost43312068
Róbert Nagy111098
Ferdinando Ametrano111096
Felix302074
Analysis record

Published AI watches

Last scanned 59 minutes ago

Informational 15 AI analysisMessage 63 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10816 from accumulator/qml_auth_log_improvement

This commit is a minor logging cleanup in the mobile/QML authentication helper. It changes the wording and placement of debug/error log messages so they reveal the function name only after safely retrieving it, and avoids logging a raw tup…

8dddae68by ghost43+4−41 file
No security note in commit
Moderate 51 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10798 from SomberNight/202608_base43

This commit fixes a performance weakness in Electrum's handling of large Bitcoin transactions encoded in 'base43'. The base43 encoding and decoding functions run in quadratic time, meaning the work grows much faster than the input size. An…

Quadratic-time base43 encode/decode can be triggered on attacker-controlled inputDenial-of-service via CPU exhaustion / UI freeze on large transaction stringsInput-length cap added as a defensive guard, not a full algorithmic fix
0e9f1a0dby Felix+25−92 files
No security note in commit
Low 41 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10799 from SomberNight/202608_android_secure_window

This update tightens a privacy feature on Electrum's Android app that prevents the screen from being captured while sensitive Bitcoin private keys or seed phrases are visible. Before, the protection could be accidentally turned off when mu…

Adds visibility-gated secureWindow bindings to protect WIF keys and seed phrasesPrevents secureWindow from being cleared when multiple sensitive dialogs are stackedTargets Android screenshot/recents-thumbnail protection surface
4622390cby accumulator+17−05 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 98 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

docs: add Coldcard Mk3 seed-entropy security notice to plugin README (#10805)

This commit only adds a documentation warning to Electrum's Coldcard plugin README. It does not change any executable code, cryptographic logic, or wallet behavior. The warning tells users that Coldcard/Coinkite disclosed a firmware bug in…

Documentation-only changeReferences an external hardware-wallet firmware advisoryNo code, cryptography, or plugin behavior modified
2c2a40b6by Róbert Nagy+4−01 file
Vendor flagged security relevance
Low 48 AI analysisMessage 81 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

qml/android: protect WIF keys from screenshots in more places

This commit tightens screen-shot protection for private Bitcoin wallet keys (WIF keys and seed phrases) in Electrum's Android/QML user interface. It also fixes a bug where one screen (AddressDetails) was leaving the 'secure window' flag pe…

Adds FLAG_SECURE-style screenshot protection to additional private-key dialogsFixes a bug where secureWindow was never unset in AddressDetailsUses QML Binding 'when' with restoreMode semantics to handle stacked secure dialogs safely
739cba5dby SomberNight+17−05 files
Vendor flagged security relevance
Moderate 60 AI analysisMessage 92 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

lnpeer: chan_reest: ctn overflow: force-close instead of disconnect

This commit fixes a bug in Electrum's Lightning Network code. Previously, if a malicious or malfunctioning peer sent a channel re-establishment message with extremely large commitment numbers (over 2^48), the local program would hit an int…

Addition of explicit overflow check on untrusted peer-supplied commitment countersReplacement of assertion-failure/disconnect behavior with force-close on misbehaviorNew test cases for ctn overflow in both next_local_ctn and oldest_unrevoked_remote_ctn
b3e441f8by SomberNight+22−32 files
No security note in commit
Informational 18 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10791 from SomberNight/202608_wallet_sign_message2

This change moves the trimming of leading/trailing spaces in message-signing fields from the user-interface code into the shared wallet code. For the graphical interfaces (Qt and QML), spaces are still stripped automatically for convenienc…

Behavior change in message signing/verification input handlingCLI now preserves whitespace, which could affect signature validity for messages that intentionally contain leading or trailing whitespaceNo memory-safety, cryptographic, or authentication flaw visible in the diff
b1aa52d7by ghost43+27−185 files
No security note in commit
Informational 19 AI analysisMessage 96 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

wallet: sign_message: strip whitespaces in GUIs, do not strip in CLI

This commit tidies up how Electrum handles extra spaces around Bitcoin addresses, messages, and signatures when signing or verifying messages. Previously, different parts of the program (desktop GUI, mobile-style GUI, command line) behaved…

Behavior normalization across GUI and CLI interfacesNo cryptographic primitive changedNo privilege boundary crossed
4c3064f5by SomberNight+27−185 files
No security note in commit
Informational 22 AI analysisMessage 50 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

wallet: decrypt_message: nicer error msg if pubkey is unrelated

This commit improves the error handling in Electrum's message decryption feature. Previously, if a user tried to decrypt a message using a public key that did not belong to their wallet, the code could proceed and likely fail with a confus…

Input validation added for public key before cryptographic operationUser-facing exception replaces potential internal failureDefensive check prevents use of unrelated key material
92e938f4by SomberNight+5−01 file
No security note in commit
Informational 16 AI analysisMessage 83 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

qt: main_window: use TaskThread for each of sign/verify/encrypt/decrypt

This commit moves four message-crypto operations (sign, verify, encrypt, decrypt) in Electrum's Qt wallet window onto a background worker thread so they all behave the same way. It also lets the background thread surface user-facing errors…

Moved blocking wallet crypto calls off the GUI thread, reducing UI freeze / DoS surfaceRemoved local exception swallowing for encrypt_message; errors now propagate through the window's on_error handlerAdded defensive RuntimeError guard for deleted Qt widget in async callback
4a9a199fby SomberNight+28−151 file
No security note in commit
Low 29 AI analysisMessage 35 · Opaque
EL ElectrumElectrum BitcoinSoftware wallets

wallet: sign_message: force kwargs

This commit changes how Electrum's message-signing function is called so that callers must explicitly name each argument (address, message, password) rather than passing them by position. The main practical effect is to prevent accidental …

API hardening: keyword-only arguments prevent positional argument swapNo explicit security bug fix or vulnerability disclosure in commit message or diffNo changes to cryptographic logic, password handling, or message parsing
e1eb2a34by SomberNight+9−44 files
No security note in commit
Low 39 AI analysisMessage 45 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

wallet: sign_message: consolidate checks from UIs

This commit moves input-validation checks for signing, verifying, encrypting, and decrypting messages out of the user-interface code and into the shared wallet logic. It also adds type checks so that non-text inputs are rejected earlier. T…

Input validation moved from UI controllers into core wallet logicType checks added at the CLI command entry points for message-crypto operationsUserFacingException used consistently for address, wallet, script-type, and key-format errors
48893760by SomberNight+89−396 files
No security note in commit
Low 27 AI analysisMessage 50 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

wallet: decrypt_message: consolidate checks from UIs

This commit moves input-validation and wallet-type checks for message decryption out of the user-interface and command-line layers and into the core wallet code. It also removes a faster, separate decryption path for imported wallets so al…

Input validation consolidated into a single core methodWatching-only wallet check moved from UI to wallet layerMultisig wallet unsupported-operation check moved from UI to wallet layer
9a0cc0d6by SomberNight+25−173 files
No security note in commit
Informational 15 AI analysisMessage 50 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

wallet: refactor: add encrypt_message method, consolidated from UIs

This commit is a simple code cleanup: it moves the message-encryption logic from two separate places (the command-line tool and the Qt graphical interface) into a single shared method on the wallet class. The actual encryption behavior is …

No change to cryptographic primitives or parametersNo change to trust boundaries or input sourcesPure refactor consolidating duplicate code
5e9c8df0by SomberNight+26−183 files
No security note in commit
Informational 13 AI analysisMessage 50 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

wallet: refactor: add verify_message method, consolidated from UIs

This commit is a routine code cleanup: it moves message-signature verification out of three user-interface files into a single shared helper method in the wallet module. There is no security-relevant behavior change visible in the diff. Th…

No security-relevant functional changeRefactoring only: code deduplicationException handling broadened safely (ValueError covers binascii.Error and unicode errors)
ff5bbb04by SomberNight+26−304 files
No security note in commit
Informational 15 AI analysisMessage 60 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

qt: main_window: add type hints to sign/verify, encrypt/decrypt

This commit only adds Python type hints and renames some function parameters for clarity in the Electrum desktop wallet's sign/verify and encrypt/decrypt message dialogs. It does not change what the code actually does, how it processes use…

0906fc20by SomberNight+45−181 file
No security note in commit
Informational 18 AI analysisMessage 50 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

coldcard: fix get_soft_device_id() discarding its return value

This is a tiny one-line bug fix in Electrum's Coldcard hardware wallet plugin. A helper method that is supposed to fetch a software-based device identifier was calling the parent implementation but accidentally throwing away the result ins…

Missing return value causes method to always return NoneAffects hardware wallet device identification onlyNo change to signing, encryption, or authentication code
d7500508by Felipe Micaroni Lalli+1−11 file
No security note in commit
Informational 19 AI analysisMessage 96 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

qml: strip whitespace from message before signing, as in qt gui

This commit fixes a minor consistency bug in Electrum's newer QML (mobile-style) user interface. When signing a message, the app now removes accidental spaces at the start or end of the message and address, just like the older desktop Qt i…

Behavioral inconsistency between GUI implementations could cause user confusion or failed verificationNo cryptographic weakness introduced; change is input normalizationNo memory-unsafe code, no privilege changes, no network changes
72507328by Ferdinando Ametrano+3−01 file
No security note in commit
Low 48 AI analysisMessage 85 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

config: don't save "hidden wallet" paths in CURRENT_WALLET cv

This commit fixes a privacy leak in the Electrum wallet app. Previously, if a user opened a 'hidden wallet' (one whose filename starts with a dot, like a secret file), Electrum would remember it as the last-used wallet and could reopen it …

Privacy leak: hidden wallet filename persisted in config and could be auto-reopenedInformation disclosure: hidden wallet path exposed in recently-opened listBehavioral fix: setter silently drops sensitive value rather than persisting it
c43cf8e4by SomberNight+14−23 files
No security note in commit
Low 28 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

lnrouter: liquidity hints: add extra penalty if amt near cannot_send

This commit tweaks how Electrum's Lightning Network payment routing avoids channels where a previous payment attempt already failed. Previously, the router would treat a channel almost at its known failure limit almost the same as a channe…

Routing/liquidity-hint logic changed to penalize amounts close to a known cannot_send thresholdAdds defensive assertions on num_inflight_htlcs type and rangeSelf-described by author as a 'completely naive bandaid' / heuristic improvement
ee75ea31by SomberNight+12−21 file
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

Lower-prioritytests: add more lnurl testing for PaymentIdentifierby f321x · 72dfc61d · Aug 27, 2025 · 1 fileMessage 83 · StrongInformational 15Details
Commit message · f321x

tests: add more lnurl testing for PaymentIdentifier

adds some more detailed tests to `test_payment_identifier.py` to test
lnurlp and lnurlw separately and mock their resolve.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit only adds new automated tests for how Electrum parses and resolves LNURL payment strings. It does not change any production wallet code, so it cannot introduce a security vulnerability or fix one on its own.

AI review queuedlnurl: implement LNURL-withdrawby f321x · fdeada3f · Aug 27, 2025 · 9 filesMessage 58 · ThinLow 28Details
Commit message · f321x

lnurl: implement LNURL-withdraw

adds handling of lnurl-withdraw payment identifiers which allow users to
withdraw bitcoin from a service by scanning a qr code or pasting the
lnurl-w code as "sending" address.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 28/100

This commit adds a new feature to Electrum that lets users withdraw bitcoin from a service by scanning or pasting an LNURL-withdraw code. It is a feature addition, not a fix for a known vulnerability. The code does include some safety checks, such as only allowing HTTPS or .onion callback URLs and warning users not to trust error messages from the LNURL server. However, because this is brand-new code handling real money withdrawals and interacting with external services, it introduces new attack surface. There is no direct evidence in the commit of an exploitable bug, but the change is security-relevant by nature.

AI review queuedqml: LoadingWalletDialog: add some paddingby f321x · f1dfe5e2 · Aug 27, 2025 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · f321x

qml: LoadingWalletDialog: add some padding

add some padding at the bottom of the LoadingWalletDialog so the
spinning circle is not directly at the bottom of the dialog, looks a bit
nicer this way.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a purely cosmetic user-interface tweak. It adds 20 pixels of empty space at the bottom of a loading dialog so the spinning circle is not touching the dialog edge. There is no security relevance.

Lower-priorityandroid: make QR code scanner e2e compatibleby f321x · 9871931b · Aug 27, 2025 · 1 fileMessage 60 · AdequateInformational 18Details
Commit message · f321x

android: make QR code scanner e2e compatible

Makes the Java QR code scanner edge-to-edge compatible by padding the
hintTextView and the pasteButton.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 18/100

This commit adjusts the Android QR code scanner screen so its buttons and text don't get hidden behind the phone's status bar or navigation gestures on newer Android versions (Android 15+). It is a user-interface compatibility fix, not a security patch.

Security candidateqml: add padding to ElDialog for android e2eby f321x · 5f018091 · Aug 27, 2025 · 13 filesMessage 45 · ThinInformational 18Details
Commit message · f321x

qml: add padding to ElDialog for android e2e

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet pathauthentication path
AI analysis · Informational 18/100

This commit adjusts on-screen spacing for the Android version of the Electrum wallet app so that dialog boxes avoid overlapping with the phone's system status and navigation bars. It is a user-interface layout fix, not a security patch. There is no indication it fixes a vulnerability or changes how funds, keys, or passwords are protected.

Lower-priorityqml: pad main view if e2e enforcement is activeby f321x · 53595e1b · Aug 27, 2025 · 1 fileMessage 45 · ThinInformational 20Details
Commit message · f321x

qml: pad main view if e2e enforcement is active

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 20/100

This commit adjusts the Electrum mobile app's main screen layout so that Android's system status bar and navigation bar do not overlap the app's toolbar or bottom controls when the operating system's 'edge-to-edge' display mode is active. It is a UI spacing fix, not a security patch.

Lower-priorityqml: qeapp: add methods to retrive system bar heightsby f321x · 4b30b097 · Aug 27, 2025 · 1 fileMessage 50 · ThinInformational 13Details
Commit message · f321x

qml: qeapp: add methods to retrive system bar heights

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 13/100

This commit adds helper functions to Electrum's mobile QML interface so the app can measure Android status and navigation bar heights. It is a UI/layout change, not a security fix or vulnerability. There is no indication it addresses any security issue.

Lower-priorityandroid: bump target sdk to 35by f321x · c3652727 · Aug 27, 2025 · 1 fileMessage 45 · ThinInformational 11Details
Commit message · f321x

android: bump target sdk to 35

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 11/100

This commit updates a single Android build configuration number from target SDK 34 to 35. It is a routine compatibility/maintenance change with no direct security fix visible in the diff. By itself, it does not patch any vulnerability, though staying current with Android SDK targets is generally good security hygiene.

Lower-prioritydon't sys.exit() from run_offline_command, this leads to wait on lock that never releases.by Sander van Grieken · 18f6b889 · Aug 26, 2025 · 1 fileMessage 50 · ThinInformational 24Details
Commit message · Sander van Grieken

don't sys.exit() from run_offline_command, this leads to wait on lock that never releases.

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 24/100

This commit fixes a bug where Electrum's command-line tool would call sys.exit() deep inside an offline command, causing the program to hang while waiting for a lock that never gets released. The fix replaces those abrupt exits with proper exception handling so the caller can clean up and exit cleanly. It is a reliability/bug-fix change rather than a security vulnerability in the traditional sense, though the hang could be annoying or disruptive.

Lower-priorityswaps: add explicit check that (onchain_locktime < LN_locktime)by SomberNight · 835b04d5 · Aug 26, 2025 · 2 filesMessage 98 · StrongLow 29Details
Commit message · SomberNight

swaps: add explicit check that (onchain_locktime < LN_locktime)

This was already implicitly checked. This diff makes the check explicit, and serves as an additional sanity-check.
- for client-forward-swaps, we have
- "cltv safety requirement: (onchain_locktime < LN_locktime), otherwise client is vulnerable"
- server chooses onchain locktime delta = 70
https://github.com/spesmilo/electrum/blob/71255c1e735cdfcd881e045b9f2f6bc6b599f459/electrum/submarine_swaps.py#L701
- client checks that onchain locktime delta is <100
https://github.com/spesmilo/electrum/blob/71255c1e735cdfcd881e045b9f2f6bc6b599f459/electrum/submarine_swaps.py#L887
- client chooses LN locktime delta = 432
https://github.com/spesmilo/electrum/blob/71255c1e735cdfcd881e045b9f2f6bc6b599f459/electrum/submarine_swaps.py#L907
- for client-reverse-swaps, we have
- "cltv safety requirement: (onchain_locktime < LN_locktime), otherwise server is vulnerable"
- server chooses onchain locktime delta = 70
https://github.com/spesmilo/electrum/blob/71255c1e735cdfcd881e045b9f2f6bc6b599f459/electrum/submarine_swaps.py#L598
- server chooses LN locktime delta: unset, i.e. our default of 147
https://github.com/spesmilo/electrum/blob/71255c1e735cdfcd881e045b9f2f6bc6b599f459/electrum/submarine_swaps.py#L612
https://github.com/spesmilo/electrum/blob/71255c1e735cdfcd881e045b9f2f6bc6b599f459/electrum/lnworker.py#L2273

98/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
AI analysis · Low 29/100

This commit adds an extra safety check in Electrum's submarine-swap feature to make sure the on-chain refund deadline is earlier than the Lightning Network payment deadline. The commit message says this was already implicitly guaranteed by other checks, and the code change just makes it explicit. It also adds clarifying comments about Lightning invoice expiry handling and payment bundles. There is no direct evidence that a real vulnerability was exploitable before this change.

Lower-prioritycontrib/make_download: sort signers, instead of random fs orderby SomberNight · 71255c1e · Aug 25, 2025 · 1 fileMessage 55 · ThinInformational 18Details
Commit message · SomberNight

contrib/make_download: sort signers, instead of random fs order

55/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Names security-relevant behavior explicitly! No meaningful explanatory body
AI analysis · Informational 18/100

This is a tiny build-script change that sorts the list of files in the 'dist' directory alphabetically instead of using whatever order the filesystem happens to return. It makes the generated download page deterministic and easier to review, but it does not fix a vulnerability that can be directly exploited by an attacker.

AI review queuedcontrib: add "set -e" to bash scripts where missingby SomberNight · d9480fe3 · Aug 25, 2025 · 4 filesMessage 50 · ThinInformational 18Details
Commit message · SomberNight

contrib: add "set -e" to bash scripts where missing

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 18/100

This commit adds 'set -e' to four helper shell scripts used during Electrum's build and release process. 'set -e' makes a bash script stop immediately if any command fails, rather than continuing with potentially broken or incomplete results. This is a hardening improvement for the build pipeline, not a fix for an active security flaw in the wallet software itself. It reduces the risk that a failed build step goes unnoticed and produces a bad release artifact.

AI review queuedprepare release 4.6.2by SomberNight · c9511264 · Aug 24, 2025 · 2 filesMessage 38 · OpaqueInformational 15Details
Commit message · SomberNight

prepare release 4.6.2

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit is a routine release-preparation change. It only updates the version number from 4.6.1 to 4.6.2 and adds release notes describing many bug fixes and minor features. There is no code change that could directly introduce or fix a security vulnerability in this specific commit.

AI review queuedupdate localeby SomberNight · f98b6a39 · Aug 23, 2025 · 1 fileMessage 18 · OpaqueInformational 10Details
Commit message · SomberNight

update locale

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
translation-only discountsecond-pass: opaque commit message
AI analysis · Informational 10/100

This commit is a routine update to translation/localization files (locale). It changes one line in one language file. There is no indication of any security relevance.

AI review queueddaemon: load_wallet: add force_check_password arg, and use it in qmlby SomberNight · 92bdc4d4 · Aug 23, 2025 · 3 filesMessage 81 · StrongLow 29Details
Commit message · SomberNight

daemon: load_wallet: add force_check_password arg, and use it in qml

- fix: qml gui errors when trying to open a wallets with only keystore-encryption
- fixes https://github.com/spesmilo/electrum/issues/10171
- qml gui to prompt for password on wallet open even if wallet is not storage-encrypted

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
second-pass: broader security terminology
AI analysis · Low 29/100

This commit fixes a bug in Electrum's mobile-style QML user interface where wallets protected only by a keystore password (not file encryption) could be opened without prompting for or checking the password. The change adds an optional force_check_password flag to the wallet loading code and uses it in the QML GUI so users are always asked for the password before the wallet opens. It is a defensive fix, not an active remote exploit.

Lower-priorityutils/memory_leak: add helpers using 3rd-party package "objgraph"by SomberNight · 41269b9c · Aug 23, 2025 · 1 fileMessage 65 · AdequateInformational 15Details
Commit message · SomberNight

utils/memory_leak: add helpers using 3rd-party package "objgraph"

we will not start depending on "objgraph", to be clear

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit adds optional developer-only debugging helpers for investigating memory leaks. The new code is not used automatically by Electrum; it is only meant to be run manually from the Qt console by developers. It does not change how wallets, networking, or cryptography work, and it introduces no security vulnerability.

Lower-priorityutil: move DebugMem from util to utils/memory_leak.pyby SomberNight · c777c016 · Aug 23, 2025 · 2 filesMessage 50 · ThinInformational 15Details
Commit message · SomberNight

util: move DebugMem from util to utils/memory_leak.py

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit simply moves an internal developer-only debugging helper class (DebugMem) from one file to another. It is not a security fix and does not change any user-facing behavior. The code is used only for diagnosing memory leaks during development.

Lower-priorityutil: fix DebugMem helperby SomberNight · 23a82f32 · Aug 23, 2025 · 3 filesMessage 58 · ThinInformational 18Details
Commit message · SomberNight

util: fix DebugMem helper

```
28.99 | I | util.DebugMem | Start memscan
29.10 | E | plugin.Plugins |
Traceback (most recent call last):
File "...\electrum\util.py", line 405, in run_jobs
job.run()
File "...\electrum\util.py", line 376, in run
self.mem_stats()
File "...\electrum\util.py", line 368, in mem_stats
if isinstance(obj, class_):
File "...\Python310\lib\abc.py", line 119, in __instancecheck__
return _abc_instancecheck(cls, instance)
File "...\electrum\simple_config.py", line 609, in __getattribute__
raise AttributeError()
AttributeError
```

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
AI analysis · Informational 18/100

This commit fixes an internal developer-only debugging tool (DebugMem) that crashes when scanning Python objects. The crash happens because some objects raise an AttributeError during Python's normal type-checking process. The fix simply catches that error and treats the object as not matching the requested type. The affected code is commented out by default and only used for memory-leak debugging, so it does not affect normal Electrum users or their wallets.

Lower-priorityswaps: trivial rename WITNESS_TEMPLATE_REVERSE_SWAPby SomberNight · 7989d646 · Aug 23, 2025 · 1 fileMessage 40 · ThinInformational 15Details
Commit message · SomberNight

swaps: trivial rename WITNESS_TEMPLATE_REVERSE_SWAP

40/100 · ThinMessage clarity
✓ Specific, descriptive subject! No meaningful explanatory body
AI analysis · Informational 15/100

This commit is a simple variable rename from WITNESS_TEMPLATE_REVERSE_SWAP to WITNESS_TEMPLATE_SWAP, plus a comment update explaining the historical naming. The actual swap script logic, structure, and values are unchanged. There is no security issue here.

Lower-priorityswaps: add check for blockchain().is_tip_stale()by SomberNight · 08f041f3 · Aug 23, 2025 · 1 fileMessage 45 · ThinModerate 58Details
Commit message · SomberNight

swaps: add check for blockchain().is_tip_stale()

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Moderate 58/100

This change adds safety checks to Electrum's submarine swap feature so it refuses to create or accept swaps if the wallet's view of the Bitcoin blockchain is outdated ('stale tip'). If the wallet acted on old blockchain data, swap locktimes could be set dangerously far in the future or too close to the present, which could let an attacker lock up funds unfairly or prevent a refund. The patch is defensive and partial: it stops the risky action but does not by itself fix whatever caused the stale tip.

Lower-prioritylnworker: rewrite payment_bundles: lower cpu-time-complexityby SomberNight · 9e7c332b · Aug 23, 2025 · 2 filesMessage 50 · ThinInformational 12Details
Commit message · SomberNight

lnworker: rewrite payment_bundles: lower cpu-time-complexity

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 12/100

This commit is a performance refactor, not a security fix. It replaces a slow list-based data structure for tracking bundled Lightning payments with two dictionaries that allow faster lookups. There is no indication it addresses a vulnerability or changes security behavior.

Lower-priorityswaps: more clean-up, add comments, more sanity checksby SomberNight · a7afd59d · Aug 23, 2025 · 2 filesMessage 50 · ThinModerate 57Details
Commit message · SomberNight

swaps: more clean-up, add comments, more sanity checks

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Moderate 57/100

This commit tightens safety checks in Electrum's submarine-swap (a way to move Bitcoin between on-chain and Lightning) code. It prevents the same payment hash or prepayment hash from being reused for different swaps, makes sure saved payment records aren't silently overwritten by conflicting data, and verifies the other party's refund public key before accepting a swap invoice. These are defensive hardening changes that reduce the chance of a malicious or buggy swap server/client confusing the wallet into paying or revealing funds incorrectly. The commit message does not call this a security fix, and there is no disclosed vulnerability or CVE.

Lower-priorityswaps: clean-up onchain script constructionby SomberNight · fc362826 · Aug 23, 2025 · 1 fileMessage 45 · ThinLow 32Details
Commit message · SomberNight

swaps: clean-up onchain script construction

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Low 32/100

This commit refactors how Electrum builds and checks the on-chain Bitcoin scripts used in submarine swaps (a way to exchange on-chain and Lightning bitcoins). It introduces a single helper function that both constructs the script and verifies it can be reconstructed exactly from its parts. The change is a defensive clean-up: it makes the code more consistent and adds a self-check that the script matches the expected template, payment hash, locktime, and public keys. There is no direct evidence in the commit that this fixes an active security bug, but it strengthens validation against a malicious or buggy swap server sending a mismatched script.

AI review queuedutil.format_satoshis: floating-point paranoiaby SomberNight · 8d8d1dba · Aug 22, 2025 · 4 filesMessage 45 · ThinLow 46Details
Commit message · SomberNight

util.format_satoshis: floating-point paranoia

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 46/100

This commit tightens how Electrum converts numbers into displayed bitcoin amounts. It removes the ability to pass plain strings into a key formatting helper, and routes integer and float inputs through a safer Decimal conversion to avoid tiny rounding errors that can appear when computers handle decimal numbers. The change also makes one fee calculation explicitly use Decimal arithmetic. The patch is defensive and does not by itself fix a known exploitable bug, but it reduces the risk of incorrect amounts being shown or used in fee calculations.

Lower-priorityswaps: cleanup after successful swapby f321x · 97a0d27f · Aug 22, 2025 · 1 fileMessage 60 · AdequateInformational 19Details
Commit message · f321x

swaps: cleanup after successful swap

unregister hold invoice callback and delete payment bundle. they are not
used anymore.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 19/100

This commit tidies up internal bookkeeping after a Bitcoin/Lightning submarine swap completes. It removes a watcher callback and deletes a payment bundle/hold-invoice that are no longer needed. The change appears to be a cleanup/hygiene fix rather than a direct security patch, but leaving stale callbacks and payment state around could theoretically contribute to memory growth, unexpected re-triggering of events, or minor information leakage about completed swaps.