Отделенный Свидетель, Часть 2: почему на это стоит обратить внимание

segregated-witness-part-why-you-should-care-about-a-nitty-gritty-technical-trick

В первой части серии из трех статей об Отделенном Свидетеле мы рассказали о механизме его работы. Во второй части расскажем о возможностях, которые он открывает.

Увеличение эффективного размера блока без увеличения лимита

При рассмотрении предложенного Вуйле Отделенного Свидетеля, больше всего внимания привлек ожидаемый выигрыш от вынесения сигнатур из 1-мегабайтных блоков, что может эффективно увеличить размер блока Биткойна. Это означает, что в блокчейн сможет быть записано больше транзакций в секунду. Другими словами, возрастет пропускная способность сети. Более того, такое изменение может быть применено без нарушения каких-либо существующих правил консенсуса сети включая лимит размера блока.

Предложение Вуйле дает новое представление о максимальном размере блока. Формула, используемая для расчета лимита, устанавливается несколько произвольно: Размер Блока без Отделенных Свидетелей плюс четверть от размера Отделенных Свидетелей – в сумме не должно превышать 1 мегабайт. Таким образом, старым узлам все блоки будут казаться меньше, чем 1 мегабайт, так как четверть Отделенного Свидетеля (который они не видят) должна будут вписаться в тот же самый 1 мегабайт. В то же самое время, новые узлы увидят блоки, превышающие 1 мегабайт, так как фактический размер Отделенного Свидетеля больше, чем засчитанная четверть.

Точное количество дополнительного места, которое дает Отделенный Свидетель, зависит от видов транзакций, которые будут включаться в новые блоки. Если большее количество транзакций будут сохранять больше данных в Отделенном Свидетеле, как, например, будут делать транзакции с мультиподписью, общий размер новых блоков возрастет. Это добавит к новому максимальному размеру блока примерно 1,75 мегабайта для нормальных транзакций, и 4 мегабайта как максимальный предел, который невозможно будет превысить даже если (почти) все данные будут сжаты в Отделенный Свидетель.

Прощаемся с пластичностью транзакций

Но есть еще одно, возможно, даже большее преимущество: Отделенный Свидетель может помочь решить проблему пластичности транзакций. На самом деле, эта проблема была изначальной посылкой, в связи с которой возникла сама концепция Отделенного Свидетеля.

Пластичность транзакций обусловлена криптографическим трюком, когда сигнатура изменяется без изменения того, что эта сигнатура означает. Более того, это может быть сделано без секретного ключа, использованного для создания оригинальной сигнатуры. Применительно к Биткойну это означает, что кто угодно может взять любую транзакцию из p2p сети, и подменить оригинальную сигнатуру эквивалетной, которая все равно будет действительна. Эта новая сигнатура по-прежнему будет отражать те же самые данные, что были подписаны изначально, и при этом, она все еще сможет пройти проверку с помощью оригинального открытого ключа. Это никак не изменит результата транзакции, но поскольку вещи будут выглядеть иначе, полностью изменит идентификатор транзакции.

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

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

Развитие скрипта, или как Биткойн может научиться делать почти все, что угодно

Третье преимуществом Отделенных Свидетелей восхитило Биткойн програмистов почти так же, как и первые два, если даже не больше: версии скриптов.

Как объяснялось в предыдущей статье, Отделенные Свидетели содержат scriptSig’и, которые разблокируют биткойны. Но к тому же, они содержат кое-что еще: байты версии. В Отделенных Свидетелях байты версии предшествуют scriptSig, обозначая тип scriptSig. Если после прочтения байтов версии узел может определить тип, он может сказать, каким требованиям надо соответствовать, чтобы разблокировать биткойны в scriptSig. Если после прочтения байтов версии узел не понимает тип, он интерпретирует scriptSig как “Любой может потратить”.

Это открывает массу новых способов блокировки биткойнов в транзакциях. Фактически, это позволяет использовать блокировки биткойнов любым способом, который только смогут придумать разработчики. Таким образом, невозможно объяснить, как это будет использоваться в будущем, так как значительная часть данных возможностей все еще нуждается в дальнейшей проработке. Но первоначальные идеи включают подписи Шнорра – проверять которые будет гораздо быстрее, чем сигнатуры, используемые в настоящее время, а также, более сложные типы транзакций с мультиподписью. Возможно, даже скрипты на основе полноценного языка программирования, вроде того что используется в Эфириуме.

И что важно: как и в случае с самим Отделенным Свидетелем, эти типы обновлений не нарушат существующие правила консенсуса Биткойна. Отсутствует требование обновления каждого Биткойн узла. Достаточно будет, чтобы обновилось большинство узлов, что сделает применение изменений гораздо проще в развертывании.

Доказательства мошенничества: завершение видения Сатоши о SPV

Это еще не конец. Отделенный Свидетель так же может привнести нечто, называемое доказательствами мошенничества. Первоначально, предусмотренные Сатоши Накамото, доказательства мошенничества могли бы существенно повысить безопасность SPV-узлов (или: “легких кошельков”). Биткойн узлов, которые не проверяют все транзакции в сети или не хранят весь блокчейн.

