Electrum Bitcoin Wallet
This report summarizes scanner evidence for spesmilo/electrum, a Python project with 8,611 GitHub stars. SynthScan examined 189,449 lines of code across 521 source files, recording 3252 pattern matches distributed across 21 syntactic categories. The legacy adjusted pattern signal is 19.9 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1825 finding(s).
Are imports declared and package/API names verified? 783 finding(s).
Are wrappers, guards, and repeated structures necessary? 2025 finding(s).
Which changes need focused human review? 3252 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 3252 distinct pattern matches across 21 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_onion_message.py | 65 | def test_path_pubkeys_blinded_path_appended(self): | CODE |
| LOW | tests/test_onion_message.py | 114 | def test_onion_message_payload_size(self): | CODE |
| LOW⚡ | tests/test_onion_message.py | 148 | def test_decode_onion_message_packet(self): | CODE |
| LOW⚡ | tests/test_onion_message.py | 154 | def test_decode_onion_message(self): | CODE |
| LOW⚡ | tests/test_onion_message.py | 164 | def test_decrypt_onion_message(self): | CODE |
| LOW | tests/test_onion_message.py | 223 | def prepare_blinded_path_bob_to_dave(self): | CODE |
| LOW | tests/test_onion_message.py | 235 | def test_create_onionmessage_to_blinded_path_via_alice(self): | CODE |
| LOW | tests/test_onion_message.py | 283 | async def wait_one_htlc_switch_iteration(self, *args): | CODE |
| LOW | tests/test_onion_message.py | 476 | def my_on_onion_message_received_unsolicited(*args, **kwargs): | CODE |
| LOW | tests/test_onion_message.py | 495 | async def test_get_blinded_paths_to_me_payment(self): | CODE |
| LOW | tests/test_onion_message.py | 533 | async def test_create_route_to_introduction_point(self): | CODE |
| LOW | tests/test_wizard.py | 159 | def _create_xpub_keystore_wallet(self, *, wallet_type: str = 'standard', xpub): | CODE |
| LOW | tests/test_wizard.py | 174 | def _sanity_checks_after_disabling_keystore( | CODE |
| LOW | tests/test_wizard.py | 216 | async def test_haveseed_ext_electrum(self): | CODE |
| LOW | tests/test_wizard.py | 247 | async def test_haveseed_electrum__mismatching_seed(self): | CODE |
| LOW | tests/test_wizard.py | 274 | async def test_haveseed_electrum_oldseed(self): | CODE |
| LOW | tests/test_wizard.py | 465 | def _set_password_and_check_address( | CODE |
| LOW | tests/test_wizard.py | 492 | async def test_set_password_and_encrypt_file(self): | CODE |
| LOW | tests/test_wizard.py | 514 | async def test_set_password_but_dont_encrypt_file(self): | CODE |
| LOW | tests/test_wizard.py | 536 | async def test_create_standard_wallet_createseed(self): | CODE |
| LOW | tests/test_wizard.py | 555 | async def test_create_standard_wallet_createseed_passphrase(self): | CODE |
| LOW | tests/test_wizard.py | 581 | async def test_create_standard_wallet_haveseed_electrum_oldseed(self): | CODE |
| LOW | tests/test_wizard.py | 600 | async def test_create_standard_wallet_haveseed_electrum_oldseed_in_hex_format(self): | CODE |
| LOW | tests/test_wizard.py | 619 | async def test_create_standard_wallet_haveseed_electrum_oldseed_passphrase(self): | CODE |
| LOW | tests/test_wizard.py | 643 | async def test_create_standard_wallet_haveseed_electrum(self): | CODE |
| LOW | tests/test_wizard.py | 657 | async def test_create_standard_wallet_haveseed_electrum_passphrase(self): | CODE |
| LOW | tests/test_wizard.py | 675 | async def test_create_standard_wallet_have_master_key(self): | CODE |
| LOW | tests/test_wizard.py | 957 | async def test_create_standard_wallet_trezor(self): | CODE |
| LOW | tests/test_wizard.py | 1174 | async def test_create_imported_wallet_from_addresses(self): | CODE |
| LOW | tests/test_wizard.py | 1198 | async def test_create_imported_wallet_from_addresses__invalid_input(self): | CODE |
| LOW | tests/test_wizard.py | 1214 | async def test_create_imported_wallet_from_wif_keys(self): | CODE |
| LOW | tests/test_wizard.py | 1233 | async def test_create_imported_wallet_from_wif_keys__unsupported_type(self): | CODE |
| LOW⚡ | tests/regtest.py | 67 | def test_redeem_received_htlcs(self): | CODE |
| LOW⚡ | tests/regtest.py | 70 | def test_redeem_offered_htlcs(self): | CODE |
| LOW⚡ | tests/regtest.py | 73 | def test_breach_with_unspent_htlc(self): | CODE |
| LOW⚡ | tests/regtest.py | 76 | def test_breach_with_spent_htlc(self): | CODE |
| LOW⚡ | tests/regtest.py | 79 | def test_lnwatcher_waits_until_fees_go_down(self): | CODE |
| LOW⚡ | tests/regtest.py | 98 | def test_swapserver_success_forward(self): | CODE |
| LOW⚡ | tests/regtest.py | 101 | def test_swapserver_success_reverse(self): | CODE |
| LOW⚡ | tests/regtest.py | 104 | def test_swapserver_forceclose(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 107 | def test_tx_update_signatures(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 116 | def test_tx_setting_locktime_invalidates_ser_cache(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 122 | def test_tx_setting_version_invalidates_ser_cache(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 128 | def test_tx_deserialize_for_signed_network_tx(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 1099 | def test_check_sighash_types_sighash_all(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 1107 | def test_check_sighash_types_sighash_none(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 1115 | def test_check_sighash_types_sighash_single(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 1124 | def test_check_sighash_types_sighash_all_anyonecanpay(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 1133 | def test_check_sighash_types_sighash_none_anyonecanpay(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 1141 | def test_check_sighash_types_sighash_single_anyonecanpay(self): | CODE |
| LOW | tests/test_transaction.py | 89 | def test_match_against_script_template(self): | CODE |
| LOW | tests/test_transaction.py | 155 | def test_estimated_output_size(self): | CODE |
| LOW | tests/test_transaction.py | 198 | def test_convert_raw_tx_to_hex(self): | CODE |
| LOW | tests/test_transaction.py | 206 | def test_get_address_from_output_script(self): | CODE |
| LOW | tests/test_transaction.py | 239 | def test_tx_serialize_methods_for_psbt(self): | CODE |
| LOW | tests/test_transaction.py | 251 | def test_tx_serialize_methods_for_network_tx(self): | CODE |
| LOW | tests/test_transaction.py | 260 | def test_tx_serialize_methods_for_psbt_that_is_ready_to_be_finalized(self): | CODE |
| LOW | tests/test_transaction.py | 418 | def test_txid_negative_version_num(self): | CODE |
| LOW | tests/test_transaction.py | 429 | def test_txid_invalid_op_return(self): | CODE |
| LOW | tests/test_transaction.py | 1152 | def test_taproot_keypath_spending(self): | CODE |
| 1297 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 9 | CODE | |
| LOW | setup.py | 10 | CODE | |
| LOW | setup.py | 13 | CODE | |
| LOW | tests/test_onion_message.py | 5 | CODE | |
| LOW | tests/test_onion_message.py | 16 | CODE | |
| LOW | tests/test_onion_message.py | 24 | CODE | |
| LOW | tests/test_x509.py | 1 | CODE | |
| LOW | tests/test_wizard.py | 5 | CODE | |
| LOW | tests/regtest.py | 1 | CODE | |
| LOW | tests/test_lnwallet.py | 13 | CODE | |
| LOW | tests/test_lnwallet.py | 17 | CODE | |
| LOW | tests/test_storage_upgrade.py | 1 | CODE | |
| LOW | tests/test_storage_upgrade.py | 2 | CODE | |
| LOW | tests/test_storage_upgrade.py | 3 | CODE | |
| LOW | tests/test_storage_upgrade.py | 6 | CODE | |
| LOW | tests/test_storage_upgrade.py | 9 | CODE | |
| LOW | tests/test_storage_upgrade.py | 10 | CODE | |
| LOW | tests/test_storage_upgrade.py | 14 | CODE | |
| LOW | tests/test_storage_upgrade.py | 15 | CODE | |
| LOW | tests/test_storage_upgrade.py | 17 | CODE | |
| LOW | tests/test_lnrouter.py | 5 | CODE | |
| LOW | tests/test_lnrouter.py | 9 | CODE | |
| LOW | tests/test_lnrouter.py | 18 | CODE | |
| LOW | tests/test_bolt11.py | 5 | CODE | |
| LOW | tests/test_bolt11.py | 14 | CODE | |
| LOW | tests/test_bolt11.py | 16 | CODE | |
| LOW | tests/test_lnpeer.py | 3 | CODE | |
| LOW | tests/test_lnpeer.py | 5 | CODE | |
| LOW | tests/test_lnpeer.py | 7 | CODE | |
| LOW | tests/test_lnpeer.py | 8 | CODE | |
| LOW | tests/test_lnpeer.py | 10 | CODE | |
| LOW | tests/test_lnpeer.py | 11 | CODE | |
| LOW | tests/test_lnpeer.py | 12 | CODE | |
| LOW | tests/test_lnpeer.py | 14 | CODE | |
| LOW | tests/test_lnpeer.py | 14 | CODE | |
| LOW | tests/test_lnpeer.py | 14 | CODE | |
| LOW | tests/test_lnpeer.py | 14 | CODE | |
| LOW | tests/test_lnpeer.py | 14 | CODE | |
| LOW | tests/test_lnpeer.py | 19 | CODE | |
| LOW | tests/test_lnpeer.py | 19 | CODE | |
| LOW | tests/test_lnpeer.py | 20 | CODE | |
| LOW | tests/test_lnpeer.py | 27 | CODE | |
| LOW | tests/test_lnpeer.py | 28 | CODE | |
| LOW | tests/test_lnpeer.py | 29 | CODE | |
| LOW | tests/test_lnpeer.py | 29 | CODE | |
| LOW | tests/test_lnpeer.py | 30 | CODE | |
| LOW | tests/test_lnpeer.py | 31 | CODE | |
| LOW | tests/test_lnpeer.py | 33 | CODE | |
| LOW | tests/test_lnpeer.py | 34 | CODE | |
| LOW | tests/test_lnpeer.py | 34 | CODE | |
| LOW | tests/test_lnpeer.py | 34 | CODE | |
| LOW | tests/test_lnpeer.py | 39 | CODE | |
| LOW | tests/test_lnpeer.py | 41 | CODE | |
| LOW | tests/test_lnpeer.py | 43 | CODE | |
| LOW | tests/test_lnpeer.py | 43 | CODE | |
| LOW | tests/test_lnpeer.py | 46 | CODE | |
| LOW | tests/test_lnpeer.py | 51 | CODE | |
| LOW | tests/test_lnpeer.py | 51 | CODE | |
| LOW | tests/test_lnpeer.py | 53 | CODE | |
| LOW | tests/test_lnpeer.py | 53 | CODE | |
| 705 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_lnpeer.py | 1657 | except SuccessfulTest: | CODE |
| HIGH | contrib/ci/claude_security_review.py | 73 | except subprocess.CalledProcessError: | CODE |
| HIGH | electrum/util.py | 1986 | except ValueError: | CODE |
| HIGH | electrum/util.py | 1999 | except ValueError: | CODE |
| HIGH | electrum/util.py | 1222 | except FileExistsError: | CODE |
| HIGH | electrum/util.py | 1270 | except Exception as e: | CODE |
| HIGH | electrum/channel_db.py | 185 | except ValueError: | CODE |
| HIGH | electrum/transaction.py | 1517 | except Exception: | CODE |
| HIGH | electrum/transaction.py | 1537 | except Exception: | CODE |
| HIGH | electrum/transaction.py | 1523 | except Exception: | CODE |
| HIGH | electrum/transaction.py | 1816 | except ValueError: | CODE |
| HIGH | electrum/transaction.py | 2176 | except ValueError: | CODE |
| HIGH | electrum/transaction.py | 1965 | except MissingSolutionPiece: | CODE |
| HIGH | electrum/transaction.py | 2278 | except ValueError: | CODE |
| HIGH | electrum/transaction.py | 2303 | except ValueError: | CODE |
| HIGH | electrum/interface.py | 590 | except ValueError: | CODE |
| HIGH | electrum/__init__.py | 44 | except AssertionError: | CODE |
| HIGH | electrum/lnonion.py | 699 | except ValueError: | CODE |
| HIGH | electrum/payment_identifier.py | 484 | except Exception as e: | CODE |
| HIGH | electrum/payment_identifier.py | 490 | except Exception as e: | CODE |
| HIGH | electrum/address_synchronizer.py | 187 | except KeyError: | CODE |
| HIGH | electrum/address_synchronizer.py | 613 | except KeyError: | CODE |
| HIGH | electrum/address_synchronizer.py | 345 | except KeyError: | CODE |
| HIGH | electrum/base_crash_reporter.py | 181 | except Exception: | CODE |
| HIGH | electrum/base_crash_reporter.py | 246 | except queue.Full: | CODE |
| HIGH | electrum/dns_hacks.py | 56 | except ValueError: | CODE |
| HIGH | electrum/dns_hacks.py | 80 | except expected_errors as e: | CODE |
| HIGH | electrum/crypto.py | 47 | except Exception: | CODE |
| HIGH | electrum/crypto.py | 62 | except Exception: | CODE |
| HIGH | electrum/crypto.py | 80 | except Exception: | CODE |
| HIGH | electrum/slip39.py | 321 | except Slip39Error: | CODE |
| HIGH | electrum/lnworker.py | 2145 | except PaymentSuccess: | CODE |
| HIGH | electrum/lnworker.py | 3737 | except UnrelatedTransactionException: | CODE |
| HIGH | electrum/lnworker.py | 1897 | except NotEnoughFunds: | CODE |
| HIGH | electrum/network.py | 475 | except Exception: | CODE |
| HIGH | electrum/plugin.py | 1150 | except ImportError: | CODE |
| HIGH | electrum/plugin.py | 512 | except FileNotFoundError: | CODE |
| HIGH | electrum/plugin.py | 1349 | except CannotAutoSelectDevice: | CODE |
| HIGH | electrum/plugin.py | 1652 | except UserCancelled: | CODE |
| HIGH | electrum/plugin.py | 1663 | except UserCancelled: | CODE |
| HIGH | electrum/exchange_rate.py | 542 | except Exception: | CODE |
| HIGH | electrum/exchange_rate.py | 569 | except Exception as e: | CODE |
| HIGH | electrum/lnpeer.py | 942 | except Exception: | CODE |
| HIGH | electrum/lnpeer.py | 2859 | except UnrelatedTransactionException: | CODE |
| HIGH | electrum/commands.py | 801 | except GuiImportError: | CODE |
| HIGH | electrum/commands.py | 398 | except Exception: | CODE |
| HIGH | electrum/keystore.py | 795 | except Exception: | CODE |
| HIGH | electrum/keystore.py | 78 | except Exception: | CODE |
| HIGH | electrum/verifier.py | 178 | except Exception: | CODE |
| HIGH | electrum/daemon.py | 104 | except OSError: | CODE |
| HIGH | electrum/daemon.py | 720 | except util.InvalidPassword: | CODE |
| HIGH | electrum/wallet.py | 4013 | except descriptor.NotLegacySinglesigScriptType: | CODE |
| HIGH | electrum/_vendor/distutils/version.py | 319 | except ValueError: | CODE |
| HIGH | electrum/_vendor/pyperclip/__init__.py | 569 | except ImportError: | CODE |
| HIGH | electrum/_vendor/pyperclip/__init__.py | 600 | except ImportError: | CODE |
| HIGH | electrum/plugins/digitalbitbox/digitalbitbox.py | 97 | except Exception: | CODE |
| HIGH | electrum/plugins/ledger/ledger.py | 993 | except DenyError: | CODE |
| HIGH | electrum/plugins/ledger/ledger.py | 1173 | except DenyError: | CODE |
| HIGH | electrum/plugins/ledger/ledger.py | 1200 | except DenyError: | CODE |
| HIGH | electrum/plugins/labels/qt.py | 100 | except TypeError: | CODE |
| 41 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_lnutil.py | 487 | except Exception as e: | CODE |
| LOW | tests/test_lnutil.py | 509 | except Exception as e: | CODE |
| LOW | tests/test_jsondb.py | 33 | except Exception as e: | CODE |
| LOW | tests/qml/qt_util.py | 56 | except Exception as e: | CODE |
| LOW | tests/qml/qt_util.py | 98 | except Exception as e: | CODE |
| MEDIUM | tests/qml/qt_util.py | 49 | def start_qt_task(): | CODE |
| LOW | tests/toyserver/toynetwork.py | 100 | except Exception: | CODE |
| LOW | contrib/locale/stats.py | 36 | except Exception as e: | CODE |
| LOW | contrib/android/get_apk_versioncode.py | 64 | except Exception: | CODE |
| LOW | electrum/descriptor.py | 195 | except Exception: | CODE |
| LOW | electrum/logging.py | 296 | except Exception as e: | CODE |
| LOW | electrum/logging.py | 368 | except Exception: | CODE |
| LOW | electrum/pem.py | 37 | except Exception as e: | CODE |
| MEDIUM | electrum/pem.py | 34 | def a2b_base64(s): | CODE |
| LOW | electrum/lnverifier.py | 143 | except Exception: | CODE |
| LOW | electrum/contacts.py | 55 | except Exception: | CODE |
| LOW | electrum/onion_message.py | 282 | except Exception as e: | CODE |
| LOW | electrum/onion_message.py | 797 | except Exception as e: | CODE |
| LOW | electrum/x509.py | 320 | except Exception as e: | CODE |
| MEDIUM | electrum/util.py | 444 | def json_encode(obj): | CODE |
| MEDIUM | electrum/util.py | 1159 | def run_with_except_hook(*args2, **kwargs2): | CODE |
| MEDIUM | electrum/util.py | 1179 | def read_json_file(path): | CODE |
| LOW | electrum/util.py | 394 | except Exception as e: | CODE |
| LOW | electrum/util.py | 455 | except Exception: | CODE |
| LOW | electrum/util.py | 668 | except Exception: | CODE |
| LOW | electrum/util.py | 761 | except Exception: | CODE |
| LOW | electrum/util.py | 775 | except Exception: | CODE |
| LOW | electrum/util.py | 1139 | except Exception: | CODE |
| LOW | electrum/util.py | 1162 | except Exception: | CODE |
| LOW | electrum/util.py | 1270 | except Exception as e: | CODE |
| LOW | electrum/util.py | 1589 | except Exception as e: | CODE |
| LOW | electrum/util.py | 1749 | except Exception as e: | CODE |
| LOW | electrum/util.py | 2341 | except Exception as e: | CODE |
| LOW | electrum/channel_db.py | 190 | except Exception: | CODE |
| LOW | electrum/channel_db.py | 847 | except Exception: | CODE |
| LOW | electrum/bitcoin.py | 668 | except Exception as e: | CODE |
| LOW⚡ | electrum/bitcoin.py | 717 | except Exception as e: | CODE |
| LOW⚡ | electrum/bitcoin.py | 726 | except Exception as e: | CODE |
| LOW⚡ | electrum/bitcoin.py | 736 | except Exception as e: | CODE |
| LOW | electrum/bitcoin.py | 901 | except Exception as e: | CODE |
| MEDIUM | electrum/transaction.py | 648 | def read_compact_size(self): | CODE |
| MEDIUM | electrum/transaction.py | 1488 | def get_fee(self) -> Optional[int]: | CODE |
| LOW⚡ | electrum/transaction.py | 1320 | except Exception as e: | CODE |
| LOW | electrum/transaction.py | 673 | except Exception as e: | CODE |
| LOW | electrum/transaction.py | 1517 | except Exception: | CODE |
| LOW | electrum/transaction.py | 1523 | except Exception: | CODE |
| LOW | electrum/transaction.py | 1537 | except Exception: | CODE |
| LOW | electrum/transaction.py | 1574 | except Exception as e: | CODE |
| LOW | electrum/constants.py | 41 | except Exception: | CODE |
| MEDIUM | electrum/interface.py | 374 | def create_connection(self): | CODE |
| MEDIUM | electrum/interface.py | 776 | def run(self): | CODE |
| LOW | electrum/interface.py | 154 | except Exception: | CODE |
| LOW | electrum/interface.py | 199 | except Exception as e: | CODE |
| LOW | electrum/interface.py | 511 | except Exception as e: | CODE |
| LOW | electrum/interface.py | 715 | except Exception as e: | CODE |
| LOW | electrum/interface.py | 1443 | except Exception as e: | CODE |
| LOW | electrum/json_db.py | 124 | except Exception: | CODE |
| LOW⚡ | electrum/json_db.py | 148 | except Exception as e: | CODE |
| LOW⚡ | electrum/json_db.py | 155 | except Exception: | CODE |
| LOW | electrum/json_db.py | 218 | except Exception: | CODE |
| 380 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_transaction.py | 274 | CODE | |
| LOW | tests/test_bolt11.py | 239 | CODE | |
| LOW | tests/test_bolt11.py | 362 | CODE | |
| LOW | tests/test_wallet_vertical.py | 3448 | CODE | |
| LOW | tests/test_lnutil.py | 95 | CODE | |
| LOW | tests/test_lnutil.py | 817 | CODE | |
| LOW | tests/lnhelpers.py | 421 | CODE | |
| LOW | tests/qml/qt_util.py | 68 | CODE | |
| LOW | tests/qml/qt_util.py | 70 | CODE | |
| LOW | tests/toyserver/toyserver.py | 204 | CODE | |
| LOW | contrib/ci/claude_security_review.py | 149 | CODE | |
| LOW | contrib/android/apkdiff.py | 47 | CODE | |
| LOW | electrum/descriptor.py | 866 | CODE | |
| LOW | electrum/descriptor.py | 923 | CODE | |
| LOW | electrum/descriptor.py | 1039 | CODE | |
| LOW | electrum/descriptor.py | 444 | CODE | |
| LOW | electrum/mpp_split.py | 114 | CODE | |
| LOW | electrum/logging.py | 87 | CODE | |
| LOW | electrum/lnsweep.py | 527 | CODE | |
| LOW | electrum/lnsweep.py | 569 | CODE | |
| LOW | electrum/lnutil.py | 1210 | CODE | |
| LOW | electrum/lnutil.py | 517 | CODE | |
| LOW | electrum/lnutil.py | 1805 | CODE | |
| LOW | electrum/version.py | 13 | CODE | |
| LOW | electrum/onion_message.py | 265 | CODE | |
| LOW | electrum/onion_message.py | 411 | CODE | |
| LOW | electrum/x509.py | 187 | CODE | |
| LOW | electrum/lnchannel.py | 355 | CODE | |
| LOW | electrum/lnchannel.py | 408 | CODE | |
| LOW | electrum/util.py | 713 | CODE | |
| LOW | electrum/util.py | 960 | CODE | |
| LOW | electrum/util.py | 1814 | CODE | |
| LOW | electrum/util.py | 2073 | CODE | |
| LOW | electrum/channel_db.py | 251 | CODE | |
| LOW | electrum/channel_db.py | 549 | CODE | |
| LOW | electrum/channel_db.py | 588 | CODE | |
| LOW | electrum/channel_db.py | 1090 | CODE | |
| LOW | electrum/bitcoin.py | 225 | CODE | |
| LOW | electrum/bitcoin.py | 301 | CODE | |
| LOW | electrum/bitcoin.py | 482 | CODE | |
| LOW | electrum/transaction.py | 682 | CODE | |
| LOW | electrum/transaction.py | 761 | CODE | |
| LOW | electrum/transaction.py | 508 | CODE | |
| LOW | electrum/transaction.py | 648 | CODE | |
| LOW | electrum/transaction.py | 1054 | CODE | |
| LOW | electrum/transaction.py | 1773 | CODE | |
| LOW | electrum/transaction.py | 1813 | CODE | |
| LOW | electrum/transaction.py | 2173 | CODE | |
| LOW | electrum/transaction.py | 2256 | CODE | |
| LOW | electrum/transaction.py | 2583 | CODE | |
| LOW | electrum/interface.py | 183 | CODE | |
| LOW | electrum/interface.py | 815 | CODE | |
| LOW | electrum/interface.py | 1194 | CODE | |
| LOW | electrum/lnrouter.py | 584 | CODE | |
| LOW | electrum/lnhtlc.py | 215 | CODE | |
| LOW | electrum/payment_identifier.py | 194 | CODE | |
| LOW | electrum/payment_identifier.py | 218 | CODE | |
| LOW | electrum/payment_identifier.py | 317 | CODE | |
| LOW | electrum/payment_identifier.py | 536 | CODE | |
| LOW | electrum/address_synchronizer.py | 281 | CODE | |
| 174 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | tests/test_lnpeer.py | 2366 | for hint in w.network.path_finder.liquidity_hints._liquidity_hints.values(): | CODE |
| CRITICAL⚡ | tests/test_lnpeer.py | 2373 | for hint in w.network.path_finder.liquidity_hints._liquidity_hints.values(): | CODE |
| CRITICAL | electrum/wizard.py | 916 | if self._daemon.config.cv.NETWORK_AUTO_CONNECT.is_modifiable(): | CODE |
| CRITICAL | electrum/plugins/nwc/nwcserver.py | 602 | "pubkey": self.wallet.lnworker.node_keypair.pubkey.hex(), | CODE |
| CRITICAL⚡ | electrum/gui/qml/qeswaphelper.py | 643 | self._swap, invoice = await self._wallet.wallet.lnworker.swap_manager.request_normal_swap( | CODE |
| CRITICAL⚡ | electrum/gui/qml/qeswaphelper.py | 649 | tx = self._wallet.wallet.lnworker.swap_manager.create_funding_tx(self._swap, dummy_tx, password=self._wa | CODE |
| CRITICAL⚡ | electrum/gui/qml/qeswaphelper.py | 650 | coro2 = self._wallet.wallet.lnworker.swap_manager.wait_for_htlcs_and_broadcast( | CODE |
| CRITICAL | electrum/gui/qml/qeswaphelper.py | 666 | if self._wallet.wallet.lnworker.swap_manager.cancel_normal_swap(self._swap): | CODE |
| CRITICAL | electrum/gui/qml/qeswaphelper.py | 698 | max_swap_amount = self._wallet.wallet.lnworker.swap_manager.client_max_amount_forward_swap() | CODE |
| CRITICAL | electrum/gui/qml/qenetwork.py | 205 | return self.network.config.cv.NETWORK_AUTO_CONNECT.is_set() | CODE |
| CRITICAL | electrum/gui/qml/qefx.py | 78 | if not self.fx.config.cv.FX_HISTORY_RATES.is_set(): | CODE |
| CRITICAL | electrum/gui/qml/qewallet.py | 427 | return self.wallet.lnworker.node_keypair.pubkey.hex() if self.wallet.lnworker else '' | CODE |
| CRITICAL | electrum/gui/qml/qechanneldetails.py | 99 | return self._wallet.wallet.lnworker.lnpeermgr.get_node_alias(self._channel.node_id) or '' | CODE |
| CRITICAL | electrum/gui/qt/history_list.py | 191 | # and self.parent.wallet.invoices.paid.get(tx_hash): | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_verifier.py | 61 | # | COMMENT |
| LOW | tests/test_verifier.py | 81 | # __________/ \________________ | COMMENT |
| LOW | tests/test_lnchannel.py | 1 | # Copyright (C) 2018 The Electrum developers | COMMENT |
| LOW | contrib/ban_unicode.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | contrib/release.sh | 1 | #!/bin/bash | COMMENT |
| LOW | contrib/release.sh | 21 | # Note: steps before doing a new release: | COMMENT |
| LOW | contrib/make_libsecp256k1.sh | 1 | #!/bin/bash | COMMENT |
| LOW | contrib/osx/make_osx.sh | 61 | # don't add debug info to compiled C files (e.g. when pip calls setuptools/wheel calls gcc) | COMMENT |
| LOW | contrib/requirements/requirements-build-base.txt | 1 | # This file contains build-time dependencies needed to build other higher level build-time dependencies | COMMENT |
| LOW | contrib/android/make_apk.sh | 41 | # FIXME: changing "APP_PACKAGE_NAME" seems to require a clean rebuild of ".buildozer/". | COMMENT |
| LOW | electrum/descriptor.py | 1 | # Copyright (c) 2017 Andrew Chow | COMMENT |
| LOW | electrum/logging.py | 241 | super()._log(level, msg, *args, **kwargs) | COMMENT |
| LOW | electrum/pem.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/lnverifier.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | electrum/lnutil.py | 681 | COMMENT | |
| LOW | electrum/contacts.py | 1 | # Electrum - Lightweight Bitcoin Client | COMMENT |
| LOW | electrum/onion_message.py | 1 | # Electrum - Lightweight Bitcoin Client | COMMENT |
| LOW | electrum/x509.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/lnchannel.py | 1 | # Copyright (C) 2018 The Electrum developers | COMMENT |
| LOW | electrum/lnchannel.py | 1541 | for direction, htlc in itertools.chain( | COMMENT |
| LOW | electrum/lnchannel.py | 1561 | # local/remote "revocation": | COMMENT |
| LOW | electrum/old_mnemonic.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/util.py | 1 | # Electrum - lightweight Bitcoin client | COMMENT |
| LOW | electrum/util.py | 1461 | await super().join() | COMMENT |
| LOW | electrum/channel_db.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | electrum/bitcoin.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | electrum/transaction.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/constants.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | electrum/interface.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/interface.py | 281 | force_after = 1 # seconds | COMMENT |
| LOW | electrum/json_db.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/lnrouter.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | electrum/lnonion.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | electrum/address_synchronizer.py | 1 | # Electrum - lightweight Bitcoin client | COMMENT |
| LOW | electrum/base_crash_reporter.py | 1 | # Electrum - lightweight Bitcoin client | COMMENT |
| LOW | electrum/crypto.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | electrum/segwit_addr.py | 1 | COMMENT | |
| LOW | electrum/lrucache.py | 1 | # The MIT License (MIT) | COMMENT |
| LOW | electrum/mnemonic.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/stored_dict.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/harden_memory_linux.py | 1 | # Copyright (C) 2020 cptpcrd | COMMENT |
| LOW | electrum/slip39.py | 1 | # Copyright (c) 2018 Andrew R. Kozlik | COMMENT |
| LOW | electrum/lnworker.py | 361 | with self.lock: | COMMENT |
| LOW | electrum/lnworker.py | 1081 | # Note: it might not be safe to release the preimage shortly before expiry as this would allow the | COMMENT |
| LOW | electrum/lnworker.py | 3021 | COMMENT | |
| LOW | electrum/lnworker.py | 4101 | # => forwarding_callback() could have an API with two exceptions types: | COMMENT |
| LOW | electrum/storage.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/network.py | 1 | # Electrum - Lightweight Bitcoin Client | COMMENT |
| LOW | electrum/bolt11.py | 521 | # - MUST skip over `f` fields that use an unknown `version`. | COMMENT |
| LOW | electrum/plugin.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/i18n.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/i18n.py | 81 | return translation | COMMENT |
| LOW | electrum/blockchain.py | 1 | # Electrum - lightweight Bitcoin client | COMMENT |
| LOW | electrum/synchronizer.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/zip_importer.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/submarine_swaps.py | 61 | from aiohttp_socks import ProxyConnector | COMMENT |
| LOW | electrum/submarine_swaps.py | 601 | if funding_utxo.value_sats() < swap.onchain_amount: | COMMENT |
| LOW | electrum/lnpeer.py | 781 | # query_channel_range. <<< first_block 497000, num_blocks 79038 | COMMENT |
| LOW | electrum/lnpeer.py | 3161 | if int(time.time()) - first_htlc_timestamp > self.lnworker.MPP_EXPIRY \ | COMMENT |
| LOW | electrum/txbatcher.py | 1 | # This class batches outgoing payments and incoming utxo sweeps. | COMMENT |
| 90 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_lnchannel.py | 104 | # Create a test channel which will be used for the duration of this | COMMENT |
| MEDIUM | electrum/lnchannel.py | 2021 | # This method is used both in the GUI, and in lnpeer.schedule_force_closing | COMMENT |
| MEDIUM | electrum/lnworker.py | 3437 | # This method is called when an invoice or request is deleted by the user. | COMMENT |
| MEDIUM | electrum/lnwatcher.py | 218 | """This function is called when a channel was closed. In this case | STRING |
| MEDIUM | electrum/txbatcher.py | 12 | # The following code prevents that by making tx2 a child of tx1. | COMMENT |
| MEDIUM | electrum/wallet.py | 4188 | """This method is not called in the code, it is kept for console use""" | STRING |
| MEDIUM | electrum/_vendor/pyperclip/__init__.py | 463 | # This function is heavily based on | COMMENT |
| MEDIUM⚡ | electrum/plugins/timelock_recovery/qt.py | 126 | # Create an HBox layout. The logo will be on the left and the rest of the dialog on the right. | COMMENT |
| MEDIUM⚡ | electrum/plugins/timelock_recovery/qt.py | 129 | # Create the logo label. | COMMENT |
| MEDIUM⚡ | electrum/plugins/timelock_recovery/qt.py | 138 | # Create a VBox layout for the main contents of the dialog. | COMMENT |
| MEDIUM⚡ | electrum/plugins/timelock_recovery/qt.py | 527 | # Create an HBox layout. The logo will be on the left and the rest of the dialog on the right. | COMMENT |
| MEDIUM⚡ | electrum/plugins/timelock_recovery/qt.py | 530 | # Create the logo label | COMMENT |
| MEDIUM⚡ | electrum/plugins/timelock_recovery/qt.py | 535 | # Create a VBox layout for the main contents | COMMENT |
| MEDIUM | electrum/plugins/timelock_recovery/qt.py | 404 | # Create an HBox layout. The logo will be on the left and the rest of the dialog on the right. | COMMENT |
| MEDIUM | electrum/plugins/timelock_recovery/qt.py | 418 | # Create a VBox layout for the main contents of the dialog. | COMMENT |
| MEDIUM | electrum/plugins/keepkey/keepkey.py | 422 | # This function is called from the TREZOR libraries (via tx_api) | COMMENT |
| MEDIUM | electrum/plugins/nwc/qt.py | 82 | # Create the logo label. | COMMENT |
| MEDIUM⚡ | electrum/plugins/revealer/qt.py | 340 | # Create an HBox layout. The logo will be on the left and the rest of the dialog on the right. | COMMENT |
| MEDIUM⚡ | electrum/plugins/revealer/qt.py | 343 | # Create the logo label. | COMMENT |
| MEDIUM⚡ | electrum/plugins/revealer/qt.py | 352 | # Create a VBox layout for the main contents of the dialog. | COMMENT |
| MEDIUM⚡ | electrum/plugins/revealer/qt.py | 360 | # Create the labels. | COMMENT |
| MEDIUM | electrum/plugins/revealer/qt.py | 139 | # Create an HBox layout. The logo will be on the left and the rest of the dialog on the right. | COMMENT |
| MEDIUM | electrum/plugins/revealer/qt.py | 142 | # Create the logo label. | COMMENT |
| MEDIUM | electrum/plugins/revealer/qt.py | 154 | # Create a VBox layout for the main contents of the dialog. | COMMENT |
| MEDIUM | electrum/plugins/revealer/qt.py | 165 | # Create the labels. | COMMENT |
| MEDIUM | electrum/plugins/revealer/qt.py | 176 | # Create the buttons. | COMMENT |
| MEDIUM | electrum/plugins/revealer/qt.py | 192 | # Define the create noise file function. | COMMENT |
| MEDIUM | electrum/plugins/revealer/qt.py | 202 | # Create the noise scan QR text edit. | COMMENT |
| MEDIUM | electrum/plugins/revealer/qt.py | 383 | # Create the buttons. | COMMENT |
| MEDIUM | electrum/plugins/revealer/qt.py | 405 | # Create the custom secret scan QR text edit. | COMMENT |
| MEDIUM | electrum/plugins/safe_t/safe_t.py | 395 | # This function is called from the TREZOR libraries (via tx_api) | COMMENT |
| MEDIUM | electrum/hw_wallet/trezor_qt_pinmatrix.py | 3 | # This file is part of the Trezor project. | COMMENT |
| MEDIUM | electrum/gui/common_qt/util.py | 124 | # Create a QImage to draw on | COMMENT |
| MEDIUM | electrum/gui/common_qt/util.py | 130 | # Create the image with appropriate size | COMMENT |
| MEDIUM | electrum/gui/qt/qrreader/qtmultimedia/camera_dialog.py | 116 | # Create a layout for the controls | COMMENT |
| MEDIUM | electrum/gui/qt/qrreader/qtmultimedia/camera_dialog.py | 134 | # Create the video surface and receive events when new frames arrive | COMMENT |
| MEDIUM | electrum/gui/qt/qrreader/qtmultimedia/camera_dialog.py | 138 | # Create the crop blur effect | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | electrum/lnchannel.py | 959 | def set_remote_update(self, payload: dict) -> None: | CODE |
| LOW | electrum/lnchannel.py | 192 | def set_short_channel_id(self, short_id: ShortChannelID) -> None: | CODE |
| LOW | electrum/lnchannel.py | 208 | def set_state(self, state: ChannelState, *, force: bool = False) -> None: | CODE |
| LOW | electrum/lnchannel.py | 355 | def update_unfunded_state(self) -> None: | CODE |
| LOW | electrum/lnchannel.py | 408 | def update_funded_state(self, *, funding_txid: str, funding_height: TxMinedInfo) -> None: | CODE |
| LOW | electrum/lnchannel.py | 1153 | def set_can_send_ctx_updates(self, b: bool) -> None: | CODE |
| LOW | electrum/lnchannel.py | 1177 | def set_frozen_for_sending(self, b: bool) -> None: | CODE |
| LOW | electrum/lnchannel.py | 1184 | def set_frozen_for_receiving(self, b: bool) -> None: | CODE |
| LOW | electrum/lnchannel.py | 1875 | def update_fee(self, feerate: int, from_us: bool) -> None: | CODE |
| LOW | electrum/channel_db.py | 900 | def _update_num_policies_for_chan(self, short_channel_id: ShortChannelID) -> None: | CODE |
| LOW⚡ | electrum/transaction.py | 366 | def set_mined_info(self, info: TxMinedInfo) -> None: | CODE |
| LOW | electrum/transaction.py | 2490 | def set_rbf(self, rbf: bool) -> None: | CODE |
| LOW | electrum/transaction.py | 2583 | def update_signatures(self, signatures: Sequence[Union[bytes, None]]) -> None: | CODE |
| LOW | electrum/constants.py | 94 | def set_as_network(cls) -> None: | CODE |
| LOW | electrum/lnrouter.py | 279 | def update_can_send(self, is_forward_direction: bool, *, amount_msat: int) -> None: | CODE |
| LOW | electrum/lnrouter.py | 285 | def update_cannot_send(self, is_forward_direction: bool, *, amount_msat: int) -> None: | CODE |
| LOW | electrum/lnrouter.py | 342 | def update_can_send(self, node_from: bytes, node_to: bytes, channel_id: ShortChannelID, *, amount_msat: int) -> None | CODE |
| LOW | electrum/lnrouter.py | 347 | def update_cannot_send(self, node_from: bytes, node_to: bytes, channel_id: ShortChannelID, *, amount_msat: int) -> N | CODE |
| LOW | electrum/lnrouter.py | 495 | def update_num_inflight_htlcs(self, route: LNPaymentRoute, *, add_htlcs: bool) -> None: | CODE |
| LOW | electrum/lnhtlc.py | 64 | def _set_revack_pending(self, sub: HTLCOwner, pending: bool) -> None: | CODE |
| LOW | electrum/lnhtlc.py | 215 | def _update_maybe_active_htlc_ids(self) -> None: | CODE |
| LOW | electrum/address_synchronizer.py | 714 | def _update_stored_local_height(self) -> None: | CODE |
| LOW | electrum/simple_config.py | 242 | def set_chain_config_opt_based_on_android_packagename(cls, config_options: dict[str, Any]) -> None: | CODE |
| LOW | electrum/simple_config.py | 282 | def set_key(self, key: Union[str, ConfigVar, ConfigVarWithConfig], value, *, save=True) -> None: | CODE |
| LOW | electrum/simple_config.py | 303 | def _set_key_in_user_config(self, key: str, value, *, save=True) -> None: | CODE |
| LOW | electrum/stored_dict.py | 129 | def set_parent(self, *, key: _FLEX_KEY, parent: Optional['BaseStoredObject']) -> None: | CODE |
| LOW | electrum/harden_memory_linux.py | 60 | def set_dumpable(flag: bool) -> None: | CODE |
| LOW | electrum/harden_memory_linux.py | 75 | def set_dumpable_safe(flag: bool) -> None: | CODE |
| LOW⚡ | electrum/lnworker.py | 3236 | def _set_sent_payment_succeeded(self, payment_hash: bytes) -> None: | CODE |
| LOW⚡ | electrum/lnworker.py | 3243 | def _set_sent_payment_failed(self, payment_hash: bytes) -> None: | CODE |
| LOW | electrum/lnworker.py | 3185 | def set_invoice_status(self, key: str, status: int) -> None: | CODE |
| LOW | electrum/lnworker.py | 3197 | def set_request_status(self, payment_hash: bytes, status: int) -> None: | CODE |
| LOW | electrum/lnworker.py | 3207 | def set_payment_status(self, payment_hash: bytes, status: int, *, direction: lnutil.Direction) -> None: | CODE |
| LOW | electrum/network.py | 714 | def _set_default_server(self) -> None: | CODE |
| LOW | electrum/network.py | 821 | def set_server_bookmark(self, server: ServerAddr, *, add: bool) -> None: | CODE |
| LOW | electrum/i18n.py | 116 | def set_language(x: Optional[str]) -> None: | CODE |
| LOW | electrum/blockchain.py | 363 | def update_size(self) -> None: | CODE |
| LOW | electrum/exchange_rate.py | 82 | async def update_spot_rates_safe(self, ccy: str) -> None: | CODE |
| LOW | electrum/exchange_rate.py | 187 | async def _update_historical_rates(self, ccy: str, cache_dir: str) -> None: | CODE |
| LOW | electrum/exchange_rate.py | 683 | def set_enabled(self, b: bool) -> None: | CODE |
| LOW | electrum/invoices.py | 188 | def set_amount_msat(self, amount_msat: Union[int, str]) -> None: | CODE |
| LOW | electrum/submarine_swaps.py | 501 | async def set_nostr_proof_of_work(self) -> None: | CODE |
| LOW⚡ | electrum/lnpeer.py | 492 | def set_gossip_timestamp_filter(self, payload: dict) -> None: | CODE |
| LOW | electrum/txbatcher.py | 210 | def set_password_future(self, password: Optional[str]) -> None: | CODE |
| LOW | electrum/keystore.py | 250 | def update_password(self, old_password, new_password) -> None: | CODE |
| LOW | electrum/keystore.py | 938 | def set_label(self, label: Optional[str]) -> None: | CODE |
| LOW | electrum/daemon.py | 772 | def update_recently_opened_wallets(self, wallet_path, *, remove: bool = False) -> None: | CODE |
| LOW⚡ | electrum/wallet_db.py | 1839 | def set_spent_outpoint(self, prevout_hash: str, prevout_n: Union[int, str], tx_hash: str) -> None: | CODE |
| LOW | electrum/wallet_db.py | 1918 | def set_addr_history(self, addr: str, hist) -> None: | CODE |
| LOW⚡ | electrum/wallet.py | 1402 | def _update_onchain_invoice_paid_detection(self, invoice_keys: Iterable[str]) -> None: | CODE |
| LOW⚡ | electrum/wallet.py | 2317 | def set_reserved_addresses_for_chan(self, chan: 'AbstractChannel', *, reserved: bool) -> None: | CODE |
| LOW | electrum/wallet.py | 766 | def _set_label(self, key: str, value: Optional[str]) -> None: | CODE |
| LOW | electrum/wallet.py | 2304 | def set_reserved_state_of_address(self, addr: str, *, reserved: bool) -> None: | CODE |
| LOW | electrum/wallet.py | 3043 | def _update_invoices_and_reqs_touched_by_tx(self, tx: Transaction) -> None: | CODE |
| LOW | electrum/wallet.py | 3272 | def _update_password_for_keystore(self, old_pw: Optional[str], new_pw: Optional[str]) -> None: | CODE |
| LOW | electrum/wallet.py | 3444 | def _update_keystore(self, keystore: KeyStore) -> None: | CODE |
| LOW | electrum/_vendor/pyperclip/__init__.py | 745 | __all__ = ['copy', 'paste', 'waitForPaste', 'waitForNewPaste', 'set_clipboard', 'determine_clipboard'] | CODE |
| LOW | electrum/plugins/nwc/nwcserver.py | 925 | def _update_budget_item_amount(self, client_pub: str, *, old_budget_item: list[int], new_msat: int) -> None: | CODE |
| LOW⚡ | electrum/plugins/bitbox02/bitbox02.py | 126 | def set_remote_static_pubkey(pubkey: bytes) -> None: | CODE |
| LOW | electrum/plugins/bitbox02/bitbox02.py | 142 | def set_noise_privkey(privkey: bytes) -> None: | CODE |
| 17 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | electrum/plugins/keepkey/clientbase.py | 0 | time out the client if the last operation was before cutoff. | STRING |
| HIGH | electrum/plugins/trezor/clientbase.py | 0 | time out the client if the last operation was before cutoff. | STRING |
| HIGH | electrum/plugins/safe_t/clientbase.py | 0 | time out the client if the last operation was before cutoff. | STRING |
| HIGH | electrum/plugins/keepkey/clientbase.py | 0 | clear the session to force pin (and passphrase if enabled) re-entry. does not leak exceptions. | STRING |
| HIGH | electrum/plugins/trezor/clientbase.py | 0 | clear the session to force pin (and passphrase if enabled) re-entry. does not leak exceptions. | STRING |
| HIGH | electrum/plugins/safe_t/clientbase.py | 0 | clear the session to force pin (and passphrase if enabled) re-entry. does not leak exceptions. | STRING |
| HIGH | electrum/plugins/keepkey/clientbase.py | 0 | called when our wallet was closed or the device removed. | STRING |
| HIGH | electrum/plugins/trezor/clientbase.py | 0 | called when our wallet was closed or the device removed. | STRING |
| HIGH | electrum/plugins/safe_t/clientbase.py | 0 | called when our wallet was closed or the device removed. | STRING |
| HIGH | electrum/plugins/keepkey/qt.py | 0 | this dialog doesn't require a device be paired with a wallet. we want users to be able to wipe a device even if they've | STRING |
| HIGH | electrum/plugins/trezor/qt.py | 0 | this dialog doesn't require a device be paired with a wallet. we want users to be able to wipe a device even if they've | STRING |
| HIGH | electrum/plugins/safe_t/qt.py | 0 | this dialog doesn't require a device be paired with a wallet. we want users to be able to wipe a device even if they've | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_verifier.py | 73 | # -------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_verifier.py | 91 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | electrum/ripemd.py | 5 | ## ========== | COMMENT |
| MEDIUM | electrum/plugins/digitalbitbox/digitalbitbox.py | 1 | # ---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | electrum/plugins/digitalbitbox/digitalbitbox.py | 58 | # ---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | electrum/plugins/digitalbitbox/digitalbitbox.py | 456 | # ---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | electrum/plugins/jade/jadepy/jade.py | 83 | # ---------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | contrib/ban_unicode.py | 12 | # the most robust and generic fix seems to be to just ban all unicode usage. | COMMENT |
| LOW | electrum/lnutil.py | 797 | max_mask_len = 64 # TODO just use RevocationStore.NUM_BITS + 1 ? | CODE |
| LOW | electrum/onion_message.py | 89 | # dummy hops could be inserted anywhere in the path, but for compatibility just add them at the end | COMMENT |
| LOW | electrum/lnonion.py | 662 | # TODO maybe we should rm this and just use OnionWireSerializer and onion_wire.csv | COMMENT |
| LOW | electrum/simple_config.py | 615 | if name in ("from_key", ): # don't apply magic, just use standard lookup | CODE |
| LOW | electrum/submarine_swaps.py | 1589 | # note: there is no csv in the script, we just set this so that txbatcher waits for one confirmation. | COMMENT |
| LOW | electrum/wallet.py | 211 | # if no network or not up to date, just set locktime to zero | COMMENT |
| MEDIUM | electrum/gui/messages.py | 39 | """Electrum uses static channel backups. If you lose your wallet file, you will need to request your channel to be force | STRING |
| MEDIUM | electrum/gui/qml/qeswaphelper.py | 619 | # add more nuanced error reporting? | COMMENT |
| LOW | electrum/gui/qml/qewallet.py | 194 | # and even then, we can probably just add the payment instead | COMMENT |
| LOW | electrum/gui/qml/qetransactionlistmodel.py | 152 | # FIXME just use wallet.get_tx_status, and change that as needed | COMMENT |
| LOW | electrum/gui/qt/amountedit.py | 140 | # if the max precision is simply what unit conversion allows, just return | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_lnpeer.py | 2560 | CODE | |
| LOW | tests/test_wallet_vertical.py | 104 | CODE | |
| LOW | tests/test_coinchooser.py | 34 | CODE | |
| LOW | electrum/lnchannel.py | 2006 | CODE | |
| LOW | electrum/transaction.py | 2171 | CODE | |
| LOW | electrum/payment_identifier.py | 46 | CODE | |
| LOW | electrum/base_crash_reporter.py | 128 | CODE | |
| LOW | electrum/crypto.py | 337 | CODE | |
| LOW | electrum/submarine_swaps.py | 1656 | CODE | |
| LOW | electrum/lnurl.py | 175 | CODE | |
| LOW | electrum/commands.py | 268 | CODE | |
| LOW | electrum/commands.py | 967 | CODE | |
| LOW | electrum/commands.py | 999 | CODE | |
| LOW | electrum/commands.py | 1218 | CODE | |
| LOW | electrum/commands.py | 1478 | CODE | |
| LOW | electrum/commands.py | 1502 | CODE | |
| LOW | electrum/commands.py | 1526 | CODE | |
| LOW | electrum/commands.py | 1770 | CODE | |
| LOW | electrum/daemon.py | 398 | CODE | |
| LOW | electrum/wallet.py | 2003 | CODE | |
| LOW | electrum/wallet.py | 3157 | CODE | |
| LOW | electrum/plugins/swapserver/__init__.py | 73 | CODE | |
| LOW | electrum/gui/qml/qeapp.py | 199 | CODE | |
| LOW | electrum/gui/qt/seed_dialog.py | 80 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | electrum/plugins/labels/qml.py | 109 | self.push(_wallet) | CODE |
| HIGH | electrum/gui/qml/qetypes.py | 41 | self._logger.warning('amount_sat is undefined, returning 0') | CODE |
| HIGH | electrum/gui/qml/qetypes.py | 54 | self._logger.warning('amount_msat is undefined, returning 0') | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | electrum/lnworker.py | 456 | CODE | |
| MEDIUM | electrum/lnworker.py | 457 | CODE | |
| MEDIUM | electrum/lnworker.py | 458 | CODE | |
| MEDIUM | electrum/lnworker.py | 460 | CODE | |
| MEDIUM | electrum/lnworker.py | 465 | CODE | |
| MEDIUM | electrum/gui/text.py | 202 | CODE | |
| MEDIUM | electrum/gui/text.py | 203 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | electrum/logging.py | 113 | # Check if captured log lines were never to dumped to e.g. stderr, | COMMENT |
| LOW | electrum/plugin.py | 582 | # Read the file and compare the hash to expectation | COMMENT |
| LOW | electrum/dnssec.py | 100 | # Check if there is a valid signature for the root dnskey | COMMENT |
| LOW | electrum/gui/qml/qewallet.py | 883 | # Check if we had enough funds excluding fees, | COMMENT |
| LOW | electrum/gui/qt/send_tab.py | 263 | # Check if we had enough funds excluding fees, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/toyserver/toyserver.py | 469 | async def handle_request(self, request): | CODE |
| LOW | electrum/interface.py | 183 | async def handle_request(self, request): | CODE |
| LOW | electrum/gui/qt/util.py | 99 | def run_task(self): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | electrum/simple_config.py | 185 | # The following two functions are there for dependency injection when | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | electrum/scripts/quick_start.py | 33 | # you can use ~CLI commands by accessing command_runner | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | electrum/lnurl.py | 251 | # TODO: implement LUD-09 (https://github.com/lnurl/luds/blob/luds/09.md), e.g. useful for paying offline devices | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_lnpeer.py | 499 | a_chan, b_chan = await f(last_rev_secret=sha256("fake_data"), **kwargs) | CODE |