SegWit и его влияние на протокол Bitcoin

Segregated Witness, или SegWit – это обновление программного обеспечения, совместимое с предыдущими версиями Биткоина, которое было реализовано после мягкого ветвления на основной блочной платформе мира. Его официальное название – BIP141.

С помощью этого обновления каждый блок в цепочке имеет новую структуру, называемую свидетелем, и устанавливает её в сторону от дерева Merkle (дерево хешей) транзакций биткоинов. Для каждой транзакции данные подписчиков и скриптов перемещаются в указанную структуру, отделяя такую информацию от остальных данных операции. Название «сегрегированный свидетель» обусловлено сегрегацией подписей. Несмотря на необходимость для проверки транзакций, они не являются определяющими для последствий транзакций.

Это технологическое новшество исключает податливость третьих сторон и scriptSig, и немного увеличивает средний размер блоков биткоинов – с 1 Мб до 1,8 Мб. Следует отметить, что SegWit не является эксклюзивным программным обеспечением сети Bitcoin. Он также был реализован на других платформах, таких как Litecoin и Vertcoin.

SegWit и его влияние на Bitcoin

Как и почему возник SegWit?

Два главных недостатка Биткоина связаны с гибкостью и масштабируемостью. Чтобы исправить их, были представлены и реализованы некоторые предложения, наиболее важным из которых является Segregated Witness. SegWit был «активирован» в сети Bitcoin 24 августа 2017 года, после почти двух лет испытаний. Протокол был запущен 21 декабря 2015 года Эриком Ломброзо и Джонсоном Лау.

SegWit возник как потенциальное решение вышеупомянутых ограничений Биткоина. Поскольку фирмы не определяют статус блокчейна (даже если они необходимы для проверки этого состояния), создатели определили, что если такие данные были отделены от информации, связанной с деревом Merkle, то система может решить некоторые проблемы, препятствующие росту сети, например, такие как гибкость.

Масштабируемость является свойством некоторых криптографических алгоритмов, которые позволяют модифицировать код третьей стороной. В Биткоине (без SegWit) податливость транзакции считается типом атаки на отказ в обслуживании, что приводит к изменению идентификатора транзакции, известного как txid, в неподтверждённых транзакциях. Это связано с тем, что хеш-типы биткоинов не защищают сценарий подписи (scriptSig), а она, в свою очередь, включает тип подписи (secp256k1), который не может быть «подписан» сам по себе. Способ вычисления txid допускает возможность того, что третья сторона с плохими намерениями (или майнер непреднамеренно) может изменить идентификатор определённой транзакции.

Поскольку изменение идентификатора не изменяет саму транзакцию (ведь записи и результаты не меняются), она каталогизируется как нефункциональная модификация. Однако это представляет собой проблему, когда транзакция ещё не подтверждена, а идентификатор не соответствует txid, который возник у пользователя, отправившего средства. Поэтому, если Вы хотите отслеживать транзакцию в сети, этого нельзя будет сделать, поскольку средства ещё не достигли пункта назначения на тот момент, получатель средств не будет доверять эмитенту и, возможно, протоколу Bitcoin в целом.

Какое влияние SegWit оказывает на Bitcoin?

До SegWit консенсусные правила в Биткоине включали ограничение каждого блока размером 1 Мб. Все блоки, которые не соответствовали этой норме, были отклонены. Изначально не было ограничений на размер блока в Биткоине. Но по соображениям безопасности Сатоши Накамото установил предел в 1 Мб из-за атак с отказами в обслуживании (DoS).

Чтобы сделать SegWit софтфорком (мягким ветвлением), это правило всё ещё поддерживается, а устаревшие узлы сосуществуют с узлами SegWit. Однако с SegWit было введено новое правило, которое, в свою очередь, подразумевает введение нового термина и представляет собой вес блока или «блочный вес», который должен быть меньше или равен 4 000 000 байт. Это новое правило позволяет узлам, унаследованным от Bitcoin Core, оставаться частью сети, обрабатывая блоки размером не более 1 Мб (как они это делали), а новые или обновлённые узлы обрабатывают блоки размером 1,8 Мб. Теперь для обоих типов узлов вес обрабатываемого блока будет не более 4 Мб.

При отправке блоков с транзакциями SegWit в устаревшие узлы (то есть узлы, которые не были обновлены до SegWit) данные подписей устраняются. Так что эти транзакции остаются в силе, создавая экономию места в блоке, который позволяет обрабатывать больше транзакций на каждый блок. И всё это соответствует правилу 1 Мб. С другой стороны, узлы, обновлённые до SegWit, получают транзакции и блоки с данными подписей посредством альтернативных сообщений, определённых в улучшении BIP144. Эти блоки поступают на узлы SegWit с отдельной структурой, которая включает в себя подписи и может иметь размер 1,8 Мб.

Размер блока и вес блока

«Размер блока» выражается в байтах. Это представляет собой фактический размер блока. До SegWit правило консенсуса относительно размера блока диктовало ограничение в 1 Мб. Это правило поддерживается для устаревших узлов, но для узлов SegWit размер блока может быть больше 1 Мб, вплоть до 1,8 Мб.

«Вес блока» относится к весу блока, который ограничен до 4 Мб для обоих узлов (обновлённые узлы SegWit). Это новая концепция, представленная SegWit. Данное новое ограничение для блоков в цепочке вычисляется с помощью следующего математического выражения: базовый размер * 3 + общий размер.

Здесь «базовый размер» – это размер блока в байтах без каких-либо данных. А «общий размер» – это размер блока в байтах с базовыми и данными маркера. Следует отметить, что это выражение используется для вычисления как веса транзакции, так и веса блока.

Segregated Witness и его влияние на Bitcoin

В чём преимущества SegWit для сети Bitcoin и её пользователей?

Преимуществ, которые SegWit приносит в сеть, в основном два: он предотвращает атаки и увеличивает размер блока до примерно 1,8 Мб. Из этих двух преимуществ выявлено ещё несколько других.

С SegWit присутствие данных свидетеля становится необязательным и будет необходимо только тогда, когда узлам требуется проверка транзакции. Следовательно, для метода SPV (упрощённого подтверждения платежа или упрощённой оплаты), используемого клиентами Bitcoin для проверки транзакций, будет уменьшено количество проверочных тестов. Клиенты будут иметь большую конфиденциальность и они смогут загружать больше транзакций, не увеличивая их пропускную способность.

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

Является ли SegWit окончательным решение проблем, связанных с масштабируемостью?

К сожалению, Segregated Witness не является окончательным решением проблем, связанных с масштабируемостью Биткоина, поскольку увеличение количества транзакций незначительно. Однако тот факт, что он исправляет некоторые проблемы, приводит к развёртыванию других технологий, таких как Lightning Network. С исправлением масштабируемости реализация Lightning Network стала менее сложна, использование пространства в блокчейне стало более эффективно. Исправление также позволяет создавать тонкие клиенты Lightning для контроля цепочки блоков, не требуя, чтобы они были полными узлами биткоинов.

Ваше сообщение было успешно отправлено. Мы скоро с Вами свяжемся!