Was ist der schrittweise Lebenszyklus einer Transaktion?

Ich versuche, die Lebensdauer einer Transaktion zu verstehen, und habe noch keine technische, lineare "Zeitachse" von Ereignissen gefunden, die auftreten, wenn eine P2P-Transaktion stattfindet.

Das ist mein bisheriges Verständnis; Bitte korrigieren Sie es bei Bedarf:

  1. Eine Person verwendet ihren privaten RSA-Schlüssel, um eine Nachricht zu signieren, die besagt: „Betrag X von meinem Konto abziehen und an YYY-Adresse(n) senden“. In dieser Nachricht beziehen sie sich auch auf die aktuelle Blocknummer.

  2. Die Client-Anwendung (Wallet) sendet diese Transaktion zur "Bestätigung" an 6 Knoten. (ist das Ziel ein Miner oder ein Wallet?)

  3. ?? Was bewirkt eigentlich die Konfirmation??

  4. Die Mining-Knoten fügen diese Transaktionen zu einer einzelnen Nachricht hinzu, die als Block bezeichnet wird ( und speichern sie in fast beliebiger Reihenfolge ) .

  5. Die Mining-Knoten konkurrieren darum, einen SHA256(SHA256(x))-Hash des Blocks zu finden, der mit einer vorgegebenen Anzahl von Nullen beginnt.

  6. Der erste Mining-Knoten (oder Knotenpool), der den gewinnenden Hash generiert, sammelt einen Preis und erhöht die Blockanzahl. (Beachten Sie, dass dies derzeit 30 Minuten dauert und die Blockgröße auf 1 MB begrenzt ist.)

  7. Die Miner benachrichtigen eine Brieftasche, die dann den neuen Block an jeden repliziert, der ihn anfordert, und die Aktualisierungen an eine bestimmte Anzahl von Peers weiterleitet. Jeder Block mit einer Datumsdifferenz von mehr als 120 Minuten Systemzeit wird verworfen.

  8. Alle In-Flight-Transaktionen, die auf den gelösten Block verweisen, müssen vom ursprünglichen Client erneut übermittelt werden und sich auf den aktuellen Block beziehen.

  9. Widersprüchliche Transaktionen (doppelte Ausgaben) werden im Bitcoin-Client erkannt und verworfen.

  10. Die Brieftasche verfolgt alle gegabelten Ketten und die Kette mit der größten Rechenleistung, die sie unterstützt, gewinnt. Dieser Fork kann aufgrund von Netsplits oder böswilligen Aktivitäten auftreten). Darüber hinaus kennt derzeit keine einzige Brieftasche oder zentrale Behörde alle ungültigen Transaktionen oder Gabelungen, die im Netzwerk aufgetreten sind.

  11. Sobald 100 (oder 120) Bestätigungen gesendet wurden, können die mit dem Block generierten BTC ausgegeben werden. Quelle

An alle, die über diese Frage stolpern: Bitte beachten Sie, dass es im Allgemeinen vorzuziehen ist, spezifische Fragen zu stellen, anstatt wie hier zu sehen im "Check my answer"-Stil zu fragen. Wenn Sie sicher sind, dass Ihr Verständnis korrekt ist, posten Sie lieber die Frage und geben Sie Ihr eigenes Verständnis in eine Antwort ein, bei der es mit anderen Antworten konkurrieren wird. Wenn es Fehler gibt, werden die Leute es Ihnen sagen.
Ich bin das OP und stimme @Murch voll und ganz zu. Ich habe dies vor langer, langer Zeit geschrieben und würde gelöscht, wenn nicht die mit +4 bewerteten Antworten unten wären. TP hat hier viele großartige Antworten ... sehen Sie sich seine Geschichte an

Antworten (1)

