Warum werden Transaktionen zufällig versendet?

Ich sehe im Quellcode diese zwei Zeilen:

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

in der Methode ResendWalletTransactions. Warum ist das notwendig? Wenn ein Client seine Transaktionen alle 30 Minuten verschickt und der Empfänger diese Transaktionen in seine eigene Warteschlange stellt und diese Transaktionsliste alle 30 Minuten an alle seine Nachbarn sendet, sehe ich nicht ein, warum jemand die eigenen Transaktionen des Clients wiederherstellen sollte.

Der vollständige Anfang der Methode sieht ungefähr so ​​​​aus:

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;
> Ich sehe nicht ein, warum jemand die eigenen Transaktionen des Kunden wiederherstellen sollte. Möglicherweise interpretieren Sie etwas falsch, da es keine "Wiederherstellung" von Transaktionen gibt. Dies hat mit dem Zeitpunkt zu tun, zu dem die erneute Übertragung einer nicht bestätigten Transaktion erfolgt. Bitte klären Sie, was Ihr Anliegen ist.

Antworten (1)

Da keine nicht bestätigten Transaktionen erneut gesendet werden, werden nur Ihre eigenen nicht bestätigten Transaktionen erneut gesendet. Sie sind also der einzige Knoten im gesamten Netzwerk, der alle genau 30 Minuten die erneute Übertragung durchführt, und basierend darauf kann jeder erfahren, welche IP diese Transaktion auslöst.

Ein paar Zeilen unter Ihrem Codebeispiel finden Sie Folgendes:

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

Dadurch werden die Transaktionen Ihrer eigenen Brieftasche (mapWallet) wiederholt, nicht alle Netzwerktransaktionen.