Electrum Bitcoin Wallet
This report presents the forensic synthetic code analysis of spesmilo/electrum, a Python project with 8,510 GitHub stars. SynthScan v2.0 examined 182,994 lines of code across 519 source files, recording 2974 pattern matches distributed across 20 syntactic categories. The overall adjusted score of 17.1 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 2974 distinct pattern matches across 20 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| 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 | 475 | def my_on_onion_message_received_unsolicited(*args, **kwargs): | CODE |
| LOW | tests/test_onion_message.py | 494 | async def test_get_blinded_paths_to_me_payment(self): | CODE |
| LOW | tests/test_onion_message.py | 532 | async def test_create_route_to_introduction_point(self): | CODE |
| LOW | tests/test_wizard.py | 158 | def _create_xpub_keystore_wallet(self, *, wallet_type: str = 'standard', xpub): | CODE |
| LOW | tests/test_wizard.py | 173 | def _sanity_checks_after_disabling_keystore( | CODE |
| LOW | tests/test_wizard.py | 215 | async def test_haveseed_ext_electrum(self): | CODE |
| LOW | tests/test_wizard.py | 246 | async def test_haveseed_electrum__mismatching_seed(self): | CODE |
| LOW | tests/test_wizard.py | 265 | async def test_haveseed_electrum_oldseed(self): | CODE |
| LOW | tests/test_wizard.py | 457 | def _set_password_and_check_address( | CODE |
| LOW | tests/test_wizard.py | 484 | async def test_set_password_and_encrypt_file(self): | CODE |
| LOW | tests/test_wizard.py | 506 | async def test_set_password_but_dont_encrypt_file(self): | CODE |
| LOW | tests/test_wizard.py | 528 | async def test_create_standard_wallet_createseed(self): | CODE |
| LOW | tests/test_wizard.py | 547 | async def test_create_standard_wallet_createseed_passphrase(self): | CODE |
| LOW | tests/test_wizard.py | 573 | async def test_create_standard_wallet_haveseed_electrum_oldseed(self): | CODE |
| LOW | tests/test_wizard.py | 592 | async def test_create_standard_wallet_haveseed_electrum_oldseed_in_hex_format(self): | CODE |
| LOW | tests/test_wizard.py | 611 | async def test_create_standard_wallet_haveseed_electrum_oldseed_passphrase(self): | CODE |
| LOW | tests/test_wizard.py | 635 | async def test_create_standard_wallet_haveseed_electrum(self): | CODE |
| LOW | tests/test_wizard.py | 649 | async def test_create_standard_wallet_haveseed_electrum_passphrase(self): | CODE |
| LOW | tests/test_wizard.py | 667 | async def test_create_standard_wallet_have_master_key(self): | CODE |
| LOW | tests/test_wizard.py | 898 | async def test_create_standard_wallet_trezor(self): | CODE |
| LOW | tests/test_wizard.py | 1115 | async def test_create_imported_wallet_from_addresses(self): | CODE |
| LOW | tests/test_wizard.py | 1139 | async def test_create_imported_wallet_from_addresses__invalid_input(self): | CODE |
| LOW | tests/test_wizard.py | 1155 | async def test_create_imported_wallet_from_wif_keys(self): | CODE |
| LOW⚡ | tests/regtest.py | 64 | def test_backup_local_forceclose(self): | CODE |
| LOW⚡ | tests/regtest.py | 73 | def test_redeem_received_htlcs(self): | CODE |
| LOW⚡ | tests/regtest.py | 76 | def test_redeem_offered_htlcs(self): | CODE |
| LOW⚡ | tests/regtest.py | 79 | def test_breach_with_unspent_htlc(self): | CODE |
| LOW⚡ | tests/regtest.py | 82 | def test_breach_with_spent_htlc(self): | CODE |
| LOW⚡ | tests/regtest.py | 85 | def test_lnwatcher_waits_until_fees_go_down(self): | CODE |
| LOW⚡ | tests/regtest.py | 104 | def test_swapserver_success_forward(self): | CODE |
| LOW⚡ | tests/regtest.py | 107 | def test_swapserver_success_reverse(self): | CODE |
| LOW⚡ | tests/regtest.py | 110 | def test_swapserver_forceclose(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 105 | def test_tx_update_signatures(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 114 | def test_tx_setting_locktime_invalidates_ser_cache(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 120 | def test_tx_setting_version_invalidates_ser_cache(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 126 | def test_tx_deserialize_for_signed_network_tx(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 1075 | def test_check_sighash_types_sighash_all(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 1083 | def test_check_sighash_types_sighash_none(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 1091 | def test_check_sighash_types_sighash_single(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 1100 | def test_check_sighash_types_sighash_all_anyonecanpay(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 1109 | def test_check_sighash_types_sighash_none_anyonecanpay(self): | CODE |
| LOW⚡ | tests/test_transaction.py | 1117 | def test_check_sighash_types_sighash_single_anyonecanpay(self): | CODE |
| LOW | tests/test_transaction.py | 87 | def test_match_against_script_template(self): | CODE |
| LOW | tests/test_transaction.py | 153 | def test_estimated_output_size(self): | CODE |
| LOW | tests/test_transaction.py | 174 | def test_convert_raw_tx_to_hex(self): | CODE |
| LOW | tests/test_transaction.py | 182 | def test_get_address_from_output_script(self): | CODE |
| LOW | tests/test_transaction.py | 215 | def test_tx_serialize_methods_for_psbt(self): | CODE |
| LOW | tests/test_transaction.py | 227 | def test_tx_serialize_methods_for_network_tx(self): | CODE |
| LOW | tests/test_transaction.py | 236 | def test_tx_serialize_methods_for_psbt_that_is_ready_to_be_finalized(self): | CODE |
| LOW | tests/test_transaction.py | 394 | def test_txid_negative_version_num(self): | CODE |
| LOW | tests/test_transaction.py | 405 | def test_txid_invalid_op_return(self): | CODE |
| LOW | tests/test_transaction.py | 1128 | def test_taproot_keypath_spending(self): | CODE |
| 1153 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 | 6 | CODE | |
| LOW | tests/test_lnwallet.py | 9 | 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 | 12 | CODE | |
| LOW | tests/test_storage_upgrade.py | 13 | CODE | |
| LOW | tests/test_storage_upgrade.py | 15 | CODE | |
| LOW | tests/test_lnrouter.py | 4 | CODE | |
| LOW | tests/test_lnrouter.py | 8 | CODE | |
| LOW | tests/test_lnrouter.py | 17 | CODE | |
| LOW | tests/test_bolt11.py | 5 | CODE | |
| LOW | tests/test_bolt11.py | 10 | CODE | |
| LOW | tests/test_bolt11.py | 12 | CODE | |
| LOW | tests/test_lnpeer.py | 3 | CODE | |
| LOW | tests/test_lnpeer.py | 5 | CODE | |
| LOW | tests/test_lnpeer.py | 8 | CODE | |
| LOW | tests/test_lnpeer.py | 9 | CODE | |
| LOW | tests/test_lnpeer.py | 11 | CODE | |
| LOW | tests/test_lnpeer.py | 12 | CODE | |
| LOW | tests/test_lnpeer.py | 13 | CODE | |
| LOW | tests/test_lnpeer.py | 15 | CODE | |
| LOW | tests/test_lnpeer.py | 15 | CODE | |
| LOW | tests/test_lnpeer.py | 15 | CODE | |
| LOW | tests/test_lnpeer.py | 15 | CODE | |
| LOW | tests/test_lnpeer.py | 20 | CODE | |
| LOW | tests/test_lnpeer.py | 20 | CODE | |
| LOW | tests/test_lnpeer.py | 21 | CODE | |
| LOW | tests/test_lnpeer.py | 28 | CODE | |
| LOW | tests/test_lnpeer.py | 29 | CODE | |
| LOW | tests/test_lnpeer.py | 30 | CODE | |
| LOW | tests/test_lnpeer.py | 30 | CODE | |
| LOW | tests/test_lnpeer.py | 31 | CODE | |
| LOW | tests/test_lnpeer.py | 34 | CODE | |
| LOW | tests/test_lnpeer.py | 35 | CODE | |
| LOW | tests/test_lnpeer.py | 35 | CODE | |
| LOW | tests/test_lnpeer.py | 35 | CODE | |
| LOW | tests/test_lnpeer.py | 39 | 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 | 53 | CODE | |
| LOW | tests/test_lnpeer.py | 53 | CODE | |
| LOW | tests/test_lnpeer.py | 55 | CODE | |
| LOW | tests/test_lnpeer.py | 55 | CODE | |
| LOW | tests/test_lnpeer.py | 57 | CODE | |
| 706 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_lnutil.py | 483 | except Exception as e: | CODE |
| LOW | tests/test_lnutil.py | 505 | except Exception as e: | CODE |
| LOW | tests/test_jsondb.py | 32 | except Exception as e: | CODE |
| LOW | tests/qml/qt_util.py | 52 | except Exception as e: | CODE |
| LOW | tests/qml/qt_util.py | 94 | except Exception as e: | CODE |
| MEDIUM | tests/qml/qt_util.py | 45 | def start_qt_task(): | 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 | 295 | except Exception as e: | CODE |
| LOW | electrum/logging.py | 362 | 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 | 281 | except Exception as e: | CODE |
| LOW | electrum/onion_message.py | 796 | except Exception as e: | CODE |
| LOW | electrum/x509.py | 320 | except Exception as e: | CODE |
| MEDIUM | electrum/util.py | 439 | def json_encode(obj): | CODE |
| MEDIUM | electrum/util.py | 1128 | def run_with_except_hook(*args2, **kwargs2): | CODE |
| MEDIUM | electrum/util.py | 1148 | def read_json_file(path): | CODE |
| LOW | electrum/util.py | 389 | except Exception as e: | CODE |
| LOW | electrum/util.py | 450 | except Exception: | CODE |
| LOW | electrum/util.py | 558 | except Exception as e: | CODE |
| LOW | electrum/util.py | 637 | except Exception: | CODE |
| LOW | electrum/util.py | 730 | except Exception: | CODE |
| LOW | electrum/util.py | 744 | except Exception: | CODE |
| LOW | electrum/util.py | 1108 | except Exception: | CODE |
| LOW | electrum/util.py | 1131 | except Exception: | CODE |
| LOW | electrum/util.py | 1239 | except Exception as e: | CODE |
| LOW | electrum/util.py | 1558 | except Exception as e: | CODE |
| LOW | electrum/util.py | 1718 | except Exception as e: | CODE |
| LOW | electrum/util.py | 2320 | 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 | 659 | except Exception as e: | CODE |
| LOW⚡ | electrum/bitcoin.py | 708 | except Exception as e: | CODE |
| LOW⚡ | electrum/bitcoin.py | 717 | except Exception as e: | CODE |
| LOW⚡ | electrum/bitcoin.py | 727 | except Exception as e: | CODE |
| LOW | electrum/bitcoin.py | 892 | except Exception as e: | CODE |
| MEDIUM | electrum/transaction.py | 637 | def read_compact_size(self): | CODE |
| MEDIUM | electrum/transaction.py | 1471 | def get_fee(self) -> Optional[int]: | CODE |
| LOW⚡ | electrum/transaction.py | 1303 | except Exception as e: | CODE |
| LOW⚡ | electrum/transaction.py | 1500 | except Exception: | CODE |
| LOW⚡ | electrum/transaction.py | 1505 | except Exception: | CODE |
| LOW⚡ | electrum/transaction.py | 1511 | except Exception: | CODE |
| LOW | electrum/transaction.py | 672 | except Exception as e: | CODE |
| LOW | electrum/transaction.py | 1548 | except Exception as e: | CODE |
| LOW | electrum/constants.py | 41 | except Exception: | CODE |
| LOW | electrum/qrscanner.py | 98 | except Exception: | CODE |
| MEDIUM | electrum/interface.py | 330 | def create_connection(self): | CODE |
| MEDIUM | electrum/interface.py | 731 | def run(self): | CODE |
| LOW | electrum/interface.py | 150 | except Exception: | CODE |
| LOW | electrum/interface.py | 191 | except Exception as e: | CODE |
| LOW | electrum/interface.py | 467 | except Exception as e: | CODE |
| LOW | electrum/interface.py | 670 | except Exception as e: | CODE |
| LOW | electrum/interface.py | 1385 | except Exception as e: | CODE |
| LOW | electrum/json_db.py | 124 | except Exception: | CODE |
| LOW⚡ | electrum/json_db.py | 147 | except Exception as e: | CODE |
| LOW⚡ | electrum/json_db.py | 154 | except Exception: | CODE |
| 371 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_transaction.py | 250 | CODE | |
| LOW | tests/test_wallet_vertical.py | 3428 | CODE | |
| LOW | tests/test_lnutil.py | 91 | CODE | |
| LOW | tests/test_lnutil.py | 813 | CODE | |
| LOW | tests/lnhelpers.py | 235 | CODE | |
| LOW | tests/qml/qt_util.py | 64 | CODE | |
| LOW | tests/qml/qt_util.py | 66 | CODE | |
| LOW | tests/toyserver/toyserver.py | 204 | CODE | |
| LOW | contrib/android/apkdiff.py | 47 | CODE | |
| LOW | electrum/descriptor.py | 864 | CODE | |
| LOW | electrum/descriptor.py | 921 | CODE | |
| LOW | electrum/descriptor.py | 1037 | CODE | |
| LOW | electrum/descriptor.py | 444 | CODE | |
| LOW | electrum/mpp_split.py | 114 | CODE | |
| LOW | electrum/logging.py | 86 | CODE | |
| LOW | electrum/lnsweep.py | 519 | CODE | |
| LOW | electrum/lnutil.py | 982 | CODE | |
| LOW | electrum/lnutil.py | 1576 | CODE | |
| LOW | electrum/version.py | 13 | CODE | |
| LOW | electrum/onion_message.py | 264 | CODE | |
| LOW | electrum/onion_message.py | 410 | CODE | |
| LOW | electrum/x509.py | 187 | CODE | |
| LOW | electrum/lnchannel.py | 348 | CODE | |
| LOW | electrum/lnchannel.py | 403 | CODE | |
| LOW | electrum/util.py | 682 | CODE | |
| LOW | electrum/util.py | 929 | CODE | |
| LOW | electrum/util.py | 1783 | CODE | |
| LOW | electrum/util.py | 2052 | 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 | 299 | CODE | |
| LOW | electrum/bitcoin.py | 480 | CODE | |
| LOW | electrum/transaction.py | 681 | CODE | |
| LOW | electrum/transaction.py | 760 | CODE | |
| LOW | electrum/transaction.py | 497 | CODE | |
| LOW | electrum/transaction.py | 637 | CODE | |
| LOW | electrum/transaction.py | 651 | CODE | |
| LOW | electrum/transaction.py | 1053 | CODE | |
| LOW | electrum/transaction.py | 1747 | CODE | |
| LOW | electrum/transaction.py | 1787 | CODE | |
| LOW | electrum/transaction.py | 2145 | CODE | |
| LOW | electrum/transaction.py | 2228 | CODE | |
| LOW | electrum/transaction.py | 2550 | CODE | |
| LOW | electrum/qrscanner.py | 89 | CODE | |
| LOW | electrum/interface.py | 177 | CODE | |
| LOW | electrum/interface.py | 770 | CODE | |
| LOW | electrum/interface.py | 1137 | CODE | |
| LOW | electrum/lnrouter.py | 528 | CODE | |
| LOW | electrum/lnhtlc.py | 213 | CODE | |
| LOW | electrum/payment_identifier.py | 192 | CODE | |
| LOW | electrum/payment_identifier.py | 216 | CODE | |
| LOW | electrum/payment_identifier.py | 315 | CODE | |
| LOW | electrum/payment_identifier.py | 531 | CODE | |
| LOW | electrum/address_synchronizer.py | 282 | CODE | |
| LOW | electrum/address_synchronizer.py | 664 | CODE | |
| LOW | electrum/address_synchronizer.py | 713 | CODE | |
| LOW | electrum/address_synchronizer.py | 897 | CODE | |
| LOW | electrum/address_synchronizer.py | 963 | CODE | |
| 167 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | electrum/wizard.py | 886 | if self._daemon.config.cv.NETWORK_AUTO_CONNECT.is_modifiable(): | CODE |
| CRITICAL | electrum/plugins/nwc/nwcserver.py | 595 | "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 | self._wallet.wallet.lnworker.swap_manager.cancel_normal_swap(self._swap) | CODE |
| CRITICAL | electrum/gui/qml/qeswaphelper.py | 695 | 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 | 418 | 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/make_zbar.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 | COMMENT | |
| LOW | electrum/pem.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/lnverifier.py | 1 | # -*- coding: utf-8 -*- | 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/old_mnemonic.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/util.py | 1 | # Electrum - lightweight Bitcoin client | COMMENT |
| LOW | electrum/util.py | 1441 | # async with timeout_after(0.1): | 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/qrscanner.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/interface.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/interface.py | 1041 | async def monitor_connection(self): | 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/address_synchronizer.py | 301 | # being is_mine, as we roll the gap_limit forward | 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 | existing_peer = self._peers.get(node_id) | COMMENT |
| LOW | electrum/storage.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/network.py | 1 | # Electrum - Lightweight Bitcoin Client | COMMENT |
| LOW | electrum/plugin.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/plugin.py | 961 | # https://github.com/libusb/hidapi/issues/45 | 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/submarine_swaps.py | 61 | from aiohttp_socks import ProxyConnector | COMMENT |
| LOW | electrum/lnpeer.py | 501 | originator = sorted(self.node_ids)[flags & FLAG_DIRECTION] | COMMENT |
| LOW | electrum/lnpeer.py | 761 | # note: implementations behave differently... | COMMENT |
| LOW | electrum/txbatcher.py | 1 | # This class batches outgoing payments and incoming utxo sweeps. | COMMENT |
| LOW | electrum/txbatcher.py | 21 | # output 3: tx1''(o1,o2,o3) \ ---> tx2'(tx1|o2,o3) ----> tx3(tx2|o3) (if tx2 is mined) | COMMENT |
| LOW | electrum/txbatcher.py | 41 | # if cannot_rbf(tx1') -> broadcast tx3(tx1'|o3) | COMMENT |
| LOW | electrum/dnssec.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/commands.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | electrum/coinchooser.py | 1 | #!/usr/bin/env python | COMMENT |
| 84 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_lnchannel.py | 97 | # Create a test channel which will be used for the duration of this | COMMENT |
| MEDIUM | electrum/lnchannel.py | 1921 | # This method is used both in the GUI, and in lnpeer.schedule_force_closing | COMMENT |
| MEDIUM | electrum/lnworker.py | 3330 | # This method is called when an invoice or request is deleted by the user. | COMMENT |
| MEDIUM | electrum/lnwatcher.py | 190 | """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 | 4067 | """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 | 381 | # Create the buttons. | COMMENT |
| MEDIUM | electrum/plugins/revealer/qt.py | 403 | # 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 | 105 | # Create a QImage to draw on | COMMENT |
| MEDIUM | electrum/gui/common_qt/util.py | 111 | # Create the image with appropriate size | COMMENT |
| MEDIUM | electrum/gui/qt/qrreader/qtmultimedia/camera_dialog.py | 120 | # Create a layout for the controls | COMMENT |
| MEDIUM | electrum/gui/qt/qrreader/qtmultimedia/camera_dialog.py | 138 | # Create the video surface and receive events when new frames arrive | COMMENT |
| MEDIUM | electrum/gui/qt/qrreader/qtmultimedia/camera_dialog.py | 142 | # Create the crop blur effect | COMMENT |
| MEDIUM | electrum/gui/qt/qrreader/qtmultimedia/video_surface.py | 74 | # Create a copy of the image so the original frame data can be freed | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | electrum/lnchannel.py | 901 | def set_remote_update(self, payload: dict) -> None: | CODE |
| LOW | electrum/lnchannel.py | 191 | def set_short_channel_id(self, short_id: ShortChannelID) -> None: | CODE |
| LOW | electrum/lnchannel.py | 207 | def set_state(self, state: ChannelState, *, force: bool = False) -> None: | CODE |
| LOW | electrum/lnchannel.py | 348 | def update_unfunded_state(self) -> None: | CODE |
| LOW | electrum/lnchannel.py | 403 | def update_funded_state(self, *, funding_txid: str, funding_height: TxMinedInfo) -> None: | CODE |
| LOW | electrum/lnchannel.py | 1084 | def set_can_send_ctx_updates(self, b: bool) -> None: | CODE |
| LOW | electrum/lnchannel.py | 1108 | def set_frozen_for_sending(self, b: bool) -> None: | CODE |
| LOW | electrum/lnchannel.py | 1115 | def set_frozen_for_receiving(self, b: bool) -> None: | CODE |
| LOW | electrum/lnchannel.py | 1777 | 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 | 2462 | def set_rbf(self, rbf: bool) -> None: | CODE |
| LOW | electrum/transaction.py | 2550 | 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/lnhtlc.py | 64 | def _set_revack_pending(self, sub: HTLCOwner, pending: bool) -> None: | CODE |
| LOW | electrum/lnhtlc.py | 213 | def _update_maybe_active_htlc_ids(self) -> None: | CODE |
| LOW | electrum/address_synchronizer.py | 698 | def _update_stored_local_height(self) -> None: | CODE |
| LOW | electrum/simple_config.py | 241 | def set_chain_config_opt_based_on_android_packagename(cls, config_options: dict[str, Any]) -> None: | CODE |
| LOW | electrum/simple_config.py | 281 | def set_key(self, key: Union[str, ConfigVar, ConfigVarWithConfig], value, *, save=True) -> None: | CODE |
| LOW | electrum/simple_config.py | 301 | 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 | 3108 | def set_invoice_status(self, key: str, status: int) -> None: | CODE |
| LOW | electrum/lnworker.py | 3120 | def set_request_status(self, payment_hash: bytes, status: int) -> None: | CODE |
| LOW | electrum/lnworker.py | 3130 | def set_payment_status(self, payment_hash: bytes, status: int, *, direction: lnutil.Direction) -> None: | CODE |
| LOW | electrum/network.py | 717 | def _set_default_server(self) -> None: | CODE |
| LOW | electrum/network.py | 824 | 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 | 302 | def update_size(self) -> None: | CODE |
| LOW⚡ | electrum/exchange_rate.py | 84 | async def update_safe(self, ccy: str) -> None: | CODE |
| LOW | electrum/exchange_rate.py | 698 | def set_enabled(self, b: bool) -> None: | CODE |
| LOW | electrum/invoices.py | 184 | def set_amount_msat(self, amount_msat: Union[int, str]) -> None: | CODE |
| LOW | electrum/submarine_swaps.py | 422 | async def set_nostr_proof_of_work(self) -> None: | CODE |
| LOW⚡ | electrum/lnpeer.py | 482 | def set_gossip_timestamp_filter(self, payload: dict) -> None: | CODE |
| LOW | electrum/txbatcher.py | 209 | 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 | 937 | def set_label(self, label: Optional[str]) -> None: | CODE |
| LOW⚡ | electrum/wallet_db.py | 1699 | def set_spent_outpoint(self, prevout_hash: str, prevout_n: Union[int, str], tx_hash: str) -> None: | CODE |
| LOW | electrum/wallet_db.py | 1778 | def set_addr_history(self, addr: str, hist) -> None: | CODE |
| LOW⚡ | electrum/wallet.py | 1378 | def _update_onchain_invoice_paid_detection(self, invoice_keys: Iterable[str]) -> None: | CODE |
| LOW⚡ | electrum/wallet.py | 2282 | def set_reserved_addresses_for_chan(self, chan: 'AbstractChannel', *, reserved: bool) -> None: | CODE |
| LOW | electrum/wallet.py | 742 | def _set_label(self, key: str, value: Optional[str]) -> None: | CODE |
| LOW | electrum/wallet.py | 2269 | def set_reserved_state_of_address(self, addr: str, *, reserved: bool) -> None: | CODE |
| LOW | electrum/wallet.py | 3007 | def _update_invoices_and_reqs_touched_by_tx(self, tx: Transaction) -> None: | CODE |
| LOW | electrum/wallet.py | 3232 | def _update_password_for_keystore(self, old_pw: Optional[str], new_pw: Optional[str]) -> None: | CODE |
| LOW | electrum/wallet.py | 3325 | 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 | 918 | 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 |
| LOW | electrum/plugins/bitbox02/bitbox02.py | 172 | def set_app_static_privkey(self, privkey: bytes) -> None: | CODE |
| LOW | electrum/plugins/jade/jadepy/jade.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | electrum/plugins/jade/jadepy/jade_serial.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | electrum/plugins/jade/jadepy/jade_tcp.py | 5 | logger = logging.getLogger(__name__) | CODE |
| LOW | electrum/hw_wallet/trezor_qt_pinmatrix.py | 84 | def _set_strength(self, strength: float) -> None: | CODE |
| LOW | electrum/hw_wallet/plugin.py | 324 | def update_status(self, paired: bool) -> None: | CODE |
| LOW | electrum/gui/qml/qeapp.py | 286 | def _set_screen_brightness(self, br: float) -> None: | CODE |
| LOW | electrum/gui/qt/main_window.py | 1884 | def set_coincontrol_msg(self, msg: Optional[str]) -> None: | CODE |
| LOW | electrum/gui/qt/swap_dialog.py | 373 | def update_fee(self, tx: Optional[PartialTransaction]) -> None: | CODE |
| LOW | electrum/gui/qt/swap_dialog.py | 419 | def update_tx(self) -> None: | CODE |
| 7 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 | 57 | # ---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | electrum/plugins/digitalbitbox/digitalbitbox.py | 443 | # ---------------------------------------------------------------------------------- | 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 | contrib/build-linux/appimage/make_appimage.sh | 95 | # note: could instead just use the libzbar0 pkg from debian/apt, but that is too old and missing fixes for CVE-2023- | COMMENT |
| LOW | electrum/onion_message.py | 88 | # 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 | 600 | if name in ("from_key", ): # don't apply magic, just use standard lookup | CODE |
| LOW | electrum/submarine_swaps.py | 608 | # note: there is no csv in the script, we just set this so that txbatcher waits for one confirmation | COMMENT |
| LOW | electrum/wallet.py | 208 | # if no network or not up to date, just set locktime to zero | COMMENT |
| MEDIUM | electrum/gui/messages.py | 24 | """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 | 190 | # and even then, we can probably just add the payment instead | COMMENT |
| LOW | electrum/gui/qml/qetransactionlistmodel.py | 151 | # 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 | 2398 | CODE | |
| LOW | tests/test_wallet_vertical.py | 104 | CODE | |
| LOW | tests/test_coinchooser.py | 34 | CODE | |
| LOW | electrum/lnchannel.py | 1906 | CODE | |
| LOW | electrum/transaction.py | 2143 | CODE | |
| LOW | electrum/payment_identifier.py | 45 | CODE | |
| LOW | electrum/base_crash_reporter.py | 128 | CODE | |
| LOW | electrum/crypto.py | 332 | CODE | |
| LOW | electrum/submarine_swaps.py | 1528 | CODE | |
| LOW | electrum/lnurl.py | 175 | CODE | |
| LOW | electrum/commands.py | 264 | CODE | |
| LOW | electrum/commands.py | 949 | CODE | |
| LOW | electrum/commands.py | 981 | CODE | |
| LOW | electrum/commands.py | 1174 | CODE | |
| LOW | electrum/commands.py | 1438 | CODE | |
| LOW | electrum/commands.py | 1462 | CODE | |
| LOW | electrum/commands.py | 1486 | CODE | |
| LOW | electrum/commands.py | 1730 | CODE | |
| LOW | electrum/daemon.py | 397 | CODE | |
| LOW | electrum/wallet.py | 1975 | CODE | |
| LOW | electrum/wallet.py | 3117 | CODE | |
| LOW | electrum/plugins/swapserver/__init__.py | 73 | CODE | |
| LOW | electrum/gui/qml/qeapp.py | 200 | 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 | 454 | CODE | |
| MEDIUM | electrum/lnworker.py | 455 | CODE | |
| MEDIUM | electrum/lnworker.py | 456 | CODE | |
| MEDIUM | electrum/lnworker.py | 458 | CODE | |
| MEDIUM | electrum/lnworker.py | 463 | CODE | |
| MEDIUM | electrum/gui/text.py | 202 | CODE | |
| MEDIUM | electrum/gui/text.py | 203 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | electrum/logging.py | 112 | # Check if captured log lines were never to dumped to e.g. stderr, | COMMENT |
| LOW | electrum/dnssec.py | 96 | # Check if there is a valid signature for the root dnskey | COMMENT |
| LOW | electrum/gui/qml/qewallet.py | 856 | # Check if we had enough funds excluding fees, | COMMENT |
| LOW | electrum/gui/qt/send_tab.py | 264 | # Check if we had enough funds excluding fees, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/toyserver/toyserver.py | 467 | async def handle_request(self, request): | CODE |
| LOW | electrum/interface.py | 177 | 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 | 585 | a_chan, b_chan = await f(last_rev_secret=sha256("fake_data"), **kwargs) | CODE |