From ed25ecdccad2d0110347c980959f3a21d5fe10bf Mon Sep 17 00:00:00 2001 From: 12henry <12henry@ub.com> Date: Tue, 24 Jul 2018 16:43:47 +0800 Subject: [PATCH] bug fixed --- src/validation.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/validation.cpp b/src/validation.cpp index ac2eb781dcfee..11839a46d2e83 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -3187,6 +3187,19 @@ bool CChainState::ConnectBlock(const CBlock& block, CValidationState& state, CBl REJECT_INVALID, "bad-txns-nonfinal"); } } + if(block.IsProofOfStake() && tx.IsCoinStake()) + { + const COutPoint &prevout = tx.vin[0].prevout; + const Coin& coin = view.AccessCoin(prevout); + assert(!coin.IsSpent()); + + // If prev is coinbase, check that it's matured + + if (coin.nHeight > ((chainActive.Height() + 1) - Params().GetConsensus().nStakeMinConfirmations)) + return state.Invalid(false, + REJECT_INVALID, "utxo not reach stake min confirmations", + strprintf("coin.nHeight: %d", coin.nHeight)); + } // GetTransactionSigOpCost counts 3 types of sigops: // * legacy (always)