Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F13711254
D11359.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
6 KB
Subscribers
None
D11359.diff
View Options
diff --git a/src/avalanche/test/CMakeLists.txt b/src/avalanche/test/CMakeLists.txt
--- a/src/avalanche/test/CMakeLists.txt
+++ b/src/avalanche/test/CMakeLists.txt
@@ -14,6 +14,7 @@
TESTS
delegation_tests.cpp
+ init_tests.cpp
peermanager_tests.cpp
processor_tests.cpp
proof_tests.cpp
diff --git a/src/avalanche/test/init_tests.cpp b/src/avalanche/test/init_tests.cpp
new file mode 100644
--- /dev/null
+++ b/src/avalanche/test/init_tests.cpp
@@ -0,0 +1,99 @@
+// Copyright (c) 2022 The Bitcoin developers
+// Distributed under the MIT software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+#include <avalanche/avalanche.h>
+#include <avalanche/proof.h>
+#include <init.h>
+#include <util/moneystr.h>
+#include <util/string.h>
+#include <util/system.h>
+
+#include <test/util/setup_common.h>
+
+#include <boost/test/unit_test.hpp>
+
+#include <cstdint>
+
+BOOST_FIXTURE_TEST_SUITE(init_tests, BasicTestingSetup)
+
+BOOST_AUTO_TEST_CASE(avalanche_flag_tests) {
+ gArgs.ForceSetArg("-ecash", "1");
+ const Amount tenBillion = 10'000'000'000 * Currency::get().baseunit;
+
+ auto getAvaMinQuorumStakeAmount = [](const ArgsManager &args,
+ const Amount defaultAmount) {
+ Amount avaminquorumstake;
+ BOOST_CHECK(ParseMoney(
+ args.GetArg("-avaminquorumstake", FormatMoney(defaultAmount)),
+ avaminquorumstake));
+ return avaminquorumstake;
+ };
+
+ {
+ // Check the feature flags when avalanche is set
+ ArgsManager args;
+ args.ForceSetArg("-avalanche", "1");
+ InitParameterInteraction(args);
+
+ BOOST_CHECK_EQUAL(args.GetBoolArg("-enableavalanche", false), true);
+ BOOST_CHECK_EQUAL(args.GetBoolArg("-legacyavaproof", true), false);
+ BOOST_CHECK_EQUAL(
+ args.GetBoolArg("-enableavalanchepeerdiscovery", false), true);
+ BOOST_CHECK_EQUAL(
+ args.GetBoolArg("-enableavalancheproofreplacement", false), true);
+ BOOST_CHECK_EQUAL(args.GetBoolArg("-automaticunparking", true), false);
+ BOOST_CHECK_EQUAL(getAvaMinQuorumStakeAmount(args, 42 * COIN),
+ tenBillion);
+ BOOST_CHECK_EQUAL(
+ args.GetArg("-avaminquorumconnectedstakeratio", "0.42"), "0.8");
+ }
+
+ {
+ // Check the feature flags when avalanche is reset
+ ArgsManager args;
+ args.ForceSetArg("-avalanche", "0");
+ InitParameterInteraction(args);
+
+ BOOST_CHECK_EQUAL(args.GetBoolArg("-enableavalanche", true), false);
+ BOOST_CHECK_EQUAL(args.GetBoolArg("-legacyavaproof", false),
+ AVALANCHE_DEFAULT_LEGACY_PROOF);
+ BOOST_CHECK_EQUAL(
+ args.GetBoolArg("-enableavalanchepeerdiscovery", true), false);
+ BOOST_CHECK_EQUAL(
+ args.GetBoolArg("-enableavalancheproofreplacement", true), false);
+ BOOST_CHECK_EQUAL(args.GetBoolArg("-automaticunparking", false), true);
+ BOOST_CHECK_EQUAL(getAvaMinQuorumStakeAmount(args, tenBillion),
+ AVALANCHE_DEFAULT_MIN_QUORUM_STAKE);
+ BOOST_CHECK_EQUAL(
+ args.GetArg("-avaminquorumconnectedstakeratio", "0.8"),
+ ToString(AVALANCHE_DEFAULT_MIN_QUORUM_CONNECTED_STAKE_RATIO));
+ }
+
+ {
+ // Check the feature flags can always be overridden
+ ArgsManager args;
+ args.ForceSetArg("-avalanche", "1");
+ args.ForceSetArg("-legacyavaproof", "1");
+ args.ForceSetArg("-enableavalancheproofreplacement", "0");
+ args.ForceSetArg("-automaticunparking", "1");
+ args.ForceSetArg("-avaminquorumstake", FormatMoney(123 * COIN));
+ InitParameterInteraction(args);
+
+ BOOST_CHECK_EQUAL(args.GetBoolArg("-enableavalanche", false), true);
+ BOOST_CHECK_EQUAL(args.GetBoolArg("-legacyavaproof", false), true);
+ BOOST_CHECK_EQUAL(
+ args.GetBoolArg("-enableavalanchepeerdiscovery", false), true);
+ BOOST_CHECK_EQUAL(
+ args.GetBoolArg("-enableavalancheproofreplacement", true), false);
+ BOOST_CHECK_EQUAL(args.GetBoolArg("-automaticunparking", false), true);
+ BOOST_CHECK_EQUAL(getAvaMinQuorumStakeAmount(args, tenBillion),
+ 123 * COIN);
+ BOOST_CHECK_EQUAL(
+ args.GetArg("-avaminquorumconnectedstakeratio", "0.42"), "0.8");
+ }
+
+ gArgs.ClearForcedArg("-ecash");
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/init.cpp b/src/init.cpp
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -1296,10 +1296,16 @@
#endif
// Avalanche options.
- argsman.AddArg(
- "-enableavalanche",
- strprintf("Enable avalanche (default: %u)", AVALANCHE_DEFAULT_ENABLED),
- ArgsManager::ALLOW_ANY, OptionsCategory::AVALANCHE);
+ argsman.AddArg("-avalanche",
+ strprintf("Enable all the avalanche features (default: %u)",
+ AVALANCHE_DEFAULT_ENABLED),
+ ArgsManager::ALLOW_ANY, OptionsCategory::AVALANCHE);
+ argsman.AddArg("-enableavalanche",
+ strprintf("Enable the core avalanche features only. You "
+ "need to manually configure the individual "
+ "features with dedicated flags (default: %u)",
+ AVALANCHE_DEFAULT_ENABLED),
+ ArgsManager::ALLOW_ANY, OptionsCategory::AVALANCHE);
argsman.AddArg("-enableavalanchepeerdiscovery",
strprintf("Enable avalanche peer discovery (default: %u)",
AVALANCHE_DEFAULT_PEER_DISCOVERY_ENABLED),
@@ -1740,6 +1746,28 @@
__func__);
}
}
+
+ // If avalanche is set, soft set all the feature flags accordingly.
+ if (args.IsArgSet("-avalanche")) {
+ const bool fAvalanche =
+ args.GetBoolArg("-avalanche", AVALANCHE_DEFAULT_ENABLED);
+ args.SoftSetBoolArg("-enableavalanche", fAvalanche);
+ args.SoftSetBoolArg("-legacyavaproof",
+ fAvalanche ? false
+ : AVALANCHE_DEFAULT_LEGACY_PROOF);
+ args.SoftSetBoolArg("-enableavalanchepeerdiscovery", fAvalanche);
+ args.SoftSetBoolArg("-enableavalancheproofreplacement", fAvalanche);
+ args.SoftSetBoolArg("-automaticunparking", !fAvalanche);
+ args.SoftSetArg(
+ "-avaminquorumstake",
+ fAvalanche ? FormatMoney(1'000'000'000'000 * SATOSHI) // 10B XEC
+ : FormatMoney(AVALANCHE_DEFAULT_MIN_QUORUM_STAKE));
+ args.SoftSetArg(
+ "-avaminquorumconnectedstakeratio",
+ fAvalanche
+ ? "0.8"
+ : ToString(AVALANCHE_DEFAULT_MIN_QUORUM_CONNECTED_STAKE_RATIO));
+ }
}
/**
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Apr 26, 11:11 (5 h, 58 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5573373
Default Alt Text
D11359.diff (6 KB)
Attached To
D11359: [avalanche] Add an easy to use shortcut flag to turn on avalanche
Event Timeline
Log In to Comment