From 8956704ddc61f8ab47bbabbf15b5555ad326e61f Mon Sep 17 00:00:00 2001 From: barrystyle Date: Fri, 8 Oct 2021 02:29:50 +0800 Subject: [PATCH 1/4] Remove odocrypt deployment definition from chainparams.cpp (again). This is not required if the deployment has been buried. Additionally it causes a segfault if digibyte was launched with a new data directory. --- src/chainparams.cpp | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 5b3e87ac45..a808fd79e5 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -104,14 +104,6 @@ class CMainParams : public CChainParams { consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = 1230767999; // December 31, 2008 consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay - // Deployment of Odo proof-of-work hardfork - consensus.vDeployments[Consensus::DEPLOYMENT_ODO].bit = 6; - consensus.vDeployments[Consensus::DEPLOYMENT_ODO].nStartTime = 1556668800; // 1 May, 2019 - consensus.vDeployments[Consensus::DEPLOYMENT_ODO].nTimeout = 1588291200; // 1 May, 2020 - - // Block 9112320 hash 906b712a7b1f54f10b0faf86111e832ddb7b8ce86ac71a4edd2c61e5ccfe9428 - consensus.vDeployments[Consensus::DEPLOYMENT_ODO].min_activation_height = 9112320; - // Deployment of Taproot (BIPs 340-342) consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].bit = 2; consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nStartTime = 1630454400; // Sept 1st, 2021 From 193bc71ae41d2f514ff4d8bd65cf1b83361bc059 Mon Sep 17 00:00:00 2001 From: barrystyle Date: Fri, 8 Oct 2021 02:52:34 +0800 Subject: [PATCH 2/4] Ignore any 'unknown new rules' message if triggered by a bit within block algo version range --- src/validation.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/validation.cpp b/src/validation.cpp index 2528967ea0..a957987fe9 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -2366,6 +2366,9 @@ void CChainState::UpdateTip(const CBlockIndex* pindexNew) for (int bit = 0; bit < VERSIONBITS_NUM_BITS; bit++) { WarningBitsConditionChecker checker(bit); ThresholdState state = checker.GetStateFor(pindex, m_params.GetConsensus(), warningcache[bit]); + // dont trigger 'unknown new rules' warning if the bit falls within + // the block algo version range (enum in primitives/block.h) + if (bit <= BLOCK_VERSION_ALGO) continue; if (state == ThresholdState::ACTIVE || state == ThresholdState::LOCKED_IN) { const bilingual_str warning = strprintf(_("Unknown new rules activated (versionbit %i)"), bit); if (state == ThresholdState::ACTIVE) { From 7edd9abe98e68363006856bd23327302bd13f673 Mon Sep 17 00:00:00 2001 From: Jared Tate <13957390+JaredTate@users.noreply.github.com> Date: Tue, 19 Oct 2021 11:16:34 -0600 Subject: [PATCH 3/4] Fix "Unknown new rules activated" Error & Uninitialized Variable nMinerConfirmationWindow, Rever Changes --- src/chainparams.cpp | 2 +- src/validation.cpp | 3 --- src/versionbits.h | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index a808fd79e5..bd1c5e1a5c 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -90,7 +90,7 @@ class CMainParams : public CChainParams { consensus.nMinerConfirmationWindow = 40320; // nPowTargetTimespan / nPowTargetSpacing 40320 blocks main net - 1 week // Need to make sure we ignore activation warnings below Odo activation height, also ignores Segwit activation - consensus.MinBIP9WarningHeight = consensus.OdoHeight + consensus.nMinerConfirmationWindow; + consensus.MinBIP9WarningHeight = 9152640; // Odo height + miner confirmation window, nMinerConfirmationWindow was un initialized before, so hard coded now // DigiByte Hard Fork Block Heights consensus.multiAlgoDiffChangeTarget = 145000; // Block 145,000 MultiAlgo Hard Fork diff --git a/src/validation.cpp b/src/validation.cpp index a957987fe9..2528967ea0 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -2366,9 +2366,6 @@ void CChainState::UpdateTip(const CBlockIndex* pindexNew) for (int bit = 0; bit < VERSIONBITS_NUM_BITS; bit++) { WarningBitsConditionChecker checker(bit); ThresholdState state = checker.GetStateFor(pindex, m_params.GetConsensus(), warningcache[bit]); - // dont trigger 'unknown new rules' warning if the bit falls within - // the block algo version range (enum in primitives/block.h) - if (bit <= BLOCK_VERSION_ALGO) continue; if (state == ThresholdState::ACTIVE || state == ThresholdState::LOCKED_IN) { const bilingual_str warning = strprintf(_("Unknown new rules activated (versionbit %i)"), bit); if (state == ThresholdState::ACTIVE) { diff --git a/src/versionbits.h b/src/versionbits.h index c3b61c0d0a..653aff1509 100644 --- a/src/versionbits.h +++ b/src/versionbits.h @@ -18,7 +18,7 @@ static const int32_t VERSIONBITS_TOP_BITS = 0x20000000UL; /** What bitmask determines whether versionbits is in use */ static const int32_t VERSIONBITS_TOP_MASK = 0xF0000000UL; /** Total bits available for versionbits */ -static const int32_t VERSIONBITS_NUM_BITS = 16; +static const int32_t VERSIONBITS_NUM_BITS = 29; /** BIP 9 defines a finite-state-machine to deploy a softfork in multiple stages. * State transitions happen during retarget period if conditions are met From 45441e85766c2f421c2f0a7dff2ed83c5ee526e3 Mon Sep 17 00:00:00 2001 From: Jared Tate <13957390+JaredTate@users.noreply.github.com> Date: Mon, 25 Oct 2021 20:35:43 -0600 Subject: [PATCH 4/4] Add -disabledandelion back --- src/dummywallet.cpp | 1 + src/wallet/init.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/dummywallet.cpp b/src/dummywallet.cpp index a19a9f23fa..6b46eeb38a 100644 --- a/src/dummywallet.cpp +++ b/src/dummywallet.cpp @@ -28,6 +28,7 @@ void DummyWalletInit::AddWalletOptions(ArgsManager& argsman) const "-addresstype", "-avoidpartialspends", "-changetype", + "-disabledandelion", "-disablewallet", "-discardfee=", "-fallbackfee=", diff --git a/src/wallet/init.cpp b/src/wallet/init.cpp index ecf99d7077..bb1b4c053d 100644 --- a/src/wallet/init.cpp +++ b/src/wallet/init.cpp @@ -46,7 +46,7 @@ void WalletInit::AddWalletOptions(ArgsManager& argsman) const argsman.AddArg("-addresstype", strprintf("What type of addresses to use (\"legacy\", \"p2sh-segwit\", or \"bech32\", default: \"%s\")", FormatOutputType(DEFAULT_ADDRESS_TYPE)), ArgsManager::ALLOW_ANY, OptionsCategory::WALLET); argsman.AddArg("-avoidpartialspends", strprintf("Group outputs by address, selecting many (possibly all) or none, instead of selecting on a per-output basis. Privacy is improved as addresses are mostly swept with fewer transactions and outputs are aggregated in clean change addresses. It may result in higher fees due to less optimal coin selection caused by this added limitation and possibly a larger-than-necessary number of inputs being used. Always enabled for wallets with \"avoid_reuse\" enabled, otherwise default: %u.", DEFAULT_AVOIDPARTIALSPENDS), ArgsManager::ALLOW_ANY, OptionsCategory::WALLET); argsman.AddArg("-changetype", "What type of change to use (\"legacy\", \"p2sh-segwit\", or \"bech32\"). Default is same as -addresstype, except when -addresstype=p2sh-segwit a native segwit output is used when sending to a native segwit address)", ArgsManager::ALLOW_ANY, OptionsCategory::WALLET); - argsman.AddArg("-disable-dandelion", "Disable dandelion support (anonymous transaction relay)", false, OptionsCategory::OPTIONS); + argsman.AddArg("-disabledandelion", "Disable dandelion support (anonymous transaction relay)", false, OptionsCategory::OPTIONS); argsman.AddArg("-disablewallet", "Do not load the wallet and disable wallet RPC calls", ArgsManager::ALLOW_ANY, OptionsCategory::WALLET); argsman.AddArg("-discardfee=", strprintf("The fee rate (in %s/kvB) that indicates your tolerance for discarding change by adding it to the fee (default: %s). " "Note: An output is discarded if it is dust at this rate, but we will always discard up to the dust relay fee and a discard fee above that is limited by the fee estimate for the longest target",