Skip to content

Commit 6c5ca3e

Browse files
committed
Merge k78 via rejectparasites-28+knots
2 parents 39ec130 + 83eb124 commit 6c5ca3e

File tree

6 files changed

+21
-0
lines changed

6 files changed

+21
-0
lines changed

src/init.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -699,6 +699,7 @@ void SetupServerArgs(ArgsManager& argsman)
699699
OptionsCategory::NODE_RELAY);
700700
argsman.AddArg("-minrelaytxfee=<amt>", strprintf("Fees (in %s/kvB) smaller than this are considered zero fee for relaying, mining and transaction creation (default: %s)",
701701
CURRENCY_UNIT, FormatMoney(DEFAULT_MIN_RELAY_TX_FEE)), ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);
702+
argsman.AddArg("-rejectparasites", strprintf("Refuse to relay or mine parasitic overlay protocols (default: %u)", DEFAULT_REJECT_PARASITES), ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);
702703
argsman.AddArg("-rejecttokens",
703704
strprintf("Refuse to relay or mine transactions involving non-bitcoin tokens (default: %u)",
704705
DEFAULT_REJECT_TOKENS),

src/kernel/mempool_options.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ struct MemPoolOptions {
7373
bool datacarrier_fullcount{DEFAULT_DATACARRIER_FULLCOUNT};
7474
bool permit_bare_pubkey{DEFAULT_PERMIT_BAREPUBKEY};
7575
bool permit_bare_multisig{DEFAULT_PERMIT_BAREMULTISIG};
76+
bool reject_parasites{DEFAULT_REJECT_PARASITES};
7677
bool reject_tokens{DEFAULT_REJECT_TOKENS};
7778
bool accept_non_std_datacarrier{DEFAULT_ACCEPT_NON_STD_DATACARRIER};
7879
bool require_standard{true};

src/node/mempool_args.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ util::Result<void> ApplyArgsManOptions(const ArgsManager& argsman, const CChainP
146146

147147
mempool_opts.permit_bare_multisig = argsman.GetBoolArg("-permitbaremultisig", DEFAULT_PERMIT_BAREMULTISIG);
148148

149+
mempool_opts.reject_parasites = argsman.GetBoolArg("-rejectparasites", DEFAULT_REJECT_PARASITES);
150+
149151
mempool_opts.reject_tokens = argsman.GetBoolArg("-rejecttokens", DEFAULT_REJECT_TOKENS);
150152

151153
if (argsman.GetBoolArg("-datacarrier", DEFAULT_ACCEPT_DATACARRIER)) {

src/policy/policy.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,10 @@ bool IsStandardTx(const CTransaction& tx, const kernel::MemPoolOptions& opts, st
129129
MaybeReject("tx-size");
130130
}
131131

132+
if (tx.nLockTime == 21 && opts.reject_parasites) {
133+
MaybeReject("parasite-cat21");
134+
}
135+
132136
for (const CTxIn& txin : tx.vin)
133137
{
134138
// Biggest 'standard' txin involving only keys is a 15-of-15 P2SH

src/policy/policy.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ static constexpr bool DEFAULT_REJECT_TOKENS{false};
5656
static constexpr bool DEFAULT_PERMIT_BAREPUBKEY{true};
5757
/** Default for -permitbaremultisig */
5858
static constexpr bool DEFAULT_PERMIT_BAREMULTISIG{true};
59+
/** Default for -rejectparasites */
60+
static constexpr bool DEFAULT_REJECT_PARASITES{false};
5961
/** The maximum number of witness stack items in a standard P2WSH script */
6062
static constexpr unsigned int MAX_STANDARD_P2WSH_STACK_ITEMS{100};
6163
/** The maximum size in bytes of each witness stack item in a standard P2WSH script */

src/test/transaction_tests.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -850,6 +850,17 @@ BOOST_AUTO_TEST_CASE(test_IsStandard)
850850
t.vout[0].scriptPubKey = CScript() << OP_1;
851851
CheckIsNotStandard(t, "scriptpubkey");
852852

853+
// Test rejectparasites
854+
t.vout[0].scriptPubKey = CScript() << OP_RETURN;
855+
t.nLockTime = 21;
856+
g_mempool_opts.reject_parasites = false;
857+
CheckIsStandard(t);
858+
g_mempool_opts.reject_parasites = true;
859+
CheckIsNotStandard(t, "parasite-cat21");
860+
t.nLockTime = 0;
861+
CheckIsStandard(t);
862+
g_mempool_opts.reject_parasites = false;
863+
853864
// Test rejecttokens
854865
t.vout[0].scriptPubKey = CScript() << OP_RETURN << OP_13 << OP_FALSE;
855866
g_mempool_opts.reject_tokens = false;

0 commit comments

Comments
 (0)