Was sind die Kategorien einer Transaktion und was bedeuten sie?

Ich habe nur "empfangen", "senden" und "unreif" gesehen. Gibt es andere Kategorien, die ich vermisse? Und was bedeuten sie? Es scheint, dass "empfangen" eine Transaktion bedeutet, die unserem Konto Münzen gegeben hat, und "senden" bedeutet, dass wir jemand anderem Münzen gegeben haben.

Antworten (2)

Was Sie sehen, ist keine inhärente Eigenschaft einer Transaktion, sondern wie die Transaktion für Sie zum aktuellen Zeitpunkt aussieht und wie Ihr Bitcoin-Client sie anzeigen möchte.

Eine Transaktion enthält Eingaben und Ausgaben; Ob die Transaktion als „Senden“ oder „Empfangen“ (oder „Übertragen“) betrachtet wird, hängt davon ab, welche der Eingabe- und Ausgabeadressen sich in Ihrer Brieftasche befinden und als Ihnen gehörend betrachtet werden.

Eine „unbestätigte“ Transaktion ist eine Transaktion, die neu genug ist, um nicht als kanonischer Teil der Blockchain betrachtet zu werden. Sobald der Blockchain nach derjenigen, in der Ihre Transaktion aufgezeichnet wurde, genügend Blöcke hinzugefügt wurden, gilt sie als bestätigt. Die Anzahl der Blöcke hängt von Ihrem Bitcoin-Client ab.

Eine "unreife" Transaktion ist eine Generierungstransaktion, die nicht alt genug ist, um für Ausgaben verfügbar gemacht zu werden. Nach der aktuellen Spezifikation muss eine Generierungstransaktion mindestens 100 Bestätigungen haben, bevor sie ausgegeben werden kann.

unmature wird nur für Generierungstransaktionen verwendet und unterscheidet sich deutlich von unbestätigten Transaktionen. Unbestätigte Transaktionen sind absolut gültig und können ausgegeben werden, obwohl Wallets versuchen, dies zu vermeiden. Unreife Münzen sind Generationen, die keine 120 Bestätigungen haben, ja, und diese sind effektiv ungültig (wertlos), bevor sie es sind.
@Pieter Ja sorry absolut richtig. Habe die Antwort aktualisiert (obwohl das Protokoll sagt, dass es 100 Bestätigungen sind, nicht 120)
@jgm Das Protokoll erfordert 101, IIRC. Die Wallet-Software verwendet 120, um sich vor einigen Problemen im Falle einer Reorganisation zu schützen.
@PieterWuille würde das bedeuten, dass unreife Transaktionen vom Benutzer nicht ausgegeben werden können, bis sie 100 Bestätigungen erhalten?
@Philosoph Das ist richtig. Die Ausgaben von Coinbase-Transaktionen (in der Antwort hier als "Generierungstransaktionen" bezeichnet) können nicht ausgegeben werden, bis 100 Blöcke auf dem Block aufgebaut wurden, der sie enthält.
@PieterWuille Danke. Wenn ich in diesem Fall die Summe der Einlagen für eine Adresse aus der Ausgabe von "listsinceblock" berechnen würde, müsste ich dann nur Transaktionen der Kategorie "receive" berücksichtigen und alle Transaktionen der Kategorie "unmature", "send", "orphan" oder einer anderen Kategorie generieren und ignorieren?
Wenn Sie kein Miner sind, der die Brieftasche Ihres eigenen Bitcoin-Kerns verwendet, um Ihren eigenen Pool aufzubauen, müssen Sie sich nie um unreife Transaktionen kümmern.
@PieterWuille Danke! Wenn ich jedoch hypothetisch eine Liste mit Transaktionen hätte, die unreife Transaktionen enthielt, und ich die Summe der Einzahlungen für die Adresse des Benutzers anzeigen wollte, würde ich die unreife Transaktion einschließen oder ausschließen? Die Intuition sagt mir, ich sollte sie ausschließen, da sie nicht ausgegeben werden können, bis sie zu Generationentransaktionen werden.
Unreife Transaktionsausgaben werden tatsächlich mit dem Wert 0 aufgeführt, in listtransactions, glaube ich.
@PieterWuille Nicht alle unreifen Transaktionen haben einen Betrag von 0. Einige können einen Betrag größer als 0 haben, zumindest beim Abfragen von listeninceblock. Der Grund, warum ich diese Frage stelle, ist, dass ich ein Programm schreibe, bei dem ich bei gegebenen Ausgaben von listinceblock die gültigen Einzahlungen mit Bestätigungen größer als 4 für die Brieftaschenadresse eines Benutzers berechnen möchte. Manchmal, wenn ich listensinceblock abfrage, erhalte ich unreife Transaktionen in der Ausgabe mit einem Betrag größer als 0. Ich bin mir nicht sicher, ob dies als Einzahlung in die Brieftasche des Benutzers zählen würde oder nicht, daher die Frage.

Aus der Quelle in 0.8.6 sehe ich diese möglichen Kategorien:

src/rpcwallet.cpp:961:            entry.push_back(Pair("category", "send"));
src/rpcwallet.cpp:986:                        entry.push_back(Pair("category", "orphan"));
src/rpcwallet.cpp:988:                        entry.push_back(Pair("category", "immature"));
src/rpcwallet.cpp:990:                        entry.push_back(Pair("category", "generate"));
src/rpcwallet.cpp:993:                    entry.push_back(Pair("category", "receive"));
src/rpcwallet.cpp:1011:        entry.push_back(Pair("category", "move"));

Also im Wesentlichen:

  • "senden"
  • "verwaist"
  • "unreif"
  • "generieren"
  • "erhalten"
  • "Bewegung"
Was ist mit dem "und was strahlen sie aus?" Teil der Frage? :)