This commit is contained in:
PastaPastaPasta 2024-12-17 04:31:49 +00:00 committed by GitHub
commit 3ab16bccd7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -6,6 +6,7 @@
#include <llmq/quorums.h> #include <llmq/quorums.h>
#include <llmq/instantsend.h> #include <llmq/instantsend.h>
#include <llmq/signing_shares.h> #include <llmq/signing_shares.h>
#include <evo/cbtx.h>
#include <chain.h> #include <chain.h>
#include <chainparams.h> #include <chainparams.h>
@ -353,13 +354,15 @@ void CChainLocksHandler::BlockConnected(const std::shared_ptr<const CBlock>& pbl
// We need this information later when we try to sign a new tip, so that we can determine if all included TXs are // We need this information later when we try to sign a new tip, so that we can determine if all included TXs are
// safe. // safe.
{
LOCK(cs); LOCK(cs);
auto it = blockTxs.find(pindex->GetBlockHash()); auto it = blockTxs.find(pindex->GetBlockHash());
if (it == blockTxs.end()) { if (it == blockTxs.end()) {
// we must create this entry even if there are no lockable transactions in the block, so that TrySignChainTip // we must create this entry even if there are no lockable transactions in the block, so that TrySignChainTip later knows about this block
// later knows about this block it = blockTxs
it = blockTxs.emplace(pindex->GetBlockHash(), std::make_shared<std::unordered_set<uint256, StaticSaltedHasher>>()).first; .emplace(pindex->GetBlockHash(), std::make_shared<std::unordered_set<uint256, StaticSaltedHasher>>())
.first;
} }
auto& txids = *it->second; auto& txids = *it->second;
@ -373,7 +376,14 @@ void CChainLocksHandler::BlockConnected(const std::shared_ptr<const CBlock>& pbl
txids.emplace(tx->GetHash()); txids.emplace(tx->GetHash());
txFirstSeenTime.emplace(tx->GetHash(), curTime); txFirstSeenTime.emplace(tx->GetHash(), curTime);
} }
}
auto cbtx = GetCoinbaseTx(pindex);
auto clsig_height = pindex->nHeight - cbtx->bestCLHeightDiff;
if (clsig_height > uint32_t(WITH_LOCK(cs, return bestChainLock.getHeight()))) {
auto clsig = CChainLockSig(clsig_height, pindex->GetAncestor(clsig_height)->GetBlockHash(), cbtx->bestCLSignature);
ProcessNewChainLock(-1, clsig, ::SerializeHash(clsig));
}
} }
void CChainLocksHandler::BlockDisconnected(const std::shared_ptr<const CBlock>& pblock, gsl::not_null<const CBlockIndex*> pindexDisconnected) void CChainLocksHandler::BlockDisconnected(const std::shared_ptr<const CBlock>& pblock, gsl::not_null<const CBlockIndex*> pindexDisconnected)