Segregated Witness как способ улучшения биткоина

Segregated Witness как способ улучшения биткоина

Loading

Segregated Witness как способ улучшения биткойна

\n\n

Segregated Witness – предложение, которое, по мнению определенных специалистов, может улучшать работу биткойна одновременно в разных областях. Создатель предложения – Питер Велле. Он выдвинул его на гонконгском воркшопе Scaling Bitcoin. Сразу скажем о том, что у предложения нашлось немало поклонников, тех, кто называет его долгожданным решением сложностей с масштабированием. Но так ли все радужно на самом деле и стоит ли считать проблему решенной? Попробуем разобраться.

\n\n

Суть действия предложения

\n\n

В составе протокола биткойна – транзакции. Ноды р2р сети не занимаются отправкой друг другую биткойнов. Они только рассылают пакеты этих транзакций. В свою очередь, транзакция – функциональные наборы «замков», первый из которых занимается «высвобождением» биткойнов, которые содержаться в прежних транзакциях. Такой набор носит название «вводы». А другие замки (выводы) закрывают аналогичное или меньшее число биткойнов. В целом,биткойны двигаются к выводам от вводов за одну транзакцию, перепрыгивая с одной к другой.

\n\n

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

\n\n

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

\n\n

Это общее правило. Но выводы, запирающие бикойны, обычно содержат scriptPubKey, требующий доказательств знания или владения приватным ключом, соответствующим публичному ключу, который привязан к этому биткойн адресу.

\n\n

\n\n

 

\n\n

Особенности приватных ключей

\n\n

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

\n\n

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

\n\n

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

\n\n

Подписи

\n\n

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

\n\n

В случае с биткойнами приватный ключ, как правило, применяют для подписи конкретных транзакций (исключение – вводы), запертых валют и иной информации.

\n\n

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

\n\n

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

\n\n

Поведение «новых» нодов с SegWit несколько иное. Для них текст ScriptPubKeys будет обладать смыслом с достаточно специфическим типом вывода. Наравне с прежними выводами, у новых выводов для освобождения биткойнов будет необходимость в нескольких подписях.

\n\n

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

\n\n

И для новых, и для старых нодов SegWit транзакции валидные. Соответственно, споров сблокчейном не возникнет. Но подпись не способна оказать влияние на то, как компонуетсяблокчейн. А значит, он не может доказать, что в транзакции находятся определенные подписи.

\n\n

Размер блоков

\n\n

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

\n\n

Segregated не предусматривает нового типа максимальных размеров блока. Формула расчетов предельного значения довольно произвольная – одна четвертая SegWit + блок без свидетеля = не более 1 мегабайта. Для старых нодов каждый блок будет меньше, чем 1 мегабайт, так как одна четвертая для них и вовсе невидимая. Для новых нодов окажется, что блоки больше 1 мб, так как реальные размеры SegWit более учитываемой четверти.

\n\n

Точный объем дополнительной памяти определяется типами транзакций, которые включены в новые блоки. Общий размер новых блоков будет возрастать, если больший объем данных хранится транзакциями в SegWit. Максимальные размеры нового блока будут равны приблизительно – 1,75 мб нормальные транзакции, и 4 мб – жесткий потолок, не превышаемый ни при каком условии, в том числе, если абсолютно все данные запихивать в SegWit.

\n\n

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

\n\n

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

\n\n

Версии скриптов

\n\n

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

\n\n

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

\n\n

Также SegWit предлагает «защиту от подлогов». Защита признана существенно усиливать уровень безопасности «легких кошельков» или невертифицирующих все транзакции сети и не хранящих весь блокчейн нодов. Проверить прохождение транзакции нода может при помощи простого сканирования блокчейна на соответствующий ID транзакции. Отыскав его, нода удостоверяется, что определенный майнер внес в блок транзакцию. Но эти ноды не могут подтвердить соответствие транзакций правилам. Поэтому им приходится рассчитывать только на то, чтомайнер ведет честную игру. Худший исход – майнер оплачивает биткойнами, которые созданы на пустом месте. Допустим, присудив себе гигантские комиссионные в транзакциях coinbase или создавая транзакции без вводов.

\n\n

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

\n\n

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

\n\n

\n\n

 

\n\n

Влияние SegWit

\n\n

