Биткоин или обзор технологии Segregated Witness (Часть 1)

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

Одной их главных сложностей, с которой пришлось столкнуться специалистам, является масштабирование системы и необходимость увеличения пропускной способности сети Bitcoin. И если раньше были видны перспективы в решении вопроса, в 2015 году этот процесс застопорился. Имеется только пара предложений — для людей, которые добывают криптовалюту (BIP 100), а также для предпринимателей (BIP 101). У каждого из направлений имеются свои последователи, и никто не хочет уступать, но ведь решать вопрос нужно было быстро.

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

Операции с криптовалютой: что нужно знать?

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

Но рассмотренное правило не истина в последней инстанции. Так, перевод криптомонет в кошельке Coinbase является одним из видов сделок, которые формируются автоматически хранилищем майнера при создании нового блока. Здесь же удается найти премиальные за получение элемента цепи. На сегодняшний день размер награды составляет 12,5 Bitcoin. Пользователь, занимающийся добычей, может увеличить число Биткоинов разницей, имеющей место между входами и выходами. Подобные премиальные специально оставляются владельцами кошельков за поддержку сети.

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

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

Правила, характерные для узлов сети, открывают возможность для блокирования и разблокирования Bitcoin одним из многочисленных способов. В распоряжении выходов имеются открытые ключи, которые нуждаются в паре. И в этом случае пользователь должен предоставить уже другой — секретный тип ключа. Если первая «отмычка» утеряна, при наличии второго варианта ее восстановление не вызывает сложностей. Аналогичная особенность касается и адреса Bitcoin. Если имеется открытый ключ, его восстановление не вызывает сложностей. При этом обратный алгоритм невозможен. Это главные компоненты, без которых пользование возможностями Биткоин-сети нереально.

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

Где расположены подписи?

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

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

Информация, которая касается финансовой операции с криптовалютой, хэшируется с последующим созданием идентификатора, помогающего распознать транзакции. При включении сделки в блок майнер производит хэширование определителя транзакций одновременно с иными определителями для формирования нового хэша. Процедура продолжается до момента, пока не остается только один хэш. Такой процесс носит название Merkle Tree (дерево Меркла). Что касается последнего хэша (Merkle Root), он объединяется с дополнительной информацией блока, создает его заголовок с последующим применением для распознавания своего узла. При этом хэш должен выступать в роли некого связывающего звена между различными блоками.

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

В чем сущность Segregated Witness?

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

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

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

Элементы, имеющие поддержку SegWit, более внимательно относятся к особенностям криптосети, и обязательно заметят еще что-либо. Они «прочтут» бесполезные тексты, но вовсе не отнесут его к категории бессмыслицы. Наоборот, этот тип информации будет отнесен к категории дополнительного типа выхода, который также нуждается в одной или нескольких подписях для разблокирования. Единственное отличие в том, что новому элементу не требуется включение scriptSig определенной транзакции. Он нуждается в наличии нового фрагмента транзакции.

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

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

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

Продолжение следует.