Browse Source

Increased nPowTargetTimespan to 10 seconds for RegTest.

Checked fPowNoRetargeting in pow.cpp.
cn
Jianping Wu 6 years ago
parent
commit
3cf8093553
  1. 4
      src/chainparams.cpp
  2. 3
      src/pow.cpp
  3. 17
      test/functional/feature_block.py
  4. 2
      test/functional/interface_rest.py
  5. 2
      test/functional/p2p_invalid_block.py
  6. 2
      test/functional/test_framework/blocktools.py
  7. 14
      test/functional/test_framework/mininode.py
  8. 2
      test/functional/test_framework/util.py

4
src/chainparams.cpp

@ -260,8 +260,8 @@ public: @@ -260,8 +260,8 @@ public:
consensus.BIP65Height = 1351; // BIP65 activated on regtest (Used in rpc activation tests)
consensus.BIP66Height = 1251; // BIP66 activated on regtest (Used in rpc activation tests)
consensus.powLimit = uint256S("7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
consensus.nPowTargetTimespan = 1; // 1 second
consensus.nPowTargetSpacing = 1; // 1 second
consensus.nPowTargetTimespan = 10; // 10 second
consensus.nPowTargetSpacing = 10; // 10 second
consensus.fPowAllowMinDifficultyBlocks = true;
consensus.fPowNoRetargeting = true;
consensus.nRuleChangeActivationThreshold = 108; // 75% for testchains

3
src/pow.cpp

@ -15,6 +15,9 @@ @@ -15,6 +15,9 @@
// Copy and modified from CalculateDogecoinNextWorkRequired (dogecoin.cpp)
unsigned int CalculateDigishieldNextWorkRequired(const CBlockIndex* pindexLast, int64_t nFirstBlockTime, const Consensus::Params& params)
{
if (params.fPowNoRetargeting)
return pindexLast->nBits;
const int64_t retargetTimespan = params.nPowTargetTimespan;
const int64_t nActualTimespan = pindexLast->GetBlockTime() - nFirstBlockTime;
int64_t nModulatedTimespan = nActualTimespan;

17
test/functional/feature_block.py

@ -825,7 +825,7 @@ class FullBlockTest(ComparisonTestFramework): @@ -825,7 +825,7 @@ class FullBlockTest(ComparisonTestFramework):
# tx with output value > input value out of range
tip(57)
b59 = block(59)
tx = create_and_sign_tx(out[17].tx, out[17].n, 51*COIN)
tx = create_and_sign_tx(out[17].tx, out[17].n, 510*COIN)
b59 = update_block(59, [tx])
yield rejected(RejectResult(16, b'bad-txns-in-belowout'))
@ -844,13 +844,14 @@ class FullBlockTest(ComparisonTestFramework): @@ -844,13 +844,14 @@ class FullBlockTest(ComparisonTestFramework):
# not-fully-spent transaction in the same chain. To test, make identical coinbases;
# the second one should be rejected.
#
tip(60)
b61 = block(61, spend=out[18])
b61.vtx[0].vin[0].scriptSig = b60.vtx[0].vin[0].scriptSig #equalize the coinbases
b61.vtx[0].rehash()
b61 = update_block(61, [])
assert_equal(b60.vtx[0].serialize(), b61.vtx[0].serialize())
yield rejected(RejectResult(16, b'bad-txns-BIP30'))
# Kevacoin - BIP34 is activated since beginning, no need for BIP30, test case skipped.
#tip(60)
#b61 = block(61, spend=out[18])
#b61.vtx[0].vin[0].scriptSig = b60.vtx[0].vin[0].scriptSig #equalize the coinbases
#b61.vtx[0].rehash()
#b61 = update_block(61, [])
#assert_equal(b60.vtx[0].serialize(), b61.vtx[0].serialize())
#yield rejected(RejectResult(16, b'bad-txns-BIP30'))
# Test tx.isFinal is properly rejected (not an exhaustive tx.isFinal test, that should be in data-driven transaction tests)

2
test/functional/interface_rest.py

@ -60,7 +60,7 @@ class RESTTest (BitcoinTestFramework): @@ -60,7 +60,7 @@ class RESTTest (BitcoinTestFramework):
self.nodes[2].generate(100)
self.sync_all()
assert_equal(self.nodes[0].getbalance(), 50)
assert_equal(self.nodes[0].getbalance(), 500)
txid = self.nodes[0].sendtoaddress(self.nodes[1].getnewaddress(), 0.1)
self.sync_all()

2
test/functional/p2p_invalid_block.py

@ -118,7 +118,7 @@ class InvalidBlockRequestTest(ComparisonTestFramework): @@ -118,7 +118,7 @@ class InvalidBlockRequestTest(ComparisonTestFramework):
block3 = create_block(self.tip, create_coinbase(height), self.block_time)
block3.nVersion = 0x20000000
self.block_time += 1
block3.vtx[0].vout[0].nValue = 100 * COIN # Too high!
block3.vtx[0].vout[0].nValue = 1000 * COIN # Too high!
block3.vtx[0].sha256=None
block3.vtx[0].calc_sha256()
block3.hashMerkleRoot = block3.calc_merkle_root()

2
test/functional/test_framework/blocktools.py

@ -89,7 +89,7 @@ def create_coinbase(height, pubkey = None): @@ -89,7 +89,7 @@ def create_coinbase(height, pubkey = None):
coinbase.vin.append(CTxIn(COutPoint(0, 0xffffffff),
ser_string(serialize_script_num(height)), 0xffffffff))
coinbaseoutput = CTxOut()
coinbaseoutput.nValue = 50 * COIN
coinbaseoutput.nValue = 500 * COIN
halvings = int(height/150) # regtest
coinbaseoutput.nValue >>= halvings
if (pubkey != None):

14
test/functional/test_framework/mininode.py

@ -345,25 +345,25 @@ class P2PInterface(P2PConnection): @@ -345,25 +345,25 @@ class P2PInterface(P2PConnection):
# Connection helper methods
def wait_for_disconnect(self, timeout=60):
def wait_for_disconnect(self, timeout=360):
test_function = lambda: self.state != "connected"
wait_until(test_function, timeout=timeout, lock=mininode_lock)
# Message receiving helper methods
def wait_for_block(self, blockhash, timeout=60):
def wait_for_block(self, blockhash, timeout=360):
test_function = lambda: self.last_message.get("block") and self.last_message["block"].block.rehash() == blockhash
wait_until(test_function, timeout=timeout, lock=mininode_lock)
def wait_for_getdata(self, timeout=60):
def wait_for_getdata(self, timeout=360):
test_function = lambda: self.last_message.get("getdata")
wait_until(test_function, timeout=timeout, lock=mininode_lock)
def wait_for_getheaders(self, timeout=60):
def wait_for_getheaders(self, timeout=360):
test_function = lambda: self.last_message.get("getheaders")
wait_until(test_function, timeout=timeout, lock=mininode_lock)
def wait_for_inv(self, expected_inv, timeout=60):
def wait_for_inv(self, expected_inv, timeout=360):
"""Waits for an INV message and checks that the first inv object in the message was as expected."""
if len(expected_inv) > 1:
raise NotImplementedError("wait_for_inv() will only verify the first inv object")
@ -372,7 +372,7 @@ class P2PInterface(P2PConnection): @@ -372,7 +372,7 @@ class P2PInterface(P2PConnection):
self.last_message["inv"].inv[0].hash == expected_inv[0].hash
wait_until(test_function, timeout=timeout, lock=mininode_lock)
def wait_for_verack(self, timeout=60):
def wait_for_verack(self, timeout=360):
test_function = lambda: self.message_count["verack"]
wait_until(test_function, timeout=timeout, lock=mininode_lock)
@ -383,7 +383,7 @@ class P2PInterface(P2PConnection): @@ -383,7 +383,7 @@ class P2PInterface(P2PConnection):
self.sync_with_ping()
# Sync up with the node
def sync_with_ping(self, timeout=60):
def sync_with_ping(self, timeout=360):
self.send_message(msg_ping(nonce=self.ping_counter))
test_function = lambda: self.last_message.get("pong") and self.last_message["pong"].nonce == self.ping_counter
wait_until(test_function, timeout=timeout, lock=mininode_lock)

2
test/functional/test_framework/util.py

@ -202,7 +202,7 @@ def satoshi_round(amount): @@ -202,7 +202,7 @@ def satoshi_round(amount):
def wait_until(predicate, *, attempts=float('inf'), timeout=float('inf'), lock=None):
if attempts == float('inf') and timeout == float('inf'):
timeout = 60
timeout = 600
attempt = 0
timeout += time.time()

Loading…
Cancel
Save