Skip to content

Commit 8ac857b

Browse files
committed
Add rejecttokens policy option to filter out Runes
1 parent d3e21af commit 8ac857b

File tree

5 files changed

+12
-0
lines changed

5 files changed

+12
-0
lines changed

src/init.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,10 @@ void SetupServerArgs(ArgsManager& argsman)
664664
OptionsCategory::NODE_RELAY);
665665
argsman.AddArg("-minrelaytxfee=<amt>", strprintf("Fees (in %s/kvB) smaller than this are considered zero fee for relaying, mining and transaction creation (default: %s)",
666666
CURRENCY_UNIT, FormatMoney(DEFAULT_MIN_RELAY_TX_FEE)), ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);
667+
argsman.AddArg("-rejecttokens",
668+
strprintf("Refuse to relay or mine transactions involving non-bitcoin tokens (default: %u)",
669+
DEFAULT_REJECT_TOKENS),
670+
ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);
667671
argsman.AddArg("-spkreuse=<policy>", strprintf("Either \"allow\" to relay/mine transactions reusing addresses or other pubkey scripts, or \"conflict\" to treat them as exclusive prior to being mined (default: %s)", DEFAULT_SPKREUSE), ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);
668672
argsman.AddArg("-whitelistforcerelay", strprintf("Add 'forcerelay' permission to whitelisted peers with default permissions. This will relay transactions even if the transactions were already in the mempool. (default: %d)", DEFAULT_WHITELISTFORCERELAY), ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);
669673
argsman.AddArg("-whitelistrelay", strprintf("Add 'relay' permission to whitelisted peers with default permissions. This will accept relayed transactions even when not relaying transactions (default: %d)", DEFAULT_WHITELISTRELAY), ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);

src/kernel/mempool_options.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ struct MemPoolOptions {
6363
bool datacarrier_fullcount{DEFAULT_DATACARRIER_FULLCOUNT};
6464
bool permit_bare_pubkey{DEFAULT_PERMIT_BAREPUBKEY};
6565
bool permit_bare_multisig{DEFAULT_PERMIT_BAREMULTISIG};
66+
bool reject_tokens{DEFAULT_REJECT_TOKENS};
6667
bool accept_non_std_datacarrier{DEFAULT_ACCEPT_NON_STD_DATACARRIER};
6768
bool require_standard{true};
6869
RBFPolicy rbf_policy{DEFAULT_MEMPOOL_RBF_POLICY};

src/node/mempool_args.cpp

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

8686
mempool_opts.permit_bare_multisig = argsman.GetBoolArg("-permitbaremultisig", DEFAULT_PERMIT_BAREMULTISIG);
8787

88+
mempool_opts.reject_tokens = argsman.GetBoolArg("-rejecttokens", DEFAULT_REJECT_TOKENS);
89+
8890
if (argsman.GetBoolArg("-datacarrier", DEFAULT_ACCEPT_DATACARRIER)) {
8991
mempool_opts.max_datacarrier_bytes = argsman.GetIntArg("-datacarriersize", MAX_OP_RETURN_RELAY);
9092
} else {

src/policy/policy.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,9 @@ bool IsStandardTx(const CTransaction& tx, const kernel::MemPoolOptions& opts, st
159159
}
160160

161161
if (whichType == TxoutType::NULL_DATA) {
162+
if (txout.scriptPubKey.size() > 2 && txout.scriptPubKey[1] == OP_13 && opts.reject_tokens) {
163+
MaybeReject("tokens-runes");
164+
}
162165
nDataOut++;
163166
continue;
164167
}

src/policy/policy.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ static constexpr unsigned int DEFAULT_BYTES_PER_SIGOP{20};
5050
static constexpr unsigned int DEFAULT_BYTES_PER_SIGOP_STRICT{20};
5151
/** Default for -datacarriercost (multiplied by WITNESS_SCALE_FACTOR) */
5252
static constexpr unsigned int DEFAULT_WEIGHT_PER_DATA_BYTE{1};
53+
/** Default for -rejecttokens */
54+
static constexpr bool DEFAULT_REJECT_TOKENS{false};
5355
/** Default for -permitbarepubkey */
5456
static constexpr bool DEFAULT_PERMIT_BAREPUBKEY{true};
5557
/** Default for -permitbaremultisig */

0 commit comments

Comments
 (0)