diff --git a/src/bitcoin-cli.cpp b/src/bitcoin-cli.cpp index 75911d0087..0529acc610 100644 --- a/src/bitcoin-cli.cpp +++ b/src/bitcoin-cli.cpp @@ -76,8 +76,6 @@ static void SetupCliArgs(ArgsManager& argsman) const auto defaultBaseParams = CreateBaseChainParams(ChainType::MAIN); const auto testnetBaseParams = CreateBaseChainParams(ChainType::TESTNET); - const auto testnet4BaseParams = CreateBaseChainParams(ChainType::TESTNET4); - const auto signetBaseParams = CreateBaseChainParams(ChainType::SIGNET); const auto regtestBaseParams = CreateBaseChainParams(ChainType::REGTEST); argsman.AddArg("-version", "Print version and exit", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); @@ -100,7 +98,7 @@ static void SetupCliArgs(ArgsManager& argsman) argsman.AddArg("-rpcconnect=", strprintf("Send commands to node running on (default: %s)", DEFAULT_RPCCONNECT), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); argsman.AddArg("-rpccookiefile=", "Location of the auth cookie. Relative paths will be prefixed by a net-specific datadir location. (default: data dir)", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); argsman.AddArg("-rpcpassword=", "Password for JSON-RPC connections", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); - argsman.AddArg("-rpcport=", strprintf("Connect to JSON-RPC on (default: %u, testnet: %u, testnet4: %u, signet: %u, regtest: %u)", defaultBaseParams->RPCPort(), testnetBaseParams->RPCPort(), testnet4BaseParams->RPCPort(), signetBaseParams->RPCPort(), regtestBaseParams->RPCPort()), ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::OPTIONS); + argsman.AddArg("-rpcport=", strprintf("Connect to JSON-RPC on (default: %u, testnet: %u, regtest: %u)", defaultBaseParams->RPCPort(), testnetBaseParams->RPCPort(), regtestBaseParams->RPCPort()), ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::OPTIONS); argsman.AddArg("-rpcuser=", "Username for JSON-RPC connections", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); argsman.AddArg("-rpcwait", "Wait for RPC server to start", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); argsman.AddArg("-rpcwaittimeout=", strprintf("Timeout in seconds to wait for the RPC server to start, or 0 for no timeout. (default: %d)", DEFAULT_WAIT_CLIENT_TIMEOUT), ArgsManager::ALLOW_ANY | ArgsManager::DISALLOW_NEGATION, OptionsCategory::OPTIONS); diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 7cf28d69b4..cd1df277b1 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -23,24 +23,6 @@ using util::SplitString; -void ReadSigNetArgs(const ArgsManager& args, CChainParams::SigNetOptions& options) -{ - if (!args.GetArgs("-signetseednode").empty()) { - options.seeds.emplace(args.GetArgs("-signetseednode")); - } - if (!args.GetArgs("-signetchallenge").empty()) { - const auto signet_challenge = args.GetArgs("-signetchallenge"); - if (signet_challenge.size() != 1) { - throw std::runtime_error("-signetchallenge cannot be multiple values."); - } - const auto val{TryParseHex(signet_challenge[0])}; - if (!val) { - throw std::runtime_error(strprintf("-signetchallenge must be hex, not '%s'.", signet_challenge[0])); - } - options.challenge.emplace(*val); - } -} - void ReadRegTestArgs(const ArgsManager& args, CChainParams::RegTestOptions& options) { if (auto value = args.GetBoolArg("-fastprune")) options.fastprune = *value; @@ -115,12 +97,9 @@ std::unique_ptr CreateChainParams(const ArgsManager& args, c case ChainType::TESTNET: return CChainParams::TestNet(); case ChainType::TESTNET4: - return CChainParams::TestNet4(); - case ChainType::SIGNET: { - auto opts = CChainParams::SigNetOptions{}; - ReadSigNetArgs(args, opts); - return CChainParams::SigNet(opts); - } + throw std::runtime_error("testnet4 is not supported by Fractal Bitcoin; use mainnet, testnet3 (-chain=test) or regtest"); + case ChainType::SIGNET: + throw std::runtime_error("signet is not supported by Fractal Bitcoin; use mainnet, testnet3 (-chain=test) or regtest"); case ChainType::REGTEST: { auto opts = CChainParams::RegTestOptions{}; ReadRegTestArgs(args, opts); diff --git a/src/chainparamsbase.cpp b/src/chainparamsbase.cpp index 060d519d92..5850f91ca1 100644 --- a/src/chainparamsbase.cpp +++ b/src/chainparamsbase.cpp @@ -17,12 +17,8 @@ void SetupChainParamsBaseOptions(ArgsManager& argsman) argsman.AddArg("-regtest", "Enter regression test mode, which uses a special chain in which blocks can be solved instantly. " "This is intended for regression testing tools and app development. Equivalent to -chain=regtest.", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::CHAINPARAMS); argsman.AddArg("-testactivationheight=name@height.", "Set the activation height of 'name' (segwit, bip34, dersig, cltv, csv). (regtest-only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST); - argsman.AddArg("-testnet", "Use the testnet3 chain. Equivalent to -chain=test. Support for testnet3 is deprecated and will be removed in an upcoming release. Consider moving to testnet4 now by using -testnet4.", ArgsManager::ALLOW_ANY, OptionsCategory::CHAINPARAMS); - argsman.AddArg("-testnet4", "Use the testnet4 chain. Equivalent to -chain=testnet4.", ArgsManager::ALLOW_ANY, OptionsCategory::CHAINPARAMS); + argsman.AddArg("-testnet", "Use the testnet3 chain. Equivalent to -chain=test.", ArgsManager::ALLOW_ANY, OptionsCategory::CHAINPARAMS); argsman.AddArg("-vbparams=deployment:start:end[:min_activation_height]", "Use given start/end times and min_activation_height for specified version bits deployment (regtest-only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::CHAINPARAMS); - argsman.AddArg("-signet", "Use the signet chain. Equivalent to -chain=signet. Note that the network is defined by the -signetchallenge parameter", ArgsManager::ALLOW_ANY, OptionsCategory::CHAINPARAMS); - argsman.AddArg("-signetchallenge", "Blocks must satisfy the given script to be considered valid (only for signet networks; defaults to the global default signet test network challenge)", ArgsManager::ALLOW_ANY | ArgsManager::DISALLOW_NEGATION, OptionsCategory::CHAINPARAMS); - argsman.AddArg("-signetseednode", "Specify a seed node for the signet network, in the hostname[:port] format, e.g. sig.net:1234 (may be used multiple times to specify multiple seed nodes; defaults to the global default signet test network seed node(s))", ArgsManager::ALLOW_ANY | ArgsManager::DISALLOW_NEGATION, OptionsCategory::CHAINPARAMS); } static std::unique_ptr globalChainBaseParams; diff --git a/src/chainparamsbase.h b/src/chainparamsbase.h index adbd6a5174..a70683ba14 100644 --- a/src/chainparamsbase.h +++ b/src/chainparamsbase.h @@ -52,6 +52,6 @@ const CBaseChainParams& BaseParams(); void SelectBaseParams(const ChainType chain); /** List of possible chain / network names */ -#define LIST_CHAIN_NAMES "main, test, testnet4, signet, regtest" +#define LIST_CHAIN_NAMES "main, test, regtest" #endif // BITCOIN_CHAINPARAMSBASE_H diff --git a/src/chainparamsseeds.h b/src/chainparamsseeds.h index 536e66a39d..8bdf187cb3 100644 --- a/src/chainparamsseeds.h +++ b/src/chainparamsseeds.h @@ -2040,148 +2040,6 @@ static const uint8_t chainparams_seed_main[] = { 0x04,0x20,0xce,0x1e,0x75,0x35,0x71,0xe3,0x8d,0x15,0x35,0x3d,0x9f,0xb9,0x0c,0x03,0x5c,0xf2,0x86,0x00,0x48,0xc8,0x8b,0x78,0x82,0x44,0x55,0x24,0x8c,0x68,0x3d,0x79,0xcd,0xe4,0x20,0x8d, }; -static const uint8_t chainparams_seed_signet[] = { - 0x06,0x10,0xfc,0x10,0xef,0xa7,0x0c,0xa6,0x15,0x48,0x0f,0x8c,0x6b,0xb9,0x1c,0xc4,0x63,0xae,0x95,0xbd, - 0x06,0x10,0xfc,0x1f,0x22,0xc3,0x95,0xdc,0xa3,0xaf,0x4a,0x93,0x82,0x51,0xbe,0xb9,0x18,0x58,0x95,0xbd, - 0x06,0x10,0xfc,0x32,0x2c,0x16,0xd0,0xd0,0xf1,0xfb,0x3b,0x27,0xc1,0x87,0x8c,0xb5,0x92,0x01,0x95,0xbd, - 0x06,0x10,0xfc,0xcb,0x02,0x48,0x11,0xa6,0x10,0x42,0x0b,0xca,0x12,0x18,0xf7,0xce,0x7d,0x3d,0x95,0xbd, - 0x05,0x20,0xd8,0xaf,0x32,0x40,0x0d,0x25,0x72,0x91,0xf5,0x14,0x2a,0xa7,0x7b,0x9f,0x6b,0xe8,0x02,0x9f,0x16,0x5e,0xa0,0xe0,0x6d,0x85,0xcc,0x79,0xf2,0xe2,0xc1,0x2b,0xe0,0x20,0x00,0x00, - 0x05,0x20,0x53,0x19,0x0f,0x71,0x09,0xb9,0xc0,0x05,0x95,0xe0,0x9c,0x3f,0x0f,0x63,0x11,0x2e,0xe2,0x32,0xd5,0x2a,0xdc,0xe4,0x1e,0xdc,0x5a,0x8c,0x58,0xa3,0x0e,0x05,0xdd,0x6d,0x00,0x00, - 0x05,0x20,0x6b,0x18,0xec,0x4d,0x8c,0x15,0xa1,0xc0,0x09,0x6c,0x9c,0x6e,0xad,0x82,0x4a,0x8d,0x7e,0xc3,0x63,0xcb,0xd7,0xe9,0x6f,0x7d,0xd9,0xae,0x1c,0xbb,0x08,0x1a,0x1c,0x7c,0x00,0x00, - 0x05,0x20,0x81,0xd7,0x3f,0xa2,0x20,0x6b,0xbd,0x2d,0x3d,0x25,0x6e,0xab,0xc8,0x46,0x78,0x6a,0x53,0xc7,0x91,0xdf,0x99,0x64,0xda,0xea,0xfe,0x0b,0x38,0x4e,0x55,0xd6,0x7c,0xc1,0x00,0x00, - 0x05,0x20,0x83,0x7f,0x4b,0x23,0xcd,0xbf,0xa7,0x40,0x2a,0xf5,0xc9,0xd2,0xd4,0x92,0x97,0xb3,0xc5,0x0f,0x58,0x55,0xe0,0xd0,0x41,0x46,0xbe,0xdd,0x0c,0x04,0x37,0x53,0x1b,0x9e,0x00,0x00, - 0x05,0x20,0x89,0x0c,0xbd,0x3b,0x7b,0xb9,0x94,0x76,0xd2,0x9d,0xc5,0xa3,0xf9,0xdb,0xfa,0x1a,0x1d,0xcf,0x27,0xd3,0xc2,0xf3,0xfc,0xbc,0x6b,0xf3,0xca,0x08,0x49,0x53,0x0b,0x88,0x00,0x00, - 0x05,0x20,0x8a,0x8b,0xd5,0xd0,0xd7,0x80,0xd3,0x1b,0xd4,0x1a,0x6f,0x6c,0xbe,0x6d,0xca,0xbc,0x60,0xc6,0x79,0xf1,0x59,0x7e,0x08,0x89,0x1c,0x09,0x8d,0xc6,0x0f,0xbd,0x73,0xb4,0x00,0x00, - 0x01,0x04,0x05,0xbd,0x88,0xd1,0x95,0xbd, - 0x01,0x04,0x0f,0xeb,0x37,0x9e,0x95,0xbd, - 0x01,0x04,0x12,0x8d,0x8f,0x5e,0x95,0xbd, - 0x01,0x04,0x12,0xd8,0x01,0x47,0x95,0xbd, - 0x01,0x04,0x17,0x89,0x39,0x64,0x95,0xbd, - 0x01,0x04,0x17,0xe2,0xa4,0xc0,0x95,0xbd, - 0x01,0x04,0x22,0x10,0x67,0x40,0x95,0xbd, - 0x01,0x04,0x23,0xd9,0x1d,0x42,0x95,0xbd, - 0x01,0x04,0x25,0x1b,0x2d,0xe0,0x95,0xbd, - 0x01,0x04,0x26,0x58,0x7d,0xee,0x95,0xbd, - 0x01,0x04,0x2c,0xd2,0x6d,0x40,0x95,0xbd, - 0x01,0x04,0x2d,0x20,0x7f,0xc7,0x95,0xbd, - 0x01,0x04,0x33,0x4f,0x1d,0xd8,0x95,0xbd, - 0x01,0x04,0x36,0xff,0xba,0x98,0x95,0xbd, - 0x01,0x04,0x3f,0x22,0x52,0x14,0x95,0xbd, - 0x01,0x04,0x41,0x6d,0x36,0x65,0x95,0xbd, - 0x01,0x04,0x43,0xd1,0x34,0x8a,0x95,0xbd, - 0x01,0x04,0x55,0xbe,0xf2,0x50,0x95,0xbd, - 0x01,0x04,0x59,0x9b,0xee,0x48,0x95,0xbd, - 0x01,0x04,0x67,0x10,0x80,0x3f,0x95,0xbd, - 0x01,0x04,0x68,0xf8,0x2a,0xcc,0x95,0xbd, - 0x01,0x04,0x74,0xa3,0x14,0x71,0x95,0xbd, - 0x01,0x04,0x79,0x4e,0xf1,0x47,0x95,0xbd, - 0x01,0x04,0x7c,0x9c,0xc6,0xf9,0x95,0xbd, - 0x01,0x04,0x83,0x99,0x0b,0x83,0x95,0xbd, - 0x01,0x04,0x87,0xb4,0x63,0x4a,0x95,0xbd, - 0x01,0x04,0x88,0x90,0xed,0xfa,0x95,0xbd, - 0x01,0x04,0x8f,0x2a,0x41,0x38,0x95,0xbd, - 0x01,0x04,0x90,0x18,0xee,0x9d,0x95,0xbd, - 0x01,0x04,0x90,0x18,0xf1,0xce,0x95,0xbd, - 0x01,0x04,0x94,0x33,0xc4,0x28,0x95,0xbd, - 0x01,0x04,0x98,0x35,0x03,0xc0,0x95,0xbd, - 0x01,0x04,0x99,0x7e,0x8f,0xc9,0x95,0xbd, - 0x01,0x04,0x9f,0xcb,0x85,0x90,0x95,0xbd, - 0x01,0x04,0xac,0x69,0xb3,0xe9,0x95,0xbd, - 0x01,0x04,0xae,0x32,0xd4,0x3c,0x95,0xbd, - 0x01,0x04,0xaf,0x6e,0x72,0x4a,0x95,0xbd, - 0x01,0x04,0xb2,0xfa,0xbd,0x2a,0x95,0xbd, - 0x01,0x04,0xb9,0x94,0x25,0xaa,0x95,0xbd, - 0x01,0x04,0xca,0xb6,0x69,0x6c,0x95,0xbd, - 0x01,0x04,0xcd,0xd1,0x72,0x1e,0x95,0xbd, - 0x01,0x04,0xd0,0x44,0x04,0x47,0x95,0xbd, - 0x02,0x10,0x20,0x01,0x19,0xf0,0x44,0x00,0x63,0xc7,0x54,0x00,0x04,0xff,0xfe,0xcc,0xfc,0x1e,0x95,0xbd, - 0x02,0x10,0x20,0x01,0x19,0xf0,0x70,0x01,0x48,0xb2,0x54,0x00,0x04,0xff,0xfe,0xcf,0x06,0xe5,0x95,0xbd, - 0x02,0x10,0x20,0x01,0x41,0xd0,0x03,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x0a,0x95,0xbd, - 0x02,0x10,0x20,0x01,0x41,0xd0,0x03,0x06,0x45,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x95,0xbd, - 0x02,0x10,0x20,0x01,0x41,0xd0,0x03,0x47,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x95,0xbd, - 0x02,0x10,0x20,0x01,0x41,0xd0,0x04,0x03,0x4e,0xcb,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x95,0xbd, - 0x02,0x10,0x20,0x01,0x41,0xd0,0x08,0x00,0x33,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x95,0xbd, - 0x02,0x10,0x20,0x01,0x05,0xa8,0x41,0x64,0x7a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06,0x95,0xbd, - 0x02,0x10,0x24,0x00,0x89,0x07,0x00,0x00,0x00,0x00,0xf0,0x3c,0x92,0xff,0xfe,0x6f,0xee,0x2b,0x95,0xbd, - 0x02,0x10,0x24,0x01,0x25,0x00,0x01,0x02,0x30,0x07,0x01,0x53,0x01,0x26,0x01,0x43,0x02,0x01,0x95,0xbd, - 0x02,0x10,0x26,0x04,0xa8,0x80,0x00,0x04,0x01,0xd0,0x00,0x00,0x00,0x00,0x03,0x52,0x60,0x00,0x95,0xbd, - 0x02,0x10,0x26,0x04,0xa8,0x80,0x08,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x38,0x80,0x30,0x00,0x95,0xbd, - 0x02,0x10,0x26,0x05,0x33,0x80,0x42,0x2e,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x95,0xbd, - 0x02,0x10,0x26,0x07,0x53,0x00,0x02,0x03,0x74,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x95,0xbd, - 0x02,0x10,0x26,0x07,0x53,0x00,0x02,0x03,0xa2,0x9e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x95,0xbd, - 0x02,0x10,0x26,0x07,0x53,0x00,0x02,0x05,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xb0,0x95,0xbd, - 0x02,0x10,0x26,0x07,0xfd,0xc0,0x01,0xc1,0x00,0x05,0x06,0x32,0x01,0xff,0xfe,0x54,0xba,0x56,0x95,0xbd, - 0x02,0x10,0x26,0x20,0x00,0x6e,0xa0,0xa0,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x71,0x95,0xbd, - 0x02,0x10,0x2a,0x01,0x04,0xf8,0x01,0x21,0x40,0x72,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x95,0xbd, - 0x02,0x10,0x2a,0x01,0x04,0xf8,0x01,0x3a,0x0c,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x95,0xbd, - 0x02,0x10,0x2a,0x01,0x04,0xf8,0x21,0x90,0x16,0x92,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x95,0xbd, - 0x02,0x10,0x2a,0x01,0x04,0xf8,0x22,0x20,0x1a,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x95,0xbd, - 0x02,0x10,0x2a,0x01,0x04,0xf8,0x02,0x31,0x3d,0x6f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x95,0xbd, - 0x02,0x10,0x2a,0x01,0x04,0xf8,0x0c,0x17,0xbf,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x95,0xbd, - 0x02,0x10,0x2a,0x01,0x04,0xf9,0x30,0x80,0x34,0x96,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x95,0xbd, - 0x02,0x10,0x2a,0x01,0x04,0xf9,0x00,0x3a,0x24,0x96,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x95,0xbd, - 0x02,0x10,0x2a,0x01,0x04,0xf9,0x00,0x6b,0x30,0x1a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x95,0xbd, - 0x02,0x10,0x2a,0x01,0x04,0xf9,0x00,0x6b,0x47,0xce,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x95,0xbd, - 0x02,0x10,0x2a,0x01,0x07,0xc8,0xd0,0x08,0x00,0xe9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x95,0xbd, - 0x02,0x10,0x2a,0x0c,0xb6,0x41,0x06,0xf1,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x95,0xbd, - 0x04,0x20,0xd6,0x05,0x8a,0x68,0x01,0x06,0xef,0x28,0x26,0x3b,0xe8,0x49,0x07,0xba,0x2f,0xe9,0x7d,0xc6,0xce,0x12,0xd4,0x81,0x4d,0x01,0x8d,0xee,0x67,0x0e,0x27,0xb0,0xff,0x80,0x95,0xbd, - 0x04,0x20,0xdc,0x08,0x41,0xbf,0x26,0x12,0x2b,0xee,0xcc,0x78,0xd4,0xe4,0x36,0x26,0xf2,0xb1,0xf0,0x47,0xf0,0x09,0xf7,0x53,0x30,0xbb,0x2d,0x2f,0x5a,0xdb,0x0b,0x0e,0xd2,0xc2,0x95,0xbd, - 0x04,0x20,0xdd,0xeb,0x46,0x75,0xad,0xa8,0x84,0x7a,0x96,0xf6,0x58,0x45,0xa4,0x4f,0xed,0x09,0x6e,0x76,0x2f,0xce,0xac,0xff,0x72,0x1d,0x36,0xd3,0xdd,0x32,0x31,0xea,0xd3,0x99,0x95,0xbd, - 0x04,0x20,0xe3,0x75,0x15,0xc6,0x2d,0xb8,0x9e,0xd2,0xc4,0xb3,0xe2,0x2a,0xb9,0x56,0x49,0x40,0x0e,0xae,0x94,0xb7,0x46,0x45,0x82,0xc7,0xa0,0x62,0x45,0x02,0xda,0x7c,0x0a,0x11,0x95,0xbd, - 0x04,0x20,0xeb,0x8a,0xea,0xcd,0x77,0xe6,0xb9,0x66,0xdf,0x0e,0x71,0xdb,0x2b,0xc1,0x2a,0x9d,0xa0,0x3e,0x23,0x4a,0x44,0x01,0x67,0x5f,0x72,0x8c,0x87,0x39,0xc9,0xfa,0x78,0xe3,0x95,0xbd, - 0x04,0x20,0xf1,0x71,0xce,0xd6,0xf9,0x30,0xbd,0x24,0x10,0x51,0xf9,0x1b,0xc5,0x79,0xc5,0x9f,0x15,0xc4,0x5f,0x9f,0x4d,0x55,0x78,0x63,0x2e,0x78,0x17,0x9b,0x61,0xe7,0x80,0xb6,0x95,0xbd, - 0x04,0x20,0xf2,0x2a,0x7e,0x42,0x94,0x7c,0x29,0xbb,0x6c,0xcb,0x8e,0x9f,0x4c,0x23,0xa1,0x44,0xd2,0x07,0x84,0x2b,0xf1,0x0f,0x50,0xa6,0x55,0x59,0x1c,0xfc,0x63,0x58,0xca,0x4c,0x95,0xbd, - 0x04,0x20,0xfb,0x0c,0x57,0xbb,0x94,0x8d,0xb1,0x2a,0x00,0xa1,0x77,0xa4,0x1d,0xd3,0xd5,0x3f,0x4b,0xf7,0xaa,0xa6,0x18,0xe3,0x07,0x1c,0x4e,0x09,0xc2,0xa0,0xae,0x11,0x8b,0xb2,0x95,0xbd, - 0x04,0x20,0x07,0xd9,0x52,0x03,0xb7,0x33,0xd4,0xd9,0x40,0x08,0x2e,0x2a,0x59,0x4c,0x6d,0xd5,0x26,0x9a,0xbc,0xfd,0xf7,0x11,0xe9,0xa3,0x6d,0x08,0xe3,0xa1,0x2a,0x41,0xc7,0x52,0x95,0xbd, - 0x04,0x20,0x0e,0xe4,0x18,0x1d,0x32,0x9c,0x37,0xc0,0x13,0xeb,0x94,0x6d,0xb9,0x60,0xf7,0x12,0x47,0x4d,0x4a,0x54,0x2e,0xcb,0xb5,0x54,0x2d,0xc4,0x6a,0x17,0xfc,0x55,0xa5,0x1c,0x95,0xbd, - 0x04,0x20,0x08,0x37,0x1b,0x41,0xcc,0x0b,0x28,0x94,0x6e,0xd7,0x7b,0x30,0x38,0xab,0xf5,0x15,0xca,0xf8,0x7d,0xed,0x6f,0x42,0x5b,0x7f,0x96,0xad,0x61,0x87,0x7a,0x31,0x3d,0xa1,0x95,0xbd, - 0x04,0x20,0x0b,0x86,0x7f,0x66,0x49,0x9b,0x7c,0xaa,0x8d,0x5b,0xf5,0x15,0x7f,0x15,0xb2,0xe9,0xe0,0x84,0x5b,0x79,0x3a,0xa0,0xc1,0x31,0x3d,0xe3,0x63,0x35,0x67,0xb3,0x1c,0xc3,0x95,0xbd, - 0x04,0x20,0x0d,0x2f,0xd4,0xd9,0x56,0xc8,0x84,0x10,0x77,0xf9,0x99,0xc5,0x31,0x9a,0x54,0xb3,0xfa,0xc4,0x6e,0xce,0x15,0xda,0x39,0xd0,0xbe,0x49,0xb5,0x08,0x00,0x3b,0xab,0xdb,0x95,0xbd, - 0x04,0x20,0x12,0x83,0x43,0x24,0x19,0x4e,0x90,0xe9,0xba,0x57,0x01,0xfe,0xe1,0x86,0xe5,0x76,0x6e,0x8a,0xd1,0x5e,0xcd,0x3a,0xd7,0x97,0x68,0xb1,0x5e,0x7a,0xb8,0xfd,0x0c,0x46,0x95,0xbd, - 0x04,0x20,0x14,0x37,0x31,0xef,0x84,0xa7,0x6e,0x9c,0x31,0x77,0x5f,0xc1,0x0e,0x46,0x52,0x55,0xd3,0x3e,0x00,0xda,0xf7,0xd1,0xe6,0x64,0xe3,0x81,0xc6,0xf2,0xe4,0x50,0x14,0xe9,0x95,0xbd, - 0x04,0x20,0x1e,0xbf,0x3a,0x8d,0x88,0xf5,0x92,0x95,0x94,0xa9,0xc1,0xd9,0xd6,0x38,0xd6,0x95,0xb7,0xcd,0xed,0x37,0x50,0x11,0x63,0xcd,0x1b,0xd1,0x00,0x6a,0xad,0x23,0xcc,0x88,0x95,0xbd, - 0x04,0x20,0x1b,0xf2,0xba,0xa7,0xea,0x60,0x50,0x53,0x86,0x73,0x29,0x3f,0x5b,0x2f,0xc5,0x33,0xf1,0xd7,0x4b,0xda,0x42,0x32,0xd2,0x2f,0xc4,0x70,0xa4,0x00,0x46,0x52,0xa0,0xe6,0x95,0xbd, - 0x04,0x20,0x27,0xae,0x7a,0xce,0x33,0xd3,0xde,0x92,0xdc,0x4a,0x0a,0x1b,0x4f,0x83,0x89,0xbb,0x31,0xfa,0x49,0x2d,0xaa,0x6f,0xe9,0x4f,0x42,0x43,0xd9,0x55,0xb5,0xa7,0xb9,0xbe,0x95,0xbd, - 0x04,0x20,0x20,0xaf,0xac,0xee,0xfc,0x6d,0x83,0x94,0x9f,0xc3,0x3f,0xab,0x81,0x09,0x69,0x51,0xdb,0x7c,0x03,0x4e,0xd3,0xb5,0x3c,0xed,0xf9,0xa9,0x27,0x72,0xa5,0x2c,0xa2,0x6e,0x95,0xbd, - 0x04,0x20,0x21,0xdb,0x71,0x20,0xc2,0xf4,0xf7,0xc9,0x31,0x6a,0xea,0xcb,0x32,0xe0,0x3f,0x8b,0x66,0x29,0x06,0xc7,0x5d,0x36,0xf2,0x7d,0x73,0x2c,0xff,0xe3,0x2f,0xd8,0xd7,0xb4,0x95,0xbd, - 0x04,0x20,0x22,0x4c,0x44,0x31,0x38,0x7c,0x8b,0x44,0x25,0xf7,0xce,0x3b,0x77,0xd9,0x8c,0x4b,0x15,0x1e,0x23,0x36,0xc9,0x3c,0xe1,0xf5,0xf6,0xff,0x05,0x24,0x99,0x65,0x5a,0x03,0x95,0xbd, - 0x04,0x20,0x24,0x0f,0x18,0x4e,0xb7,0x56,0x12,0x23,0x18,0x2a,0x66,0x4c,0xe1,0x61,0xa0,0x92,0x82,0xbc,0x35,0x7a,0x0c,0x09,0x42,0x2f,0x8b,0x84,0xb9,0x6d,0x97,0x71,0x33,0xca,0x95,0xbd, - 0x04,0x20,0x2f,0xee,0x58,0x74,0xe8,0x4c,0x1f,0x39,0x0c,0x0a,0xf4,0x13,0x7d,0xa9,0xcc,0xbc,0x4a,0x5d,0x1e,0xdb,0xb8,0x39,0xe1,0xfc,0x52,0xd8,0xfe,0x83,0x55,0x9d,0x9e,0x16,0x95,0xbd, - 0x04,0x20,0x2b,0xbe,0x22,0x2a,0xd9,0x1e,0xd0,0x1c,0x3a,0xf4,0x77,0x76,0xc2,0xc1,0xd7,0x29,0x4c,0x50,0x51,0xe6,0xee,0x07,0x70,0xaf,0x71,0x71,0x6b,0x6b,0xcf,0x21,0xa9,0xb1,0x95,0xbd, - 0x04,0x20,0x3e,0x67,0x8b,0xff,0xc8,0x06,0x78,0x7d,0x91,0x80,0xab,0x32,0x1a,0x23,0x30,0x29,0xb7,0x0d,0xfc,0x87,0x2d,0xa3,0xa5,0x6c,0x05,0x00,0xe6,0x26,0x08,0x8f,0x4c,0xae,0x95,0xbd, - 0x04,0x20,0x43,0x18,0x3b,0x40,0xb8,0xce,0x8e,0x71,0x32,0xec,0xc6,0x1f,0x29,0xe7,0xf2,0xc4,0x34,0x2c,0x18,0x0a,0x5c,0x79,0xb6,0x41,0x2c,0x81,0x0a,0xd6,0x4c,0x58,0xa4,0x9f,0x95,0xbd, - 0x04,0x20,0x48,0x0f,0x3a,0x72,0xa4,0x83,0x6a,0x95,0x8e,0x61,0xc5,0xd2,0x84,0x04,0x71,0x5c,0xe0,0x84,0x20,0xc7,0x05,0x00,0x8f,0x9d,0x95,0x53,0x6d,0x73,0xbe,0x72,0x0f,0x2e,0x95,0xbd, - 0x04,0x20,0x57,0x07,0xe3,0xf0,0x98,0x24,0x12,0xdd,0xf4,0x3b,0xbf,0x3c,0x5e,0x4b,0x66,0xd9,0x30,0xa6,0xf0,0x2c,0x97,0x74,0xf0,0x5e,0x97,0x23,0x55,0x12,0x79,0xac,0x39,0x6b,0x95,0xbd, - 0x04,0x20,0x52,0x96,0x5c,0xe5,0xc3,0x6a,0xd0,0xd1,0x6e,0x6e,0x5c,0xdb,0xf1,0xac,0xb3,0xe5,0x72,0x92,0xe8,0x4a,0x60,0xed,0xa6,0xec,0x6d,0xe2,0xef,0xb7,0xe6,0xdd,0x1a,0x35,0x95,0xbd, - 0x04,0x20,0x5a,0x27,0x03,0x11,0x90,0x63,0xc9,0x2a,0x78,0xc8,0xd0,0xa6,0x3e,0x50,0x31,0x7d,0xc6,0xde,0x30,0x4c,0xd4,0xfc,0xff,0xdc,0xea,0x2d,0xda,0xa5,0x7d,0x79,0x78,0xef,0x95,0xbd, - 0x04,0x20,0x5a,0x8c,0xd0,0x15,0xc0,0xeb,0x4a,0x3d,0xf1,0xf9,0xc5,0xdf,0x9e,0x99,0xac,0x7d,0x94,0x11,0xab,0xa0,0xe9,0xfc,0x7f,0x9d,0x5b,0x8c,0xbb,0xb9,0x38,0xfe,0x6a,0x83,0x95,0xbd, - 0x04,0x20,0x5d,0x91,0x03,0x1d,0x6c,0x5a,0x72,0xb0,0x46,0xcd,0xe1,0xac,0x38,0xd6,0x4a,0x1e,0xda,0x80,0xce,0xde,0xdb,0xba,0xe5,0x7e,0x86,0xbf,0x1b,0x6a,0x54,0xff,0x0f,0x35,0x95,0xbd, - 0x04,0x20,0x5d,0xd0,0x41,0xeb,0x9c,0xfc,0x82,0xc6,0xb9,0x1e,0xe5,0xc3,0x11,0xcc,0x44,0x50,0xcb,0x86,0x91,0xce,0xdd,0xc3,0xb6,0x7a,0xb2,0x12,0x79,0xdd,0x3a,0x35,0x1a,0x34,0x95,0xbd, - 0x04,0x20,0x6f,0xa6,0x5e,0x8c,0xb9,0xd7,0x51,0xc7,0xbe,0x22,0xc9,0x2a,0x35,0x61,0xdd,0x0a,0x9e,0x62,0x83,0x77,0x41,0x88,0xd6,0xfa,0x4a,0x7a,0x61,0x0c,0x34,0x37,0x7d,0xf2,0x95,0xbd, - 0x04,0x20,0x76,0x8b,0x46,0x53,0x9b,0xa1,0x95,0xeb,0x83,0x0e,0xd3,0x6a,0x01,0xb7,0xee,0x3c,0x17,0x73,0x82,0x20,0x54,0xf8,0x55,0xc0,0xfb,0x3a,0x4d,0x71,0x86,0xd9,0x8d,0x90,0x95,0xbd, - 0x04,0x20,0x73,0xad,0x00,0xab,0x7e,0x37,0xfc,0x29,0x6f,0xf2,0x57,0xd9,0x82,0xba,0x1e,0xd1,0x3e,0xbc,0x73,0x44,0x98,0x8b,0x43,0x39,0x7b,0x7f,0xce,0x0b,0x78,0x96,0xc3,0x7b,0x95,0xbd, - 0x04,0x20,0x75,0x1c,0x76,0x68,0x22,0x7a,0xd4,0x5a,0xe4,0xc6,0xe1,0x7a,0xb9,0xd6,0x70,0x9e,0x9c,0x1c,0xe2,0xa0,0x00,0xc3,0xb4,0x91,0xff,0x08,0x78,0x60,0x48,0x74,0x94,0x14,0x95,0xbd, - 0x04,0x20,0x76,0x7a,0xfa,0x64,0xd3,0xc0,0x72,0x94,0x4b,0x16,0xea,0x90,0xc1,0x8e,0x6c,0x93,0x45,0xbd,0x66,0xc5,0x5a,0x93,0xd8,0xf3,0x62,0x59,0x46,0x30,0x5a,0x8d,0x57,0xed,0x95,0xbd, - 0x04,0x20,0x7a,0x9e,0x8a,0xf8,0x50,0x80,0x41,0xb6,0x07,0xa2,0x78,0x84,0x3a,0xe7,0xb5,0xeb,0xf7,0x4e,0x80,0x51,0x4d,0x75,0x94,0xea,0x9c,0x05,0x33,0x96,0x88,0x90,0x15,0x16,0x95,0xbd, - 0x04,0x20,0x7b,0x12,0xcf,0x73,0x8f,0xca,0x9f,0xa5,0x1e,0xc8,0xbe,0x11,0x2d,0x0b,0xec,0x69,0x43,0x32,0x6f,0x61,0x6b,0x2d,0x71,0xdf,0xab,0x57,0xa7,0xe7,0x5a,0xb3,0x60,0x1e,0x95,0xbd, - 0x04,0x20,0x86,0xf3,0xdd,0x79,0x0c,0x1b,0x9d,0xa7,0x8e,0x89,0x51,0x5f,0xda,0xc9,0x72,0x3b,0x51,0xa6,0xa0,0x96,0x58,0x6e,0x57,0x28,0x89,0x2a,0x86,0x35,0x13,0x37,0xa4,0xc0,0x95,0xbd, - 0x04,0x20,0x83,0xcc,0xd8,0xde,0x96,0xb8,0xbd,0xcf,0xf0,0xf5,0xc6,0xd3,0xda,0x2b,0x47,0x0b,0x37,0x1c,0x71,0x0a,0xb4,0x48,0xd7,0x22,0x7e,0xca,0x49,0x08,0x43,0x13,0x3c,0xaa,0x95,0xbd, - 0x04,0x20,0x86,0x4b,0xda,0xb3,0x44,0xbb,0xad,0x15,0xa3,0xaa,0x95,0x1d,0x68,0x9e,0x47,0x9b,0x48,0x5e,0x6c,0x97,0x3c,0xce,0x0f,0xfa,0x03,0xbe,0x77,0xdf,0x9c,0x70,0x2c,0x3d,0x95,0xbd, - 0x04,0x20,0x8f,0x31,0xd7,0xc3,0x15,0x1e,0x61,0xb0,0xe4,0xda,0x2c,0x29,0xcf,0x41,0x7c,0x06,0xf4,0x50,0x0d,0x45,0x9d,0x88,0x99,0xdf,0x22,0x51,0x30,0xe3,0x8f,0xf6,0xac,0x1a,0x95,0xbd, - 0x04,0x20,0x99,0x2b,0xf1,0x0e,0xca,0x06,0xc1,0x5f,0x11,0x53,0xc0,0xe4,0x92,0xbd,0xc5,0x60,0x80,0xcd,0xc7,0xd0,0x15,0xbf,0x2b,0x85,0xea,0x71,0xc4,0xa4,0xd5,0x07,0x9e,0x5f,0x95,0xbd, - 0x04,0x20,0x99,0xa0,0xf2,0xd9,0xd7,0x4a,0x06,0xbb,0x0f,0xb1,0x33,0xd3,0xdc,0x96,0x87,0x14,0xef,0x12,0x56,0x45,0xa1,0x20,0xd1,0xa0,0xfc,0xad,0xfa,0x73,0x5d,0xec,0xc1,0xb7,0x95,0xbd, - 0x04,0x20,0x9c,0xa1,0xf1,0x2c,0xa5,0x09,0x49,0xed,0xfb,0x25,0x96,0x70,0xc3,0x92,0x06,0xc7,0xa7,0x8c,0x86,0x49,0x71,0x80,0x3d,0x40,0x93,0xfc,0x08,0x84,0xd0,0x1d,0x17,0x77,0x95,0xbd, - 0x04,0x20,0xb7,0xc7,0xc8,0xd9,0x33,0xea,0x0c,0xec,0xa3,0xb5,0xfe,0x74,0xcd,0xa1,0xba,0xb3,0x37,0x99,0x17,0x4b,0x3c,0x91,0x98,0x41,0xc7,0x56,0x22,0xe5,0x04,0x28,0x27,0x49,0x95,0xbd, - 0x04,0x20,0xb1,0x2a,0xca,0x25,0x7a,0x7f,0x98,0x25,0x0a,0xc0,0xbb,0x59,0x3a,0x4a,0xc4,0x8b,0xa5,0xf0,0xd3,0x61,0xb9,0x74,0x6d,0xaf,0x34,0x9b,0x4a,0x35,0x25,0x7d,0x35,0x83,0x95,0xbd, - 0x04,0x20,0xb5,0xb8,0x9c,0x09,0xcc,0x4d,0x9a,0x5f,0xa6,0x71,0x8c,0x5a,0x62,0x00,0xee,0x54,0x14,0x25,0xef,0x48,0xa1,0x58,0x9c,0xd6,0xaa,0xd7,0xf5,0x2a,0xa0,0x80,0xa8,0x02,0x95,0xbd, - 0x04,0x20,0xb8,0x68,0xba,0xaf,0x41,0x0f,0x2d,0x56,0xac,0x05,0x64,0x36,0x9d,0x97,0x31,0x49,0xe4,0xc6,0x97,0x3f,0xa0,0x71,0x55,0xfb,0x18,0xdc,0xb0,0x41,0x90,0x7c,0x9c,0x11,0x95,0xbd, - 0x04,0x20,0xbb,0x38,0xab,0xae,0x8e,0x1b,0x08,0xe5,0xb0,0x14,0x33,0x01,0x76,0x92,0xed,0x21,0x62,0x6d,0xd6,0x57,0x6c,0x1d,0xa2,0x66,0x9f,0x8c,0x18,0x31,0x4f,0xe8,0xfd,0xc9,0x95,0xbd, - 0x04,0x20,0xc7,0x4b,0xc8,0xcd,0x80,0xe5,0x1a,0x48,0x45,0x59,0x53,0x8c,0x77,0x20,0x82,0xd4,0xb1,0xb6,0x10,0x9c,0xe5,0xe5,0xcf,0x78,0xe7,0x92,0x3f,0xcb,0x76,0x2e,0x10,0xa1,0x95,0xbd, - 0x04,0x20,0xc2,0x4e,0x03,0x61,0x3e,0xed,0xc5,0x7a,0x78,0x3d,0xc2,0xa7,0x4f,0x36,0x6a,0xb4,0xb0,0x3e,0xc4,0xe9,0x5c,0x64,0x1f,0xc8,0x97,0x87,0x57,0x91,0x1c,0x13,0x1c,0x18,0x95,0xbd, - 0x04,0x20,0xc3,0xd1,0xe8,0x19,0xac,0x00,0x45,0x05,0xb1,0x25,0x50,0x9b,0x0c,0xbd,0x23,0x4a,0x0f,0x66,0x10,0x37,0x50,0xf7,0xa9,0xa6,0xd3,0xf3,0x22,0x73,0x33,0x52,0x9c,0x4a,0x95,0xbd, - 0x04,0x20,0xc4,0x73,0x45,0xe6,0x9d,0xbd,0xc4,0x3d,0x55,0x0e,0xdf,0x04,0x8c,0x27,0xa7,0xf8,0x5e,0xd2,0x55,0x0a,0x92,0xc3,0x46,0xb3,0xd8,0x0f,0x26,0x95,0x4f,0x1e,0xd1,0x6e,0x95,0xbd, - 0x04,0x20,0xc9,0x95,0x5a,0xf7,0x9a,0x27,0x09,0x6a,0xa2,0x24,0x65,0xb7,0x07,0xf0,0x28,0xee,0x8b,0xa9,0x5e,0x7c,0x37,0x19,0x14,0xc4,0x36,0x73,0x42,0xd2,0x87,0xae,0xa2,0x47,0x95,0xbd, -}; static const uint8_t chainparams_seed_test[] = { 0x06,0x10,0xfc,0x10,0xef,0xa7,0x0c,0xa6,0x15,0x48,0x0f,0x8c,0x6b,0xb9,0x1c,0xc4,0x63,0xae,0x47,0x9d, @@ -2405,157 +2263,4 @@ static const uint8_t chainparams_seed_test[] = { 0x04,0x20,0xcc,0x99,0x76,0x52,0x43,0xcc,0x45,0x0a,0x49,0x5d,0x3f,0xa5,0x82,0xc3,0xc0,0xdb,0xcf,0xe5,0xda,0xfb,0xb3,0xd0,0xb9,0xd1,0xbc,0x1b,0x15,0x19,0xed,0xe0,0xd1,0x5f,0x47,0x9d, }; -static const uint8_t chainparams_seed_testnet4[] = { - 0x06,0x10,0xfc,0x10,0xef,0xa7,0x0c,0xa6,0x15,0x48,0x0f,0x8c,0x6b,0xb9,0x1c,0xc4,0x63,0xae,0xbc,0xcd, - 0x06,0x10,0xfc,0x1f,0x22,0xc3,0x95,0xdc,0xa3,0xaf,0x4a,0x93,0x82,0x51,0xbe,0xb9,0x18,0x58,0xbc,0xcd, - 0x06,0x10,0xfc,0x32,0x2c,0x16,0xd0,0xd0,0xf1,0xfb,0x3b,0x27,0xc1,0x87,0x8c,0xb5,0x92,0x01,0xbc,0xcd, - 0x06,0x10,0xfc,0xcb,0x02,0x48,0x11,0xa6,0x10,0x42,0x0b,0xca,0x12,0x18,0xf7,0xce,0x7d,0x3d,0xbc,0xcd, - 0x05,0x20,0xfc,0x5b,0xa7,0xb9,0x32,0x9f,0x41,0x48,0x8c,0x04,0x96,0xa0,0x2b,0x21,0x06,0x44,0xbb,0xd2,0x5b,0x29,0x49,0xee,0x50,0xdd,0xb4,0x07,0x44,0x05,0xda,0x88,0x35,0xc7,0x00,0x00, - 0x05,0x20,0x07,0xd2,0xfc,0xb0,0x33,0xab,0x7b,0x03,0x55,0xb7,0x26,0x75,0x91,0x71,0xb5,0x00,0x64,0xee,0x5d,0x8b,0x58,0x63,0x06,0x51,0xc0,0xad,0xf3,0xdd,0xfe,0x73,0x08,0xe7,0x00,0x00, - 0x05,0x20,0x05,0x0d,0x29,0x36,0x0d,0xab,0xb5,0x6f,0x7a,0xa1,0x89,0x72,0x29,0x8b,0xb1,0x69,0xc1,0x72,0x6d,0x0e,0xfd,0x9a,0xaa,0xc7,0xb7,0x7f,0xad,0x65,0x5d,0x91,0x31,0xa2,0x00,0x00, - 0x05,0x20,0x05,0xef,0x61,0x5b,0x30,0x5d,0xb9,0xa3,0xa4,0x2f,0xcd,0x1f,0x52,0x96,0xa3,0x92,0x6a,0xd4,0x62,0x7d,0x03,0xf1,0x3e,0xee,0x43,0xba,0x13,0x0c,0x7b,0x1e,0x78,0xce,0x00,0x00, - 0x05,0x20,0x6a,0xf5,0x02,0x27,0x7b,0xc5,0x8b,0x05,0xaf,0x3b,0x25,0xee,0x22,0x75,0x37,0x66,0x77,0xd1,0x35,0xd5,0x39,0xfd,0x07,0x06,0xd5,0x28,0xbe,0x83,0x33,0x55,0x1e,0x75,0x00,0x00, - 0x05,0x20,0x86,0xff,0xe1,0xb0,0x23,0x83,0xe7,0xc8,0x1a,0xc5,0xf6,0x41,0xa0,0x23,0xe2,0xe1,0x65,0xba,0x83,0xb3,0x1b,0x26,0x1d,0x80,0xde,0x05,0x95,0xeb,0x36,0xbc,0x64,0x05,0x00,0x00, - 0x05,0x20,0x88,0xde,0x4e,0xd8,0xcb,0xef,0xbb,0x8a,0x98,0x88,0x02,0xd4,0x75,0x97,0xbb,0x02,0x81,0x61,0xb3,0xed,0x7e,0x3c,0x15,0xfc,0x12,0x5e,0x9a,0x26,0xcd,0xd8,0x6f,0xd6,0x00,0x00, - 0x01,0x04,0x02,0x3b,0x86,0xf4,0xbc,0xcd, - 0x01,0x04,0x03,0xeb,0xbc,0x5b,0xbc,0xcd, - 0x01,0x04,0x03,0xfa,0x91,0xc5,0xbc,0xcd, - 0x01,0x04,0x05,0xb6,0x04,0x6a,0xbc,0xcd, - 0x01,0x04,0x12,0xaf,0xdc,0xd7,0xbc,0xcd, - 0x01,0x04,0x12,0xbd,0x9c,0x66,0xbc,0xcd, - 0x01,0x04,0x22,0xe8,0x1f,0x6f,0xbc,0xcd, - 0x01,0x04,0x26,0xf2,0xdb,0xdc,0xbc,0xcd, - 0x01,0x04,0x2d,0x5e,0xa8,0x05,0xbc,0xcd, - 0x01,0x04,0x2d,0x8e,0x11,0x8c,0xbc,0xcd, - 0x01,0x04,0x32,0x7e,0x60,0x16,0xbc,0xcd, - 0x01,0x04,0x33,0x4f,0x1d,0xd8,0xbc,0xcd, - 0x01,0x04,0x33,0x51,0xf5,0xda,0xbc,0xcd, - 0x01,0x04,0x36,0x4e,0x5a,0x48,0xbc,0xcd, - 0x01,0x04,0x41,0x6c,0x27,0xab,0xbc,0xcd, - 0x01,0x04,0x42,0x5e,0x7b,0x8d,0xbc,0xcd, - 0x01,0x04,0x4d,0xf7,0x7f,0x47,0xbc,0xcd, - 0x01,0x04,0x4e,0x18,0xb5,0xd7,0xbc,0xcd, - 0x01,0x04,0x52,0x43,0x66,0x0f,0xbc,0xcd, - 0x01,0x04,0x59,0x75,0x98,0x5e,0xbc,0xcd, - 0x01,0x04,0x67,0x63,0xa8,0xcf,0xbc,0xcd, - 0x01,0x04,0x67,0x63,0xa8,0xd3,0xbc,0xcd, - 0x01,0x04,0x67,0xa5,0xc0,0xcb,0xbc,0xcd, - 0x01,0x04,0x67,0xa5,0xc0,0xce,0xbc,0xcd, - 0x01,0x04,0x86,0xc3,0x58,0x38,0xbc,0xcd, - 0x01,0x04,0x87,0xb4,0x63,0x4a,0xbc,0xcd, - 0x01,0x04,0x8a,0xc5,0xbc,0xd4,0xbc,0xcd, - 0x01,0x04,0x94,0x33,0xc4,0x28,0xbc,0xcd, - 0x01,0x04,0x9e,0xdc,0x5a,0x67,0xbc,0xcd, - 0x01,0x04,0xa8,0x77,0x96,0xf7,0xbc,0xcd, - 0x01,0x04,0xac,0xea,0xc5,0xfb,0xbc,0xcd, - 0x01,0x04,0xaf,0x2d,0xb6,0x91,0xbc,0xcd, - 0x01,0x04,0xb9,0xe8,0x46,0xe2,0xbc,0xcd, - 0x01,0x04,0xb9,0xfe,0x61,0x4c,0xbc,0xcd, - 0x01,0x04,0xc0,0x91,0x2c,0x1e,0xbc,0xcd, - 0x01,0x04,0xc0,0xf1,0x83,0x5f,0xbc,0xcd, - 0x01,0x04,0xc1,0x6b,0x6d,0xdc,0xbc,0xcd, - 0x01,0x04,0xc7,0x77,0x8a,0x24,0xbc,0xcd, - 0x01,0x04,0xc7,0xc3,0xf8,0x0b,0xbc,0xcd, - 0x01,0x04,0xcb,0x84,0x5e,0xc4,0xbc,0xcd, - 0x01,0x04,0xd0,0x44,0x04,0x47,0xbc,0xcd, - 0x01,0x04,0xd1,0x92,0x33,0xca,0xbc,0xcd, - 0x01,0x04,0xd1,0x92,0x33,0xcb,0xbc,0xcd, - 0x02,0x10,0x20,0x01,0x41,0xd0,0x00,0x0a,0x55,0x5c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xbc,0xcd, - 0x02,0x10,0x20,0x01,0x05,0xa8,0x41,0x64,0x7a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06,0xbc,0xcd, - 0x02,0x10,0x20,0x01,0x0d,0xf6,0x72,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x02,0xbc,0xcd, - 0x02,0x10,0x20,0x01,0x0d,0xf6,0x72,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x03,0xbc,0xcd, - 0x02,0x10,0x20,0x01,0x0d,0xf6,0x72,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x04,0xbc,0xcd, - 0x02,0x10,0x20,0x01,0x0d,0xf6,0x72,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x05,0xbc,0xcd, - 0x02,0x10,0x20,0x01,0x0d,0xf6,0x72,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x07,0xbc,0xcd, - 0x02,0x10,0x20,0x01,0x0d,0xf6,0x72,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x08,0xbc,0xcd, - 0x02,0x10,0x20,0x01,0x0d,0xf6,0x72,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x09,0xbc,0xcd, - 0x02,0x10,0x20,0x01,0x0d,0xf6,0x72,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x10,0xbc,0xcd, - 0x02,0x10,0x20,0x01,0x0d,0xf6,0x72,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x11,0xbc,0xcd, - 0x02,0x10,0x20,0x01,0x0d,0xf6,0x72,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x12,0xbc,0xcd, - 0x02,0x10,0x24,0x01,0xb1,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x02,0xbc,0xcd, - 0x02,0x10,0x24,0x01,0xb1,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x04,0xbc,0xcd, - 0x02,0x10,0x24,0x01,0xb1,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x05,0xbc,0xcd, - 0x02,0x10,0x24,0x01,0xb1,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x06,0xbc,0xcd, - 0x02,0x10,0x24,0x01,0xb1,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x07,0xbc,0xcd, - 0x02,0x10,0x24,0x01,0xb1,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x08,0xbc,0xcd, - 0x02,0x10,0x24,0x01,0xb1,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x09,0xbc,0xcd, - 0x02,0x10,0x24,0x01,0xb1,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x10,0xbc,0xcd, - 0x02,0x10,0x24,0x01,0xb1,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x11,0xbc,0xcd, - 0x02,0x10,0x24,0x01,0xb1,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x02,0x04,0xbc,0xcd, - 0x02,0x10,0x24,0x05,0x12,0x04,0xc2,0x35,0x97,0x00,0x60,0x5f,0x50,0x35,0xd5,0x1b,0xb0,0x5b,0xbc,0xcd, - 0x02,0x10,0x24,0x05,0x12,0x04,0xc2,0x35,0x97,0x00,0x91,0x41,0x40,0x2c,0xde,0x91,0x81,0xc0,0xbc,0xcd, - 0x02,0x10,0x24,0x05,0x12,0x04,0xc2,0x35,0x97,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,0xbc,0xcd, - 0x02,0x10,0x26,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0xf0,0x3c,0x91,0xff,0xfe,0x5b,0x4c,0xf3,0xbc,0xcd, - 0x02,0x10,0x26,0x02,0xff,0xb6,0x00,0x04,0x81,0x85,0xf8,0x16,0x3e,0xff,0xfe,0x4a,0xac,0xbf,0xbc,0xcd, - 0x02,0x10,0x26,0x02,0xff,0xb6,0x00,0x04,0x81,0x85,0xf8,0x16,0x3e,0xff,0xfe,0x4d,0x6d,0xae,0xbc,0xcd, - 0x02,0x10,0x26,0x02,0xff,0xb6,0x00,0x04,0x81,0x85,0xf8,0x16,0x3e,0xff,0xfe,0x50,0xb0,0x78,0xbc,0xcd, - 0x02,0x10,0x26,0x02,0xff,0xb6,0x00,0x04,0x81,0x85,0xf8,0x16,0x3e,0xff,0xfe,0x8a,0x31,0x55,0xbc,0xcd, - 0x02,0x10,0x26,0x04,0x2d,0xc0,0x02,0x00,0x13,0xda,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xbc,0xcd, - 0x02,0x10,0x26,0x05,0x33,0x80,0x42,0x2e,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0xbc,0xcd, - 0x02,0x10,0x26,0x05,0xa1,0x41,0x22,0x40,0x42,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xbc,0xcd, - 0x02,0x10,0x26,0x07,0x53,0x00,0x02,0x05,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xb0,0xbc,0xcd, - 0x02,0x10,0x26,0x07,0x53,0x00,0x00,0x60,0x7f,0x72,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xbc,0xcd, - 0x02,0x10,0x26,0x20,0x00,0x6e,0xa0,0xa0,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x71,0xbc,0xcd, - 0x02,0x10,0x2a,0x01,0x04,0xf8,0x01,0x72,0x33,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xbc,0xcd, - 0x02,0x10,0x2a,0x01,0x04,0xf8,0x21,0x90,0x16,0x92,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xbc,0xcd, - 0x02,0x10,0x2a,0x01,0x04,0xf8,0x02,0x62,0x13,0x9f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xbc,0xcd, - 0x02,0x10,0x2a,0x01,0x04,0xf9,0x30,0x80,0x34,0x96,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xbc,0xcd, - 0x02,0x10,0x2a,0x01,0x0e,0x0a,0x0e,0x6e,0x6b,0xb0,0x02,0xe0,0x4c,0xff,0xfe,0x68,0x02,0x32,0xbc,0xcd, - 0x02,0x10,0x2a,0x02,0xc2,0x02,0x22,0x34,0x76,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xbc,0xcd, - 0x02,0x10,0x2a,0x03,0x40,0x00,0x00,0x42,0x02,0x2f,0x08,0x16,0xbb,0xff,0xfe,0x4c,0xd4,0xa1,0xbc,0xcd, - 0x02,0x10,0x2a,0x0a,0x8d,0xc0,0xa0,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xbc,0xcd, - 0x02,0x10,0x2a,0x0a,0x8d,0xc0,0xa0,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0xbc,0xcd, - 0x02,0x10,0x2a,0x0c,0xb6,0x41,0x06,0xf1,0x00,0x8c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xbc,0xcd, - 0x04,0x20,0xd4,0x97,0x3c,0xc6,0x1f,0x9c,0xbb,0x3e,0x21,0x7d,0x6a,0x18,0xff,0xf5,0xc6,0xd2,0x55,0x20,0xd8,0x69,0x61,0x82,0x3c,0x2b,0x3d,0x5a,0x48,0xe8,0x46,0xe4,0x66,0x56,0xbc,0xcd, - 0x04,0x20,0xe5,0x32,0x48,0xb8,0x7a,0xb4,0x61,0x34,0xd0,0x04,0x07,0xab,0x1e,0x6e,0x83,0x1c,0x35,0x23,0x6c,0x46,0x2d,0x15,0xc5,0x1e,0x0e,0x9c,0x25,0x01,0xca,0xef,0xb0,0xd8,0xbc,0xcd, - 0x04,0x20,0xef,0xd5,0xcd,0xac,0xc5,0xd0,0x90,0xe8,0xaf,0xe6,0x2e,0x7d,0x0a,0x6f,0x0e,0xd7,0xf2,0x35,0x39,0x23,0xfa,0xc3,0x98,0xdb,0x22,0x0a,0xa5,0x0d,0xd2,0x89,0x9c,0xba,0xbc,0xcd, - 0x04,0x20,0xe9,0x55,0x9e,0xa1,0x27,0xff,0x84,0x62,0xda,0xb7,0xcf,0x1f,0x85,0xf0,0x31,0xe1,0xc8,0xa8,0x15,0x68,0x4e,0x7e,0x3e,0x7b,0xeb,0x19,0x31,0xbb,0xb0,0x9a,0x9c,0x61,0xbc,0xcd, - 0x04,0x20,0xeb,0xfc,0x48,0x56,0x28,0x6c,0xbd,0x54,0xfe,0x1b,0x9b,0xc6,0xb4,0x9e,0x6e,0x65,0x3c,0xd8,0x01,0x84,0x42,0xc3,0x4c,0xf6,0x49,0x6d,0x34,0x8d,0xef,0x75,0x26,0xb2,0xbc,0xcd, - 0x04,0x20,0xec,0x87,0x99,0x6a,0x14,0xde,0x0c,0x1e,0x71,0x36,0x77,0x3b,0x8d,0x29,0x81,0x6c,0x05,0xe4,0x27,0x2f,0x68,0xc1,0x06,0xf3,0x79,0x33,0x4d,0x24,0x5a,0x1f,0x65,0xfc,0xbc,0xcd, - 0x04,0x20,0xf1,0xbc,0x3b,0x4c,0x38,0xff,0x10,0x2d,0x18,0xcd,0xca,0x82,0x58,0x63,0xf2,0x04,0x96,0xe7,0x9d,0xdf,0x74,0x7d,0x9e,0x50,0x03,0xfe,0xfe,0x2d,0x4e,0x1a,0xe1,0x53,0xbc,0xcd, - 0x04,0x20,0xf3,0xdd,0xb2,0x6b,0xf3,0xe3,0x6e,0x65,0xcb,0x6c,0xb3,0x5d,0x29,0xbf,0x1c,0xf8,0xa2,0x79,0x8b,0x60,0x27,0x8a,0x29,0x37,0x98,0xc1,0x4f,0xd1,0x94,0x40,0x86,0xe1,0xbc,0xcd, - 0x04,0x20,0xf9,0x85,0x22,0xe1,0xb8,0x6c,0x75,0xe1,0x60,0x1c,0xa1,0x75,0x4f,0xf0,0x37,0xe7,0xd2,0xcc,0x81,0x03,0x42,0x8f,0xe5,0xc1,0xdf,0x6d,0x3b,0x4b,0x63,0xe1,0x88,0x37,0xbc,0xcd, - 0x04,0x20,0xfa,0x47,0xcd,0x68,0xf0,0x25,0x63,0x9d,0xef,0x80,0xbe,0xca,0x7f,0xfe,0xd9,0xb5,0xbe,0x25,0xb6,0x3c,0x53,0xf0,0xe9,0x6b,0xae,0x27,0xb8,0xd4,0x14,0xde,0xd6,0xc2,0xbc,0xcd, - 0x04,0x20,0xfa,0xac,0x7f,0xc4,0xdb,0x07,0x09,0xd5,0x99,0x35,0xc0,0x49,0x24,0x5f,0x27,0xb6,0x6f,0x52,0xf8,0x70,0x76,0xcc,0x2e,0x1f,0xea,0xed,0x50,0xbb,0x30,0x69,0xac,0xf2,0xbc,0xcd, - 0x04,0x20,0xfc,0x97,0x74,0xe7,0xe7,0x63,0xe9,0xe8,0xbf,0x01,0x5f,0xb4,0x43,0x10,0x73,0x3f,0x45,0xcc,0xbb,0xcc,0xb6,0x59,0xc9,0x0c,0x35,0x84,0xec,0x2e,0xe5,0x0a,0xad,0xf8,0xbc,0xcd, - 0x04,0x20,0xfd,0xe3,0xa5,0x78,0xc6,0xe7,0xc4,0x05,0xc9,0x4b,0xd9,0x19,0x58,0x02,0xbc,0xd2,0x4b,0xe5,0xf0,0x73,0x32,0x2c,0x4a,0xe3,0x55,0xbf,0xcc,0x44,0xf8,0x7a,0x74,0x8f,0xbc,0xcd, - 0x04,0x20,0x07,0xb0,0x84,0x9a,0xcd,0xe5,0x66,0xc6,0x1d,0x7f,0xa6,0x03,0x30,0xd3,0x15,0x9a,0xfe,0xc9,0xa7,0xe0,0x8a,0xc7,0xd2,0xf0,0x52,0x84,0xaf,0xc9,0x60,0x88,0x47,0x0d,0xbc,0xcd, - 0x04,0x20,0x04,0x00,0x16,0xf3,0x5c,0x8b,0x3f,0x08,0x74,0xa0,0xb6,0x88,0x21,0x29,0x59,0xb9,0x47,0x6e,0xfd,0xcd,0x12,0x2a,0x98,0xd2,0x31,0x8b,0x7b,0x63,0x24,0x70,0x4c,0x2f,0xbc,0xcd, - 0x04,0x20,0x16,0xa9,0xf5,0x67,0x4f,0xaf,0xeb,0x8a,0x15,0xd5,0xb3,0x46,0xea,0x44,0x98,0x82,0x12,0x11,0xfd,0x56,0x7e,0x3e,0x06,0xd1,0x65,0xe1,0x6f,0x3d,0x8f,0x61,0xa1,0x75,0xbc,0xcd, - 0x04,0x20,0x12,0xe1,0x1d,0x4d,0xda,0x8f,0x8a,0xde,0x25,0xde,0x2f,0xef,0x8d,0x8d,0xef,0xb9,0x9b,0xc2,0x5a,0xad,0x65,0x83,0x79,0x0e,0x31,0x3b,0x49,0x2c,0x00,0x4c,0xb7,0x5a,0xbc,0xcd, - 0x04,0x20,0x1b,0x64,0x7c,0xde,0x3e,0x74,0x92,0x5d,0x2f,0xa6,0x4c,0x82,0x09,0xcd,0x33,0x71,0x0a,0x65,0x65,0x83,0xdb,0xf6,0x51,0xe0,0x13,0x8f,0x57,0x3c,0xeb,0x9b,0xcc,0x9f,0xbc,0xcd, - 0x04,0x20,0x20,0x4f,0x32,0x89,0x89,0x3a,0x16,0x28,0x4e,0x8b,0x97,0x37,0xf7,0xde,0x9e,0xe8,0xf2,0xd8,0x29,0xf3,0xec,0x2b,0xbc,0x12,0x1e,0xca,0x1e,0xd8,0x0f,0xe8,0x11,0xf3,0xbc,0xcd, - 0x04,0x20,0x22,0x78,0xec,0x87,0x6e,0xeb,0xf3,0x5a,0xce,0xa6,0x00,0x23,0x2e,0xb8,0x39,0xb5,0x4f,0x12,0xcb,0x62,0x3a,0x99,0x50,0xf5,0xf7,0x61,0x07,0x85,0x0f,0x81,0x31,0xfc,0xbc,0xcd, - 0x04,0x20,0x26,0x43,0x0d,0xe0,0x65,0xbb,0x0d,0x53,0x04,0x2d,0xfb,0x23,0x7e,0xa7,0x38,0x41,0xbd,0x3c,0xeb,0x29,0x50,0x20,0x39,0xaa,0xff,0x05,0x5a,0x84,0xc6,0x7d,0x8a,0x2b,0xbc,0xcd, - 0x04,0x20,0x2c,0x90,0x98,0xad,0x66,0xc9,0x88,0x6e,0x3c,0x1d,0x20,0x61,0xc8,0x63,0x72,0xb3,0x1e,0xbb,0xab,0x35,0xa5,0x52,0x8e,0xca,0xd3,0xdf,0xa1,0x4c,0x73,0x43,0xcb,0x61,0xbc,0xcd, - 0x04,0x20,0x2d,0x42,0xf7,0xb5,0xc3,0x1f,0x06,0xbb,0xd1,0x79,0x5d,0x4e,0x85,0x1b,0x48,0x4c,0xdb,0x72,0x30,0x49,0x4b,0xca,0x71,0x1b,0x51,0x8b,0x9f,0x46,0xf3,0xa0,0x81,0xdf,0xbc,0xcd, - 0x04,0x20,0x2d,0xa5,0x11,0x44,0xed,0x31,0x91,0xb8,0x63,0xb1,0x91,0x50,0x01,0xec,0x56,0x23,0xf6,0x12,0xfe,0x8e,0xa8,0xa8,0xf3,0x38,0x4a,0x0b,0x66,0x91,0x16,0xae,0x85,0xf3,0xbc,0xcd, - 0x04,0x20,0x30,0xbd,0xe6,0x51,0x0a,0x84,0x33,0x7b,0x27,0x53,0x1d,0x6a,0x07,0xf8,0xcf,0x10,0x51,0x39,0x9d,0x35,0x90,0x81,0x63,0x28,0x4b,0x43,0x39,0x53,0x30,0x09,0x88,0x84,0xbc,0xcd, - 0x04,0x20,0x35,0x13,0x72,0xba,0x27,0xb4,0xb3,0x1c,0x74,0xa0,0x5d,0x5a,0x08,0x94,0x58,0x02,0x53,0x7b,0xca,0x95,0x81,0x2b,0x7f,0x19,0x5e,0x61,0x1d,0x4e,0xba,0x23,0x8d,0xed,0xbc,0xcd, - 0x04,0x20,0x38,0x2a,0xa7,0x1e,0xa9,0x39,0xbb,0x33,0x2c,0x23,0x20,0x8b,0xca,0x14,0xf9,0xe9,0x25,0xb2,0xef,0x62,0x9a,0x76,0x1f,0x2d,0xc4,0x0a,0x78,0xf4,0x7a,0x11,0x9a,0x48,0xbc,0xcd, - 0x04,0x20,0x38,0x79,0xc2,0x1b,0x24,0xe9,0xd2,0x14,0x6d,0xba,0x88,0xbd,0x6e,0x3e,0xc0,0x3c,0x7d,0x95,0xcc,0x5c,0x42,0xcb,0x94,0x37,0x6a,0x50,0xd1,0xa8,0xb1,0xd9,0xad,0xd6,0xbc,0xcd, - 0x04,0x20,0x46,0xb4,0x42,0x9f,0x88,0x9a,0xc4,0x59,0x9e,0xa0,0x05,0x45,0x9d,0x46,0xa8,0x35,0x39,0x7f,0x26,0x15,0x5d,0xa8,0xa9,0x67,0x9c,0x0d,0x15,0x25,0x9c,0xdf,0xf0,0x64,0xbc,0xcd, - 0x04,0x20,0x47,0xb6,0xbd,0x60,0xb8,0xe9,0x38,0xaa,0xb3,0xa2,0xf2,0xc1,0xef,0xc2,0xef,0x87,0xb2,0xde,0x5c,0x23,0xbf,0x84,0x36,0x73,0xfc,0x62,0x17,0x5e,0x0c,0x0c,0x25,0x37,0xbc,0xcd, - 0x04,0x20,0x44,0x6d,0x88,0x8d,0x42,0x88,0x86,0x6b,0x4e,0x4b,0x98,0xa3,0x02,0x5e,0x18,0x5d,0x85,0xb2,0x65,0x27,0x3c,0x41,0xfa,0x71,0x1b,0x32,0xac,0xa9,0x93,0x22,0xa4,0xf7,0xbc,0xcd, - 0x04,0x20,0x49,0x70,0x91,0x19,0x13,0x3b,0x15,0xe2,0xb1,0xa3,0x31,0xba,0xa5,0xa6,0x73,0xa7,0x45,0x35,0xb9,0x42,0xac,0x13,0x59,0x46,0xf1,0xbd,0x5a,0x4a,0x9e,0xd7,0xef,0xee,0xbc,0xcd, - 0x04,0x20,0x51,0x7d,0x0d,0x5b,0x20,0xd1,0x02,0xef,0x8a,0xeb,0x6f,0x48,0x91,0x25,0x36,0xac,0x49,0x6e,0x54,0x3a,0x39,0x79,0x51,0xf6,0xce,0xe3,0x71,0x90,0xb5,0x35,0xde,0x04,0xbc,0xcd, - 0x04,0x20,0x53,0xbb,0xd2,0x69,0x13,0xc2,0x01,0x02,0x09,0x53,0x3b,0x1a,0xd0,0x8a,0xbe,0x08,0x6c,0xb5,0xfe,0x33,0x1a,0x2b,0xdd,0x7d,0x94,0x74,0x06,0xf3,0x70,0xf8,0x26,0x91,0xbc,0xcd, - 0x04,0x20,0x60,0x2b,0x5b,0x5e,0x72,0xe9,0x76,0x0b,0xd3,0x3c,0x16,0x13,0x07,0xe7,0xfd,0xa9,0x10,0x95,0x0d,0x43,0xa1,0x01,0x52,0x28,0x3d,0x3a,0x01,0xef,0xe5,0x5a,0xef,0xc8,0xbc,0xcd, - 0x04,0x20,0x60,0xd1,0x61,0xa1,0x34,0x13,0x85,0x89,0x0e,0xb7,0xe8,0xd5,0xa4,0x61,0xdd,0xb4,0x81,0x5d,0x90,0xf8,0x41,0x8c,0x43,0x64,0xaa,0xd9,0x32,0x51,0x08,0x9e,0x6c,0xa6,0xbc,0xcd, - 0x04,0x20,0x68,0x61,0xed,0x9e,0xfe,0xdb,0xe5,0x11,0x42,0xba,0xf5,0x00,0x36,0x0a,0xea,0x20,0x1f,0xff,0x51,0xba,0xb8,0x1c,0xc0,0x93,0x88,0xab,0x92,0xa9,0xef,0x12,0x09,0x9d,0xbc,0xcd, - 0x04,0x20,0x6c,0xbb,0xe2,0x35,0xe2,0x0a,0x0c,0x2d,0x0d,0xd5,0x8a,0x76,0x03,0x0c,0x26,0xa0,0xc8,0x16,0x5a,0x66,0xe6,0xc7,0xaf,0xda,0x6f,0xab,0x3a,0xdb,0x39,0x84,0x14,0xdb,0xbc,0xcd, - 0x04,0x20,0x72,0xfb,0x11,0x66,0x77,0xbd,0x0d,0x3a,0x3f,0xac,0x95,0x8e,0xa9,0xf8,0xe3,0x2f,0x1f,0x51,0x20,0x68,0x66,0x36,0x3a,0x79,0xd6,0xa1,0x5a,0x90,0x75,0x71,0xd8,0xb2,0xbc,0xcd, - 0x04,0x20,0x7c,0x50,0xbb,0xef,0xd8,0x47,0xac,0x8c,0xf1,0x6b,0xff,0xe6,0x07,0xc9,0x59,0xb6,0x4f,0xd7,0x35,0xe7,0x8b,0x5b,0xeb,0x74,0x7d,0xf6,0x63,0x91,0x82,0x7c,0x52,0x5d,0xbc,0xcd, - 0x04,0x20,0x83,0x07,0xd8,0x57,0x07,0x68,0x1b,0x04,0xfa,0xd8,0x2f,0x14,0xb8,0xd4,0xb0,0x76,0x1f,0x4c,0xfa,0xe9,0x02,0x4f,0x7d,0x37,0x5f,0xd5,0x63,0xd4,0x2f,0xed,0x5d,0xb0,0xbc,0xcd, - 0x04,0x20,0x83,0x2d,0xfd,0x93,0x99,0x3e,0x91,0xe7,0xd5,0x8b,0x35,0xfb,0xee,0x6a,0xb6,0x9e,0x1a,0x80,0x98,0xe6,0xaa,0x46,0xe7,0x5f,0xbf,0xe1,0xd3,0x7b,0xd7,0xe5,0xa8,0xf4,0xbc,0xcd, - 0x04,0x20,0x88,0x0f,0xcf,0x1e,0x3b,0x73,0xf0,0x50,0xa1,0x51,0x55,0x03,0xe3,0x6b,0x68,0x1c,0x58,0xbd,0x50,0xcc,0x20,0x16,0x99,0xf0,0x22,0xba,0xd3,0xe6,0xb9,0xae,0xb8,0xe0,0xbc,0xcd, - 0x04,0x20,0x8a,0x31,0x53,0x67,0x0d,0xa6,0x53,0xaa,0xdf,0x40,0xcf,0x81,0xf5,0x54,0x40,0xe8,0x71,0x33,0xb1,0x3e,0x89,0x83,0xc0,0x4a,0x24,0x10,0xed,0xea,0x95,0x95,0x9e,0xf7,0xbc,0xcd, - 0x04,0x20,0x8d,0x7e,0xbe,0x9a,0x69,0x84,0x7a,0xde,0xb5,0x64,0x8c,0x80,0xa2,0xd3,0x36,0x39,0x4a,0xbc,0x15,0x19,0xaf,0x44,0xc9,0xa1,0x19,0x5c,0x9b,0xde,0x72,0x14,0x65,0x68,0xbc,0xcd, - 0x04,0x20,0xa9,0x61,0x7c,0x49,0x3f,0x72,0xef,0x29,0x98,0xea,0x71,0xc9,0x97,0x11,0x81,0x4b,0x65,0x8a,0xbd,0xfa,0x79,0xfe,0xa1,0x71,0x20,0x04,0xeb,0x2c,0xe2,0xfa,0x02,0x73,0xbc,0xcd, - 0x04,0x20,0xb1,0x3b,0x19,0x01,0x75,0xcf,0x8a,0x77,0xef,0x7c,0xea,0x70,0x38,0x80,0x46,0xf5,0xb1,0x3b,0xdb,0xb2,0x64,0xaf,0x93,0x52,0x4b,0x4d,0x4c,0x27,0x24,0x03,0xc1,0x6b,0xbc,0xcd, - 0x04,0x20,0xb2,0xaa,0x0b,0xcc,0xb3,0x7d,0x98,0xca,0xc5,0xf3,0x80,0x2b,0x7f,0x32,0xc7,0x88,0xac,0x82,0x08,0x2e,0x1c,0xe4,0x7a,0x11,0xb5,0x74,0xf6,0x24,0x9a,0xf2,0xc0,0xa9,0xbc,0xcd, - 0x04,0x20,0xbf,0xbc,0x09,0xf1,0xe4,0x5f,0x1c,0x3c,0x73,0x56,0xa2,0x57,0xca,0x3e,0x3a,0x98,0x68,0xb0,0xbd,0xbd,0xe3,0x73,0x58,0xab,0xe6,0x73,0x33,0x5e,0x0e,0xca,0x38,0x32,0xbc,0xcd, - 0x04,0x20,0xca,0x67,0x30,0x12,0x49,0x3a,0x7e,0x04,0x2f,0x9b,0xf8,0x0d,0xc2,0x30,0x74,0x2c,0x7f,0xfe,0x9f,0xb1,0x99,0x9c,0xe3,0xac,0x22,0x07,0x63,0x61,0x72,0x24,0xf0,0xe3,0xbc,0xcd, - 0x04,0x20,0xcb,0x07,0xc2,0x43,0xd2,0xad,0x9b,0xb8,0x19,0x9d,0xf0,0xf0,0xe1,0xaa,0x60,0x36,0x51,0xbb,0xbb,0x92,0x65,0xc8,0x13,0x24,0x6a,0xd2,0x42,0x95,0x05,0x95,0x6f,0xcc,0xbc,0xcd, -}; #endif // BITCOIN_CHAINPARAMSSEEDS_H diff --git a/src/common/args.cpp b/src/common/args.cpp index 833a0b28bd..abbcd7f306 100644 --- a/src/common/args.cpp +++ b/src/common/args.cpp @@ -158,9 +158,7 @@ std::list ArgsManager::GetUnrecognizedSections() const // Section names to be recognized in the config file. static const std::set available_sections{ ChainTypeToString(ChainType::REGTEST), - ChainTypeToString(ChainType::SIGNET), ChainTypeToString(ChainType::TESTNET), - ChainTypeToString(ChainType::TESTNET4), ChainTypeToString(ChainType::MAIN), }; @@ -797,13 +795,11 @@ std::variant ArgsManager::GetChainArg() const }; const bool fRegTest = get_net("-regtest"); - const bool fSigNet = get_net("-signet"); const bool fTestNet = get_net("-testnet"); - const bool fTestNet4 = get_net("-testnet4"); const auto chain_arg = GetArg("-chain"); - if ((int)chain_arg.has_value() + (int)fRegTest + (int)fSigNet + (int)fTestNet + (int)fTestNet4 > 1) { - throw std::runtime_error("Invalid combination of -regtest, -signet, -testnet, -testnet4 and -chain. Can use at most one."); + if ((int)chain_arg.has_value() + (int)fRegTest + (int)fTestNet > 1) { + throw std::runtime_error("Invalid combination of -regtest, -testnet and -chain. Can use at most one."); } if (chain_arg) { if (auto parsed = ChainTypeFromString(*chain_arg)) return *parsed; @@ -811,9 +807,7 @@ std::variant ArgsManager::GetChainArg() const return *chain_arg; } if (fRegTest) return ChainType::REGTEST; - if (fSigNet) return ChainType::SIGNET; if (fTestNet) return ChainType::TESTNET; - if (fTestNet4) return ChainType::TESTNET4; return ChainType::MAIN; } diff --git a/src/init.cpp b/src/init.cpp index 70615a191b..a50ce5557e 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -450,13 +450,9 @@ void SetupServerArgs(ArgsManager& argsman, bool can_listen_ipc) const auto defaultBaseParams = CreateBaseChainParams(ChainType::MAIN); const auto testnetBaseParams = CreateBaseChainParams(ChainType::TESTNET); - const auto testnet4BaseParams = CreateBaseChainParams(ChainType::TESTNET4); - const auto signetBaseParams = CreateBaseChainParams(ChainType::SIGNET); const auto regtestBaseParams = CreateBaseChainParams(ChainType::REGTEST); const auto defaultChainParams = CreateChainParams(argsman, ChainType::MAIN); const auto testnetChainParams = CreateChainParams(argsman, ChainType::TESTNET); - const auto testnet4ChainParams = CreateChainParams(argsman, ChainType::TESTNET4); - const auto signetChainParams = CreateChainParams(argsman, ChainType::SIGNET); const auto regtestChainParams = CreateChainParams(argsman, ChainType::REGTEST); // Hidden Options @@ -469,7 +465,7 @@ void SetupServerArgs(ArgsManager& argsman, bool can_listen_ipc) #if HAVE_SYSTEM argsman.AddArg("-alertnotify=", "Execute command when an alert is raised (%s in cmd is replaced by message)", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); #endif - argsman.AddArg("-assumevalid=", strprintf("If this block is in the chain assume that it and its ancestors are valid and potentially skip their script verification (0 to verify all, default: %s, testnet3: %s, testnet4: %s, signet: %s)", defaultChainParams->GetConsensus().defaultAssumeValid.GetHex(), testnetChainParams->GetConsensus().defaultAssumeValid.GetHex(), testnet4ChainParams->GetConsensus().defaultAssumeValid.GetHex(), signetChainParams->GetConsensus().defaultAssumeValid.GetHex()), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); + argsman.AddArg("-assumevalid=", strprintf("If this block is in the chain assume that it and its ancestors are valid and potentially skip their script verification (0 to verify all, default: %s, testnet3: %s)", defaultChainParams->GetConsensus().defaultAssumeValid.GetHex(), testnetChainParams->GetConsensus().defaultAssumeValid.GetHex()), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); argsman.AddArg("-blocksdir=", "Specify directory to hold blocks subdirectory for *.dat files (default: )", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); argsman.AddArg("-blocksxor", strprintf("Whether an XOR-key applies to blocksdir *.dat files. " @@ -495,7 +491,7 @@ void SetupServerArgs(ArgsManager& argsman, bool can_listen_ipc) argsman.AddArg("-maxmempool=", strprintf("Keep the transaction memory pool below megabytes (default: %u)", DEFAULT_MAX_MEMPOOL_SIZE_MB), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); argsman.AddArg("-maxorphantx=", strprintf("Keep at most unconnectable transactions in memory (default: %u)", DEFAULT_MAX_ORPHAN_TRANSACTIONS), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); argsman.AddArg("-mempoolexpiry=", strprintf("Do not keep transactions in the mempool longer than hours (default: %u)", DEFAULT_MEMPOOL_EXPIRY_HOURS), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); - argsman.AddArg("-minimumchainwork=", strprintf("Minimum work assumed to exist on a valid chain in hex (default: %s, testnet3: %s, testnet4: %s, signet: %s)", defaultChainParams->GetConsensus().nMinimumChainWork.GetHex(), testnetChainParams->GetConsensus().nMinimumChainWork.GetHex(), testnet4ChainParams->GetConsensus().nMinimumChainWork.GetHex(), signetChainParams->GetConsensus().nMinimumChainWork.GetHex()), ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::OPTIONS); + argsman.AddArg("-minimumchainwork=", strprintf("Minimum work assumed to exist on a valid chain in hex (default: %s, testnet3: %s)", defaultChainParams->GetConsensus().nMinimumChainWork.GetHex(), testnetChainParams->GetConsensus().nMinimumChainWork.GetHex()), ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::OPTIONS); argsman.AddArg("-par=", strprintf("Set the number of script verification threads (0 = auto, up to %d, <0 = leave that many cores free, default: %d)", MAX_SCRIPTCHECK_THREADS, DEFAULT_SCRIPTCHECK_THREADS), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); argsman.AddArg("-persistmempool", strprintf("Whether to save the mempool on shutdown and load on restart (default: %u)", DEFAULT_PERSIST_MEMPOOL), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); @@ -524,7 +520,7 @@ void SetupServerArgs(ArgsManager& argsman, bool can_listen_ipc) argsman.AddArg("-addnode=", strprintf("Add a node to connect to and attempt to keep the connection open (see the addnode RPC help for more info). This option can be specified multiple times to add multiple nodes; connections are limited to %u at a time and are counted separately from the -maxconnections limit.", MAX_ADDNODE_CONNECTIONS), ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::CONNECTION); argsman.AddArg("-asmap=", strprintf("Specify asn mapping used for bucketing of the peers (default: %s). Relative paths will be prefixed by the net-specific datadir location.", DEFAULT_ASMAP_FILENAME), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION); argsman.AddArg("-bantime=", strprintf("Default duration (in seconds) of manually configured bans (default: %u)", DEFAULT_MISBEHAVING_BANTIME), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION); - argsman.AddArg("-bind=[:][=onion]", strprintf("Bind to given address and always listen on it (default: 0.0.0.0). Use [host]:port notation for IPv6. Append =onion to tag any incoming connections to that address and port as incoming Tor connections (default: 127.0.0.1:%u=onion, testnet3: 127.0.0.1:%u=onion, testnet4: 127.0.0.1:%u=onion, signet: 127.0.0.1:%u=onion, regtest: 127.0.0.1:%u=onion)", defaultChainParams->GetDefaultPort() + 1, testnetChainParams->GetDefaultPort() + 1, testnet4ChainParams->GetDefaultPort() + 1, signetChainParams->GetDefaultPort() + 1, regtestChainParams->GetDefaultPort() + 1), ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::CONNECTION); + argsman.AddArg("-bind=[:][=onion]", strprintf("Bind to given address and always listen on it (default: 0.0.0.0). Use [host]:port notation for IPv6. Append =onion to tag any incoming connections to that address and port as incoming Tor connections (default: 127.0.0.1:%u=onion, testnet3: 127.0.0.1:%u=onion, regtest: 127.0.0.1:%u=onion)", defaultChainParams->GetDefaultPort() + 1, testnetChainParams->GetDefaultPort() + 1, regtestChainParams->GetDefaultPort() + 1), ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::CONNECTION); argsman.AddArg("-cjdnsreachable", "If set, then this host is configured for CJDNS (connecting to fc00::/8 addresses would lead us to the CJDNS network, see doc/cjdns.md) (default: 0)", ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION); argsman.AddArg("-connect=", "Connect only to the specified node; -noconnect disables automatic connections (the rules for this peer are the same as for -addnode). This option can be specified multiple times to connect to multiple nodes.", ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::CONNECTION); argsman.AddArg("-discover", "Discover own IP addresses (default: 1 when listening and no -externalip or -proxy)", ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION); @@ -551,7 +547,7 @@ void SetupServerArgs(ArgsManager& argsman, bool can_listen_ipc) argsman.AddArg("-peerbloomfilters", strprintf("Support filtering of blocks and transaction with bloom filters (default: %u)", DEFAULT_PEERBLOOMFILTERS), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION); argsman.AddArg("-peerblockfilters", strprintf("Serve compact block filters to peers per BIP 157 (default: %u)", DEFAULT_PEERBLOCKFILTERS), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION); argsman.AddArg("-txreconciliation", strprintf("Enable transaction reconciliations per BIP 330 (default: %d)", DEFAULT_TXRECONCILIATION_ENABLE), ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::CONNECTION); - argsman.AddArg("-port=", strprintf("Listen for connections on (default: %u, testnet3: %u, testnet4: %u, signet: %u, regtest: %u). Not relevant for I2P (see doc/i2p.md). If set to a value x, the default onion listening port will be set to x+1.", defaultChainParams->GetDefaultPort(), testnetChainParams->GetDefaultPort(), testnet4ChainParams->GetDefaultPort(), signetChainParams->GetDefaultPort(), regtestChainParams->GetDefaultPort()), ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::CONNECTION); + argsman.AddArg("-port=", strprintf("Listen for connections on (default: %u, testnet3: %u, regtest: %u). Not relevant for I2P (see doc/i2p.md). If set to a value x, the default onion listening port will be set to x+1.", defaultChainParams->GetDefaultPort(), testnetChainParams->GetDefaultPort(), regtestChainParams->GetDefaultPort()), ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::CONNECTION); #ifdef HAVE_SOCKADDR_UN argsman.AddArg("-proxy=", "Connect through SOCKS5 proxy, set -noproxy to disable (default: disabled). May be a local file path prefixed with 'unix:' if the proxy supports it.", ArgsManager::ALLOW_ANY | ArgsManager::DISALLOW_ELISION, OptionsCategory::CONNECTION); #else @@ -661,7 +657,7 @@ void SetupServerArgs(ArgsManager& argsman, bool can_listen_ipc) argsman.AddArg("-rpccookiefile=", "Location of the auth cookie. Relative paths will be prefixed by a net-specific datadir location. (default: data dir)", ArgsManager::ALLOW_ANY, OptionsCategory::RPC); argsman.AddArg("-rpccookieperms=", strprintf("Set permissions on the RPC auth cookie file so that it is readable by [owner|group|all] (default: owner [via umask 0077])"), ArgsManager::ALLOW_ANY, OptionsCategory::RPC); argsman.AddArg("-rpcpassword=", "Password for JSON-RPC connections", ArgsManager::ALLOW_ANY | ArgsManager::SENSITIVE, OptionsCategory::RPC); - argsman.AddArg("-rpcport=", strprintf("Listen for JSON-RPC connections on (default: %u, testnet3: %u, testnet4: %u, signet: %u, regtest: %u)", defaultBaseParams->RPCPort(), testnetBaseParams->RPCPort(), testnet4BaseParams->RPCPort(), signetBaseParams->RPCPort(), regtestBaseParams->RPCPort()), ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::RPC); + argsman.AddArg("-rpcport=", strprintf("Listen for JSON-RPC connections on (default: %u, testnet3: %u, regtest: %u)", defaultBaseParams->RPCPort(), testnetBaseParams->RPCPort(), regtestBaseParams->RPCPort()), ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::RPC); argsman.AddArg("-rpcservertimeout=", strprintf("Timeout during HTTP requests (default: %d)", DEFAULT_HTTP_SERVER_TIMEOUT), ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::RPC); argsman.AddArg("-rpcthreads=", strprintf("Set the number of threads to service RPC calls (default: %d)", DEFAULT_HTTP_THREADS), ArgsManager::ALLOW_ANY, OptionsCategory::RPC); argsman.AddArg("-rpcuser=", "Username for JSON-RPC connections", ArgsManager::ALLOW_ANY | ArgsManager::SENSITIVE, OptionsCategory::RPC); @@ -904,9 +900,6 @@ bool AppInitParameterInteraction(const ArgsManager& args) // specified in default section of config file, but not overridden // on the command line or in this chain's section of the config file. ChainType chain = args.GetChainType(); - if (chain == ChainType::SIGNET) { - LogPrintf("Signet derived magic (message start): %s\n", HexStr(chainparams.MessageStart())); - } bilingual_str errors; for (const auto& arg : args.GetUnsuitableSectionOnlyArgs()) { errors += strprintf(_("Config setting for %s only applied on %s network when in [%s] section."), arg, ChainTypeToString(chain), ChainTypeToString(chain)) + Untranslated("\n"); diff --git a/src/kernel/chainparams.cpp b/src/kernel/chainparams.cpp index 883b1e018c..6c89483a49 100644 --- a/src/kernel/chainparams.cpp +++ b/src/kernel/chainparams.cpp @@ -332,219 +332,6 @@ class CTestNetParams : public CChainParams { } }; -/** - * Testnet (v4): public test network which is reset from time to time. - */ -class CTestNet4Params : public CChainParams { -public: - CTestNet4Params() { - m_chain_type = ChainType::TESTNET4; - consensus.signet_blocks = false; - consensus.signet_challenge.clear(); - consensus.nSubsidyHalvingInterval = 2100000; - consensus.BIP34Height = 1; - consensus.BIP34Hash = uint256{}; - consensus.BIP65Height = 1; - consensus.BIP66Height = 1; - consensus.CSVHeight = 1; - consensus.SegwitHeight = 1; - consensus.MinBIP9WarningHeight = 0; - consensus.powLimit = uint256{"00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}; - consensus.nPowTargetTimespan = 24 * 60 * 60; // one day - consensus.nPowTargetSpacing = 30; - consensus.nPowTargetSpacingLegacy = 45; - consensus.nPowTargetSpacingAuxPow = 90; - consensus.fPowAllowMinDifficultyBlocks = true; - consensus.enforce_BIP94 = true; - consensus.fPowNoRetargeting = false; - consensus.nRuleChangeActivationThreshold = 2160; // 75% for testchains - consensus.nMinerConfirmationWindow = 2880; // nPowTargetTimespan / nPowTargetSpacing - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28; - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = Consensus::BIP9Deployment::NEVER_ACTIVE; - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT; - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay - - // Deployment of Taproot (BIPs 340-342) - consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].bit = 2; - consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nStartTime = Consensus::BIP9Deployment::ALWAYS_ACTIVE; - consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT; - consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 0; // No activation delay - - consensus.nMinimumChainWork = uint256{"0000000000000000000000000000000000000000000001d6dce8651b6094e4c1"}; - consensus.defaultAssumeValid = uint256{"0000000000003ed4f08dbdf6f7d6b271a6bcffce25675cb40aa9fa43179a89f3"}; // 72600 - - pchMessageStart[0] = 0x1c; - pchMessageStart[1] = 0x16; - pchMessageStart[2] = 0x3f; - pchMessageStart[3] = 0x28; - nDefaultPort = 48333; - nPruneAfterHeight = 1000; - m_assumed_blockchain_size = 11; - m_assumed_chain_state_size = 1; - - const char* testnet4_genesis_msg = "03/May/2024 000000000000000000001ebd58c244970b3aa9d783bb001011fbe8ea8e98e00e"; - const CScript testnet4_genesis_script = CScript() << "000000000000000000000000000000000000000000000000000000000000000000"_hex << OP_CHECKSIG; - genesis = CreateGenesisBlock(testnet4_genesis_msg, - testnet4_genesis_script, - 1714777860, - 393743547, - 0x1d00ffff, - 1, - 50 * COIN); - consensus.hashGenesisBlock = genesis.GetHash(); - assert(consensus.hashGenesisBlock == uint256{"00000000da84f2bafbbc53dee25a72ae507ff4914b867c565be350b0da8bf043"}); - assert(genesis.hashMerkleRoot == uint256{"7aa0a7ae1e223414cb807e40cd57e667b718e42aaf9306db9102fe28912b7b4e"}); - - vFixedSeeds.clear(); - vSeeds.clear(); - // nodes with support for servicebits filtering should be at the top - vSeeds.emplace_back("seed.testnet4.bitcoin.sprovoost.nl."); // Sjors Provoost - vSeeds.emplace_back("seed.testnet4.wiz.biz."); // Jason Maurice - - base58Prefixes[PUBKEY_ADDRESS] = std::vector(1,111); - base58Prefixes[SCRIPT_ADDRESS] = std::vector(1,196); - base58Prefixes[SECRET_KEY] = std::vector(1,239); - base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF}; - base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83, 0x94}; - - bech32_hrp = "tb"; - - vFixedSeeds = std::vector(std::begin(chainparams_seed_testnet4), std::end(chainparams_seed_testnet4)); - - fDefaultConsistencyChecks = false; - m_is_mockable_chain = false; - - checkpointData = { - { - {}, - } - }; - - m_assumeutxo_data = { - {} - }; - - chainTxData = ChainTxData{ - // Data from RPC: getchaintxstats 4096 0000000000003ed4f08dbdf6f7d6b271a6bcffce25675cb40aa9fa43179a89f3 - .nTime = 1741070246, - .tx_count = 7653966, - .dTxRate = 1.239174414591965, - }; - } -}; - -/** - * Signet: test network with an additional consensus parameter (see BIP325). - */ -class SigNetParams : public CChainParams { -public: - explicit SigNetParams(const SigNetOptions& options) - { - std::vector bin; - vFixedSeeds.clear(); - vSeeds.clear(); - - if (!options.challenge) { - bin = "512103ad5e0edad18cb1f0fc0d28a3d4f1f3e445640337489abb10404f2d1e086be430210359ef5021964fe22d6f8e05b2463c9540ce96883fe3b278760f048f5189f2e6c452ae"_hex_v_u8; - vFixedSeeds = std::vector(std::begin(chainparams_seed_signet), std::end(chainparams_seed_signet)); - vSeeds.emplace_back("seed.signet.bitcoin.sprovoost.nl."); - vSeeds.emplace_back("seed.signet.achownodes.xyz."); // Ava Chow, only supports x1, x5, x9, x49, x809, x849, xd, x400, x404, x408, x448, xc08, xc48, x40c - - consensus.nMinimumChainWork = uint256{}; - consensus.defaultAssumeValid = uint256{}; - m_assumed_blockchain_size = 9; - m_assumed_chain_state_size = 1; - chainTxData = ChainTxData{ - // Data from RPC: getchaintxstats 4096 000000895a110f46e59eb82bbc5bfb67fa314656009c295509c21b4999f5180a - .nTime = 1741019645, - .tx_count = 16540736, - .dTxRate = 1.064918879911595, - }; - } else { - bin = *options.challenge; - consensus.nMinimumChainWork = uint256{}; - consensus.defaultAssumeValid = uint256{}; - m_assumed_blockchain_size = 0; - m_assumed_chain_state_size = 0; - chainTxData = ChainTxData{ - 0, - 0, - 0, - }; - LogPrintf("Signet with challenge %s\n", HexStr(bin)); - } - - if (options.seeds) { - vSeeds = *options.seeds; - } - - m_chain_type = ChainType::SIGNET; - consensus.signet_blocks = true; - consensus.signet_challenge.assign(bin.begin(), bin.end()); - consensus.nSubsidyHalvingInterval = 2100000; - consensus.BIP34Height = 1; - consensus.BIP34Hash = uint256{}; - consensus.BIP65Height = 1; - consensus.BIP66Height = 1; - consensus.CSVHeight = 1; - consensus.SegwitHeight = 1; - consensus.nPowTargetTimespan = 24 * 60 * 60; // one day - consensus.nPowTargetSpacing = 30; - consensus.fPowAllowMinDifficultyBlocks = false; - consensus.enforce_BIP94 = false; - consensus.fPowNoRetargeting = false; - consensus.nRuleChangeActivationThreshold = 2592; // 90% of 2880 - consensus.nMinerConfirmationWindow = 2880; // nPowTargetTimespan / nPowTargetSpacing - consensus.MinBIP9WarningHeight = 0; - consensus.powLimit = uint256{"00000377ae000000000000000000000000000000000000000000000000000000"}; - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28; - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = Consensus::BIP9Deployment::NEVER_ACTIVE; - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT; - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay - - // Activation of Taproot (BIPs 340-342) - consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].bit = 2; - consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nStartTime = Consensus::BIP9Deployment::ALWAYS_ACTIVE; - consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT; - consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 0; // No activation delay - - // message start is defined as the first 4 bytes of the sha256d of the block script - HashWriter h{}; - h << consensus.signet_challenge; - uint256 hash = h.GetHash(); - std::copy_n(hash.begin(), 4, pchMessageStart.begin()); - - nDefaultPort = 38333; - nPruneAfterHeight = 1000; - - genesis = CreateGenesisBlock(1598918400, 52613770, 0x1e0377ae, 1, 50 * COIN); - consensus.hashGenesisBlock = genesis.GetHash(); - assert(consensus.hashGenesisBlock == uint256{"00000008819873e925422c1ff0f99f7cc9bbb232af63a077a480a3633bee1ef6"}); - assert(genesis.hashMerkleRoot == uint256{"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"}); - - m_assumeutxo_data = { - { - .height = 160'000, - .hash_serialized = AssumeutxoHash{uint256{"fe0a44309b74d6b5883d246cb419c6221bcccf0b308c9b59b7d70783dbdf928a"}}, - .m_chain_tx_count = 2289496, - .blockhash = consteval_ctor(uint256{"0000003ca3c99aff040f2563c2ad8f8ec88bd0fd6b8f0895cfaf1ef90353a62c"}), - } - }; - - base58Prefixes[PUBKEY_ADDRESS] = std::vector(1,111); - base58Prefixes[SCRIPT_ADDRESS] = std::vector(1,196); - base58Prefixes[SECRET_KEY] = std::vector(1,239); - base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF}; - base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83, 0x94}; - - bech32_hrp = "tb"; - - fMiningRequiresPeers = false; - fDefaultConsistencyChecks = false; - m_is_mockable_chain = false; - } -}; - /** * Regression test: intended for private networks only. Has minimal difficulty to ensure that * blocks can be found instantly. @@ -697,11 +484,6 @@ class CRegTestParams : public CChainParams } }; -std::unique_ptr CChainParams::SigNet(const SigNetOptions& options) -{ - return std::make_unique(options); -} - std::unique_ptr CChainParams::RegTest(const RegTestOptions& options) { return std::make_unique(options); @@ -717,11 +499,6 @@ std::unique_ptr CChainParams::TestNet() return std::make_unique(); } -std::unique_ptr CChainParams::TestNet4() -{ - return std::make_unique(); -} - std::vector CChainParams::GetAvailableSnapshotHeights() const { std::vector heights; @@ -737,20 +514,14 @@ std::optional GetNetworkForMagic(const MessageStartChars& message) { const auto mainnet_msg = CChainParams::Main()->MessageStart(); const auto testnet_msg = CChainParams::TestNet()->MessageStart(); - const auto testnet4_msg = CChainParams::TestNet4()->MessageStart(); const auto regtest_msg = CChainParams::RegTest({})->MessageStart(); - const auto signet_msg = CChainParams::SigNet({})->MessageStart(); if (std::ranges::equal(message, mainnet_msg)) { return ChainType::MAIN; } else if (std::ranges::equal(message, testnet_msg)) { return ChainType::TESTNET; - } else if (std::ranges::equal(message, testnet4_msg)) { - return ChainType::TESTNET4; } else if (std::ranges::equal(message, regtest_msg)) { return ChainType::REGTEST; - } else if (std::ranges::equal(message, signet_msg)) { - return ChainType::SIGNET; } return std::nullopt; } diff --git a/src/kernel/chainparams.h b/src/kernel/chainparams.h index ea90ea8b89..b4c5d9a1b2 100644 --- a/src/kernel/chainparams.h +++ b/src/kernel/chainparams.h @@ -139,14 +139,6 @@ class CChainParams const ChainTxData& TxData() const { return chainTxData; } - /** - * SigNetOptions holds configurations for creating a signet CChainParams. - */ - struct SigNetOptions { - std::optional> challenge{}; - std::optional> seeds{}; - }; - /** * VersionBitsParameters holds activation parameters */ @@ -167,10 +159,8 @@ class CChainParams }; static std::unique_ptr RegTest(const RegTestOptions& options); - static std::unique_ptr SigNet(const SigNetOptions& options); static std::unique_ptr Main(); static std::unique_ptr TestNet(); - static std::unique_ptr TestNet4(); protected: CChainParams() = default; diff --git a/src/test/argsman_tests.cpp b/src/test/argsman_tests.cpp index 297595a9cf..5628243337 100644 --- a/src/test/argsman_tests.cpp +++ b/src/test/argsman_tests.cpp @@ -644,12 +644,10 @@ BOOST_AUTO_TEST_CASE(util_GetChainTypeString) { TestArgsManager test_args; const auto testnet = std::make_pair("-testnet", ArgsManager::ALLOW_ANY); - const auto testnet4 = std::make_pair("-testnet4", ArgsManager::ALLOW_ANY); const auto regtest = std::make_pair("-regtest", ArgsManager::ALLOW_ANY); - test_args.SetupArgs({testnet, testnet4, regtest}); + test_args.SetupArgs({testnet, regtest}); const char* argv_testnet[] = {"cmd", "-testnet"}; - const char* argv_testnet4[] = {"cmd", "-testnet4"}; const char* argv_regtest[] = {"cmd", "-regtest"}; const char* argv_test_no_reg[] = {"cmd", "-testnet", "-noregtest"}; const char* argv_both[] = {"cmd", "-testnet", "-regtest"}; @@ -665,12 +663,6 @@ BOOST_AUTO_TEST_CASE(util_GetChainTypeString) BOOST_CHECK(test_args.ParseParameters(2, argv_testnet, error)); BOOST_CHECK_EQUAL(test_args.GetChainTypeString(), "test"); - BOOST_CHECK(test_args.ParseParameters(0, argv_testnet4, error)); - BOOST_CHECK_EQUAL(test_args.GetChainTypeString(), "main"); - - BOOST_CHECK(test_args.ParseParameters(2, argv_testnet4, error)); - BOOST_CHECK_EQUAL(test_args.GetChainTypeString(), "testnet4"); - BOOST_CHECK(test_args.ParseParameters(2, argv_regtest, error)); BOOST_CHECK_EQUAL(test_args.GetChainTypeString(), "regtest"); @@ -1024,7 +1016,7 @@ BOOST_FIXTURE_TEST_CASE(util_ChainMerge, ChainMergeTestingSetup) // Results file is formatted like: // // || - BOOST_CHECK_EQUAL(out_sha_hex, "9e60306e1363528bbc19a47f22bcede88e5d6815212f18ec8e6cdc4638dddab4"); + BOOST_CHECK_EQUAL(out_sha_hex, "f0b3a3c29869edc765d579c928f7f1690a71fbb673b49ccf39cbc4de18156a0d"); } BOOST_AUTO_TEST_CASE(util_ReadWriteSettings) diff --git a/src/test/data/key_io_valid.json b/src/test/data/key_io_valid.json index c051f8b76b..eeb807f610 100644 --- a/src/test/data/key_io_valid.json +++ b/src/test/data/key_io_valid.json @@ -31,22 +31,6 @@ "isPrivkey": false } ], - [ - "mww4LvqtTMKvmeQvizPz2EQv26xTneWrbg", - "76a914b4110ba93ac54afc14da3bdd19614774a2d55d2988ac", - { - "chain": "signet", - "isPrivkey": false - } - ], - [ - "2N1r7aC69VHeE7yQJPDLi9T1PYq4wnwvjuT", - "a9145e5a35ab44b3efaea5129ba22b88ba3e2976614587", - { - "chain": "signet", - "isPrivkey": false - } - ], [ "n4fajahJrAuKbN7uNsKjLjQkz9Qn5ewJXQ", "76a914fdeca3b08e38af53d7c4c60e3ad208ce5066441088ac", @@ -99,24 +83,6 @@ "isPrivkey": true } ], - [ - "92QuSnywrhsV7WPZChTgSQA23uSmj9MCEEno1eRBDG9sg8M29cX", - "6cf636ed8ac1bab033b64f66feaba65f70e684731e3f39105605968d3a963801", - { - "chain": "signet", - "isCompressed": false, - "isPrivkey": true - } - ], - [ - "cND53Dhp8eCZqG2ghe8YhSCGesXZ8fE5PGD1khrqNvEi4RBoXhEK", - "12b5a10f3a11e708dc5412833c47ab7c368a21b9efe19293793ec879ce683018", - { - "chain": "signet", - "isCompressed": true, - "isPrivkey": true - } - ], [ "91mn1wYKEB1zyof1VFm8tMtocZx1oBrKKRCu9GCpgZvPmBLEJjp", "18a86e5a6c6977ddba0daca7fba5190f67ba56ccdc1b3f31308972236c2e4776", @@ -207,42 +173,6 @@ "tryCaseFlip": true } ], - [ - "tb1q3vya2h5435jkugq2few7dmktlrwq4ejmfaw7kr", - "00148b09d55e958d256e200a4e5de6eecbf8dc0ae65b", - { - "chain": "signet", - "isPrivkey": false, - "tryCaseFlip": true - } - ], - [ - "tb1qxkhrl2s6ttrclckldruea0e8anhrehffl8xv7t0pdyrzm08v2hyqy408nf", - "002035ae3faa1a5ac78fe2df68f99ebf27ecee3cdd29f9cccf2de169062dbcec55c8", - { - "chain": "signet", - "isPrivkey": false, - "tryCaseFlip": true - } - ], - [ - "tb1pae5um27ahn8n73pgexe3kcwlp8dhswpn684h2k2w6t9a7w3eq65qephd5y", - "5120ee69cdabddbccf3f4428c9b31b61df09db783833d1eb75594ed2cbdf3a3906a8", - { - "chain": "signet", - "isPrivkey": false, - "tryCaseFlip": true - } - ], - [ - "tb1rx9n9g37az8mu236e5jpxdt0m67y4fuq8rhs0ss3djnm0kscfrwvq0ntlyg", - "532031665447dd11f7c54759a48266adfbd78954f0071de0f8422d94f6fb43091b98", - { - "chain": "signet", - "isPrivkey": false, - "tryCaseFlip": true - } - ], [ "bcrt1qdavt4j2sd7dlhqsavtnfxvzppw6k7qy97tmnu9", "00146f58bac9506f9bfb821d62e69330410bb56f0085", @@ -311,22 +241,6 @@ "isPrivkey": false } ], - [ - "mnCBpkNMJEJLehgdEkzSo2eioniyJMxLpZ", - "76a914493c455551e48a1423263b62b127b436106a685488ac", - { - "chain": "signet", - "isPrivkey": false - } - ], - [ - "2N5sNHomeNJDZv67AcFx9ES7FBZY4jx9KDA", - "a9148a776a0f34d56b63e7c595f2b205dbe1c393617a87", - { - "chain": "signet", - "isPrivkey": false - } - ], [ "mfhE6jAUwjUDNZhaX1PAsDTKfneQF2Nshc", "76a91401f15a4cc063dae4f4d56b89bfbc8bcc9ae5387c88ac", @@ -379,24 +293,6 @@ "isPrivkey": true } ], - [ - "93BcpCMKPmFCuY8bqS4k3HFrhJ1Afxi4uSsEeJFvX86GYW7PC7W", - "d27d1b6ef55ca2e4d475b5276f2dbb85f7a6459dceeb89c67b776fd3bb974452", - { - "chain": "signet", - "isCompressed": false, - "isPrivkey": true - } - ], - [ - "cUtwbyxoL1owPxUafgH2meEpydeywjhnTYv2mJaFHHchz39AaEgy", - "da3ed4ef1647e1733ec076919cab6156077ed9532e7c365acc425747e198b3e1", - { - "chain": "signet", - "isCompressed": true, - "isPrivkey": true - } - ], [ "927zPWny2SiNaUmHF5NnGQXQWDwbByfFzXGgu88j91ZoutSosvE", "468e0284f230153db8687d8ec23db079a5b67d72ca04174b3867b13e4ea9945e", @@ -487,42 +383,6 @@ "tryCaseFlip": true } ], - [ - "tb1q6mwf89hnqhlu8txjgjfs4s7p93ugffn3k062ll", - "0014d6dc9396f305ffc3acd244930ac3c12c7884a671", - { - "chain": "signet", - "isPrivkey": false, - "tryCaseFlip": true - } - ], - [ - "tb1qafrjalu4d73dql0czau9j6z422434kef235mzljf48ckd5xz3sys09jm97", - "0020ea472eff956fa2d07df8177859685552ab1adb295469b17e49a9f166d0c28c09", - { - "chain": "signet", - "isPrivkey": false, - "tryCaseFlip": true - } - ], - [ - "tb1pwst9qszjrhuv2e7as0flcq9gm698v6gdxzz9e87p07s8rssdx3zqklm3vf", - "512074165040521df8c567dd83d3fc00a8de8a76690d30845c9fc17fa071c20d3444", - { - "chain": "signet", - "isPrivkey": false, - "tryCaseFlip": true - } - ], - [ - "tb1r3ss76jtsuxe8c8c8lxsehnpak55ylrgr345pww076l536ahjr6jsydamx3", - "53208c21ed4970e1b27c1f07f9a19bcc3db5284f8d038d681739fed7e91d76f21ea5", - { - "chain": "signet", - "isPrivkey": false, - "tryCaseFlip": true - } - ], [ "bcrt1q65nhlm4hf2ptg3t264al57p7wjxj2c3s6kyt83", "0014d5277feeb74a82b4456ad57bfa783e748d256230", @@ -590,21 +450,5 @@ "chain": "test", "isPrivkey": false } - ], - [ - "mfnJ8tEkqKNFE5YaHTXFxyHk2mnDK2fvDh", - "76a91402e6cd77e649ad8b281271f158fc964ca3f66cb088ac", - { - "chain": "signet", - "isPrivkey": false - } - ], - [ - "2My83D67ir7K8PPzeT6mE2oth3ZwNTVRS9F", - "a9144074d84d32ff62da7b1b3c61925b934bfeb34b0587", - { - "chain": "signet", - "isPrivkey": false - } ] ] diff --git a/src/test/fuzz/signet.cpp b/src/test/fuzz/signet.cpp index 6f1996572e..31153b7804 100644 --- a/src/test/fuzz/signet.cpp +++ b/src/test/fuzz/signet.cpp @@ -3,6 +3,7 @@ // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include +#include #include #include #include @@ -19,7 +20,7 @@ void initialize_signet() { - static const auto testing_setup = MakeNoLogFileContext<>(ChainType::SIGNET); + static const auto testing_setup = MakeNoLogFileContext<>(ChainType::REGTEST); } FUZZ_TARGET(signet, .init = initialize_signet) @@ -29,6 +30,12 @@ FUZZ_TARGET(signet, .init = initialize_signet) if (!block) { return; } - (void)CheckSignetBlockSolution(*block, Params().GetConsensus()); - (void)SignetTxs::Create(*block, ConsumeScript(fuzzed_data_provider)); + // Fractal Bitcoin has no signet network; exercise the BIP325 checker with + // locally constructed consensus params carrying the fuzzed challenge. + const CScript challenge = ConsumeScript(fuzzed_data_provider); + Consensus::Params params{Params().GetConsensus()}; + params.signet_blocks = true; + params.signet_challenge.assign(challenge.begin(), challenge.end()); + (void)CheckSignetBlockSolution(*block, params); + (void)SignetTxs::Create(*block, challenge); } diff --git a/src/test/key_io_tests.cpp b/src/test/key_io_tests.cpp index 4dd77edc16..f2dbbba651 100644 --- a/src/test/key_io_tests.cpp +++ b/src/test/key_io_tests.cpp @@ -137,7 +137,7 @@ BOOST_AUTO_TEST_CASE(key_io_invalid) std::string exp_base58string = test[0].get_str(); // must be invalid as public and as private key - for (const auto& chain : {ChainType::MAIN, ChainType::TESTNET, ChainType::SIGNET, ChainType::REGTEST}) { + for (const auto& chain : {ChainType::MAIN, ChainType::TESTNET, ChainType::REGTEST}) { SelectParams(chain); destination = DecodeDestination(exp_base58string); BOOST_CHECK_MESSAGE(!IsValidDestination(destination), "IsValid pubkey in mainnet:" + strTest); diff --git a/src/test/pow_tests.cpp b/src/test/pow_tests.cpp index 76e4600441..ce99d1a9d6 100644 --- a/src/test/pow_tests.cpp +++ b/src/test/pow_tests.cpp @@ -198,14 +198,4 @@ BOOST_AUTO_TEST_CASE(ChainParams_TESTNET_sanity) sanity_check_chainparams(*m_node.args, ChainType::TESTNET); } -BOOST_AUTO_TEST_CASE(ChainParams_TESTNET4_sanity) -{ - sanity_check_chainparams(*m_node.args, ChainType::TESTNET4); -} - -BOOST_AUTO_TEST_CASE(ChainParams_SIGNET_sanity) -{ - sanity_check_chainparams(*m_node.args, ChainType::SIGNET); -} - BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/validation_tests.cpp b/src/test/validation_tests.cpp index 9f36b2f9d4..ff1cf19117 100644 --- a/src/test/validation_tests.cpp +++ b/src/test/validation_tests.cpp @@ -68,16 +68,16 @@ BOOST_AUTO_TEST_CASE(subsidy_limit_test) BOOST_AUTO_TEST_CASE(signet_parse_tests) { - ArgsManager signet_argsman; - signet_argsman.ForceSetArg("-signetchallenge", "51"); // set challenge to OP_TRUE - const auto signet_params = CreateChainParams(signet_argsman, ChainType::SIGNET); + // Fractal Bitcoin does not support signet networks; exercise the + // block-solution checker with a locally constructed consensus params. + Consensus::Params params; + params.signet_challenge = {OP_TRUE}; CBlock block; - BOOST_CHECK(signet_params->GetConsensus().signet_challenge == std::vector{OP_TRUE}); CScript challenge{OP_TRUE}; // empty block is invalid BOOST_CHECK(!SignetTxs::Create(block, challenge)); - BOOST_CHECK(!CheckSignetBlockSolution(block, signet_params->GetConsensus())); + BOOST_CHECK(!CheckSignetBlockSolution(block, params)); // no witness commitment CMutableTransaction cb; @@ -85,7 +85,7 @@ BOOST_AUTO_TEST_CASE(signet_parse_tests) block.vtx.push_back(MakeTransactionRef(cb)); block.vtx.push_back(MakeTransactionRef(cb)); // Add dummy tx to exercise merkle root code BOOST_CHECK(!SignetTxs::Create(block, challenge)); - BOOST_CHECK(!CheckSignetBlockSolution(block, signet_params->GetConsensus())); + BOOST_CHECK(!CheckSignetBlockSolution(block, params)); // no header is treated valid std::vector witness_commitment_section_141{0xaa, 0x21, 0xa9, 0xed}; @@ -95,14 +95,14 @@ BOOST_AUTO_TEST_CASE(signet_parse_tests) cb.vout.at(0).scriptPubKey = CScript{} << OP_RETURN << witness_commitment_section_141; block.vtx.at(0) = MakeTransactionRef(cb); BOOST_CHECK(SignetTxs::Create(block, challenge)); - BOOST_CHECK(CheckSignetBlockSolution(block, signet_params->GetConsensus())); + BOOST_CHECK(CheckSignetBlockSolution(block, params)); // no data after header, valid std::vector witness_commitment_section_325{0xec, 0xc7, 0xda, 0xa2}; cb.vout.at(0).scriptPubKey = CScript{} << OP_RETURN << witness_commitment_section_141 << witness_commitment_section_325; block.vtx.at(0) = MakeTransactionRef(cb); BOOST_CHECK(SignetTxs::Create(block, challenge)); - BOOST_CHECK(CheckSignetBlockSolution(block, signet_params->GetConsensus())); + BOOST_CHECK(CheckSignetBlockSolution(block, params)); // Premature end of data, invalid witness_commitment_section_325.push_back(0x01); @@ -110,21 +110,21 @@ BOOST_AUTO_TEST_CASE(signet_parse_tests) cb.vout.at(0).scriptPubKey = CScript{} << OP_RETURN << witness_commitment_section_141 << witness_commitment_section_325; block.vtx.at(0) = MakeTransactionRef(cb); BOOST_CHECK(!SignetTxs::Create(block, challenge)); - BOOST_CHECK(!CheckSignetBlockSolution(block, signet_params->GetConsensus())); + BOOST_CHECK(!CheckSignetBlockSolution(block, params)); // has data, valid witness_commitment_section_325.push_back(0x00); cb.vout.at(0).scriptPubKey = CScript{} << OP_RETURN << witness_commitment_section_141 << witness_commitment_section_325; block.vtx.at(0) = MakeTransactionRef(cb); BOOST_CHECK(SignetTxs::Create(block, challenge)); - BOOST_CHECK(CheckSignetBlockSolution(block, signet_params->GetConsensus())); + BOOST_CHECK(CheckSignetBlockSolution(block, params)); // Extraneous data, invalid witness_commitment_section_325.push_back(0x00); cb.vout.at(0).scriptPubKey = CScript{} << OP_RETURN << witness_commitment_section_141 << witness_commitment_section_325; block.vtx.at(0) = MakeTransactionRef(cb); BOOST_CHECK(!SignetTxs::Create(block, challenge)); - BOOST_CHECK(!CheckSignetBlockSolution(block, signet_params->GetConsensus())); + BOOST_CHECK(!CheckSignetBlockSolution(block, params)); } //! Test retrieval of valid assumeutxo values. diff --git a/src/test/versionbits_tests.cpp b/src/test/versionbits_tests.cpp index 29240a45f0..5d10dc2af0 100644 --- a/src/test/versionbits_tests.cpp +++ b/src/test/versionbits_tests.cpp @@ -424,7 +424,7 @@ BOOST_FIXTURE_TEST_CASE(versionbits_computeblockversion, BlockVersionTest) // check that any deployment on any chain can conceivably reach both // ACTIVE and FAILED states in roughly the way we expect - for (const auto& chain_type: {ChainType::MAIN, ChainType::TESTNET, ChainType::TESTNET4, ChainType::SIGNET, ChainType::REGTEST}) { + for (const auto& chain_type: {ChainType::MAIN, ChainType::TESTNET, ChainType::REGTEST}) { const auto chainParams = CreateChainParams(*m_node.args, chain_type); uint32_t chain_all_vbits{0}; for (int i = 0; i < (int)Consensus::MAX_VERSION_BITS_DEPLOYMENTS; ++i) { diff --git a/src/util/chaintype.cpp b/src/util/chaintype.cpp index 272466e7af..d9a916c2ef 100644 --- a/src/util/chaintype.cpp +++ b/src/util/chaintype.cpp @@ -31,10 +31,6 @@ std::optional ChainTypeFromString(std::string_view chain) return ChainType::MAIN; } else if (chain == "test") { return ChainType::TESTNET; - } else if (chain == "testnet4") { - return ChainType::TESTNET4; - } else if (chain == "signet") { - return ChainType::SIGNET; } else if (chain == "regtest") { return ChainType::REGTEST; } else {