Говорить о роли SegWit в вопросах размера блоков можно, учитывая, о чем же вообще идет разговор. Итак, мы говорим о том, какой компромисс удалось достичь между децентрализацией и пропускной способностью. При нынешнем размере блоков в 1 мб сеть способна на обработку до 7 транзакций ежесекундно. Но по мнению «прогрессоров», такая скорость минимальная. В особенности последние напирают на систему Visa, способную без проблем работать с тысячей транзакций ежесекундно. Из-за слишком маленьких блоков потенциал биткойнов ильно ограничен, а цена транзакций по блокчейнутакова, что доступна она лишь централизованным сервисам. Соответственно, «массовый пользователь» будет искать альтернативные платежные решения, что рано или поздно станет причиной краха самой системы целиком.

\n\n

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

\n\n

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

\n\n

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

\n\n

Итак, теперь нам ясно, что, несмотря на все преимущества, с помощью SegWit невозможно разобраться в спорах о размерах блоков. По мнению прогрессоров, Lightning Network не может решить вопросы с масштабируемостью. Защиту от подлогов можно уверенно назвать полезной, однако легким блокам все-таки не удастся стать такими же надежными, как полным. Отказываясь от данных устаревших транзакций можно получить пользу. Однако разработчикам ядра не раз удавалось предлагать аналогичные решения еще до того, как появилась SegWit.

\n\n

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

\n\n

Способен ли SegWit удовлетворять потребности обоих лагерей, а если быть более точным, то достаточно ли двух мб прогрессорам (реальные данные транзакций, предполагаемые системой) и хватит ли 4 мегабайт децентралистам (так как крупным майнерам удастся вытолкнуть из сферы конкурентов, майня 4 мб. блоки)? Пока непонятно. Однако следует выделить абсолютную опциональность системы – вопрос об апгрейде своего софта будет решаться каждым пользователем в отдельности. Тем, кто выберет SegWit, будет дана условная «скидка» на комиссии, ведь по факту станет использоваться меньший объем ценного пространство блоков. Тем, кто не желает использовать SegWit, так как стоимость работы полных нод возрастет, установку никто навязывать, насильно, не станет. Не менее одной проблемы децентралистов разрешится успешно (рост цены работы полных нод). Что касается другой озабоченности представителей данной партии (снижение скорости распространения), то тут ситуация несколько более сложная. Но разработчик SegWit, сам являющийся децентралистом, уверен, что трудностей все-таки не возникнет.

\n\n

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

\n\n

Подводя итоги можно сказать, что по большей части децентралисты выступили в поддержку SegWit. По их мнению, это крайне важная часть «дорожной карты» в масштабировании. Карта позволяет оттянуть тот миг, когда блоки будут заполнены полностью (при разумной работе SegWit), не отказываясь от существующих общепризнанных правил. С помощью выигранного времени децентралисты смогут найти долгосрочные решения, например, для того, чтобы создать более живучую политику по отношению к размерам блоков, настройкам и другим оптимизациям. Но прогрессоры не уверены в том, что 2 мб является достаточным количеством. По мнению определенных представителей партии, через два десятка лет эта цифра должна увеличиться до 8 гигабайт.

\n\n

\n\n

 

\n\n

Софтфорк и хардфорк

\n\n

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

\n\n

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

\n\n

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

\n\n

Можно найти немало таких консервативных разработчиков, которые уверены в том, что хард-форк – последняя возможная мера. По их мнению, разделять сеть нельзя. И если хард-форк должен быть, то объявлено о нем должно быть заблаговременно, так, чтобы каждый пользователь мог обновиться. Софт-форк позволит провести организацию, как только окажется готовым код. Еслимайнеры будут согласны, то остальным будет предложена возможность проведения апгрейда тогда, когда они пожелают сами и только если пожелают.

\n\n

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

\n\n

Самое вероятное решение на сегодняшний день – дорожная карта Максвелла. Именно она будет единственным планом, не нуждающимся в скорейшем хард-форке, и поддерживаемым большей частью разработчиков биткойна. Соответственно, карте сегодня не достает только того, чтобы ее поддержали обладатели большинства хешевых мощностей. Однако попытка хард-форка также может быть предпринята, учинить ее способны крупные игроки этой области. Не стоит забывать и о возможности того, что Bitcoin XT также окажется где-нибудь поблизости.

\n