mirror of
https://github.com/twisterarmy/twister-core.git
synced 2025-01-11 07:17:53 +00:00
Monitor incoming transactions for spends by (a copy of) your own wallet
This commit is contained in:
parent
72e962cf55
commit
8857aeb223
46
main.cpp
46
main.cpp
@ -178,9 +178,12 @@ bool AddToWallet(const CWalletTx& wtxIn)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AddToWalletIfMine(const CTransaction& tx, const CBlock* pblock)
|
||||
bool AddToWalletIfInvolvingMe(const CTransaction& tx, const CBlock* pblock, bool fUpdate = false)
|
||||
{
|
||||
if (tx.IsMine() || mapWallet.count(tx.GetHash()))
|
||||
uint256 hash = tx.GetHash();
|
||||
bool fExisted = mapWallet.count(hash);
|
||||
if (fExisted && !fUpdate) return false;
|
||||
if (fExisted || tx.IsMine() || tx.IsFromMe())
|
||||
{
|
||||
CWalletTx wtx(tx);
|
||||
// Get merkle branch if transaction was found in a block
|
||||
@ -188,20 +191,7 @@ bool AddToWalletIfMine(const CTransaction& tx, const CBlock* pblock)
|
||||
wtx.SetMerkleBranch(pblock);
|
||||
return AddToWallet(wtx);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AddToWalletIfFromMe(const CTransaction& tx, const CBlock* pblock)
|
||||
{
|
||||
if (tx.IsFromMe() || mapWallet.count(tx.GetHash()))
|
||||
{
|
||||
CWalletTx wtx(tx);
|
||||
// Get merkle branch if transaction was found in a block
|
||||
if (pblock)
|
||||
wtx.SetMerkleBranch(pblock);
|
||||
return AddToWallet(wtx);
|
||||
}
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool EraseFromWallet(uint256 hash)
|
||||
@ -911,22 +901,8 @@ int ScanForWalletTransactions(CBlockIndex* pindexStart)
|
||||
block.ReadFromDisk(pindex, true);
|
||||
foreach(CTransaction& tx, block.vtx)
|
||||
{
|
||||
uint256 hash = tx.GetHash();
|
||||
if (mapWallet.count(hash)) continue;
|
||||
AddToWalletIfMine(tx, &block);
|
||||
if (mapWallet.count(hash))
|
||||
{
|
||||
++ret;
|
||||
printf("Added missing RECEIVE %s\n", hash.ToString().c_str());
|
||||
continue;
|
||||
}
|
||||
AddToWalletIfFromMe(tx, &block);
|
||||
if (mapWallet.count(hash))
|
||||
{
|
||||
++ret;
|
||||
printf("Added missing SEND %s\n", hash.ToString().c_str());
|
||||
continue;
|
||||
}
|
||||
if (AddToWalletIfInvolvingMe(tx, &block))
|
||||
ret++;
|
||||
}
|
||||
pindex = pindex->pnext;
|
||||
}
|
||||
@ -1471,7 +1447,7 @@ bool CBlock::ConnectBlock(CTxDB& txdb, CBlockIndex* pindex)
|
||||
|
||||
// Watch for transactions paying to me
|
||||
foreach(CTransaction& tx, vtx)
|
||||
AddToWalletIfMine(tx, this);
|
||||
AddToWalletIfInvolvingMe(tx, this, true);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -2714,7 +2690,7 @@ bool ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
|
||||
bool fMissingInputs = false;
|
||||
if (tx.AcceptToMemoryPool(true, &fMissingInputs))
|
||||
{
|
||||
AddToWalletIfMine(tx, NULL);
|
||||
AddToWalletIfInvolvingMe(tx, NULL, true);
|
||||
RelayMessage(inv, vMsg);
|
||||
mapAlreadyAskedFor.erase(inv);
|
||||
vWorkQueue.push_back(inv.hash);
|
||||
@ -2735,7 +2711,7 @@ bool ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
|
||||
if (tx.AcceptToMemoryPool(true))
|
||||
{
|
||||
printf(" accepted orphan tx %s\n", inv.hash.ToString().substr(0,10).c_str());
|
||||
AddToWalletIfMine(tx, NULL);
|
||||
AddToWalletIfInvolvingMe(tx, NULL, true);
|
||||
RelayMessage(inv, vMsg);
|
||||
mapAlreadyAskedFor.erase(inv);
|
||||
vWorkQueue.push_back(inv.hash);
|
||||
|
Loading…
Reference in New Issue
Block a user