1

I see in the sourcecode this two lines:

// Do this infrequently and randomly to avoid giving away
// that these are our transactions.

in the method ResendWalletTransactions. Why is this necessary? If a client send out his transactions every 30 minutes and the receiver put these transactions in his own queue and send this transaction list every 30 minutes to all his neigbors I don't see why someone should recover the own transactions of the client.

The full beginning of the method is something like:

void CWallet::ResendWalletTransactions()
{
    // Do this infrequently and randomly to avoid giving away
    // that these are our transactions.
    static int64 nNextTime;
    if (GetTime() < nNextTime)
        return;
    bool fFirst = (nNextTime == 0);
    nNextTime = GetTime() + GetRand(30 * 60);
    if (fFirst)
        return;
  • > I don't see why someone should recover the own transactions of the client. You are possibly misreading something as there's no "recovering" of transactions. This has to do with the timing of when the re-broadcast of a transaction that hasn't confirmed occurs. Please clarify what your concern is. – Stephen Gornick Sep 6 '13 at 19:12
2

Because it doesn't re-broadcast any non confirmed transaction, it re-broadcast only your own non-confirmed transactions. So you will be the only node on the entire network who is doing the re-broadcast every exact 30 minutes and based on this anyone can get what IP is originating that transaction.

A few lines below your code example you find this:

BOOST_FOREACH(PAIRTYPE(const uint256, CWalletTx)& item, mapWallet)
{
...
}

This will loop on the transactions of your own wallet (mapWallet), not all the network transactions.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.