Browse Source
only require libsecp256k1 if lightning is enabled
related: #5606
dependabot/pip/contrib/deterministic-build/ecdsa-0.13.3
SomberNight
5 years ago
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
3 changed files with
15 additions and
5 deletions
-
electrum/ecc_fast.py
-
electrum/lnworker.py
-
run_electrum
|
|
@ -186,8 +186,10 @@ def _prepare_monkey_patching_of_python_ecdsa_internals_with_libsecp256k1(): |
|
|
|
|
|
|
|
def do_monkey_patching_of_python_ecdsa_internals_with_libsecp256k1(): |
|
|
|
if not _libsecp256k1: |
|
|
|
raise Exception('libsecp256k1 library not available. ' |
|
|
|
'Verifying Lightning channels is too computationally expensive without libsecp256k1, aborting.') |
|
|
|
# FIXME logging 'verbosity' is not yet initialised |
|
|
|
_logger.info('libsecp256k1 library not available, falling back to python-ecdsa. ' |
|
|
|
'This means signing operations will be slower.') |
|
|
|
return |
|
|
|
if not _patched_functions.prepared_to_patch: |
|
|
|
raise Exception("can't patch python-ecdsa without preparations") |
|
|
|
ecdsa.ecdsa.Private_key.sign = _patched_functions.fast_sign |
|
|
|
|
|
@ -36,6 +36,7 @@ from .lntransport import LNTransport, LNResponderTransport |
|
|
|
from .lnpeer import Peer, LN_P2P_NETWORK_TIMEOUT |
|
|
|
from .lnaddr import lnencode, LnAddr, lndecode |
|
|
|
from .ecc import der_sig_from_sig_string |
|
|
|
from .ecc_fast import is_using_fast_ecc |
|
|
|
from .lnchannel import Channel, ChannelJsonEncoder |
|
|
|
from . import lnutil |
|
|
|
from .lnutil import (Outpoint, calc_short_channel_id, LNPeerAddr, |
|
|
@ -251,6 +252,7 @@ class LNGossip(LNWorker): |
|
|
|
self.localfeatures |= LnLocalFeatures.GOSSIP_QUERIES_OPT |
|
|
|
self.localfeatures |= LnLocalFeatures.GOSSIP_QUERIES_REQ |
|
|
|
self.unknown_ids = set() |
|
|
|
assert is_using_fast_ecc(), "verifying LN gossip msgs without libsecp256k1 is hopeless" |
|
|
|
|
|
|
|
def start_network(self, network: 'Network'): |
|
|
|
super().start_network(network) |
|
|
|
|
|
@ -329,8 +329,6 @@ if __name__ == '__main__': |
|
|
|
# todo: defer this to gui |
|
|
|
config = SimpleConfig(config_options) |
|
|
|
|
|
|
|
cmdname = config.get('cmd') |
|
|
|
|
|
|
|
if config.get('testnet'): |
|
|
|
constants.set_testnet() |
|
|
|
elif config.get('regtest'): |
|
|
@ -338,7 +336,15 @@ if __name__ == '__main__': |
|
|
|
elif config.get('simnet'): |
|
|
|
constants.set_simnet() |
|
|
|
elif config.get('lightning') and not config.get('reckless'): |
|
|
|
raise Exception('lightning branch not available on mainnet') |
|
|
|
raise Exception('lightning option not available on mainnet') |
|
|
|
|
|
|
|
if config.get('lightning'): |
|
|
|
from electrum.ecc_fast import is_using_fast_ecc |
|
|
|
if not is_using_fast_ecc(): |
|
|
|
raise Exception('libsecp256k1 library not available. ' |
|
|
|
'Verifying Lightning channels is too computationally expensive without libsecp256k1, aborting.') |
|
|
|
|
|
|
|
cmdname = config.get('cmd') |
|
|
|
|
|
|
|
if cmdname == 'daemon' and config.get("detach"): |
|
|
|
# fork before creating the asyncio event loop |
|
|
|