Каков размер различных типов биткойн-транзакций?

Я нашел этот интересный взгляд на тенденции типов биткойн-транзакций с 2015 года .

Поскольку эта статья двухлетней давности, мне интересно:

а. Есть ли новые типы транзакций?

б. Каков средний размер каждой из этих сделок?

в. Есть ли сайт/способ просмотра типов транзакций, включенных в каждый блок?

Я написал статью в этом блоге.susanka.eu/types-of-bitcoin-transactions-part-i

Ответы (2)

Существует ряд различных форматов адресов и других стандартных типов транзакций:

  • Pay to Public Key (P2PK) выводит платежи напрямую на открытый ключ получателя, а не на производный адрес. Они были почти полностью заменены P2PKH, хотя иногда вознаграждение за майнинг по-прежнему выплачивается P2PK.
    Вход¹: 114 Б
    Выход: 44 Б (сжатый), 76 Б (несжатый)

  • Транзакции с мультиподписью были возможны благодаря использованию соответствующего кода операции непосредственно в выходном скрипте еще до того, как был введен P2SH. Однако сегодня большинство мультиподписных транзакций выполняется с транзакциями P2SH.
    Вход: переменная (зависит от m-of-n)
    Выход: переменная (должна включать все открытые ключи)

  • Pay to Public Key Hash (P2PKH) сегодня является наиболее часто используемым форматом адреса. Выход P2PKH подписывает средства непосредственно на адрес, полученный из одного ключа получателя.
    Вход¹: 148 Б (сжатый), 180 Б (несжатый)
    Выход: 34 Б

  • Pay to Script Hash (P2SH) в прошлом в основном использовался для транзакций с мультиподписью, но разрешен любой действительный сценарий погашения. Креативное использование P2SH позволило ввести обратно совместимые адреса segwit: «Вложенный хэш открытого ключа Pay to Witness» (P2SH-PWPKH или NP2WPKH) и «Вложенный хэш Pay to Script» (P2SH-P2WSH или NP2WSH) можно отправить по любой клиент, который может отправлять на P2SH.
    Ввод¹: переменный (2 из 3: 297 байт, NP2WPKH: 91 байт, NP2WSH 2 из 3: 139 байт)
    Выход: 32 байт

  • Хэш открытого ключа Pay to Witness (P2WPKH) — это собственный формат segwit, соответствующий P2PKH, в котором используется программа-свидетель, а не сценарий подписи. Адреса P2WPKH закодированы с помощью bech32 вместо base58, что означает, что только клиенты, которые понимают собственный формат segwit, могут отправлять на них.
    Ввод¹: 68 Вбайт
    Вывод: 31 Б

  • Pay to Witness Script Hash (P2WSH) — это собственный формат segwit, соответствующий P2SH, в котором используется программа-свидетель, а не сценарий погашения. Адреса P2WSH закодированы с помощью bech32, а не base58, на них могут отправлять только обновленные клиенты.
    Ввод¹: переменная (2-из-3: 105 vBytes)
    Вывод: 43 Б

  • Pay to Taproot (P2TR) — это собственный формат segwit, который сочетает в себе характеристики P2PK с возможностями P2WSH. Это также первый тип вывода, в котором используются подписи Шнорра. Выходные данные содержат программу-свидетель версии 1, а адреса закодированы с помощью bech32m, который отличается от bech32 только контрольной суммой. Выходы могут быть потрачены либо через ключевой путь, который похож на P2PK в том смысле, что требуется только подпись, либо через путь сценария, где раскрывается ветвь ответвительного дерева, а листовой сценарий удовлетворяется аналогично P2WSH.
    Ввод: переменная (ключевой путь: 57,5 ​​ВБ, путь сценария 2-из-3²: 82,75 ВБ–115,5 ВБ)
    Выход: 43 Б

  • Транзакциям с нулевыми данными (OP_RETURN) разрешено иметь один выход, который записывает до 83 байтов данных в блокчейн.
    Ввод: N/A
    Вывод: x ≤ 83 + 11(?) байт

  • К нестандартным транзакциям относятся любые другие транзакции, которые не соответствуют ни одному из приведенных выше шаблонов. Нестандартные транзакции не будут ретранслироваться большинством узлов в сети.

Кроме того, служебные данные транзакции добавляют 10 байтов для транзакций без SegWit и 10,5 байт для транзакций SegWit (для numInputs, numOutputs < 256).

  overhead = version + numInputs + numOutputs + nLocktime = 4 + 1 + 1 + 4 = 10 bytes 
  segwit overhead = version + numInputs + numOutputs + nLocktime + marker + flag = 16 + 4 + 4 + 16 + 1 + 1 [weight units] = 42 weight units = 10.5 vbytes

Если входные данные, не относящиеся к SegWit и SegWit, смешаны, вес входных данных, не относящихся к SegWit, увеличивается на 1 WU для добавляемого пустого стека-свидетеля.


¹Обратите внимание, что из-за формата, выбранного для представления подписей ECDSA в биткойнах, они имеют переменный размер до 72 байтов, причем большинство из них имеют размер 71 или 72 байта. Приведенные выше цифры представляют собой максимальный размер входных скриптов.

²Расходы пути сценария 2-из-3 имеют переменные входные веса в зависимости от того, используется ли конструкция MuSig, есть ли один лист с конструкцией 2-из-3 или три листа 2-из-2 на разной глубине дерева. См., например , https://bitcoin.stackexchange.com/a/96018/5406 .


Многие из вышеперечисленных форматов могут создавать переменные входные и выходные размеры. Как правило, за последнюю неделю средний размер транзакции составлял 514 байт . Я подозреваю, что это число может быть абсолютным размером данных транзакции, а не виртуальным размером, к сожалению, поставщики данных блокчейна все еще отстают в правильной оценке транзакций segwit.

p2sh.info собирает ряд статистических данных о различных форматах транзакций, но, насколько я могу судить, к сожалению, не о количестве транзакций с использованием соответствующих форматов в каждом блоке.


Все данные о размерах предоставляются в максимально возможной степени, исправления приветствуются. Цифры со знаком "(?)" мне подтвердить не удалось. H/T Питеру Уилле, Алексу Босворту, Рагхаву Суду, Серджи Дельгадо за исправления.

Может у меня есть P2TR?
Конечно. Пока я обновляю этот ответ, проверьте: bitcoin.stackexchange.com/a/111396/5406
@VojtěchStrnad: Ну вот

Размер транзакции может варьироваться в зависимости от размера ввода, сжатия адреса и типа адреса.

пока у нас есть P2PKH (Normal), P2SH-P2WPKH (usually addresses starts with 3), И собственные адреса Segwit P2WPKH and P2WSH(bech32).