Чтобы проверить, имела ли место транзакция, SPV-узлы просто сканируют блокчейн в поисках идентификатора транзакции. Если они его находят, это означает, что майнер включил транзакцию в блок. Но SPV-узлы не проверяют транзакцию на соответствие правилам Биткойн консенсуса. Соответственно, SPV-узлы верят, что майнеры ведут честную игру, вместо того, чтобы проверять, чем они занимаются на самом деле. В худшем случае, это даже может означать, что майнеры платят SPV-узлам биткойнами, созданными из ничего. Например, путем создания каких-либо сделок без входов, или путем присуждения себе излишних сборов в coinbase транзакций.

Проблемы такого рода могут быть решены, если потребовать, чтобы майнеры включали дополнительные данные в дерево Меркля Отделенного Свидетеля, по которым можно было бы в точности определить, откуда пришли биткойны, заблокированные во всех транзакциях. В таком случае, если блок содержал бы недопустимые транзакции, любой полный узел смог бы произвести быструю и простую в реализации проверку доказательств мошенничества. Такой полный узел может отправлять доказательство мошенничества SPV-узлам, чтобы они знали, что блок надо отклонить.

Но даже с доказательствами мошенничества, SPV-узлы не смогут предложить тот же уровень безопасности, как и полные узлы. Очень важно, что решение доказательств мошенничества требует, чтобы SPV-узлы могли коммуницировать в сети, свободной от цензуры (например, цензуры со стороны подконтрольных государствам провайдеров). Ну и, кроме того, SPV-узлам требуется как минимум один доступный в сети полный узел, который и будет производить доказательства мошенничества.

Место для хранения

Наконец, Отделенный Свидетель может уменьшить количество данных, которые Биткойн узлы должны хранить на жестких дисках. Опять-таки, это снижает бремя на содержание полных узлов, а так же время, необходимое для синхронизации узла с сетью при первом запуске после установки.

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

Конечно, избавление блокчейна от старых сигнатур не может быть идеалом перфекциониста, поскольку он может захотеть проверить данные старых транзакций независимо ни от чего. К счастью, это не может стать проблемой. Все что потребуется такому перфекционисту в этом случае, так это встать на раздачу данных Отделенных Свидетелей, чтобы все остальные могли их скачать.

В третьей и последней части серии статей об Отделенном Свидетеле будет рассмотрено, что же конкретно Отделенный Свидетель означает для давнего спора о размере блока. Спасибо девелоперам Blockstream Питеру Вуйле и Марку Фриденбаху (Mark Friedenbach) и исполнительному директору Ciphrex Эрику Ломброзо (Eric Lombrozo) за предоставленную информацию и дополнительную обратную связь – не говоря уже о проявленном великом терпении.

Источник: Bitcoinmagazine



Categories: Безопасность, Майнинг, Разработчикам, Стандарты, Теория, Технологии

Tags: ,

21 replies

  1. Совершенно неважно,как обозвать решение проблемы.Если оно действительно замочит в сортире XT,а так же последующие попытки каких-то козлов использовать биткоин сеть в своих,узкокозлячих интересах,честь и хвала разрабам.Думаю,про курс и говорить не стоит. =)

  2. Если честно все хорошо, только вот одно – вас само словосочетание отделенный свидетель не коробит? Чет какое-то оно карявое, несуразное для русского уха.

    • Да,возможно “изолированный” звучало бы лучше. Изолированное свидетельство. Изолированное доказательство. Отделенное подтверждение. Изолированное подтверждение. Как лучше?

      • “обособленный наблюдатель”, по моему скромному мнению, звучит более корректно и лаконично одновременно.

        • Да, так получше вроде, а лучше вообще ОН

        • Обособленное свидетельство

        • Все-таки, речь идет совсем не о наблюдении, а о подтверждении валидности транзакций вне блокчейна. Кстати, в англоязычном сообществе термин Segregated Witness тоже вызвал неоднозначную реакцию – вплоть до того, что некоторые сочли его “неполиткорректным”. 😉 Посмотрим, может быть в итоге устаканится какой-то другой термин, чтобы не дай бог негров случайно не обидеть.

          • Да его надо BIPом назвать с соответствующей цифрой и все.

  3. “Трум-пум-пумммм… уффф… Это просто праздник какой-то!”
    (C) Карабас-Барабас/

    • Ну как-бы да. Уже даже песочницу развернули. Но в третьей части самое интересное – выводы из вот этого вот всего 😉

Trackbacks

  1. Отделенный Свидетель, Часть 2: почему на это стоит обратить внимание -
  2. Отделенный Свидетель: софт-форк может примирить споры о размере блока – Bit•Новости
  3. Сила Шнорра: Улучшаем масштабируемость и конфиденциальность Биткойна – Bit•Новости
  4. Lightning Network: уже скоро? – Bit•Новости
  5. Разработчики биткойн-кошельков готовятся к принятию СегВит – Bit•Новости
  6. Драйвчейны: как два новых предложения могут изменить ДНК Биткойна – Bit•Новости
  7. Почему SegWit сделает 2017 год лучшим для Биткойна – Bit•Новости
  8. Почему SegWit сделает 2017 год лучшим для Биткойна | Заработок онлайн доступный каждому
  9. Почему SegWit сделает 2017 год лучшим для Биткойна

Поделитесь своими мыслями

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s