mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-20 13:37:28 +02:00
Merge 69c0313444 into merged_master (Bitcoin PR bitcoin/bitcoin#31269)
This commit is contained in:
commit
0b7f41f563
7 changed files with 2 additions and 32 deletions
|
|
@ -253,9 +253,6 @@ int main(int argc, char* argv[])
|
|||
case BlockValidationResult::BLOCK_CONSENSUS:
|
||||
std::cerr << "invalid by consensus rules (excluding any below reasons)" << std::endl;
|
||||
break;
|
||||
case BlockValidationResult::BLOCK_RECENT_CONSENSUS_CHANGE:
|
||||
std::cerr << "Invalid by a change to consensus rules more recent than SegWit." << std::endl;
|
||||
break;
|
||||
case BlockValidationResult::BLOCK_CACHED_INVALID:
|
||||
std::cerr << "this block was cached as being invalid and we didn't store the reason why" << std::endl;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -23,14 +23,6 @@ static constexpr size_t MINIMUM_WITNESS_COMMITMENT{38};
|
|||
enum class TxValidationResult {
|
||||
TX_RESULT_UNSET = 0, //!< initial value. Tx has not yet been rejected
|
||||
TX_CONSENSUS, //!< invalid by consensus rules
|
||||
/**
|
||||
* Invalid by a change to consensus rules more recent than SegWit.
|
||||
* Currently unused as there are no such consensus rule changes, and any download
|
||||
* sources realistically need to support SegWit in order to provide useful data,
|
||||
* so differentiating between always-invalid and invalid-by-pre-SegWit-soft-fork
|
||||
* is uninteresting.
|
||||
*/
|
||||
TX_RECENT_CONSENSUS_CHANGE,
|
||||
TX_INPUTS_NOT_STANDARD, //!< inputs (covered by txid) failed policy rules
|
||||
TX_NOT_STANDARD, //!< otherwise didn't meet our local policy rules
|
||||
TX_MISSING_INPUTS, //!< transaction was missing some of its inputs
|
||||
|
|
@ -65,14 +57,6 @@ enum class TxValidationResult {
|
|||
enum class BlockValidationResult {
|
||||
BLOCK_RESULT_UNSET = 0, //!< initial value. Block has not yet been rejected
|
||||
BLOCK_CONSENSUS, //!< invalid by consensus rules (excluding any below reasons)
|
||||
/**
|
||||
* Invalid by a change to consensus rules more recent than SegWit.
|
||||
* Currently unused as there are no such consensus rule changes, and any download
|
||||
* sources realistically need to support SegWit in order to provide useful data,
|
||||
* so differentiating between always-invalid and invalid-by-pre-SegWit-soft-fork
|
||||
* is uninteresting.
|
||||
*/
|
||||
BLOCK_RECENT_CONSENSUS_CHANGE,
|
||||
BLOCK_CACHED_INVALID, //!< this block was cached as being invalid and we didn't store the reason why
|
||||
BLOCK_INVALID_HEADER, //!< invalid proof of work or time too old
|
||||
BLOCK_MUTATED, //!< the block's data didn't match the data committed to by the PoW
|
||||
|
|
|
|||
|
|
@ -1796,7 +1796,6 @@ void PeerManagerImpl::MaybePunishNodeForBlock(NodeId nodeid, const BlockValidati
|
|||
case BlockValidationResult::BLOCK_MISSING_PREV:
|
||||
if (peer) Misbehaving(*peer, message);
|
||||
return;
|
||||
case BlockValidationResult::BLOCK_RECENT_CONSENSUS_CHANGE:
|
||||
case BlockValidationResult::BLOCK_TIME_FUTURE:
|
||||
break;
|
||||
}
|
||||
|
|
@ -1816,7 +1815,6 @@ void PeerManagerImpl::MaybePunishNodeForTx(NodeId nodeid, const TxValidationStat
|
|||
if (peer) Misbehaving(*peer, "");
|
||||
return;
|
||||
// Conflicting (but not necessarily invalid) data or different policy:
|
||||
case TxValidationResult::TX_RECENT_CONSENSUS_CHANGE:
|
||||
case TxValidationResult::TX_INPUTS_NOT_STANDARD:
|
||||
case TxValidationResult::TX_NOT_STANDARD:
|
||||
case TxValidationResult::TX_MISSING_INPUTS:
|
||||
|
|
|
|||
|
|
@ -114,7 +114,6 @@ FUZZ_TARGET(partially_downloaded_block, .init = initialize_pdb)
|
|||
fuzzed_data_provider.PickValueInArray(
|
||||
{BlockValidationResult::BLOCK_RESULT_UNSET,
|
||||
BlockValidationResult::BLOCK_CONSENSUS,
|
||||
BlockValidationResult::BLOCK_RECENT_CONSENSUS_CHANGE,
|
||||
BlockValidationResult::BLOCK_CACHED_INVALID,
|
||||
BlockValidationResult::BLOCK_INVALID_HEADER,
|
||||
BlockValidationResult::BLOCK_MUTATED,
|
||||
|
|
|
|||
|
|
@ -32,7 +32,6 @@ COutPoint COINS[NUM_COINS];
|
|||
static TxValidationResult TESTED_TX_RESULTS[] = {
|
||||
// Skip TX_RESULT_UNSET
|
||||
TxValidationResult::TX_CONSENSUS,
|
||||
TxValidationResult::TX_RECENT_CONSENSUS_CHANGE,
|
||||
TxValidationResult::TX_INPUTS_NOT_STANDARD,
|
||||
TxValidationResult::TX_NOT_STANDARD,
|
||||
TxValidationResult::TX_MISSING_INPUTS,
|
||||
|
|
|
|||
|
|
@ -58,7 +58,6 @@ struct Behaviors {
|
|||
// Txid and Wtxid are assumed to be different here. For a nonsegwit transaction, use the wtxid results.
|
||||
static std::map<TxValidationResult, Behaviors> expected_behaviors{
|
||||
{TxValidationResult::TX_CONSENSUS, {/*txid_rejects*/0,/*wtxid_rejects*/1,/*txid_recon*/0,/*wtxid_recon*/0,/*keep*/1,/*txid_inv*/0,/*wtxid_inv*/1}},
|
||||
{TxValidationResult::TX_RECENT_CONSENSUS_CHANGE, { 0, 1, 0, 0, 1, 0, 1}},
|
||||
{TxValidationResult::TX_INPUTS_NOT_STANDARD, { 1, 1, 0, 0, 1, 1, 1}},
|
||||
{TxValidationResult::TX_NOT_STANDARD, { 0, 1, 0, 0, 1, 0, 1}},
|
||||
{TxValidationResult::TX_MISSING_INPUTS, { 0, 0, 0, 0, 1, 0, 1}},
|
||||
|
|
|
|||
|
|
@ -2466,15 +2466,9 @@ bool CheckInputScripts(const CTransaction& tx, TxValidationState& state,
|
|||
// string by reporting the error from the second check.
|
||||
serror = check2.GetScriptError();
|
||||
}
|
||||
|
||||
// MANDATORY flag failures correspond to
|
||||
// TxValidationResult::TX_CONSENSUS. Because CONSENSUS
|
||||
// failures are the most serious case of validation
|
||||
// failures, we may need to consider using
|
||||
// RECENT_CONSENSUS_CHANGE for any script failure that
|
||||
// could be due to non-upgraded nodes which we may want to
|
||||
// support, to avoid splitting the network (but this
|
||||
// depends on the details of how net_processing handles
|
||||
// such errors).
|
||||
// TxValidationResult::TX_CONSENSUS.
|
||||
return state.Invalid(TxValidationResult::TX_CONSENSUS, strprintf("mandatory-script-verify-flag-failed (%s)", ScriptErrorString(serror)));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue