Ich bin davon ausgegangen, dass die zweite Transaktion einfach als ungültig verworfen wird, während die erste bei 0/unbestätigt wartet, bis sie tatsächlich in einen Block gelangt (was einen "-rescan" oder ähnliches erfordert, wenn die zweite tatsächlich in der Blockchain landet stattdessen). Aber ist dies der Fall? Was passiert eigentlich im Standardclient, wenn zwei widersprüchliche Transaktionen empfangen werden?
Nehmen Sie der Einfachheit halber an, dass die Person, die den Client betreibt, der Empfänger von mindestens einer der Transaktionen ist und nicht Mining betreibt.
Ich kann nicht dafür sprechen, was es jedes Mal tut, aber ich habe gerade den Kommentar von Herrn Schwartz getestet, also kann ich dafür sprechen, was es dieses eine Mal getan hat. Ich habe eine geografisch entfernte Maschine, auf der eine identische Kopie von Bitcoin läuft, und meinen lokalen PC (mit identischen Brieftaschen) ferngesteuert. Ich habe innerhalb weniger Millisekunden identische widersprüchliche Transaktionen für mein gesamtes Guthaben gesendet (Atomuhrsynchronisierung und Timer - nicht fragen) und wie erwartet zeigten beide Transaktionen in beiden Clients 0/unbestätigt und nur eine schaffte es in a Block. Der andere verschwand nach a-rescan
Seltsamerweise wird nach -rescan
der zweiten Transaktion nicht einmal in einem bitcoind listtransactions
Dump angezeigt, was mir seltsam erscheint. Es sieht so aus, als ob solche fehlerhaften Transaktionen aufgezeichnet und mit einem besonderen Status gekennzeichnet werden sollten, ähnlich wie es verwaiste Blockbelohnungen sind – dies ist schließlich ein Buchhaltungssystem und unter Umständen könnte dies „Beweisvernichtung“ sein. Ich werde das nächste Mal, wenn ich auf GitHub bin, einen Kommentar abgeben und sehen, ob jemand beißt.
David Schwarz
eMansipater
David Schwarz