mirror of
https://github.com/dashpay/dash.git
synced 2024-12-25 03:52:49 +01:00
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:
parent
9bfb7006a9
commit
3b7df9aea0
@ -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) {
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user