Die Lebensdauer einer Transaktion würde in etwa so aussehen:

  1. Sie beginnen mit einem Client, einer Brieftasche, die Ihre Schlüsselpaare enthält, und einigen nicht ausgegebenen Transaktionen (die Sie von anderen Personen oder durch Mining erhalten).
  2. Sie erstellen eine neue Transaktion, geben einige Ihrer nicht ausgegebenen Bitcoins aus und signieren sie mit Ihren privaten Schlüsseln. Ihr Kunde speichert eine Kopie davon.
  3. Ihr Client beginnt, die neue Transaktion über das Bitcoin-Netzwerk zu übertragen. Soweit ich mich erinnere, sendet es es nicht an jeden Peer, sondern an jeden 8. Peer, um Ihre Anonymität zu schützen. Jede Minute sendet der Client auch alle ihm bekannten Transaktionen an einen seiner Kollegen, was auch Ihre neue Transaktion beinhalten würde.
  4. Jeder Kunde, der Ihre Transaktion erhält, überprüft sie – er überprüft, ob die Signatur in Ordnung ist, ob Fehler vorliegen und ob Sie versuchen, eine doppelte Ausgabe durchzuführen. Wenn Ihre Transaktion eines der Kriterien nicht erfüllt, wird sie vom Kunden vollständig ignoriert. Andernfalls behält der Client eine Notiz der Transaktion im temporären Speicher.
  5. Alle Clients, die von Ihrer Transaktion wissen, folgen einem ähnlichen Übertragungsweg wie Sie – senden Sie sie an 1/8 Peers und dann jede Minute an einen Peer. Sie werden Ihre Transaktion auch nicht übertragen, wenn die Gebühr zu einem bestimmten Zeitpunkt zu gering ist (was von der Anzahl der Transaktionen abhängt, die in einen Block aufgenommen werden sollen, usw.). Wenn Sie keine Gebühren zahlen, werden Sie im Allgemeinen mit einer langsamen Transaktionsübertragungsrate genau hier bestraft.
  6. Schließlich erreicht Ihre Transaktion einige Mining-Pools und die Empfänger der Transaktionen. Letztere sehen die neue Transaktion in ihren Wallets und speichern eine Kopie davon auf unbestimmte Zeit, aber es wird als 0 Bestätigungen angezeigt. Die Mining-Pools werden es als neue Transaktion sehen und (höchstwahrscheinlich) in jeden Block aufnehmen, den sie zu erstellen versuchen. Sie speichern eine lokale Kopie der temporären Blöcke und geben die entsprechende Arbeit zur Lösung an ihre Miner weiter.
  7. Die Miner wissen nichts über Ihre Transaktion, außer dass sie bei einer oder mehreren Transaktionen zu einem bestimmten Merkle-Stamm gehasht werden. Ihre Aufgabe ist es, Zahlen zu knacken, nicht auf Blockgültigkeit zu prüfen, da dies eine Aufgabe für den Pool ist.
  8. Schließlich wird Ihre Transaktion in einen Block aufgenommen, der gelöst wird. Es wird stolz durch das Bitcoin-Netzwerk übertragen und jeder notiert es sich von nun an (um zu wissen, ob eine neue Transaktion bei einem Doppelausgabeversuch damit in Konflikt gerät). Jetzt hat Ihre Transaktion 1 Bestätigungen.
  9. Der Blockerstellungsprozess wird fortgesetzt, und je mehr Blöcke auf dem Block aufgebaut werden, in den Ihre Transaktion aufgenommen wird, desto mehr Bestätigungen erhält sie. Bei Erreichen von 6 und mehr Bestätigungen gilt es als vollständig bestätigt.
  10. Die Transaktion beendet ihren Lebenszyklus, sobald sie von einer anderen Transaktion ausgegeben wird, was bedeutet, dass ihre Ausgaben aus dem "nicht ausgegebenen" Speicher vergessen und für alle anderen Versuche, sie auszugeben, ignoriert werden können. Es wird jedoch so lange in der Blockchain bleiben, wie die Menschen die gesamte Kette im Auge behalten.

Es gibt ein paar Komplikationen bei 51%-Angriffen und so weiter, aber dies ist der Hauptablauf einer Standardtransaktion.

In Aufzählungspunkt 3 bedeutet das, dass es sich mit jedem "Wallet"-Peer an einem eingehenden Port verbindet? (ausgenommen alle ToR- und Firewall-Clients?)
Könnte Bitcoin Days Destroyed in #5 ein weiterer Grund für eine langsame Transaktion sein?
Wenn in #9 a confirmation== ein Block ist und die Generierung eines Blocks durchschnittlich 30 Minuten dauert, bedeutet das, dass 6 Transaktionen 6 Stunden dauern?
@makerofthings7 Clients stellen eingehende und ausgehende Verbindungen her. Sie können 8 ausgehende Verbindungen und 3 eingehende Verbindungen haben und so weiter. Alle eingehenden Verbindungen gehen zu Port 8333, und die ausgehenden verwenden verschiedene Ports. Ich glaube nicht, dass Bitcoin Days Destroyed ein Grund für langsame Transaktionen wäre, nur niedrige Gebühren und eine große Anzahl von ihnen, die erstellt werden.
@makerofthings7 Die Erstellung eines Blocks sollte durchschnittlich 10 Minuten dauern, wenn die Netzwerk-Hashrate stabil ist. Es sollte also 1 Stunde dauern, um 6 Bestätigungen zu erhalten.