test: Require standard txs in regtest
This commit is contained in:
parent
fa9b419160
commit
fa89badf88
17 changed files with 61 additions and 11 deletions
|
@ -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
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
|
|
@ -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 = {
|
||||||
{
|
{
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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 = []
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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):
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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):
|
||||||
|
|
|
@ -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):
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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):
|
||||||
|
|
Loading…
Reference in a new issue