From 36c517bac59521dbf012c1faa29c012cfe48deae Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Sat, 23 Nov 2019 12:16:58 +1030 Subject: [PATCH] common: change default network from testnet to mainnet for new installs. Changelog-changed: Default network (new installs) is now bitcoin, not testnet. Signed-off-by: Rusty Russell --- common/configdir.c | 45 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/common/configdir.c b/common/configdir.c index 035ae12e51e6..36576b4c3f3c 100644 --- a/common/configdir.c +++ b/common/configdir.c @@ -10,6 +10,9 @@ #include #include #include +#include +#include +#include bool deprecated_apis = true; @@ -241,6 +244,34 @@ void parse_config_files(const char *config_filename, parse_implied_config_file(config_basedir, chainparams->network_name, early); } +/* Could be a yet-to-be-upgraded dir (definitely testnet), or could be + * it's been upgraded to testnet. */ +static bool smells_like_old_testnet(const char *config_basedir) +{ + struct stat st; + /* Doubles as convenient top-level ctx for this function */ + const char *base = default_base_configdir(NULL); + + if (!config_basedir) + config_basedir = base; + + /* If it doesn't exist, it's not testnet. */ + if (stat(config_basedir, &st) != 0) { + tal_free(base); + return false; + } + + /* Does it have a bitcoin/ subdir and no testnet/ subdir? */ + if (stat(path_join(base, config_basedir, "bitcoin"), &st) == 0 + && stat(path_join(base, config_basedir, "testnet"), &st) != 0) { + tal_free(base); + return false; + } + + tal_free(base); + return true; +} + void initial_config_opts(const tal_t *ctx, int argc, char *argv[], char **config_filename, @@ -318,10 +349,16 @@ void initial_config_opts(const tal_t *ctx, parse_implied_config_file(*config_basedir, NULL, true); opt_early_parse_incomplete(argc, argv, opt_log_stderr_exit); - /* We use a global (in common/utils.h) for the chainparams. - * We default to testnet for now. */ - if (!chainparams) - chainparams = chainparams_for_network("testnet"); + /* We use a global (in common/utils.h) for the chainparams. */ + if (!chainparams) { + /* Use bitcoin default on new installations. */ + if (deprecated_apis && smells_like_old_testnet(*config_basedir)) { + warnx("WARNING: default network changing in 2020:" + " please set network=testnet in config!"); + chainparams = chainparams_for_network("testnet"); + } else + chainparams = chainparams_for_network("bitcoin"); + } if (!*config_basedir) *config_basedir = default_base_configdir(ctx);