Почему BIP141 определяет как размер, так и вес виртуальной транзакции?

Почему BIP 141 (segwit) определяет как размер, так и вес виртуальной транзакции ?

Кажется, что вес всего в четыре раза превышает размер виртуальной транзакции (или наоборот, в зависимости от того, что вы определите в первую очередь). Зачем нужны оба?

Ответы (1)

Лимит транзакций в segwit определяется исключительно весом транзакции и ограничением веса блока в 4 000 000 единиц веса.

Размер виртуальной транзакции не использовался для расчета лимита, поскольку при точном вычислении он является дробным. Bitcoin Core использует только целые числа в коде консенсуса и, таким образом, перешел к весу транзакции с активацией segwit.

Размер виртуальной транзакции предоставляется просто как удобный способ сравнения эффективного размера транзакции SegWit с размерами транзакций до SegWit.


Добавление цитаты из раздела для уточнения: BIP141 определяет следующие условия в отношении размера транзакции:

Вес транзакции
определяется как базовый размер транзакции * 3 + общий размер транзакции (т. е. тот же метод, что и для расчета веса блока из базового размера и общего размера).

Размер виртуальной транзакции
определяется как вес транзакции / 4 (округляется до следующего целого числа).

Базовый размер транзакции
— это размер сериализованной транзакции с удаленными данными-свидетелями.

Общий размер транзакции
— это размер транзакции в байтах, сериализованный, как описано в BIP144, включая базовые данные и данные-свидетели.

Я не уверен, что означает «не используется в segwit». :) Используется в биткойн-ядре. Например, биткойн возвращает vsize— виртуальный размер — из RPC, а не веса.
@KarelBílek: Тогда мой ответ был неправильным, и вам не следовало его принимать. ;) Вам лучше дождаться кого-то, кто действительно знает, о чем говорит, например, PWuille.
Мурч прав. vsize не имеет никакого значения, кроме как для людей. Он предназначен для обеспечения плавного перехода между размерами и весами транзакций (которые имеют разную шкалу). Например, ставки в настоящее время выражаются в сатоши/байт. Чтобы сделать сравнение возможным, я ожидаю, что будет использоваться сатоши / vbyte, а не сатоши / вес (что было бы радикальным изменением числа, чтобы означать одно и то же).
В таком случае, почему биткойн не определяет только виртуальный размер и не предел веса блока, а предел виртуального размера, который был бы в 4 раза меньше и означал бы одно и то же, не определяя два почти эквивалентных термина? может быть, я слишком придираюсь, но я не вижу смысла в понятии веса.
Потому что виртуальный размер является дробным при точном вычислении. Вес - целое число. Мы используем только целые числа в коде консенсуса.
@PieterWuille это отличная причина! Можете ли вы добавить это к ответу? (Не уверен, что у вас есть права на редактирование)
На самом деле я могу отредактировать ответ сам; Я сделаю это и приму это