Skip to content

Commit d152f91

Browse files
committed
Add -datacarriercost option to adjust policy vsize of datacarrier bytes
1 parent d4a4819 commit d152f91

File tree

4 files changed

+9
-0
lines changed

4 files changed

+9
-0
lines changed

src/init.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -645,6 +645,7 @@ void SetupServerArgs(ArgsManager& argsman)
645645
argsman.AddArg("-bytespersigop", strprintf("Equivalent bytes per sigop in transactions for relay and mining (default: %u)", DEFAULT_BYTES_PER_SIGOP), ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);
646646
argsman.AddArg("-bytespersigopstrict", strprintf("Minimum bytes per sigop in transactions we relay and mine (default: %u)", DEFAULT_BYTES_PER_SIGOP_STRICT), ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);
647647
argsman.AddArg("-datacarrier", strprintf("Relay and mine data carrier transactions (default: %u)", DEFAULT_ACCEPT_DATACARRIER), ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);
648+
argsman.AddArg("-datacarriercost", strprintf("Treat extra data in transactions as at least N vbytes per actual byte (default: %s)", DEFAULT_WEIGHT_PER_DATA_BYTE / 4.0), ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);
648649
argsman.AddArg("-datacarrierfullcount", strprintf("Apply datacarriersize limit to all known datacarrier methods (default: %u)", DEFAULT_DATACARRIER_FULLCOUNT), ArgsManager::ALLOW_ANY | (DEFAULT_DATACARRIER_FULLCOUNT ? uint32_t{ArgsManager::DEBUG_ONLY} : 0), OptionsCategory::NODE_RELAY);
649650
argsman.AddArg("-datacarriersize",
650651
strprintf("Maximum size of data in data carrier transactions we relay and mine, in bytes (default: %u)",
@@ -1040,6 +1041,10 @@ bool AppInitParameterInteraction(const ArgsManager& args)
10401041
}
10411042
}
10421043

1044+
if (auto parsed = args.GetFixedPointArg("-datacarriercost", 2)) {
1045+
g_weight_per_data_byte = ((*parsed * WITNESS_SCALE_FACTOR) + 99) / 100;
1046+
}
1047+
10431048
nBytesPerSigOp = args.GetIntArg("-bytespersigop", nBytesPerSigOp);
10441049
nBytesPerSigOpStrict = args.GetIntArg("-bytespersigopstrict", nBytesPerSigOpStrict);
10451050

src/policy/policy.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ static constexpr unsigned int DEFAULT_INCREMENTAL_RELAY_FEE{1000};
4848
static constexpr unsigned int DEFAULT_BYTES_PER_SIGOP{20};
4949
/** Default for -bytespersigopstrict */
5050
static constexpr unsigned int DEFAULT_BYTES_PER_SIGOP_STRICT{20};
51+
/** Default for -datacarriercost (multiplied by WITNESS_SCALE_FACTOR) */
52+
static constexpr unsigned int DEFAULT_WEIGHT_PER_DATA_BYTE{1};
5153
/** Default for -permitbarepubkey */
5254
static constexpr bool DEFAULT_PERMIT_BAREPUBKEY{true};
5355
/** Default for -permitbaremultisig */

src/policy/settings.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@
99

1010
unsigned int nBytesPerSigOp = DEFAULT_BYTES_PER_SIGOP;
1111
unsigned int nBytesPerSigOpStrict = DEFAULT_BYTES_PER_SIGOP_STRICT;
12+
unsigned int g_weight_per_data_byte = DEFAULT_WEIGHT_PER_DATA_BYTE;

src/policy/settings.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@
88

99
extern unsigned int nBytesPerSigOp;
1010
extern unsigned int nBytesPerSigOpStrict;
11+
extern unsigned int g_weight_per_data_byte;
1112

1213
#endif // BITCOIN_POLICY_SETTINGS_H

0 commit comments

Comments
 (0)