Что такое «отдельный свидетель» и как он может улучшить масштабируемость сети?

Я только что услышал об этом, и это считается «поворотным моментом» в дебатах о размере блока.

Что такое " отдельный свидетель "? как это работает?

Как это можно использовать для улучшения масштабируемости сети?

Является ли это ответом на все проблемы масштабируемости сети?

Можете ли вы добавить ссылку на то, где вы читали об этой концепции?

Ответы (1)

Это не серебряная пуля, но это действительно хорошее начало.

Как сказал Гэвин Андресен , Segregated Witness — плохое имя. «Отдельная» часть имени предназначена для обозначения того, что происходит разделение. Часть имени «свидетель» происходит от того факта, что цифровые подписи часто называют свидетелями.

Раздельный свидетель разделяет транзакции на разные части, которые можно обрабатывать отдельно, а не единый блок данных, как сейчас. В частности, он удаляет цифровые подписи из транзакций и помещает их в отдельное дерево Меркла, имеющее ту же структуру, что и дерево Меркла транзакции. Таким образом, при полной реализации для проверки того, что ввод законно расходует свой предыдущий вывод, вы получите подпись из дерева подписи вместо стандартного scriptSigполя.

Вот несколько преимуществ этой идеи:

  • Поскольку данные подписи (свидетельские данные) хранятся вне транзакции (и вне стандартного блока), это означает, что эти данные не нужно учитывать при расчете размера блока. Питер Уилле предлагает скидку 75% на пространство, занимаемое данными подписи, а это означает, что вы можете разместить в блоках в 4 раза больше данных подписи. Это фактически приводит к увеличению размера блока софтфорком.
  • Полностью решает проблемы с пластичностью. Использование транзакций с данными подписи вне транзакции означает, что TXID не хэшируют данные подписи, что означает, что они не поддаются изменению (при условии, что вы используете стандартный флаг SIGHASH). Технически подписи по-прежнему податливы, просто их изменение не аннулирует цепочки транзакций, поскольку подписи не подписывают изменяемые части.
  • Позволяет медленное обновление. Программное обеспечение должно согласиться на использование Segregated Witness после того, как оно будет полностью развернуто в сети, но тем временем (и после) транзакции все еще могут выполняться как обычно без Segregated Witness.
  • Все будущие обновления скриптов станут софтфорками. Когда отдельный свидетель будет полностью реализован, он будет иметь байт версии в выходных данных для той версии скрипта, которую он использует. И поведение клиентов, которые видят сценарий с нераспознанным номером версии, заключается в том, что они рассматривают его как вывод «каждый может потратить».
  • Подписи только доказывают, что транзакция авторизована, они не описывают, куда уходят средства или откуда они пришли. Таким образом, после проверки они могут быть отброшены. Помещение подписей в отдельную структуру данных значительно упрощает удаление этих данных, что приводит к тому, что на вашем жестком диске необходимо хранить гораздо меньше данных блокчейна.

Однако это не увеличивает размер блока полностью, а просто увеличивает количество данных подписи, которые может хранить блок. Поскольку транзакции примерно на 60% состоят из данных подписи, это все еще довольно большой выигрыш.

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

Вы можете посмотреть выступление Питера Вуилле о Segregated Witness по адресу:

https://www.youtube.com/watch?v=fst1IK_mrng&feature=youtu.be&t=37m12s .