Wie groß ist der Input einer P2PKH-Transaktion?

Wie viele Bytes hat ein P2PKH-Eingang? Ich finde ein paar verschiedene Nummern:

  • Warum verwendet die standardmäßige Miner-Implementierung Pay-to-Pubkey? Zustände:

    drücken + sig + drücken + Taste = 1 + 72 + 1 + 61 = 139

  • Im Princeton Bitcoin Book heißt es [p.123]:

    Die ungefähre Größe einer Transaktion beträgt 148 Bytes für jede Eingabe[…]

  • Ein sachkundiger Bitcoin-Entwickler hat für mich beim Kaffee aus dem Kopf gerechnet:

    PREVOUT + SCRIPTSIG = 36 + (1 + 1 + 33 + 1 + (71 oder 72)) = 143 oder 144

Ich konnte im Bitcoin Developer Guide oder im Wiki keine weiteren Informationen finden .

Bonusfrage: Wie kommt es, dass es unterschiedliche Zahlen gibt? Hat sich die Größe im Laufe der Zeit verändert?

Antworten (1)

Die erste Zahl enthält nicht das Prevout, die Sequenznummer oder das Längenbyte für die scriptSig. Es verwendet auch 65 Bytes für den öffentlichen Schlüssel (was korrekt ist, wenn er unkomprimiert ist, aber komprimierte Schlüssel von 33 Bytes sind jetzt häufiger). Die Korrektur ergibt 139 + 36 + 4 + 1 + (33 - 65) = 148.

Der Entwickler im dritten Fall hat vergessen, die Sequenznummer anzugeben, sodass das Ergebnis 147 oder 148 lautet.

Die Jungs von Princeton wissen es eindeutig am besten.

Also zusammenfassend:

PREVOUT: hash (32 bytes)
         index (4 bytes)
SCRIPTSIG: length (1 byte)
           CONTENTS: push opcode (1 byte)
                     signature (71 or 72 bytes)
                     push opcode (1 byte)
                     pubkey (33 bytes for compressed, 65 for uncompressed)
sequence (4 bytes)