Senden von Geldern auf denselben Block empfangener Gelder. Bestätigen Sie das Senden nicht erhalten?

Meine Frage ganz konzeptionell:

Um eine Rohtransaktion zu erstellen, brauche ich nur die txid der älteren Transaktion und die Adresse, um sie zu senden. Setzen Sie das Geld ein, das Wechselgeld, was übrig bleibt, ist die Gebühr. Unterzeichnen Sie es und übertragen Sie es.

Nehmen wir an, Alice schickt etwas Geld an Bobs Wegwerfadresse. Bob hat eine "Master-Adresse". Was immer er an den Einwegadressen bekommt, schickt er an seinen Meister. Bob betreibt einen vollständigen Knoten und erhält die Transaktion, bevor sie in der Blockchain bestätigt wird.

Wenn Bob die übertragene Alice-Transaktion empfängt, erhält Bob die Rohtransaktion an seine verfügbare Adresse gesendet, erhält die txid, legt das Geld ein, gibt die Adresse seiner "Master" -Adresse ein, ändert, berechnet, signiert und sendet eine neue Transaktion, erhält die von Alice an seine Hauptadresse gesendeten Gelder.

Nun sendet Alice also an BobDisp (Bobs Wegwerfadresse), die an Bob sendet. Alle diese Transaktionen haben 0 Bestätigungen und sind beide gültig.

Zur Pointe des Arguments. Alice hat die Transaktion mit einer Gebühr von 0 (NULL) gesendet. Bob unterzeichnete seine Transaktion mit einer „Standard“-Gebühr (sagen wir 0,0003 BTC), die eine hohe Priorität hat.

Wenn Miner die Transaktionen zum Schürfen bekommen, wissen sie dann, dass beide im selben Block sein müssen? Oder was passiert, wenn der Block nur mit der Transaktion „BobD -> Bob“ (ohne Alice -> BobD) abgebaut wird? Ist die Sperre ungültig?

Die Miner werden nicht die gesamte Blockchain erneut scannen, um zu wissen, dass „BobD -> Bob“ die Mittel einer neuen Transaktion verwendet, richtig? Die Alice-Transaktion könnte 50000 Blöcke alt oder in diesem Fall neu sein.

PS: nicht sicher, ob es klar ist. Danke

Antworten (2)

Nur um die Antwort von Jannes zu erweitern: Bevor eine Transaktion in einen Block aufgenommen wird, überprüft ein Miner effektiv, ob sich alle Eingaben für diese Transaktion bereits in diesem Block oder einem vorherigen Block befinden, sowie alle Eingaben für diese Transaktionen und so weiter rekursiv zurück dorthin, wo die Münzen geschaffen wurden. Tatsächlich führt jeder vollständige Knoten im Netzwerk dieselbe Prüfung bei jeder Transaktion in jedem neuen Block durch, den er erhält, da dies eine Voraussetzung dafür ist, dass der Block als gültig akzeptiert wird.

Aber der Miner oder Node kann dies erreichen, ohne die Blockchain jedes Mal neu zu scannen. Beim ersten Herunterladen der Blockchain erstellten sie einen lokalen Index aller gültigen Transaktionen, der auf der Festplatte gespeichert wird. Eine neue Transaktion wird nicht in diesen Index eingegeben, es sei denn, alle ihre Eingaben sind bereits im Index enthalten. Wenn Sie einen Moment über die rekursive Natur der Prüfung nachdenken, werden Sie feststellen, dass das Auffinden einer Transaktion im Index impliziert, dass sie und alle ihre Eltern gültig sind - und die Prüfung daher in sehr kurzer Zeit durchgeführt werden kann.

Sie müssen sich nicht im selben Block befinden, aber da sie voneinander abhängen, kann die BobD->Bob-Transaktion nur abgebaut werden, wenn sich Alice->BobD bereits im selben oder einem früheren Block befindet. Wenn nicht, wäre der gesamte Block ungültig und niemand würde ihn akzeptieren.

Beachten Sie, dass Smart Miner die Gebühren für beide Transaktionen addieren und auf dieser Grundlage entscheiden, ob sie in einen Block aufgenommen werden oder nicht. Alice->BobD hat also möglicherweise eine Gebühr von 0 und ist daher für Miner nicht interessant, aber wenn BobD->Bob eine ausreichende Gebühr zahlt, um dies zu kompensieren, kann ein Miner beide Transaktionen in denselben Block aufnehmen. Dies wird als Kind zahlt für Eltern oder CPFP bezeichnet. Ich glaube, es ist noch nicht sehr üblich, dass Miner dies im Moment implementiert haben. Gibt es Pools oder große Miner, die den Patch „Kind zahlt für Eltern“ ausführen?