diff --git a/electrum/constants.py b/electrum/constants.py index 28dde0432..4dc8654ba 100644 --- a/electrum/constants.py +++ b/electrum/constants.py @@ -76,6 +76,11 @@ class AbstractNet: def rev_genesis_bytes(cls) -> bytes: return bytes.fromhex(cls.GENESIS)[::-1] + @classmethod + def set_as_network(cls) -> None: + global net + net = cls + class BitcoinMainnet(AbstractNet): @@ -203,27 +208,3 @@ NETS_LIST = tuple(all_subclasses(AbstractNet)) # don't import net directly, import the module instead (so that net is singleton) net = BitcoinMainnet # type: Type[AbstractNet] - -def set_signet(): - global net - net = BitcoinSignet - -def set_simnet(): - global net - net = BitcoinSimnet - -def set_mainnet(): - global net - net = BitcoinMainnet - -def set_testnet(): - global net - net = BitcoinTestnet - -def set_testnet4(): - global net - net = BitcoinTestnet4 - -def set_regtest(): - global net - net = BitcoinRegtest diff --git a/electrum/scripts/ln_features.py b/electrum/scripts/ln_features.py index 6cfe901d1..fd93bb51a 100644 --- a/electrum/scripts/ln_features.py +++ b/electrum/scripts/ln_features.py @@ -39,7 +39,7 @@ loop, stopping_fut, loop_thread = create_and_start_event_loop() time.sleep(2) if IS_TESTNET: - constants.set_testnet() + constants.BitcoinTestnet.set_as_network() daemon = Daemon(config, listen_jsonrpc=False) network = daemon.network assert network.asyncio_loop.is_running() diff --git a/electrum/scripts/quick_start.py b/electrum/scripts/quick_start.py index 2483334f6..a7fba0d23 100755 --- a/electrum/scripts/quick_start.py +++ b/electrum/scripts/quick_start.py @@ -16,7 +16,7 @@ from electrum.util import create_and_start_event_loop, log_exceptions loop, stopping_fut, loop_thread = create_and_start_event_loop() config = SimpleConfig({"testnet": True}) # to use ~/.electrum/testnet as datadir -constants.set_testnet() # to set testnet magic bytes +constants.BitcoinTestnet.set_as_network() # to set testnet magic bytes daemon = Daemon(config, listen_jsonrpc=False) network = daemon.network assert network.asyncio_loop.is_running() diff --git a/electrum/scripts/servers.py b/electrum/scripts/servers.py index c9ef3c613..e3023d1e4 100755 --- a/electrum/scripts/servers.py +++ b/electrum/scripts/servers.py @@ -8,7 +8,7 @@ from electrum.util import create_and_start_event_loop, log_exceptions from electrum import constants # testnet? -#constants.set_testnet() +#constants.BitcoinTestnet.set_as_network() config = SimpleConfig({'testnet': False}) loop, stopping_fut, loop_thread = create_and_start_event_loop() diff --git a/electrum/scripts/update_default_servers.py b/electrum/scripts/update_default_servers.py index b811b253d..76b6ee17f 100755 --- a/electrum/scripts/update_default_servers.py +++ b/electrum/scripts/update_default_servers.py @@ -37,7 +37,7 @@ def get_newly_added_servers(fname1, fname2=None): # testnet? -#constants.set_testnet() +#constants.BitcoinTestnet.set_as_network() config = SimpleConfig({'testnet': False}) loop, stopping_fut, loop_thread = create_and_start_event_loop() diff --git a/run_electrum b/run_electrum index e82aa78f9..78d2a6187 100755 --- a/run_electrum +++ b/run_electrum @@ -382,15 +382,15 @@ def main(): set_language(lang) if config.get('testnet'): - constants.set_testnet() + constants.BitcoinTestnet.set_as_network() elif config.get('testnet4'): - constants.set_testnet4() + constants.BitcoinTestnet4.set_as_network() elif config.get('regtest'): - constants.set_regtest() + constants.BitcoinRegtest.set_as_network() elif config.get('simnet'): - constants.set_simnet() + constants.BitcoinSimnet.set_as_network() elif config.get('signet'): - constants.set_signet() + constants.BitcoinSignet.set_as_network() # check if we received a valid payment identifier uri = config_options.get('url') diff --git a/tests/__init__.py b/tests/__init__.py index 8737da940..4e239f381 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -41,13 +41,13 @@ class ElectrumTestCase(unittest.IsolatedAsyncioTestCase, Logger): def setUpClass(cls): super().setUpClass() if cls.TESTNET: - constants.set_testnet() + constants.BitcoinTestnet.set_as_network() @classmethod def tearDownClass(cls): super().tearDownClass() if cls.TESTNET: - constants.set_mainnet() + constants.BitcoinMainnet.set_as_network() def setUp(self): self._test_lock.acquire() @@ -79,14 +79,14 @@ def as_testnet(func): if asyncio.iscoroutinefunction(func): async def run_test(*args, **kwargs): try: - constants.set_testnet() + constants.BitcoinTestnet.set_as_network() return await func(*args, **kwargs) finally: constants.net = old_net else: def run_test(*args, **kwargs): try: - constants.set_testnet() + constants.BitcoinTestnet.set_as_network() return func(*args, **kwargs) finally: constants.net = old_net diff --git a/tests/test_blockchain.py b/tests/test_blockchain.py index b16850045..3a52ac654 100644 --- a/tests/test_blockchain.py +++ b/tests/test_blockchain.py @@ -48,12 +48,12 @@ class TestBlockchain(ElectrumTestCase): @classmethod def setUpClass(cls): super().setUpClass() - constants.set_regtest() + constants.BitcoinRegtest.set_as_network() @classmethod def tearDownClass(cls): super().tearDownClass() - constants.set_mainnet() + constants.BitcoinMainnet.set_as_network() def setUp(self): super().setUp() diff --git a/tests/test_network.py b/tests/test_network.py index 07294057c..9afdbb769 100644 --- a/tests/test_network.py +++ b/tests/test_network.py @@ -49,12 +49,12 @@ class TestNetwork(ElectrumTestCase): @classmethod def setUpClass(cls): super().setUpClass() - constants.set_regtest() + constants.BitcoinRegtest.set_as_network() @classmethod def tearDownClass(cls): super().tearDownClass() - constants.set_mainnet() + constants.BitcoinMainnet.set_as_network() async def asyncSetUp(self): await super().asyncSetUp() @@ -127,6 +127,6 @@ class TestNetwork(ElectrumTestCase): self.assertEqual(self.interface.q.qsize(), 0) -if __name__=="__main__": - constants.set_regtest() +if __name__ == "__main__": + constants.BitcoinRegtest.set_as_network() unittest.main() diff --git a/tests/test_psbt.py b/tests/test_psbt.py index 11338d2f6..090bcedef 100644 --- a/tests/test_psbt.py +++ b/tests/test_psbt.py @@ -82,14 +82,14 @@ class TestValidPSBT(ElectrumTestCase): def test_valid_psbt_008(self): # Case: PSBT with `PSBT_GLOBAL_XPUB`. - constants.set_mainnet() + constants.BitcoinMainnet.set_as_network() try: tx1 = tx_from_any(bytes.fromhex('70736274ff01009d0100000002710ea76ab45c5cb6438e607e59cc037626981805ae9e0dfd9089012abb0be5350100000000ffffffff190994d6a8b3c8c82ccbcfb2fba4106aa06639b872a8d447465c0d42588d6d670000000000ffffffff0200e1f505000000001976a914b6bc2c0ee5655a843d79afedd0ccc3f7dd64340988ac605af405000000001600141188ef8e4ce0449eaac8fb141cbf5a1176e6a088000000004f010488b21e039e530cac800000003dbc8a5c9769f031b17e77fea1518603221a18fd18f2b9a54c6c8c1ac75cbc3502f230584b155d1c7f1cd45120a653c48d650b431b67c5b2c13f27d7142037c1691027569c503100008000000080000000800001011f00e1f5050000000016001433b982f91b28f160c920b4ab95e58ce50dda3a4a220203309680f33c7de38ea6a47cd4ecd66f1f5a49747c6ffb8808ed09039243e3ad5c47304402202d704ced830c56a909344bd742b6852dccd103e963bae92d38e75254d2bb424502202d86c437195df46c0ceda084f2a291c3da2d64070f76bf9b90b195e7ef28f77201220603309680f33c7de38ea6a47cd4ecd66f1f5a49747c6ffb8808ed09039243e3ad5c1827569c5031000080000000800000008000000000010000000001011f00e1f50500000000160014388fb944307eb77ef45197d0b0b245e079f011de220202c777161f73d0b7c72b9ee7bde650293d13f095bc7656ad1f525da5fd2e10b11047304402204cb1fb5f869c942e0e26100576125439179ae88dca8a9dc3ba08f7953988faa60220521f49ca791c27d70e273c9b14616985909361e25be274ea200d7e08827e514d01220602c777161f73d0b7c72b9ee7bde650293d13f095bc7656ad1f525da5fd2e10b1101827569c5031000080000000800000008000000000000000000000220202d20ca502ee289686d21815bd43a80637b0698e1fbcdbe4caed445f6c1a0a90ef1827569c50310000800000008000000080000000000400000000')) tx2 = tx_from_any('cHNidP8BAJ0BAAAAAnEOp2q0XFy2Q45gflnMA3YmmBgFrp4N/ZCJASq7C+U1AQAAAAD/////GQmU1qizyMgsy8+y+6QQaqBmObhyqNRHRlwNQliNbWcAAAAAAP////8CAOH1BQAAAAAZdqkUtrwsDuVlWoQ9ea/t0MzD991kNAmIrGBa9AUAAAAAFgAUEYjvjkzgRJ6qyPsUHL9aEXbmoIgAAAAATwEEiLIeA55TDKyAAAAAPbyKXJdp8DGxfnf+oVGGAyIaGP0Y8rmlTGyMGsdcvDUC8jBYSxVdHH8c1FEgplPEjWULQxtnxbLBPyfXFCA3wWkQJ1acUDEAAIAAAACAAAAAgAABAR8A4fUFAAAAABYAFDO5gvkbKPFgySC0q5XljOUN2jpKIgIDMJaA8zx9446mpHzU7NZvH1pJdHxv+4gI7QkDkkPjrVxHMEQCIC1wTO2DDFapCTRL10K2hS3M0QPpY7rpLTjnUlTSu0JFAiAthsQ3GV30bAztoITyopHD2i1kBw92v5uQsZXn7yj3cgEiBgMwloDzPH3jjqakfNTs1m8fWkl0fG/7iAjtCQOSQ+OtXBgnVpxQMQAAgAAAAIAAAACAAAAAAAEAAAAAAQEfAOH1BQAAAAAWABQ4j7lEMH63fvRRl9CwskXgefAR3iICAsd3Fh9z0LfHK57nveZQKT0T8JW8dlatH1Jdpf0uELEQRzBEAiBMsftfhpyULg4mEAV2ElQ5F5rojcqKncO6CPeVOYj6pgIgUh9JynkcJ9cOJzybFGFphZCTYeJb4nTqIA1+CIJ+UU0BIgYCx3cWH3PQt8crnue95lApPRPwlbx2Vq0fUl2l/S4QsRAYJ1acUDEAAIAAAACAAAAAgAAAAAAAAAAAAAAiAgLSDKUC7iiWhtIYFb1DqAY3sGmOH7zb5MrtRF9sGgqQ7xgnVpxQMQAAgAAAAIAAAACAAAAAAAQAAAAA') for tx in (tx1, tx2): self.assertEqual(1, len(tx.xpubs)) finally: - constants.set_testnet() + constants.BitcoinTestnet.set_as_network() def test_valid_psbt__input_with_both_witness_utxo_and_nonwitness_utxo(self): # Case: PSBT where an input has both WITNESS_UTXO and UTXO. diff --git a/tests/test_simple_config.py b/tests/test_simple_config.py index e06beadb6..03b1a84dc 100644 --- a/tests/test_simple_config.py +++ b/tests/test_simple_config.py @@ -158,11 +158,11 @@ class Test_SimpleConfig(ElectrumTestCase): config.SWAPSERVER_URL = None self.assertEqual("https://swaps.electrum.org/api", config.SWAPSERVER_URL) - constants.set_testnet() + constants.BitcoinTestnet.set_as_network() try: self.assertEqual("https://swaps.electrum.org/testnet", config.SWAPSERVER_URL) finally: - constants.set_mainnet() + constants.BitcoinMainnet.set_as_network() def test_configvars_convert_getter(self): config = SimpleConfig(self.options)