Насколько Segwit *фактически* увеличит емкость биткойнов для реалистичных транзакций?

Я часто слышу заявления о том, что Segwit увеличивает количество транзакций на блок в 1,7–2 раза. Я не уверен, что это правда, но если я сам посчитаю, я не получу это число.

Мое понимание:

1) Расчет «веса» изменяется от:

weight = transaction size
to:
weight = non_sig_siz * 4 + sig_size

где общий максимальный «вес» на блок идет от 1024^2 to 4*(1024^2).

Действительно вес - это новое понятие, раньше он измерялся в байтах.

2) Типичные транзакции составляют около 500 млрд, а подписи — 65 млрд из них. Они различаются, но вы можете проверить средние исторические размеры транзакций здесь:

https://tradeblock.com/bitcoin/исторический/1h-f-tsize_per_avg-01101

3)

((500.0 – 65.0)*4+65)/4.0 = 451.25
1-(451.25/500) = 9.7% 

Предполагая, что мы получим только около 10%, а не 70-100% больше транзакций с помощью SegWit.

Я не уверен, есть ли ошибка в моей математике, или в моем понимании весов сегвитов, или типичных размеров транзакций, или чего-то еще. Я видел от 1,7 до 2 раз в сообщениях от людей, более осведомленных, чем я, поэтому мне было бы интересно посмотреть, как это работает.

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

Для типичных реалистичных случаев использования моя цифра 10% соответствует правильному порядку величины, или я что-то упускаю, что позволило бы увеличить в 2 раза больше реалистичных полезных транзакций?

Существует связанный ответ, который также может быть полезен: bitcoin.stackexchange.com/a/69678/75001 .

Ответы (1)

Обратите внимание, что поле scriptSig — это не только сама подпись ECDSA (65 байт), но и публичный ключ в случае ввода P2PKH, или сценарий выкупа для ввода P2SH, и еще пара байтов для размеров. Кроме того, есть scriptSig для каждого ввода, а не только для каждой транзакции. Вы смотрите на средний размер транзакции, большинство из которых содержит несколько входных данных, но предполагает только одну подпись размером 65 байт.

Возьмем пример транзакции с одним входом и выходом: https://blockchain.info/tx/82d62d5f4e69ae8338c39b7ae2e1d33db59bdf62c869ded7344adc936bab8653 .

Эта транзакция занимает 226 байт, из которых 108 байт занимает scriptSig (включая байт длины), что составляет почти половину размера транзакции. Поскольку средняя транзакция имеет более одного входа, несколько scriptSig составляют более высокий процент от общего размера транзакции в этих транзакциях — в среднем около 60% транзакции. Принимая это во внимание, вы получите предполагаемое увеличение в среднем, основанное на симуляциях, запущенных с новыми правилами в соответствии с текущим использованием, я полагаю.

Действительно вес - это новое понятие, раньше он измерялся в байтах.

Действительно, неверно говорить, что вес был размером транзакции в байтах до того, как этот новый вес был определен, вы должны сравнить старый размер с новым размером виртуальной транзакции (что в основном вы и сделали, разделив на 4)