From dd39cc4f80b51a97332de043b6170ce2737a7ed5 Mon Sep 17 00:00:00 2001 From: wintercooled Date: Thu, 12 Jul 2018 18:51:49 +0100 Subject: [PATCH] Allow default asset name to be set via param --- src/assetsdir.cpp | 4 ++-- src/assetsdir.h | 2 +- src/global/common.cpp | 4 ++-- src/global/common.h | 2 +- src/init.cpp | 4 +++- src/test/assetsdir_tests.cpp | 8 ++++---- 6 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/assetsdir.cpp b/src/assetsdir.cpp index b9ea193b5c..1397d59e4a 100644 --- a/src/assetsdir.cpp +++ b/src/assetsdir.cpp @@ -37,7 +37,7 @@ void CAssetsDir::SetHex(const std::string& assetHex, const std::string& label) Set(CAsset(uint256S(assetHex)), AssetMetadata(label)); } -void CAssetsDir::InitFromStrings(const std::vector& assetsToInit) +void CAssetsDir::InitFromStrings(const std::vector& assetsToInit, const std::string& pegged_asset_name) { for (std::string strToSplit : assetsToInit) { std::vector vAssets; @@ -48,7 +48,7 @@ void CAssetsDir::InitFromStrings(const std::vector& assetsToInit) SetHex(vAssets[0], vAssets[1]); } // Set "bitcoin" to the pegged asset for tests - Set(Params().GetConsensus().pegged_asset, AssetMetadata("bitcoin")); + Set(Params().GetConsensus().pegged_asset, AssetMetadata(pegged_asset_name)); } CAsset CAssetsDir::GetAsset(const std::string& label) const diff --git a/src/assetsdir.h b/src/assetsdir.h index e9847746cc..870092b436 100644 --- a/src/assetsdir.h +++ b/src/assetsdir.h @@ -30,7 +30,7 @@ class CAssetsDir void Set(const CAsset& asset, const AssetMetadata& metadata); void SetHex(const std::string& assetHex, const std::string& label); public: - void InitFromStrings(const std::vector& assetsToInit); + void InitFromStrings(const std::vector& assetsToInit, const std::string& pegged_asset_name); /** * @param label A label string diff --git a/src/global/common.cpp b/src/global/common.cpp index 0fcb9d3002..d0803c89a5 100644 --- a/src/global/common.cpp +++ b/src/global/common.cpp @@ -9,7 +9,7 @@ CAssetsDir _gAssetsDir; const CAssetsDir& gAssetsDir = _gAssetsDir; -void InitGlobalAssetDir(const std::vector& assetsToInit) +void InitGlobalAssetDir(const std::vector& assetsToInit, const std::string& pegged_asset_name) { - _gAssetsDir.InitFromStrings(assetsToInit); + _gAssetsDir.InitFromStrings(assetsToInit, pegged_asset_name); } diff --git a/src/global/common.h b/src/global/common.h index b695434058..c7320d62cc 100644 --- a/src/global/common.h +++ b/src/global/common.h @@ -12,6 +12,6 @@ class CAssetsDir; extern const CAssetsDir& gAssetsDir; -void InitGlobalAssetDir(const std::vector& assetsToInit); +void InitGlobalAssetDir(const std::vector& assetsToInit, const std::string& pegged_asset_name); #endif // BITCOIN_GLOBAL_COMMON_H diff --git a/src/init.cpp b/src/init.cpp index 37f443505d..086d9782f6 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -514,6 +514,7 @@ std::string HelpMessage(HelpMessageMode mode) " " + _(" This creates a new chain with a different genesis block.")); strUsage += HelpMessageOpt("-peginconfirmationdepth", strprintf(_("Pegin claims must be this deep to be considered valid. (default: %d)"), DEFAULT_PEGIN_CONFIRMATION_DEPTH)); strUsage += HelpMessageOpt("-initialfreecoins", strprintf(_("The amount of OP_TRUE coins created in the genesis block. Primarily for testing. (default: %d)"), 0)); + strUsage += HelpMessageOpt("-defaultpeggedassetname", strprintf("The name of the default asset created in the genesis block. (default: bitcoin)")); strUsage += HelpMessageOpt("-parentpubkeyprefix", strprintf(_("The byte prefix, in decimal, of the parent chain's base58 pubkey address. (default: %d)"), 111)); strUsage += HelpMessageOpt("-parentscriptprefix", strprintf(_("The byte prefix, in decimal, of the parent chain's base58 script address. (default: %d)"), 196)); @@ -1090,7 +1091,8 @@ bool AppInitParameterInteraction() nMaxTipAge = GetArg("-maxtipage", DEFAULT_MAX_TIP_AGE); try { - InitGlobalAssetDir(mapMultiArgs.count("-assetdir") > 0 ? mapMultiArgs.at("-assetdir") : std::vector()); + const std::string default_asset_name = GetArg("-defaultpeggedassetname", "bitcoin"); + InitGlobalAssetDir(mapMultiArgs.count("-assetdir") > 0 ? mapMultiArgs.at("-assetdir") : std::vector(), default_asset_name); } catch (const std::exception& e) { return InitError(strprintf("Error in -assetdir: %s\n", e.what())); } diff --git a/src/test/assetsdir_tests.cpp b/src/test/assetsdir_tests.cpp index 7706735e36..a6b7ce2535 100644 --- a/src/test/assetsdir_tests.cpp +++ b/src/test/assetsdir_tests.cpp @@ -23,11 +23,11 @@ BOOST_AUTO_TEST_CASE(assetsdirTests) for (std:: string protectedLabel : protectedLabels) { std::vector assetsToInitProtected = {exampleAssetHex + ":" + protectedLabel}; - BOOST_CHECK_THROW(tAssetsDir.InitFromStrings(assetsToInitProtected), std::runtime_error); + BOOST_CHECK_THROW(tAssetsDir.InitFromStrings(assetsToInitProtected, defaultPeggedLabel), std::runtime_error); } const std::vector exAssetsToInit = {exampleAssetHex + ":other"}; - tAssetsDir.InitFromStrings(exAssetsToInit); + tAssetsDir.InitFromStrings(exAssetsToInit, defaultPeggedLabel); BOOST_CHECK(exampleAsset == tAssetsDir.GetAsset("other")); BOOST_CHECK_EQUAL("other", tAssetsDir.GetLabel(exampleAsset)); @@ -37,10 +37,10 @@ BOOST_AUTO_TEST_CASE(assetsdirTests) BOOST_CHECK(defaultPeggedAsset == tAssetsDir.GetAsset(tAssetsDir.GetLabel(CAsset(uint256S(defaultPeggedAssetHex))))); const std::vector assetsToInitRepeatedHex = {exampleAssetHex + ":other", exampleAssetHex + ":other2"}; - BOOST_CHECK_THROW(tAssetsDir.InitFromStrings(assetsToInitRepeatedHex), std::runtime_error); + BOOST_CHECK_THROW(tAssetsDir.InitFromStrings(assetsToInitRepeatedHex, defaultPeggedLabel), std::runtime_error); const std::vector assetsToInitRepeatedLabel = {exampleAssetHex + ":other", defaultPeggedAssetHex + ":other"}; - BOOST_CHECK_THROW(tAssetsDir.InitFromStrings(assetsToInitRepeatedLabel), std::runtime_error); + BOOST_CHECK_THROW(tAssetsDir.InitFromStrings(assetsToInitRepeatedLabel, defaultPeggedLabel), std::runtime_error); } BOOST_AUTO_TEST_SUITE_END()