Segregated Witness: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 53: Строка 53:
* Способствует масштабируемости Биткойна.<ref name="LongRoad" />
* Способствует масштабируемости Биткойна.<ref name="LongRoad" />
* Устраняет пластичность транзакций.<ref name="SWBen" />
* Устраняет пластичность транзакций.<ref name="SWBen" />
* Облегчает разработку и увеличивает эффективность и безопасность дополнительных надстроек ([[смарт-контракты]], Lightning Network и т.д.).
* Облегчает разработку и увеличивает эффективность и безопасность дополнительных надстроек ([[смарт-контракты]], Lightning Network и т.д.).<ref name="SWBen" />
* Устраняет проблему квадратичного роста времени верификации транзакций.<ref name="SWBen" />
* Устраняет проблему квадратичного роста времени верификации транзакций.<ref name="SWBen" />
* Повышает надежность MultiSig-кошельков.<ref name="SWBen" />
* Повышает надежность MultiSig-кошельков.<ref name="SWBen" />
Строка 68: Строка 68:
8 ноября [[Проблема масштабируемости биткойна#Хард форк|хард-форк]] SegWit2x был отложен на неопределённое время из-за отсутствия [[Консенсус|консенсуса]].<ref name=SW2X>[https://www.coindesk.com/2x-called-off-bitcoin-hard-fork-suspended-lack-consensus/ 2x Called Off: Bitcoin Hard Fork Suspended for Lack of Consensus]</ref>
8 ноября [[Проблема масштабируемости биткойна#Хард форк|хард-форк]] SegWit2x был отложен на неопределённое время из-за отсутствия [[Консенсус|консенсуса]].<ref name=SW2X>[https://www.coindesk.com/2x-called-off-bitcoin-hard-fork-suspended-lack-consensus/ 2x Called Off: Bitcoin Hard Fork Suspended for Lack of Consensus]</ref>


После Segwit'а потенциал сети Биткойна существенно возрос. Благодаря обновлению существенно облегчается разработка и внедрение надстроек, а также увеличивается их безопасность и эффективность. В ближайшее время планируется запуск [[Lightning Network]].<ref name="SWBen" /> Разрабатывается решение для увеличения гибкости смарт-контрактов [[Merklized Abstract Syntax Tree]] (MAST), которое также улучшает масштабируемость и повышает конфиденциальность.<ref name=MAST>[https://www.coindesk.com/inside-mast-little-known-plan-advance-bitcoin-smart-contracts/ Inside MAST: The Little-Known Plan to Advance Bitcoin Smart Contracts]</ref>
Благодаря обновлению SegWit существенно облегчается разработка и внедрение надстроек, а также увеличивается их безопасность и эффективность. В ближайшее время планируется запуск [[Lightning Network]].<ref name="SWBen" /> Разрабатывается решение для увеличения гибкости смарт-контрактов [[Merklized Abstract Syntax Tree]] (MAST), которое также улучшает масштабируемость и повышает конфиденциальность.<ref name=MAST>[https://www.coindesk.com/inside-mast-little-known-plan-advance-bitcoin-smart-contracts/ Inside MAST: The Little-Known Plan to Advance Bitcoin Smart Contracts]</ref>


== Примечания ==
== Примечания ==

Версия от 10:27, 25 декабря 2017

Логотип Segregated Witness, разработанный Альбертом Дроссом

Segregated Witness (сокращенно SegWit) — реализованное обновление протокола, призванное решить проблему пластичности транзакций блокчейна Биткойн, а также увеличить её пропускную способность. Аналогичное обновление реализовано и для некоторых других криптовалют, таких как Litecoin, DigiByte, Groestlcoin и Vertcoin.[1]

SegWit является софт форком и позволяет сети функционировать в прежнем режиме. Однако изменяется структура хранения данных в блоке и механизм проверки транзакций для полноценных узлов сети. Теперь подписи и сценарии выделяются в обособленную структуру, именуемую отдельным свидетелем (англ. segregated witness). Это позволяет основному блоку вместить больше транзакций, а также исключает вариативность идентификатора одной и той же транзакции.[1]

История

Проблема масштабируемости

Ежемесячное количество транзакций в сети Биткойн

В 2010 Сатоси Накамото ввёл ограничение на размер блока в 1 мегабайт. Ограничение позволило улучшить совместимость узлов сети, а также снизить эффективность DDoS-атак, но снизило максимальную пропускную способность сети до 3-7 транзакций в секунду. Последнее в дальнейшем оказало негативное влияние на способность сети к масштабированию. С ростом пользовательской базы и количества переводов, стали расти и задержки - некоторые транзакции ожидали очереди несколько дней. Это также привело к росту комиссий за переводы, что резко снизило привлекательность Биткойна для мелких платежей.[2]

Предлагалось увеличить размер блока, что было реализовано в таких форках Биткойна, как Bitcoin XT, Bitcoin Classic, Bitcoin Unlimited и самом успешном Bitcoin Cash.[3][4]

Пластичность транзакции

Ещё одной острой проблемой сети Биткойн являлась так называемая пластичность транзакции. Обычная структура транзакции Биткойна содержит криптографическую подпись, которая позволяет другим участникам сети проверить, действительно ли владелец биткойнов собрался их так потратить. Подпись рассчитывается на основе приватного ключа для каждой транзакции, что исключает изменение данных самой транзакции. Идентификатором транзакции является её хеш, который вычисляется на основе всего блока транзакции. Малейшее изменение в транзакции изменяет её идентификатор. На самом деле, можно изменить транзакцию, оставив её действительной(например, добавив необязательные служебные константы в подпись, которые существенно не изменяют сценарий). При этом изменится её идентификатор, а значит модифицированная транзакция будет считаться совершенно новой и более того, сможет пройти верификацию у других узлов сети. [5] [6] [7]

Любой узел сети может модифицировать транзакцию и транслировать её остальным. Если модифицированная транзакция будет включена в блок основной ветки раньше оригинальной или в дальнейшем окажется в более длинной ветке, то исходная транзакция в дальнейшем будет отвергнута, так как будет ссылаться на использованный выход (так же будут отвергнуты и ссылающиеся на неё). Это создает множество проблем, так как некоторые системы проверяли факт проведения платежа по идентификатору. Также это усложняет реализацию технологий более высокого уровня, которые основываются на блокчейне Биткойна.[6]

Разработчики и раньше пытались решить эту проблему, но она так и не была полностью устранена до обновления SegWit.[8][9]

Предполагается, что с помощью пластичности транзакции было выведено 64 564 BTC из популярной в своё время биржи MtGox[10]. Сеть Bitcoin Cash подверглась масштабной атаке на пластичность транзакций вскоре после хард-форка.[11]

Атака "дней рождения"

Мультиподписные кошельки Биткойна используют P2SH и защищены с помощью HASH160 (160-битная хеш-функция). Если злоумышленник владеет хотя бы 1 ключом от MultiSig-кошелька, то с помощью коллизии хеша он может снизить сложность атаки на кошелек до 280, что уже осуществимо для современных вычислительных систем.[12]

Segregated Witness

Для решения обеих вышеупомянутых проблем было предложено обновление Segregated Witness. Суть заключается в вынесении подписей транзакций в одноименную структуру вне основного блока, что значительно разгружает последний, так как размер подписи составлял более 50% от размера всего блока транзакций. Также это решает проблему пластичности транзакций, ведь подписи больше не влияют на хеш-идентификатор.[13][1]

Но теперь, чтобы проверить все транзакции, узлу нужно загружать расширенный блок (основной блок + отделенный свидетель). О готовности принять расширенный блок, узел специально сообщает соседям. Остальные узлы принимают стандартные блоки в 1МБ, считая что транзакции не нуждаются в подписи. Блок подписей связывается с основной цепочкой с помощью дерева Меркла, расположенного в заголовке блока. От всех подписей так же как и от всех транзакций считаются хеши и заносятся в дерево. Суммарный хеш подписей присоединяется к хешу первой транзакции (coinbase-транзакции) в дереве Меркла транзакций.[13][1]

Расширенный блок теоретически ограничен 4 мегабайтами, но фактически максимальный размер блока составляет чуть менее 2 МБ.[14]

В SegWit для защиты MultiSig-кошельков вместо P2SH используется P2WSH, защищенный SHA256. Это усложняет атаку "дней рождения" до 2128.[12]

Активация

Segregated Witness был предложен Питеров Вюлле(Pieter Wuille) в конце 2015 года. Релиз состоялся в октябре 2016 года - на 6 месяц раньше запланированного срока. Активация должна была произойти после преодоления 95%-порога участников, сигнализирующих о поддержке обновления. Но некоторые участники сети заявили, что поддержат обновление, только если в него будет добавлено увеличение размера основного блока.[1] Китайские пулы могли заблокировать введение SegWit. 23 мая 2017 года майнеры и разработчики подписали Нью-Йоркское соглашение[15], предполагавшее увеличение размера основного блока до 2 МБ в течении 6 месяцев (это обновление назвали SegWit2x). SegWit был активирован 24 августа 2017 года.[1]

Некоторые альткойны тоже решили реализовать SegWit. Так как многие альткойны основаны на базе кода Биткойна, это не доставило разработчикам особых проблем. Первым из них активировал обновление Groestlcoin в январе 2017 года.[1]

Преимущества

  • Совместим с предыдущими версиями ПО.[1]
  • Увеличивает количество транзакций в блоке.[12]
  • Снижает комиссионные сборы.[12]
  • За счёт количества транзакций в блоке, общие сборы майнеров могут увеличиться.[12]
  • Уменьшает время ожидания в очереди.[12]
  • Способствует масштабируемости Биткойна.[1]
  • Устраняет пластичность транзакций.[12]
  • Облегчает разработку и увеличивает эффективность и безопасность дополнительных надстроек (смарт-контракты, Lightning Network и т.д.).[12]
  • Устраняет проблему квадратичного роста времени верификации транзакций.[12]
  • Повышает надежность MultiSig-кошельков.[12]

Недостатки

  • Увеличивает использование ресурсов узла сети.[16]
  • Несколько усложняется проверка транзакций.[16]
  • В то же время сборы майнеров могут сократится из-за введения надстроек.[16]
  • Некоторые участники считают SegWit лишь временной мерой и настаивают на увеличении размера основного блока.[1]
  • Дополнительная цепочка тоже требует обслуживания,в чем майнеры не особо заинтересованы. В сети Биткойн нет вознаграждения за верификацию транзакций(в отличие от Dash). Майнеров сдерживает только высокая вероятность майнинга ошибочных блоков при высокой концентрации облегченных клиентов (SPV-нод).[17]

Дальнейшее развитие

8 ноября хард-форк SegWit2x был отложен на неопределённое время из-за отсутствия консенсуса.[18]

Благодаря обновлению SegWit существенно облегчается разработка и внедрение надстроек, а также увеличивается их безопасность и эффективность. В ближайшее время планируется запуск Lightning Network.[12] Разрабатывается решение для увеличения гибкости смарт-контрактов Merklized Abstract Syntax Tree (MAST), которое также улучшает масштабируемость и повышает конфиденциальность.[19]

Примечания

Литература

  • Andreas M. Antonopoulos. Mastering Bitcoin.

Ссылки