Transaktionsformbarkeit in der Blockchain

Wie sieht eine Transaktionsformbarkeit in der Blockchain aus? Gibt es Beispiele?

Beantwortet das deine Frage? Was ist Transaktionsformbarkeit?

Antworten (2)

Hier ist ein Beispiel: https://blockchain.info/tx/683f45578328242a06bc5c54acbcbe6e70a5435b4561fc8b0570a59ab09f8bfa?show_adv=true

Sehen Sie sich das erste Eingabeskript in Raw an:

4d49003046022100847361c694421bf63ea1b51d8e2189805b161ab3d4cb96ab745a20468dd6c2ea0221009160897652bedfd7c837855d793c32509063338ac7524b8f09abfed761cf16fc014d410004c8dde23708932059bf4491c96794c5412b1182d62d2741e0986cb87276d3053f0b7326155114ad67c04adc60b5a47718fa8744ecb86a001f99da8761113edb24

Betrachten Sie das erste Byte: 4d(OP_PUSHDATA2). Dies bedeutet, dass die nächsten 2 Bytes die Länge der Daten enthalten, die auf den Stapel geschoben werden. Diese Länge = 0x49. Eine typische Transaktion verwendet jedoch nicht den Befehl OP_PUSHDATA2. Wenn die Transaktion von bitcoin-qt erstellt wurde, beginnt sie direkt mit der Länge der Daten:

[4d]49[00]3046....

Ich nehme unnötige Bytes in Klammern.

Jemand hat also 2 Bytes zum Signaturskript hinzugefügt, aber die Signatur nicht gebrochen und die ID der Transaktion geändert. Original tx wurde von blockchain.info gelöscht. Der nächste Link funktioniert nicht mehr: https://blockchain.info/tx/ef74c1cbf0003fc4e96a87a59838f7dd3da488d9d83fec3f270b0d3d7c2bc309?show_adv=true

Weitere Informationen zu Skripten finden Sie im Wiki: https://en.bitcoin.it/wiki/Script

Interessante Analyse der Rohbytes.
Die ef74-Transaktion erscheint nicht mehr auf blockchain.info; Ihr Link führt zu einer Meldung mit der Aufschrift „Transaktion nicht gefunden“.
Sieht so aus, als würde Blockchain keine TX speichern, die nicht in Blöcken enthalten ist.
@Zergatul, woher hast du dieses TX?
Ich führe Parser aus und habe diesen TX in meiner lokalen Blockchain gefunden.

Die Blockchain kann keine formbaren Transaktionen enthalten. Die formbaren Transaktionen finden statt, bevor die Transaktion in einen Block in der Blockchain eingebettet wird.

Im Wesentlichen ist die Transaktions-ID ein Hash von allem über die Transaktion, einschließlich der Signatur. Die Signatur signiert alles außer dem Signaturteil (sie kann ihre eigenen Daten nicht signieren). So können zwei Transaktionsdatensätze dieselben Eingaben und Ausgaben haben, mit (effektiv) derselben Signatur, aber einer unterschiedlichen Transaktions-ID. Es ist diese doppelte Transaktions-ID für dieselbe Transaktion, die einige Bitcoin-Clients verwirren kann.

Nachdem eine Transaktion in einen Block aufgenommen wurde, spielt die Formbarkeit keine Rolle mehr. Wenn Bitcoin-Clients versuchen, mit Transaktionen zu arbeiten, bevor sie ordnungsgemäß bestätigt wurden (indem sie mehrmals in einen Block aufgenommen wurden), können Probleme auftreten.

Innerhalb des Blocks hat die Transaktion also definitiv die gleiche ID wie bei ihrer Erstellung?
Nein, die Transaktion hat eine andere ID. Ich stimme Greg Hewgill nicht zu, der jetzt versucht, solche TX in Blockchain zu finden.
@D-32 Wenn die Transaktion erstellt wird, erhält man eine Transaktions-ID, die ID kann jedoch geändert werden, bis sie in einem Block bestätigt wird. Wenn die ID geändert wird, kann eine oder beide akzeptiert werden. Wenn jemand erwartet, dass die Transaktions -ID A es in einen Block schafft, aber die Transaktions-ID B akzeptiert wird, und er nur nach der Transaktions -ID A sucht, wird er sie nicht bestätigt finden. Sobald sich die Transaktion in einem Block befindet, kann sich die TransactionId nicht mehr ändern.
Das ist gefährlich falsch! Der Block kann verwaist sein. Und wenn dieser Block verwaist ist und sich eine Mutante in der Gewinnkette befindet, wird Ihre gesamte Kette nachfolgender Transaktionen blockiert, da die unmittelbaren Nachfolger in ihren Eingaben auf die falsche Transaktions-ID verweisen und die indirekten Nachfolger auf Transaktionen verweisen, die niemals bestätigt werden können. Dies ist genau der Fehler, der Emittenten von Transaktionen mit hohem Volumen vermasselt hat.