diff --git a/electrum/checkpoints_testnet4.json b/electrum/checkpoints_testnet4.json new file mode 100644 index 000000000..8826376dd --- /dev/null +++ b/electrum/checkpoints_testnet4.json @@ -0,0 +1,90 @@ +[ + [ + "00000000962a7fc2ef639196051fe181ed53ac6aa4cdfead14dca90f58aa36bc", + 0 + ], + [ + "000000002ad661157c553c0bbbb2490407adb1c8ac09f2b2a7174f87eeeb64bf", + 0 + ], + [ + "000000000be3ff43cde9eed4d6b2d4ad16c4f9509ccb94e1001af68e2f6647b3", + 0 + ], + [ + "00000000001ef2e4c2fc174354ed357cf313725fc336092733b2699d36342ff8", + 0 + ], + [ + "000000000025269f9fa4b0832ccbfef682d59c0fa8845b0c22cc24a1973f011a", + 0 + ], + [ + "000000000014b2d6b2ad804d5deb8d5b4a58caf152f6cea5600af0d9348dff29", + 0 + ], + [ + "000000000003c067c302d43c9499da6e382260252a2a29caf9748ee6972d5f01", + 0 + ], + [ + "000000000002180d23f15ba0b8161d9d38d03c61ab51d050c57928e1a7d98e0c", + 0 + ], + [ + "000000000000ed8722220a13b09d968a59686af5fc5c1e0a86371a498209fa72", + 0 + ], + [ + "0000000000003e82df3830ff7c05a58745a463a59d1097e160e47ac7aeb5323a", + 0 + ], + [ + "0000000000000c3f18b9a30269c4b53dd107bacf20482e4ec660e9970999a99f", + 0 + ], + [ + "00000000000002901853780dc8a63efd4d72359d8de7e14dc0398ccfc53d45cd", + 0 + ], + [ + "00000000000000a6ff1615113d25eeed8554813e4994f8ef7ce96458083d14cf", + 0 + ], + [ + "000000000000006e2d4fa8204c67c0986f9bb0214990b11043d0653d50755f54", + 0 + ], + [ + "00000000eaf8e0ea253d833614892aed70c55e5dc4b4d6709dd6420b8284debb", + 0 + ], + [ + "0000000000000063d3ca489d113ded6196c99f3785b61a8ded9254ebb96bc765", + 0 + ], + [ + "000000000000003f684cab6cdb7fe6e98cb13318bb45acdc2d2e2d7405b8bcbe", + 0 + ], + [ + "000000000000001f735b5a23732fb201cf6343b373c94a35f04e6b6075591889", + 0 + ], + [ + "000000001c247a1eb479ecc56ea7d7529f0c4afb6b7025f437a7d235454cd6a4", + 0 + ], + [ + "00000000acd1400a4801f361d675644993ad05e5b735a881f26746ece767521e", + 0 + ], + [ + "00000000542792e54a720567ba66157d48cdae7bfd01c1b678d0f07a2ed56e99", + 0 + ], + [ + "00000000ca301f565989627133247615bc937b52c68f8f4b342b6c2aeebff7ba", + 0 + ] +] diff --git a/electrum/commands.py b/electrum/commands.py index a3dc424ef..68c1c7fdb 100644 --- a/electrum/commands.py +++ b/electrum/commands.py @@ -1590,6 +1590,7 @@ def add_global_options(parser): group.add_argument("-D", "--dir", dest="electrum_path", help="electrum directory") group.add_argument("-P", "--portable", action="store_true", dest="portable", default=False, help="Use local 'electrum_data' directory") group.add_argument("--testnet", action="store_true", dest="testnet", default=False, help="Use Testnet") + group.add_argument("--testnet4", action="store_true", dest="testnet4", default=False, help="Use Testnet4") 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("--signet", action="store_true", dest="signet", default=False, help="Use Signet") diff --git a/electrum/constants.py b/electrum/constants.py index 445bd8490..6ed16e678 100644 --- a/electrum/constants.py +++ b/electrum/constants.py @@ -155,6 +155,17 @@ class BitcoinTestnet(AbstractNet): ] +class BitcoinTestnet4(BitcoinTestnet): + + NET_NAME = "testnet4" + SEGWIT_HRP = "tb" + BOLT11_HRP = SEGWIT_HRP + GENESIS = "00000000da84f2bafbbc53dee25a72ae507ff4914b867c565be350b0da8bf043" + DEFAULT_SERVERS = read_json('servers_testnet4.json', {}) + CHECKPOINTS = read_json('checkpoints_testnet4.json', []) + LN_DNS_SEEDS = [] + + class BitcoinRegtest(BitcoinTestnet): NET_NAME = "regtest" @@ -211,6 +222,10 @@ 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/servers_testnet4.json b/electrum/servers_testnet4.json new file mode 100644 index 000000000..37145d442 --- /dev/null +++ b/electrum/servers_testnet4.json @@ -0,0 +1,20 @@ +{ + "127.0.0.1": { + "pruning": "-", + "s": "51002", + "t": "51001", + "version": "1.4" + }, + "testnet4-electrumx.wakiyamap.dev": { + "pruning": "-", + "s": "51002", + "t": "51001", + "version": "1.4" + }, + "blackie.c3-soft.com": { + "pruning": "-", + "s": "57010", + "t": "57009", + "version": "1.4" + } +} diff --git a/electrum/simple_config.py b/electrum/simple_config.py index c7cd8918e..32190b1f4 100644 --- a/electrum/simple_config.py +++ b/electrum/simple_config.py @@ -254,6 +254,9 @@ class SimpleConfig(Logger): if self.get('testnet'): path = os.path.join(path, 'testnet') make_dir(path, allow_symlink=False) + if self.get('testnet4'): + path = os.path.join(path, 'testnet4') + make_dir(path, allow_symlink=False) elif self.get('regtest'): path = os.path.join(path, 'regtest') make_dir(path, allow_symlink=False) diff --git a/electrum/trampoline.py b/electrum/trampoline.py index b8a6208ef..8f0f1ed8b 100644 --- a/electrum/trampoline.py +++ b/electrum/trampoline.py @@ -26,6 +26,8 @@ TRAMPOLINE_NODES_TESTNET = { 'Electrum trampoline': LNPeerAddr(host='lightning.electrum.org', port=9739, pubkey=bytes.fromhex('02bf82e22f99dcd7ac1de4aad5152ce48f0694c46ec582567f379e0adbf81e2d0f')), } +TRAMPOLINE_NODES_TESTNET4 = {} + TRAMPOLINE_NODES_SIGNET = { 'lnd wakiyamap.dev': LNPeerAddr(host='signet-electrumx.wakiyamap.dev', port=9735, pubkey=bytes.fromhex('02dadf6c28f3284d591cd2a4189d1530c1ff82c07059ebea150a33ab76e7364b4a')), 'eclair wakiyamap.dev': LNPeerAddr(host='signet-eclair.wakiyamap.dev', port=9735, pubkey=bytes.fromhex('0271cf3881e6eadad960f47125434342e57e65b98a78afa99f9b4191c02dd7ab3b')), @@ -40,6 +42,8 @@ def hardcoded_trampoline_nodes() -> Mapping[str, LNPeerAddr]: return TRAMPOLINE_NODES_MAINNET elif constants.net.NET_NAME == "testnet": return TRAMPOLINE_NODES_TESTNET + elif constants.net.NET_NAME == "testnet4": + return TRAMPOLINE_NODES_TESTNET4 elif constants.net.NET_NAME == "signet": return TRAMPOLINE_NODES_SIGNET else: diff --git a/electrum/util.py b/electrum/util.py index 63369b755..c480eaee4 100644 --- a/electrum/util.py +++ b/electrum/util.py @@ -987,6 +987,11 @@ testnet_block_explorers = { {'tx': 'tx/', 'addr': 'address/'}), } +testnet4_block_explorers = { + 'mempool.space': ('https://mempool.space/testnet4/', + {'tx': 'tx/', 'addr': 'address/'}), +} + signet_block_explorers = { 'bc-2.jp': ('https://explorer.bc-2.jp/', {'tx': 'tx/', 'addr': 'address/'}), @@ -1009,6 +1014,8 @@ def block_explorer_info(): from . import constants if constants.net.NET_NAME == "testnet": return testnet_block_explorers + elif constants.net.NET_NAME == "testnet4": + return testnet4_block_explorers elif constants.net.NET_NAME == "signet": return signet_block_explorers return mainnet_block_explorers diff --git a/run_electrum b/run_electrum index 0f6c2e974..e82aa78f9 100755 --- a/run_electrum +++ b/run_electrum @@ -383,6 +383,8 @@ def main(): if config.get('testnet'): constants.set_testnet() + elif config.get('testnet4'): + constants.set_testnet4() elif config.get('regtest'): constants.set_regtest() elif config.get('simnet'):