Каким будет реальный размер блока после активации SegWit

Каким будет реальный размер блока после активации SegWit
Благодаря SegWit2x, уже через неполный месяц мы, вероятно, пройдем через активацию SegWit. Размер блока будет заменен «весом» блока, объем транзакций будет увеличен, а комиссионные сборы станут ниже. Но каким образом это произойдет – не самый простой вопрос.
В последние недели споры об активации SegWit изменили свой вектор – теперь речь идет не о том, нужно ли активировать протокол, а том, как и когда это сделать. SegWit2x – объединение майнеров и компаний, которые хотят не только активировать протокол SegWit, но и произвести 2Мб хардфорк. Альфа-версия протокола имеет максимально возможный режим совместимости, что не предполагалось изначально. Он также поддерживает развертывание SegWit в Core с версии 0.13.1 и даже узлы UASF (о крайней мере, до хардфорка).
Альянс из 80% компаний, как майнеров, так и платформ, активирует SegWit до 1 августа. Но каким именно образом SegWit увеличит пропускную способность сети? Иногда говорят, что SegWit это «2Мб софтфорк», а иногда даже – «4Мб софтфорк», однако в тоже время можно услышать мнение, что SegWit обеспечить только пропускную способность, эквивалентную 1.5 или 1.8Мб.
Как SegWit обеспечит долгожданное увеличение объема транзакций и почему его так сложно оценить?
От размера к весу Первое, что нужно знать о протоколе – он представляет новый формат транзакций. В этих транзакциях подписи помещаются в дополнительное пространство. Старые узлы видят только пустые поля для заполнения, в то время как узлы, обновленные до SegWit, могут видеть и проверять подписи. Такой подход имеет ряд преимуществ, например, он устраняет пластичность транзакций и квадратичное хэширование. Но нас в первую очередь интересует пропускная способность.
В этом свете стоить отметить, что подписи занимают примерно 60% объема транзакции. Таким образом, если старые узлы, которые обеспечивают ограничение размера блока в 1Мб, продолжат работать с 40% необходимых данных, то тогда, конечно общая пропускная способность сети значительно увеличится.
Помимо этого, стоит отметить, что узлы SegWit и майнеры заменят размер блока на «вес блока». Расчет веса немного сложнее, чем просто «размер блока = 1Мб». Теперь майнерам необходимо создавать блоки, которые не нарушают следующего условия:
4 * Non-Segwit-Data + 1 * SegWit-Data <= 4000 Kilobyte Давайте рассмотрим это условие подробнее. «non SegWit data» - это все, что не входит в SegWit-extra-space: ID, отправитель, получатель, сумма, старые подписи. Размер этих данных умножается на четыре. Затем прибавляется пакет подписей SegWit, но только один за раз. Результат не должен превышать 4Мб. Каким-то образом необходимо провести SegWit через софтфорк – это заставляет пользователей вести себя более рационально во имя масштабируемости сети. Данные SegWit можно легко сократить – удалить их из блокчейна, в то время как от всего, что входит в понятие non SegWit-data, избавиться гораздо сложнее. По этому вопросу можно долго дискутировать, однако нас в первую очередь интересует вопрос увеличения пропускной способности за счет SegWit. Как же мы можем преобразовать вес блока обратно в размер блока? … И обратно к размеру блока Для тех, кто не является разработчиком или математиком, поиск пути от веса блока к размеру блока может быть достаточно сложен. Необходимо создать несколько вычислений, которые приведут к числу килобайт в транзакции, которое может быть помещено в блок SegWit. Самое главное – необходимы две переменные. Во-первых, нужно знать сколько процентов всех транзакций – транзакции SegWit (m). Это очень сложный вопрос. Затем, необходимо узнать, сколько процентов от объема пространства блока занимают подписи (n). Это узнать относительно легко. Если использовать эти переменные и формулу для вычисления веса блока и немного поработать с ними, то можно найти способ вычислить реальный размер блока. Портал BTCManager создал простой JavaScript, который моделирует пропускную способность SegWit с различными переменными. Создатели BTCManager попросили эксперта по Биткоину Йохена Хенике (Jochen Hoenicke) изучить формулу. Он ее упростил и исправил в ней значительные детали. Если вы попробуете поработать с этим скриптом, то увидите, что пропускная способность увеличивается по мере того, как увеличиваются значения переменных m и n, что было и так вполне очевидно. Давайте подробнее рассмотрим результаты. Что мы знаем и чего мы не знаем В первую очередь давайте обратимся к тому, чего мы не можем знать наверняка. Понять какой объем занимают подписи в блочном пространстве относительно легко. По словам Хенике, составившего список долей подписей во всех блоках с момента появления нулевого блока, подписи занимают от 60% до 63% блочного пространства. Это доля остается относительно стабильной величиной последние два года, то есть можно считать, что переменная n=60/65. Более сложный вопрос – необходимо ли транзакциям SegWit на 10% больше пространства, чем старым транзакциям. В текущем развертывании SegWit использует так называемые адреса «nested P2SH», которые действительно нуждаются в этих 10%. Однако в будущем планируется, что появятся собственные SegWit адреса, которым это дополнительное пространство не нужно. Для симуляции, которая описана выше, в основном используется текущий формат адреса. Сложнее всего найти переменную m – здесь данные отсутствуют и невозможно количественно оценить, сколько системе потребуется времени для принятия нового формата транзакций, то есть получить конкретное число – невозможно. Можно только приблизительно оценить потенциальный результат. Как SegWit принимается сетью Биткоин? Как правило, преимущество пропускной способности SegWit обозначается как «2Мб софтфорк». Это оценка в целом правильная, если каждая отправленная транзакция использует SegWit с собственным форматом. Что должно произойти, если SegWit решит принять 100% участников сети? Весь набор UTXO (сокращение от «неизрасходованные выходы»), по сути, должен быть преобразован. Каждый вход или монета в блокчейне Биткоина должны быть отправлены со старого адреса на новый адрес SegWit. Только после этого транзакция сможет обеспечить большую пропускную способность путем "аутсорсинга" подписей. В настоящее время набор UTXO содержит 50 миллионов входов или примерно 2Гб пространства. Для полного преобразования потребовалась бы обработка транзакций Биткоина за две недели. Очевидно, что принятие SegWit не произойдет одномоментно и возможно никогда не получит 100% поддержку. В первые шесть месяцев SegWit будет увеличивать пропускную способность постепенно. Оценка реальных размеров Сколько времени займет преобразование значительной части UTXO? Какое увеличение пропускной способности можно ожидать в течение 6 месяцев? Точные цифры назвать невозможно. Все, что можно сделать – выделить три довода, которые говорят в пользу того, что пропускная способность увеличится от 40% до 80% в течение 6 месяцев: Если обратиться к старому доброму принципу Парето, то 20% всего можно считать 80% всего. 20% компаний могут обеспечить 80% транзакций. Если такие крупные платформы, как Coinbase, BitPay, Bitcoin.de, BitStamp и другие крупные биржи и обработчики платежей примут SegWit, он может легко получить 80% поддержку. Прямо сейчас не существует простого метода создания транзакций SegWit. Однако крупные компании будут иметь возможность его внедрить и начать преобразование. В зависимости от количества входов, которыми они управляют и их системы, им может понадобиться некоторое время, чтобы полностью избавиться от старых транзакций. Преобразование пользовательских кошельков сложнее. Почти во всех существующих кошельках отсутствует интерфейс для взаимодействия с SegWit. Если он будет активирован, то обновление будет доступно только пользователям обновленных кошельков и даже тогда доступ будет достаточно проблематичен, так как потребует замены всего кошелька. В этой области принятие SegWit за 6 месяцев может быть достаточно низким. В конце концов можно предположить, что принятие SegWit через полгода после его активации будет в лучшем случае 85%, а в худшем – 50%. При 50% вместимость блока будет 1, 25Мб, а при 85% - 1, 45Мб. Эти размеры будут в дальнейшем увеличиваться. Если начнут использоваться собственные адреса SegWit, а его принятие достигнет 90-95%, то размер блока может увеличиться до 1, 8Мб.

Поделиться:

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *