Я нашел этот интересный взгляд на тенденции типов биткойн-транзакций с 2015 года .
Поскольку эта статья двухлетней давности, мне интересно:
а. Есть ли новые типы транзакций?
б. Каков средний размер каждой из этих сделок?
в. Есть ли сайт/способ просмотра типов транзакций, включенных в каждый блок?
Существует ряд различных форматов адресов и других стандартных типов транзакций:
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 Питеру Уилле, Алексу Босворту, Рагхаву Суду, Серджи Дельгадо за исправления.
Размер транзакции может варьироваться в зависимости от размера ввода, сжатия адреса и типа адреса.
пока у нас есть P2PKH (Normal)
, P2SH-P2WPKH (usually addresses starts with 3)
, И собственные адреса Segwit P2WPKH and P2WSH
(bech32).
цусанка