feat: update IS database instantly, no more dependency on DIP0020

This fork is activated long time ago, no more possible conflicts
This commit is contained in:
Konstantin Akimov 2024-11-16 16:11:31 +07:00
parent 9bfb7006a9
commit 3b7df9aea0
No known key found for this signature in database
GPG Key ID: 2176C4A5D01EA524
2 changed files with 5 additions and 11 deletions

View File

@ -61,10 +61,9 @@ CInstantSendDb::CInstantSendDb(bool unitTests, bool fWipe) :
CInstantSendDb::~CInstantSendDb() = default;
void CInstantSendDb::Upgrade(const CTxMemPool& mempool)
void CInstantSendDb::Upgrade()
{
LOCK2(cs_main, mempool.cs);
LOCK(cs_db);
LOCK2(cs_main, cs_db);
int v{0};
if (!db->Read(DB_VERSION, v) || v < CInstantSendDb::CURRENT_VERSION) {
CDBBatch batch(*db);
@ -1103,7 +1102,7 @@ void CInstantSendManager::TransactionAddedToMempool(const CTransactionRef& tx)
void CInstantSendManager::TransactionRemovedFromMempool(const CTransactionRef& tx)
{
if (tx->vin.empty() || !fUpgradedDB) {
if (tx->vin.empty()) {
return;
}
@ -1252,11 +1251,6 @@ void CInstantSendManager::NotifyChainLock(const CBlockIndex* pindexChainLock)
void CInstantSendManager::UpdatedBlockTip(const CBlockIndex* pindexNew)
{
if (!fUpgradedDB && pindexNew->nHeight + 1 >= Params().GetConsensus().DIP0020Height) {
db.Upgrade(mempool);
fUpgradedDB = true;
}
bool fDIP0008Active = pindexNew->pprev && pindexNew->pprev->nHeight >= Params().GetConsensus().DIP0008Height;
if (AreChainLocksEnabled(spork_manager) && fDIP0008Active) {

View File

@ -116,7 +116,7 @@ public:
explicit CInstantSendDb(bool unitTests, bool fWipe);
~CInstantSendDb();
void Upgrade(const CTxMemPool& mempool) EXCLUSIVE_LOCKS_REQUIRED(!cs_db);
void Upgrade() EXCLUSIVE_LOCKS_REQUIRED(!cs_db);
/**
* This method is called when an InstantSend Lock is processed and adds the lock to the database
@ -209,7 +209,6 @@ private:
const std::unique_ptr<PeerManager>& m_peerman;
const bool m_is_masternode;
std::atomic<bool> fUpgradedDB{false};
std::thread workThread;
CThreadInterrupt workInterrupt;
@ -264,6 +263,7 @@ public:
shareman(_shareman), spork_manager(sporkman), mempool(_mempool), m_mn_sync(mn_sync), m_peerman(peerman),
m_is_masternode{is_masternode}
{
db.Upgrade(); // Upgrade DB if need to do it
workInterrupt.reset();
}
~CInstantSendManager() = default;