Найти тему
The Blockchain Journal

В SegWit отсутствует одна из проверок целостности данных Биткоина

Оглавление

Многие эксперты сообщества криптовалют недовольны снижением безопасности после внедрения усовершенствования протокола Биткоина SegWit — Segregated Witness. Если данные наблюдения и рассуждения действительны — это может привести к серьезным нарушениям в сети. Сатоши — создатель Биткоина это не предусмотрел? Или же все в порядке? Давайте подробнее разберемся в этих вопросах вместе с мнением Йональда Фукболла (Jonald Fyookball).

В данной статье присутствует много технических терминов, но их вы можете изучить в нашей Блокчейн Академии.

В 2017 году доктор Питер Ризан (Peter Rizun) отметил, что Segwit изменяет само определение Биткоина в соответствии с whitepaper: «Мы определяем электронную монету как цепочку цифровых подписей». В этой статье я хотел бы расширить эту тему и добавить ключевое замечание: разрыв цепочки цифровых подписей фактически снимает проверку целостности в реестре биткоина. Биткоин — это система распределенного реестра — форма базы данных. Когда дело доходит до баз данных в целом, существует множество различных типов целостности данных. Один тип, определяемый пользователем, относится к набору правил для конкретного приложения (в данном случае- Биткоина).

В Биткоине одним из наиболее важных типов данных являются цифровые подписи,

-2

ДОКТОР ПИТЕР РИЗАН

которые доказывают, что монета была правильно передана. Тот факт, что подписи нельзя подделать, является одной из причин того, что ваши монеты в хранилище в безопасности, даже если сеть подверглась атаке 51%.

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

Для пользователя угроза всегда такова — монеты могут исчезнуть или быть украдены. Модель безопасности Биткоина гарантирует, что для перемещения монеты должна быть создана соответствующая подпись, и она должна быть включена в транзакцию и записана в блокчейн.

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

Это справедливо для всех (не-Segwit) монет и транзакций в Биткоине; таким образом, проверка целостности вплетается в структуру блокчейна, обеспечивая модель безопасности для всех транзакций.

Как Segwit удаляет проверку целостности

Как вышеизложенное описание меняется в Segwit? Для начала я процитирую доктора Ризана: «В Биткоине подписи являются неотъемлемой частью цепочки. Кэрол может проверить только целую цепочку владения, если все подписи существуют, потому что, если отсутствует хотя бы одна подпись, цепочка ломается … нет способа пройти ее. Монета Segwit отличается, потому что подписи все находятся вне цепи. Если даже ни одна из подписей не существует, или, может быть, ни одна из подписей не была даже реальной для начала, Кэрол все еще может проверить цепочку на попечении. Я использую слово «попечение» вместо цепочки владения, потому что SegWit действительно только показывает опеку».

Таким образом, в Segwit у нас все еще есть подпись, но она НЕ обязана быть непосредственно включена в транзакцию. Фактически, это явно исключено в целях устранения гибкости. Вместо этого подпись («данные свидетеля») размещается в другом месте в ее собственном специальном разделе. У нас все еще есть данные, но то, чего у нас нет, — это проверка целостности данных, так как нет необходимости иметь полную транзакцию (включая подписи) в следующий раз, когда монета будет потрачена.

Как меняется модель безопасности в Segwit

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

Сторонники Segwit оправдывают эту структуру, указывая на то, что правила консенсуса диктуют майнерам проверять все подписи, и для взлома этой модели требуется атака 51%. Хотя это может быть правдой, модель безопасности, несомненно, изменилась. Переплетенная проверка целостности была отвергнута и заменена полной зависимостью от майнеров, а не с обоими типами безопасности. Это сродни тому, чтобы носить пояс и подтяжки в течение многих лет, чтобы убедиться, что штаны никогда не падают, а затем в один прекрасный день снять пояс и провозгласить: «Я все еще ношу подтяжки, что может пойти не так?»

Как меняется модель угрозы в Segwit

Если мы пересмотрим модель угрозы с точки зрения пользователя, что произойдет в Segwit, если ваши монеты пропадут? Я снова отдаю должное Питеру за то, что он задал правильный вопрос: «Можете ли вы доказать, что была кража?»

В Биткоине подпись ДОЛЖНА БЫТЬ в цепочке, и вы можете найти ее в любом обозревателе блоков. Сегодня с Segwit вы также можете увидеть данные Свидетеля в обозревателе блоков, но что, если вы этого не заметили?

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

-3

СЛАЙД ИЗ ВЫСТУПЛЕНИЯ ДОКТОРА ПИТЕРА РИЗАНА НА КОНФЕРЕНЦИИ «БУДУЩЕЕ БИТКОИНА»

Каковы реальные проблемы безопасности?

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

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

Уступки

Хотя я не «за» SegWit, я хочу быть как можно более объективным и справедливым, а не преувеличивать проблему. На практике до сих пор не было никаких проблем с Segwit, о которых я знаю. Подписи все еще существуют, хотя проверки целостности может и не быть. Дизайн базы данных не идеален. Всегда есть компромиссы, а некоторые могут рассматривать Segwit как приемлемый компромисс, возможно, утверждая, что Биткоин имеет достаточную избыточность большого количества архивных узлов, поэтому отсутствие данных свидетелей никогда не будет проблемой.

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

Противоречия в сердце концепции.

SegWit является продуктом группы разработчиков bitcoin-core и полностью поддерживается их последователями. Помимо всего уже написанного, я нашел некоторые «интересные» противоречия в том, как они смотрят на вещи. Я завершу эту статью, предоставив вам два из них:

«Подтверждение». Это группа, которая в значительной степени подчеркивает важность запуска полного узла и «проверки всего себя». Они препятствуют модели безопасности SPV, и один из разработчиков ядра (Luke Jr) даже много раз говорил, что если вы не используете полный узел, вы не используете Биткоин. Другие сторонники Биткоина редко когда-либо оспаривают эти заявления. Тем не менее, эти же люди отлично справляются с тем, что выкидывают в окно основную гарантию, исходящую из проверки подписи каждой транзакции в качестве необходимой связи в цепочке. Для меня это не имеет смысла.
Роль Майнеров. Это также группа, которая любит разработчиков и (неиндексированных) операторов «полного узла» (full node), но недоверчивы к майнерам. Они даже сказали, что майнеры не двигаются к общей цели; что они там, только чтобы «обеспечить порядок транзакций». Разве не смешно, как они теперь поддерживают модель безопасности, которая, больше чем когда-либо, зависит от майнеров?

Источник