Важность Segregated Witness для Trezor

Никакой политики. Только факты.

Протокол Segregated Witness, также известный как SegWit, является предметом частых споров как онлайн, так и офлайн. Для кого-то его использование может быть предметом для дискуссий из-за политической подоплеки этого вопроса для всей экосистемы Биткойна. Но ради чистоты эксперимента давайте забудем о политике и взглянем на факты. Другими словами, в данной статье не будет затрагиваться роль SegWit в вопросе спора о размере блока. Так же, мы не будем глубоко копаться в технологии и коде самого протокола, так как этому уже были посвящены довольно исчерпывающие обзоры. Вместо этого, мы расскажем исключительно о положительном эффекте протокола SegWit для Trezor и биткойн-кошельков в целом.

«SegWit – это просто подарок судьбы для всех аппаратных кошельков. И на то есть много причин. Лично я думаю, что этот протокол существенно упростит многие сложности, которые сейчас присутствуют в аппаратных кошельках» (Марек «Слаш» Палатинус, директор SatoshiLabs).

Транзакции в сети Биткойн

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

Транзакция в сети Биткойн состоит из трех видов данных: входа, выхода и подписи. Входов, как и выходов, может быть несколько. Подпись подтверждает возможность пользователя тратить монеты (пользователь создаёт подпись, используя свой приватный ключ; другие пользователи могут подтверждать его подпись, сравнивая её с его публичным ключом).

Представим, что Алиса хочет отправить Бобу 10 биткойнов. Для этого ей нужно создать новую транзакцию, указав в ней адрес Боба как адрес получателя (его публичный ключ). Но до этого Алиса уже получила три разных транзакции с суммами в 3 BTC, 4 BTC и 5 BTC. Присвоим им значения N1, N2 и N3. Сумма этих трех транзакций превышает 10 BTC, которые Алиса хочет отправить Бобу, и сумма двух из них так же не дает нужное число. Поэтому в создаваемой транзакции Алисе нужно добавить еще один выход, свой адрес, и указать, что она хочет отправить на него 1,5 BTC.

Заметьте, что сумма выходов (10+1.5=11.5) не равна сумме входов (3+4+5=12). Разница между ними является комиссией за транзакцию для майнера, который добавит запись об этой транзакции в свой блок.

Все выглядит достаточно просто. Но в чём же подвох?

Верификация входов

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

Поэтому в создаваемой Алисой транзакции не будут указаны суммы отдельных входов, а будут даны лишь идентификаторы транзакций и состояние предыдущих выходов.

Кошелек может подтянуть значение входов (предыдущих выходов), но где гарантии, что оно верное? Что если это значение кто-то раннее перехватил и изменил?

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

Однако, против такой атаки есть защита. Trezor, как и многие другие аппаратные кошельки, использует для этого метод верификации. Чтобы подтвердить верность значения входа, кошелек полагается на криптографическую верификацию входа – хеши. Кошелек рассчитывает хеш предыдущей транзакции и сравнивает его с хешем, записанным вместе с транзакцией в блокчейне. Если хеши совпадают, значит значение, которое будет использовано во входе, не было изменено.

В деталях

Возьмем вход N1. Предположим, что он был частью транзакции TXID1 и выхода #0. Тогда транзакция TXID1 выглядела бы следующим образом.

Еще читать  Что такое блокчейн-технология? Пошаговое руководство для новичков. Часть 3

При составлении новой транзакции кошелек запрашивает в блокчейне данные предыдущей транзакции (TXID1), а именно – сведения о конкретном выходе #0 (первая позиция) и его значении. После получения требуемого значения, начинается процесс хеширования всей транзакции. И только если полученный хеш будет в точности соответствовать уже опубликованному хешу (34b23ea….), кошелек может подтвердить верность суммы (в данном случае – 3 BTC). Такая процедура проводится для каждого входа, используемого для следующей транзакции.

Ограниченные мощности аппаратных кошельков

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

А по сравнению со смартфоном или компьютером, хардверные кошельки не имеют достаточной вычислительной мощности, чтобы быстро обработать большое количество хешей. Это и объясняет, почему Trezor проводит некоторые транзакции долго, особенно в аккаунтах с множеством небольших входов.

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

Что изменит SegWit

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

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

Более того, благодаря протоколу SegWit кошелек больше не подписывает каждый вход по отдельности, а вначале хеширует все входы и лишь затем подписывает хеш. Благодаря этому методу уменьшается количество операций кошелька и, соответственно, ускоряется процесс создания транзакций. Также проблема квадратичного масштабирования в операциях с хешированием подписи заменяется проблемой линейного масштабирования; то есть, теоретически, двойное увеличение размера транзакции приведет лишь к двойному увеличению времени вычисления.

Стоит ли активировать SegWit?

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

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

Опровержение SatoshiLabs

Компания SatoshiLabs не разделяет позицию какой-либо из сторон в текущих дебатах по масштабированию Биткойна. Slush Pool всегда сохранял нейтралитет и ратовал за независимость майнеров в принятии тех или иных предложений. Команда Trezor так же не примыкает ни к одному из лагерей, но открыто поддерживает протокол Segregated Witness за его положительный эффект на работу аппаратных кошельков и улучшение клиентского опыта.

SatoshiLabs – инновационная компания, создавшая передовые для мира Биткойна проекты, такие как Trezor, CoinMap.org , Slush Pool (первый в мире пул для майнинга биткойнов).

Trezor – это самый безопасный в мире аппаратный кошелек. Он гарантирует беспрецедентный уровень безопасности для криптовалют, управления паролями и двухфакторной авторизации, сохраняя при этом абсолютную легкость в использовании.

 

Источник

 

Источник


Комментарии:

Добавить Комментарий

Яндекс.Метрика