init: completely remove `-maxorphantx` option
What changed, and why it matters
This commit removes an already-unused command-line option called `-maxorphantx`. The option had no effect since version 30.0 and only produced a warning if someone still had it in their configuration. Now it is fully removed, and a release note explains the change. There is no security issue here.
No security action required. Users who still have `-maxorphantx` in their configuration should remove it, as the option is now unrecognized and may cause startup errors depending on argument-handling settings.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The patch deletes the -maxorphantx startup argument registration and the associated AppInitParameterInteraction warning. It also removes the functional test that verified the warning behavior. The option was previously deprecated and non-functional; orphan transaction limiting is no longer based on a transaction count configured by this option. This is a cleanup commit with no runtime behavior change beyond removing a warning.
Changed components
src/init.cpptest/functional/p2p_orphan_handling.pydoc/release-notes-33872.mdInspect captured patch +5 / −18
diff --git a/doc/release-notes-33872.md b/doc/release-notes-33872.md
new file mode 100644
index 00000000..486a3b26
--- /dev/null
+++ b/doc/release-notes-33872.md
@@ -0,0 +1,5 @@
+P2P and network changes
+-----------------------
+
+- The `-maxorphantx` startup option has been removed. It was
+ previously deprecated and has no effect anymore since v30.0. (#33872)
diff --git a/src/init.cpp b/src/init.cpp
index 108a289d..1a33226b 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -502,8 +502,6 @@ void SetupServerArgs(ArgsManager& argsman, bool can_listen_ipc)
argsman.AddArg("-allowignoredconf", strprintf("For backwards compatibility, treat an unused %s file in the datadir as a warning, not an error.", BITCOIN_CONF_FILENAME), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
argsman.AddArg("-loadblock=<file>", "Imports blocks from external file on startup", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
argsman.AddArg("-maxmempool=<n>", strprintf("Keep the transaction memory pool below <n> megabytes (default: %u)", DEFAULT_MAX_MEMPOOL_SIZE_MB), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
- // TODO: remove in v31.0
- argsman.AddArg("-maxorphantx=<n>", strprintf("(Removed option, see release notes)"), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
argsman.AddArg("-mempoolexpiry=<n>", strprintf("Do not keep transactions in the mempool longer than <n> hours (default: %u)", DEFAULT_MEMPOOL_EXPIRY_HOURS), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
argsman.AddArg("-minimumchainwork=<hex>", 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("-par=<n>", strprintf("Set the number of script verification threads (0 = auto, up to %d, <0 = leave that many cores free, default: %d)",
@@ -903,11 +901,6 @@ bool AppInitParameterInteraction(const ArgsManager& args)
InitWarning(_("Option '-checkpoints' is set but checkpoints were removed. This option has no effect."));
}
- // We no longer limit the orphanage based on number of transactions but keep the option to warn users who still have it in their config.
- if (args.IsArgSet("-maxorphantx")) {
- InitWarning(_("Option '-maxorphantx' is set but no longer has any effect (see release notes). Please remove it from your configuration."));
- }
-
// Error if network-specific options (-addnode, -connect, etc) are
// specified in default section of config file, but not overridden
// on the command line or in this chain's section of the config file.
diff --git a/test/functional/p2p_orphan_handling.py b/test/functional/p2p_orphan_handling.py
index 537eea95..b71af822 100755
--- a/test/functional/p2p_orphan_handling.py
+++ b/test/functional/p2p_orphan_handling.py
@@ -814,16 +814,6 @@ class OrphanHandlingTest(BitcoinTestFramework):
assert orphan["txid"] in final_mempool
assert tx_replacer_C["txid"] in final_mempool
- @cleanup
- def test_maxorphantx_option(self):
- # This test should be removed when -maxorphantx is removed.
- self.log.info("Test that setting the -maxorphantx option does not error")
- warning = "Warning: Option '-maxorphantx' is set but no longer has any effect (see release notes). Please remove it from your configuration."
- self.restart_node(0, extra_args=["-maxorphantx=5"])
- assert_equal(self.nodes[0].getorphantxs(), [])
- self.stop_node(0, expected_stderr=warning)
- self.restart_node(0)
-
def run_test(self):
self.nodes[0].setmocktime(int(time.time()))
self.wallet_nonsegwit = MiniWallet(self.nodes[0], mode=MiniWalletMode.RAW_P2PK)
@@ -844,7 +834,6 @@ class OrphanHandlingTest(BitcoinTestFramework):
self.test_announcers_before_and_after()
self.test_parents_change()
self.test_maximal_package_protected()
- self.test_maxorphantx_option()
if __name__ == '__main__':
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.