Whenever we check for locked TXs, also check for the new system having a lock
This commit is contained in:
parent
3a6cc2cc17
commit
1d2d370cd0
@ -16,6 +16,8 @@
|
|||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "validation.h"
|
#include "validation.h"
|
||||||
|
|
||||||
|
#include "llmq/quorums_instantsend.h"
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <univalue.h>
|
#include <univalue.h>
|
||||||
|
|
||||||
@ -618,7 +620,7 @@ bool CGovernanceObject::IsCollateralValid(std::string& strError, bool& fMissingC
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((nConfirmationsIn < GOVERNANCE_FEE_CONFIRMATIONS) &&
|
if ((nConfirmationsIn < GOVERNANCE_FEE_CONFIRMATIONS) &&
|
||||||
(!instantsend.IsLockedInstantSendTransaction(nCollateralHash))) {
|
(!instantsend.IsLockedInstantSendTransaction(nCollateralHash) || llmq::quorumInstantSendManager->IsLocked(nCollateralHash))) {
|
||||||
strError = strprintf("Collateral requires at least %d confirmations to be relayed throughout the network (it has only %d)", GOVERNANCE_FEE_CONFIRMATIONS, nConfirmationsIn);
|
strError = strprintf("Collateral requires at least %d confirmations to be relayed throughout the network (it has only %d)", GOVERNANCE_FEE_CONFIRMATIONS, nConfirmationsIn);
|
||||||
if (nConfirmationsIn >= GOVERNANCE_MIN_RELAY_FEE_CONFIRMATIONS) {
|
if (nConfirmationsIn >= GOVERNANCE_MIN_RELAY_FEE_CONFIRMATIONS) {
|
||||||
fMissingConfirmations = true;
|
fMissingConfirmations = true;
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "evo/cbtx.h"
|
#include "evo/cbtx.h"
|
||||||
|
|
||||||
#include "llmq/quorums_chainlocks.h"
|
#include "llmq/quorums_chainlocks.h"
|
||||||
|
#include "llmq/quorums_instantsend.h"
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
@ -409,7 +410,7 @@ void entryToJSON(UniValue &info, const CTxMemPoolEntry &e)
|
|||||||
|
|
||||||
info.push_back(Pair("depends", depends));
|
info.push_back(Pair("depends", depends));
|
||||||
info.push_back(Pair("instantsend", instantsend.HasTxLockRequest(tx.GetHash())));
|
info.push_back(Pair("instantsend", instantsend.HasTxLockRequest(tx.GetHash())));
|
||||||
info.push_back(Pair("instantlock", instantsend.IsLockedInstantSendTransaction(tx.GetHash())));
|
info.push_back(Pair("instantlock", instantsend.IsLockedInstantSendTransaction(tx.GetHash()) || llmq::quorumInstantSendManager->IsLocked(tx.GetHash())));
|
||||||
}
|
}
|
||||||
|
|
||||||
UniValue mempoolToJSON(bool fVerbose = false)
|
UniValue mempoolToJSON(bool fVerbose = false)
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
|
|
||||||
#include "llmq/quorums_chainlocks.h"
|
#include "llmq/quorums_chainlocks.h"
|
||||||
#include "llmq/quorums_commitment.h"
|
#include "llmq/quorums_commitment.h"
|
||||||
|
#include "llmq/quorums_instantsend.h"
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
@ -199,7 +200,8 @@ void TxToJSON(const CTransaction& tx, const uint256 hashBlock, UniValue& entry)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool fLocked = instantsend.IsLockedInstantSendTransaction(txid);
|
bool fLocked = instantsend.IsLockedInstantSendTransaction(txid);
|
||||||
entry.push_back(Pair("instantlock", fLocked));
|
bool fLLMQLocked = llmq::quorumInstantSendManager->IsLocked(txid);
|
||||||
|
entry.push_back(Pair("instantlock", fLocked || fLLMQLocked));
|
||||||
entry.push_back(Pair("chainlock", chainLock));
|
entry.push_back(Pair("chainlock", chainLock));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,6 +24,8 @@
|
|||||||
#include "evo/specialtx.h"
|
#include "evo/specialtx.h"
|
||||||
#include "evo/providertx.h"
|
#include "evo/providertx.h"
|
||||||
|
|
||||||
|
#include "llmq/quorums_instantsend.h"
|
||||||
|
|
||||||
CTxMemPoolEntry::CTxMemPoolEntry(const CTransactionRef& _tx, const CAmount& _nFee,
|
CTxMemPoolEntry::CTxMemPoolEntry(const CTransactionRef& _tx, const CAmount& _nFee,
|
||||||
int64_t _nTime, double _entryPriority, unsigned int _entryHeight,
|
int64_t _nTime, double _entryPriority, unsigned int _entryHeight,
|
||||||
CAmount _inChainInputValue,
|
CAmount _inChainInputValue,
|
||||||
@ -1497,7 +1499,7 @@ int CTxMemPool::Expire(int64_t time) {
|
|||||||
setEntries toremove;
|
setEntries toremove;
|
||||||
while (it != mapTx.get<entry_time>().end() && it->GetTime() < time) {
|
while (it != mapTx.get<entry_time>().end() && it->GetTime() < time) {
|
||||||
// locked txes do not expire until mined and have sufficient confirmations
|
// locked txes do not expire until mined and have sufficient confirmations
|
||||||
if (instantsend.IsLockedInstantSendTransaction(it->GetTx().GetHash())) {
|
if (instantsend.IsLockedInstantSendTransaction(it->GetTx().GetHash()) || llmq::quorumInstantSendManager->IsLocked(it->GetTx().GetHash())) {
|
||||||
it++;
|
it++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include "privatesend-client.h"
|
#include "privatesend-client.h"
|
||||||
|
|
||||||
#include "llmq/quorums_chainlocks.h"
|
#include "llmq/quorums_chainlocks.h"
|
||||||
|
#include "llmq/quorums_instantsend.h"
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
@ -65,12 +66,13 @@ void WalletTxToJSON(const CWalletTx& wtx, UniValue& entry)
|
|||||||
AssertLockHeld(cs_main); // for mapBlockIndex
|
AssertLockHeld(cs_main); // for mapBlockIndex
|
||||||
int confirms = wtx.GetDepthInMainChain();
|
int confirms = wtx.GetDepthInMainChain();
|
||||||
bool fLocked = instantsend.IsLockedInstantSendTransaction(wtx.GetHash());
|
bool fLocked = instantsend.IsLockedInstantSendTransaction(wtx.GetHash());
|
||||||
|
bool fLLMQLocked = llmq::quorumInstantSendManager->IsLocked(wtx.GetHash());
|
||||||
bool chainlock = false;
|
bool chainlock = false;
|
||||||
if (confirms > 0) {
|
if (confirms > 0) {
|
||||||
chainlock = llmq::chainLocksHandler->HasChainLock(mapBlockIndex[wtx.hashBlock]->nHeight, wtx.hashBlock);
|
chainlock = llmq::chainLocksHandler->HasChainLock(mapBlockIndex[wtx.hashBlock]->nHeight, wtx.hashBlock);
|
||||||
}
|
}
|
||||||
entry.push_back(Pair("confirmations", confirms));
|
entry.push_back(Pair("confirmations", confirms));
|
||||||
entry.push_back(Pair("instantlock", fLocked));
|
entry.push_back(Pair("instantlock", fLocked || fLLMQLocked));
|
||||||
entry.push_back(Pair("chainlock", chainlock));
|
entry.push_back(Pair("chainlock", chainlock));
|
||||||
if (wtx.IsCoinBase())
|
if (wtx.IsCoinBase())
|
||||||
entry.push_back(Pair("generated", true));
|
entry.push_back(Pair("generated", true));
|
||||||
|
@ -36,6 +36,8 @@
|
|||||||
|
|
||||||
#include "evo/providertx.h"
|
#include "evo/providertx.h"
|
||||||
|
|
||||||
|
#include "llmq/quorums_instantsend.h"
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
#include <boost/algorithm/string/replace.hpp>
|
#include <boost/algorithm/string/replace.hpp>
|
||||||
@ -5426,7 +5428,7 @@ int CMerkleTx::GetDepthInMainChain(const CBlockIndex* &pindexRet) const
|
|||||||
|
|
||||||
bool CMerkleTx::IsLockedByInstantSend() const
|
bool CMerkleTx::IsLockedByInstantSend() const
|
||||||
{
|
{
|
||||||
return instantsend.IsLockedInstantSendTransaction(GetHash());
|
return instantsend.IsLockedInstantSendTransaction(GetHash()) || llmq::quorumInstantSendManager->IsLocked(GetHash());
|
||||||
}
|
}
|
||||||
|
|
||||||
int CMerkleTx::GetBlocksToMaturity() const
|
int CMerkleTx::GetBlocksToMaturity() const
|
||||||
|
Loading…
Reference in New Issue
Block a user