diff --git a/src/validation.cpp b/src/validation.cpp index cf5f546912d..27ad61d3579 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -2580,6 +2580,11 @@ bool Chainstate::ConnectBlock(const CBlock& block, BlockValidationState& state, Ticks(m_chainman.time_forks), Ticks(m_chainman.time_forks) / m_chainman.num_blocks_total); + if (fScriptChecks != m_prev_script_checks_logged && GetRole() == ChainstateRole::NORMAL) { + LogInfo("%s signature validations at block #%d (%s).", fScriptChecks ? "Enabling" : "Disabling", pindex->nHeight, block_hash.ToString()); + m_prev_script_checks_logged = fScriptChecks; + } + CBlockUndo blockundo; // Precomputed transaction data pointers must not be invalidated diff --git a/src/validation.h b/src/validation.h index c25dd2de2d9..870d56d1931 100644 --- a/src/validation.h +++ b/src/validation.h @@ -550,6 +550,8 @@ protected: //! Cached result of LookupBlockIndex(*m_from_snapshot_blockhash) mutable const CBlockIndex* m_cached_snapshot_base GUARDED_BY(::cs_main){nullptr}; + std::atomic_bool m_prev_script_checks_logged{true}; + public: //! Reference to a BlockManager instance which itself is shared across all //! Chainstate instances. diff --git a/test/functional/feature_assumevalid.py b/test/functional/feature_assumevalid.py index 7d097b1395b..5f7fff82051 100755 --- a/test/functional/feature_assumevalid.py +++ b/test/functional/feature_assumevalid.py @@ -153,12 +153,12 @@ class AssumeValidTest(BitcoinTestFramework): p2p1 = self.nodes[1].add_p2p_connection(BaseNode()) p2p1.send_header_for_blocks(self.blocks[0:2000]) p2p1.send_header_for_blocks(self.blocks[2000:]) - - # Send all blocks to node1. All blocks will be accepted. - for i in range(2202): - p2p1.send_without_ping(msg_block(self.blocks[i])) - # Syncing 2200 blocks can take a while on slow systems. Give it plenty of time to sync. - p2p1.sync_with_ping(timeout=960) + with self.nodes[1].assert_debug_log(expected_msgs=['Disabling signature validations at block #1', 'Enabling signature validations at block #103']): + # Send all blocks to node1. All blocks will be accepted. + for i in range(2202): + p2p1.send_without_ping(msg_block(self.blocks[i])) + # Syncing 2200 blocks can take a while on slow systems. Give it plenty of time to sync. + p2p1.sync_with_ping(timeout=960) assert_equal(self.nodes[1].getblock(self.nodes[1].getbestblockhash())['height'], 2202) p2p2 = self.nodes[2].add_p2p_connection(BaseNode())