From ea5a42d2eb8358c6945a5277a228f62fef5cce2f Mon Sep 17 00:00:00 2001 From: Janus Date: Thu, 5 Apr 2018 17:05:39 +0200 Subject: [PATCH] lightning: add --simnet and --lightning switches --- electrum/commands.py | 1 + electrum/constants.py | 28 ++++++++++++++++++++++++++++ electrum/gui/qt/main_window.py | 5 +++-- electrum/network.py | 3 ++- electrum/simple_config.py | 4 +--- electrum/wallet.py | 7 +++++-- lib/lightning.py | 4 ++-- run_electrum | 3 +++ 8 files changed, 45 insertions(+), 10 deletions(-) diff --git a/electrum/commands.py b/electrum/commands.py index a2f0c871..b82f4e3f 100644 --- a/electrum/commands.py +++ b/electrum/commands.py @@ -855,6 +855,7 @@ def add_global_options(parser): group.add_argument("--testnet", action="store_true", dest="testnet", default=False, help="Use Testnet") group.add_argument("--regtest", action="store_true", dest="regtest", default=False, help="Use Regtest") group.add_argument("--simnet", action="store_true", dest="simnet", default=False, help="Use Simnet") + group.add_argument("--lightning", action="store_true", dest="lightning", default=False, help="Enable Lightning support") def get_parser(): # create main parser diff --git a/electrum/constants.py b/electrum/constants.py index 12cb4b1d..c2ed22f8 100644 --- a/electrum/constants.py +++ b/electrum/constants.py @@ -94,6 +94,31 @@ class BitcoinTestnet: } BIP44_COIN_TYPE = 1 +class BitcoinSimnet: + ADDRTYPE_P2PKH = 0x3f + ADDRTYPE_P2SH = 0x7b + SEGWIT_HRP = "sb" + GENESIS = "683e86bd5c6d110d91b94b97137ba6bfe02dbbdb8e3dff722a669b5d69d77af6" + WIF_PREFIX = 0x00 + TESTNET = True + DEFAULT_PORTS = {} + DEFAULT_SERVERS = {} + CHECKPOINTS = [] + + XPRV_HEADERS = { + 'standard': 0x04358394, # tprv + 'p2wpkh-p2sh': 0x044a4e28, # uprv + 'p2wsh-p2sh': 0x024285b5, # Uprv + 'p2wpkh': 0x045f18bc, # vprv + 'p2wsh': 0x02575048, # Vprv + } + XPUB_HEADERS = { + 'standard': 0x043587cf, # tpub + 'p2wpkh-p2sh': 0x044a5262, # upub + 'p2wsh-p2sh': 0x024285ef, # Upub + 'p2wpkh': 0x045f1cf6, # vpub + 'p2wsh': 0x02575483, # Vpub + } class BitcoinRegtest(BitcoinTestnet): @@ -122,6 +147,9 @@ def set_mainnet(): global net net = BitcoinMainnet +def set_simnet(): + global net + net = BitcoinSimnet def set_testnet(): global net diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py index 7ec8671d..bdc8b698 100644 --- a/electrum/gui/qt/main_window.py +++ b/electrum/gui/qt/main_window.py @@ -141,8 +141,9 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): tabs.addTab(self.create_history_tab(), QIcon(":icons/tab_history.png"), _('History')) tabs.addTab(self.send_tab, QIcon(":icons/tab_send.png"), _('Send')) tabs.addTab(self.receive_tab, QIcon(":icons/tab_receive.png"), _('Receive')) - self.lightning_invoices_tab = self.create_lightning_invoices_tab(wallet) - tabs.addTab(self.lightning_invoices_tab, _("Lightning Invoices")) + if config.get("lightning", False): + self.lightning_invoices_tab = self.create_lightning_invoices_tab(wallet) + tabs.addTab(self.lightning_invoices_tab, _("Lightning Invoices")) def add_optional_tab(tabs, tab, icon, description, name): tab.tab_icon = icon diff --git a/electrum/network.py b/electrum/network.py index be0ccd41..bc72cb23 100644 --- a/electrum/network.py +++ b/electrum/network.py @@ -1095,7 +1095,8 @@ class Network(util.DaemonThread): def asyncioThread(): asyncio.set_event_loop(loop) self.lightninglock.acquire() - task = asyncio.ensure_future(asyncio.gather(self.lightningrpc.run(networkAndWalletLock), self.lightningworker.run(networkAndWalletLock))) + if self.lightningrpc is not None and self.lightningworker is not None: + task = asyncio.ensure_future(asyncio.gather(self.lightningrpc.run(networkAndWalletLock), self.lightningworker.run(networkAndWalletLock))) loop.run_forever() threading.Thread(target=asyncioThread).start() networkAndWalletLock.acquire() diff --git a/electrum/simple_config.py b/electrum/simple_config.py index 03558cd7..441bd0c4 100644 --- a/electrum/simple_config.py +++ b/electrum/simple_config.py @@ -109,13 +109,11 @@ class SimpleConfig(PrintError): make_dir(path, allow_symlink=False) if self.get('testnet'): path = os.path.join(path, 'testnet') - make_dir(path, allow_symlink=False) elif self.get('regtest'): path = os.path.join(path, 'regtest') - make_dir(path, allow_symlink=False) elif self.get('simnet'): path = os.path.join(path, 'simnet') - make_dir(path, allow_symlink=False) + make_dir(path, allow_symlink=False) self.print_error("electrum directory", path) return path diff --git a/electrum/wallet.py b/electrum/wallet.py index 3e5c5ada..c93fcb80 100644 --- a/electrum/wallet.py +++ b/electrum/wallet.py @@ -1301,8 +1301,11 @@ class Abstract_Wallet(PrintError): self.verifier = SPV(self.network, self) self.synchronizer = Synchronizer(self, network) network.add_jobs([self.verifier, self.synchronizer]) - network.lightningworker = LightningWorker(lambda: self, lambda: network, lambda: network.config) - network.lightningrpc = LightningRPC() + network.lightningworker = None + network.lightningrpc = None + if network.config.get("lightning", False): + network.lightningworker = LightningWorker(lambda: self, lambda: network, lambda: network.config) + network.lightningrpc = LightningRPC() network.lightninglock.release() else: self.verifier = None diff --git a/lib/lightning.py b/lib/lightning.py index 9a0ce168..ec8b1f60 100644 --- a/lib/lightning.py +++ b/lib/lightning.py @@ -32,8 +32,8 @@ NETWORK = None CONFIG = None locked = set() -machine = "148.251.87.112" -#machine = "127.0.0.1" +#machine = "148.251.87.112" +machine = "127.0.0.1" def WriteDb(json): req = rpc_pb2.WriteDbRequest() diff --git a/run_electrum b/run_electrum index b5d5af00..8e998465 100755 --- a/run_electrum +++ b/run_electrum @@ -398,6 +398,9 @@ if __name__ == '__main__': elif config.get('simnet'): constants.set_simnet() + if config.get('simnet'): + constants.set_simnet() + # run non-RPC commands separately if cmdname in ['create', 'restore']: run_non_RPC(config)