Обмен электронных валют по самому выгодному курсу!
 


Kurbetsoft
Доступно в Google PlayОтделенный Свидетель, Часть 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




[vkontakte] [facebook] [twitter] [odnoklassniki] [mail.ru] [livejournal]

Каталог сайтов