Я публикую это после прочтения ответов на этот вопрос: Где хранится подпись в транзакции SegWit?
Прочитав это, я узнал, что в Segwit «свидетели» (или подписи), которые подтверждают подлинность транзакции, все еще хранятся в блокчейне. В этом случае данная транзакция должна использовать такое же количество битов, как если бы Segwit не использовался. Если размер блока остается прежним, скажем, 1 МБ, то он должен содержать точно такое же количество транзакций.
У меня есть альтернативная возможность. Предположим, что то, что на самом деле отправляется узлам, является транзакцией с пустым полем подписи (я думаю, что такое поле не существует из-за вещей с несколькими подписями и скриптов, но потерпите меня). Затем подписи могут быть отправлены по отдельному каналу. То, что на самом деле проставляется в блокчейне, — это транзакция с пустым полем для подписи. А затем из-за правила «самая длинная цепочка блоков всегда побеждает» узлы, не использующие Segwit, просто признают, что цепочка блоков с наибольшим количеством транзакций, включая некоторые забавные транзакции без подписи, является авторитетной цепочкой блоков.
Но видимо реальность сложнее.
Кроме того, возникает вопрос о том, насколько можно злоупотреблять правилом «самая длинная цепочка всегда выигрывает». (Слово «оскорбляли» не подразумевает отрицательного мнения). Например, допустим, я придумал FoobarWit. FoobarWit — это то же самое, что и Биткойн, но с большим размером блока (без Segwit). Как только достаточное количество узлов примет FoobarWit, больше таких узлов выиграют гонку майнинга, и поэтому другие узлы будут эффективно принимать более крупные блоки, потому что история длиннее. Я знаю, что это не так, но почему?
Ответ на вопрос «Являются ли свидетели segwit частью блокчейна» зависит от того, что вы определяете как блокчейн:
Согласно старым узлам pre-segwit, ответ будет отрицательным , так как они не заботятся о свидетелях и не принимают их.
Согласно новым узлам segwit, ответ положительный ; свидетели являются такой же частью цепочки, как и все остальное, и подчиняются такому же количеству правил проверки.
Таким образом, segwit немного увеличивает пропускную способность за счет увеличения размера блокчейна. Здесь нет волшебной палочки, и этот аспект segwit — просто увеличение размера блока. Это не улучшение масштабируемости.
Segwit был в первую очередь решением проблемы пластичности транзакций, открывая двери для различных протоколов более высокого уровня, которые были ограничены из-за того, что не могли рассуждать о будущих транзакциях в сети, которые еще не были опубликованы. Кроме того, это также немного улучшило структуру стимулов (сделав расходы относительно дешевле по сравнению с созданием результатов). В качестве последнего побочного эффекта это также немного увеличило размер блока обратно совместимым способом.
Что касается вашего вопроса о другом форке, который идет еще дальше: то, что делает ваше программное обеспечение, не влияет на тех, кто его не принимает. Даже если у него на борту весь хэшрейт мира, старые узлы не будут заботиться о ваших дополнительных данных и не увидят их.
Предел блока в 1 МБ остается в силе после активации SegWit, но он относится исключительно к блочным транзакциям, сериализованным в формате pre-segwit, который не включает свидетелей. Этот 1 МБ до сих пор является консенсусом.
При активированном segwit существует дополнительное ограничение размера блока, которое ДЕЙСТВИТЕЛЬНО применяется к данным segwit: это ограничение «веса» 4M на блок.
Вес рассчитывается следующим образом:
По мере того, как доля свидетелей в общих данных транзакции увеличивается до 100 %, ограничение эффективного размера блока в байтах приближается к 4 МБ.
op_return
не учитывается при классическом размере блока 1 МБ?
Марч
влад