При разветвлении монеты Bitcoin SV (BSV) из Bitcoin Cash, разработчики ориентировались на создание более быстрых и простых переводов средств, но эта идея требовала исключения из кода некоторых важных технических характеристик биткоина.
Разработчики пошли на этот шаг и одна из удаленных функций — это так называемая хеш-функция pay-to-script (P2SH), которая дает возможность отправлять транзакцию, подписывая ее «скриптом», а не адресом открытого ключа. Эти скрипты создают особые условия, которые должны быть соблюдены для доступа к отправленным биткоинам. Чаще всего такие скрипты используются в транзакциях с мультиподписями — транзакциях, требующих утверждения более чем одной стороной.
Разработчик Bitcoin Core и бывший технический директор Blockstream Грегори Максвелл сообщил на Reddit, что разработчики BSV удалили функцию P2SH из кода BSV. В кошельке ElectrumSV (и, скорее всего, в других подобных), разработчики заменили эту функцию облегченной и специфичной для BSV версией, называемой «аккумулятор нескольких подписей», которая использует метод P2PKH.
До того, как в 2012 году в биткоине появились транзакции P2SH, единственный тип транзакций был с помощью функции хеширования открытого ключа — P2PKH. Причина, по которой в биткоине стала использоваться именно функция P2SH заключается в том, что P2PKH плохо работает в транзакциях с мультиподписью. На самом деле она настолько небезопасна, что держатели BSV уже теряют средства.
«Ее скрипты вообще изначально не обладали безопасностью», — объясняет Максвелл.
По словам Максвелла, разработчики кода BSV лишь проверили, будут ли транзакции с мультиподписями работать с точным количеством ключей, необходимых для отправки транзакции. Но они не тестировали случаи, когда имеется больше или меньше ключей, чем нужно.
Это тестирование провел Максвелл и обнаружил две существенные проблемы: во-первых, мультисигнатурный перевод не срабатывает, если транзакцию подписывают меньше ключей. Во-вторых, эта функция очень уязвима, когда транзакция имеет слишком мало подписей (или совсем без подписей).
Пользователь BSV Аарон Чжоу потерял 600 BSV в результате атаки, использовавшей эту уязвимость. В переговорах в чате с разработчиками BSV, он сказал, что доверял их технологиям, потому что так заверяли СМИ и сеть поддерживает сам Кэлвин Эйр. В ответ разработчик ему сказал, что Чжоу сам виноват и ему стоило вносить в кошелек только «небольшие суммы».
Максвелл сказал, что если бы разработчики BSV проявили больше внимания и сделали элементарное тестирование, то обнаружили ошибку.
«Этой ситуации вообще можно было бы полностью избежать, если бы BSV не отказалась от компетентных, проверенных временем и коллегами механизмов мультиподписи биткоина в пользу своих гораздо менее эффективных криптографических методов, — сказал Максвелл. — Это заставляет задуматься, какие еще удивительные ошибки таятся в их программном обеспечении или кошельках. Могу сказать точно: я не собираюсь больше ничего тестировать и рисковать средствами».
Разработчики кошелька Electrum SV пока не дают комментариев.