Насколько велик ввод транзакции P2PKH?

Сколько байтов имеет вход P2PKH? Я нахожу несколько разных чисел:

  • Почему реализация майнера по умолчанию использует pay-to-pubkey? состояния:

    нажать + сиг + нажать + ключ = 1 + 72 + 1 + 61 = 139

  • Принстонская книга о биткойнах утверждает [стр. 123]:

    Приблизительный размер транзакции составляет 148 байт для каждого ввода[…]

  • Знающий биткойн-разработчик вычислил для меня по привычке за чашкой кофе:

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

Я не смог найти дополнительную информацию в Руководстве разработчика биткойнов или вики.

Бонус-вопрос: почему числа разные? Изменился ли размер со временем?

Ответы (1)

Первое число не включает prevout, порядковый номер или длину байта для scriptSig. Он также использует 65 байт для открытого ключа (что правильно, если он несжатый, но сейчас более распространены сжатые ключи размером 33 байта). Его исправление дает 139 + 36 + 4 + 1 + (33 - 65) = 148.

Разработчик в третьем случае забыл указать порядковый номер, в результате чего получилось 147 или 148.

Ребята из Принстона явно знают лучше.

Итак, подведем итог:

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)