test: Require standard txs in regtest

This commit is contained in:
MarcoFalke 2019-04-24 17:55:58 -04:00
parent fa9b419160
commit fa89badf88
No known key found for this signature in database
GPG key ID: CE2B75697E69A548
17 changed files with 61 additions and 11 deletions

View file

@ -103,6 +103,20 @@ Low-level Changes section below.
Low-level changes Low-level changes
================= =================
RPC
---
Tests
-----
- The regression test chain, that can be enabled by the `-regtest` command line
flag, now requires transactions to not violate standard policy by default.
Making the default the same as for mainnet, makes it easier to test mainnet
behavior on regtest. Be reminded that the testnet still allows non-standard
txs by default and that the policy can be locally adjusted with the
`-acceptnonstdtxn` command line flag for both test chains.
Configuration Configuration
------------ ------------

View file

@ -141,6 +141,7 @@ public:
fDefaultConsistencyChecks = false; fDefaultConsistencyChecks = false;
fRequireStandard = true; fRequireStandard = true;
m_is_test_chain = false;
checkpointData = { checkpointData = {
{ {
@ -246,6 +247,7 @@ public:
fDefaultConsistencyChecks = false; fDefaultConsistencyChecks = false;
fRequireStandard = false; fRequireStandard = false;
m_is_test_chain = true;
checkpointData = { checkpointData = {
@ -322,7 +324,8 @@ public:
vSeeds.clear(); //!< Regtest mode doesn't have any DNS seeds. vSeeds.clear(); //!< Regtest mode doesn't have any DNS seeds.
fDefaultConsistencyChecks = true; fDefaultConsistencyChecks = true;
fRequireStandard = false; fRequireStandard = true;
m_is_test_chain = true;
checkpointData = { checkpointData = {
{ {

View file

@ -66,6 +66,8 @@ public:
bool DefaultConsistencyChecks() const { return fDefaultConsistencyChecks; } bool DefaultConsistencyChecks() const { return fDefaultConsistencyChecks; }
/** Policy: Filter transactions that do not match well-defined patterns */ /** Policy: Filter transactions that do not match well-defined patterns */
bool RequireStandard() const { return fRequireStandard; } bool RequireStandard() const { return fRequireStandard; }
/** If this is a test chain */
bool IsTestChain() const { return m_is_test_chain; }
uint64_t PruneAfterHeight() const { return nPruneAfterHeight; } uint64_t PruneAfterHeight() const { return nPruneAfterHeight; }
/** Minimum free space (in GB) needed for data directory */ /** Minimum free space (in GB) needed for data directory */
uint64_t AssumedBlockchainSize() const { return m_assumed_blockchain_size; } uint64_t AssumedBlockchainSize() const { return m_assumed_blockchain_size; }
@ -101,6 +103,7 @@ protected:
std::vector<SeedSpec6> vFixedSeeds; std::vector<SeedSpec6> vFixedSeeds;
bool fDefaultConsistencyChecks; bool fDefaultConsistencyChecks;
bool fRequireStandard; bool fRequireStandard;
bool m_is_test_chain;
CCheckpointData checkpointData; CCheckpointData checkpointData;
ChainTxData chainTxData; ChainTxData chainTxData;
bool m_fallback_fee_enabled; bool m_fallback_fee_enabled;

View file

@ -1150,8 +1150,9 @@ bool AppInitParameterInteraction()
} }
fRequireStandard = !gArgs.GetBoolArg("-acceptnonstdtxn", !chainparams.RequireStandard()); fRequireStandard = !gArgs.GetBoolArg("-acceptnonstdtxn", !chainparams.RequireStandard());
if (chainparams.RequireStandard() && !fRequireStandard) if (!chainparams.IsTestChain() && !fRequireStandard) {
return InitError(strprintf("acceptnonstdtxn is not currently supported for %s chain", chainparams.NetworkIDString())); return InitError(strprintf("acceptnonstdtxn is not currently supported for %s chain", chainparams.NetworkIDString()));
}
nBytesPerSigOp = gArgs.GetArg("-bytespersigop", nBytesPerSigOp); nBytesPerSigOp = gArgs.GetArg("-bytespersigop", nBytesPerSigOp);
if (!g_wallet_init_interface.ParameterInteraction()) return false; if (!g_wallet_init_interface.ParameterInteraction()) return false;

View file

@ -29,7 +29,10 @@ NOT_FINAL_ERROR = "non-BIP68-final (code 64)"
class BIP68Test(BitcoinTestFramework): class BIP68Test(BitcoinTestFramework):
def set_test_params(self): def set_test_params(self):
self.num_nodes = 2 self.num_nodes = 2
self.extra_args = [[], ["-acceptnonstdtxn=0"]] self.extra_args = [
["-acceptnonstdtxn=1"],
["-acceptnonstdtxn=0"],
]
def skip_test_if_missing_module(self): def skip_test_if_missing_module(self):
self.skip_if_no_wallet() self.skip_if_no_wallet()

View file

@ -78,7 +78,7 @@ class FullBlockTest(BitcoinTestFramework):
def set_test_params(self): def set_test_params(self):
self.num_nodes = 1 self.num_nodes = 1
self.setup_clean_chain = True self.setup_clean_chain = True
self.extra_args = [[]] self.extra_args = [['-acceptnonstdtxn=1']] # This is a consensus block test, we don't care about tx policy
def run_test(self): def run_test(self):
node = self.nodes[0] # convenience reference to the node node = self.nodes[0] # convenience reference to the node

View file

@ -57,7 +57,11 @@ def cltv_validate(node, tx, height):
class BIP65Test(BitcoinTestFramework): class BIP65Test(BitcoinTestFramework):
def set_test_params(self): def set_test_params(self):
self.num_nodes = 1 self.num_nodes = 1
self.extra_args = [['-whitelist=127.0.0.1', '-par=1']] # Use only one script thread to get the exact reject reason for testing self.extra_args = [[
'-whitelist=127.0.0.1',
'-par=1', # Use only one script thread to get the exact reject reason for testing
'-acceptnonstdtxn=1', # cltv_invalidate is nonstandard
]]
self.setup_clean_chain = True self.setup_clean_chain = True
self.rpc_timeout = 120 self.rpc_timeout = 120

View file

@ -35,7 +35,7 @@ class MaxUploadTest(BitcoinTestFramework):
def set_test_params(self): def set_test_params(self):
self.setup_clean_chain = True self.setup_clean_chain = True
self.num_nodes = 1 self.num_nodes = 1
self.extra_args = [["-maxuploadtarget=800"]] self.extra_args = [["-maxuploadtarget=800", "-acceptnonstdtxn=1"]]
# Cache for utxos, as the listunspent may take a long time later in the test # Cache for utxos, as the listunspent may take a long time later in the test
self.utxo_cache = [] self.utxo_cache = []

View file

@ -67,8 +67,8 @@ class ReplaceByFeeTest(BitcoinTestFramework):
self.num_nodes = 1 self.num_nodes = 1
self.extra_args = [ self.extra_args = [
[ [
"-acceptnonstdtxn=1",
"-maxorphantx=1000", "-maxorphantx=1000",
"-whitelist=127.0.0.1",
"-limitancestorcount=50", "-limitancestorcount=50",
"-limitancestorsize=101", "-limitancestorsize=101",
"-limitdescendantcount=200", "-limitdescendantcount=200",

View file

@ -53,17 +53,20 @@ class SegWitTest(BitcoinTestFramework):
# This test tests SegWit both pre and post-activation, so use the normal BIP9 activation. # This test tests SegWit both pre and post-activation, so use the normal BIP9 activation.
self.extra_args = [ self.extra_args = [
[ [
"-acceptnonstdtxn=1",
"-rpcserialversion=0", "-rpcserialversion=0",
"-vbparams=segwit:0:999999999999", "-vbparams=segwit:0:999999999999",
"-addresstype=legacy", "-addresstype=legacy",
], ],
[ [
"-acceptnonstdtxn=1",
"-blockversion=4", "-blockversion=4",
"-rpcserialversion=1", "-rpcserialversion=1",
"-vbparams=segwit:0:999999999999", "-vbparams=segwit:0:999999999999",
"-addresstype=legacy", "-addresstype=legacy",
], ],
[ [
"-acceptnonstdtxn=1",
"-blockversion=536870915", "-blockversion=536870915",
"-vbparams=segwit:0:999999999999", "-vbparams=segwit:0:999999999999",
"-addresstype=legacy", "-addresstype=legacy",

View file

@ -36,7 +36,6 @@ class MempoolAcceptanceTest(BitcoinTestFramework):
self.num_nodes = 1 self.num_nodes = 1
self.extra_args = [[ self.extra_args = [[
'-txindex', '-txindex',
'-acceptnonstdtxn=0', # Try to mimic main-net
]] * self.num_nodes ]] * self.num_nodes
def skip_test_if_missing_module(self): def skip_test_if_missing_module(self):

View file

@ -13,7 +13,11 @@ class MempoolLimitTest(BitcoinTestFramework):
def set_test_params(self): def set_test_params(self):
self.setup_clean_chain = True self.setup_clean_chain = True
self.num_nodes = 1 self.num_nodes = 1
self.extra_args = [["-maxmempool=5", "-spendzeroconfchange=0"]] self.extra_args = [[
"-acceptnonstdtxn=1",
"-maxmempool=5",
"-spendzeroconfchange=0",
]]
def skip_test_if_missing_module(self): def skip_test_if_missing_module(self):
self.skip_if_no_wallet() self.skip_if_no_wallet()

View file

@ -14,7 +14,10 @@ class PrioritiseTransactionTest(BitcoinTestFramework):
def set_test_params(self): def set_test_params(self):
self.setup_clean_chain = True self.setup_clean_chain = True
self.num_nodes = 2 self.num_nodes = 2
self.extra_args = [["-printpriority=1"], ["-printpriority=1"]] self.extra_args = [[
"-printpriority=1",
"-acceptnonstdtxn=1",
]] * self.num_nodes
def skip_test_if_missing_module(self): def skip_test_if_missing_module(self):
self.skip_if_no_wallet() self.skip_if_no_wallet()

View file

@ -95,6 +95,9 @@ class CompactBlocksTest(BitcoinTestFramework):
def set_test_params(self): def set_test_params(self):
self.setup_clean_chain = True self.setup_clean_chain = True
self.num_nodes = 1 self.num_nodes = 1
self.extra_args = [[
"-acceptnonstdtxn=1",
]]
self.utxos = [] self.utxos = []
def skip_test_if_missing_module(self): def skip_test_if_missing_module(self):

View file

@ -25,6 +25,9 @@ from data import invalid_txs
class InvalidTxRequestTest(BitcoinTestFramework): class InvalidTxRequestTest(BitcoinTestFramework):
def set_test_params(self): def set_test_params(self):
self.num_nodes = 1 self.num_nodes = 1
self.extra_args = [[
"-acceptnonstdtxn=1",
]]
self.setup_clean_chain = True self.setup_clean_chain = True
def bootstrap_p2p(self, *, num_connections=1): def bootstrap_p2p(self, *, num_connections=1):

View file

@ -184,7 +184,11 @@ class SegWitTest(BitcoinTestFramework):
self.setup_clean_chain = True self.setup_clean_chain = True
self.num_nodes = 3 self.num_nodes = 3
# This test tests SegWit both pre and post-activation, so use the normal BIP9 activation. # This test tests SegWit both pre and post-activation, so use the normal BIP9 activation.
self.extra_args = [["-whitelist=127.0.0.1", "-vbparams=segwit:0:999999999999"], ["-whitelist=127.0.0.1", "-acceptnonstdtxn=0", "-vbparams=segwit:0:999999999999"], ["-whitelist=127.0.0.1", "-vbparams=segwit:0:0"]] self.extra_args = [
["-whitelist=127.0.0.1", "-acceptnonstdtxn=1", "-vbparams=segwit:0:999999999999"],
["-whitelist=127.0.0.1", "-acceptnonstdtxn=0", "-vbparams=segwit:0:999999999999"],
["-whitelist=127.0.0.1", "-acceptnonstdtxn=1", "-vbparams=segwit:0:0"],
]
def skip_test_if_missing_module(self): def skip_test_if_missing_module(self):
self.skip_if_no_wallet() self.skip_if_no_wallet()

View file

@ -20,6 +20,9 @@ from test_framework.util import (
class WalletTest(BitcoinTestFramework): class WalletTest(BitcoinTestFramework):
def set_test_params(self): def set_test_params(self):
self.num_nodes = 4 self.num_nodes = 4
self.extra_args = [[
"-acceptnonstdtxn=1",
]] * self.num_nodes
self.setup_clean_chain = True self.setup_clean_chain = True
def skip_test_if_missing_module(self): def skip_test_if_missing_module(self):