Кластер критической децентрализации 36c3 — Форки за которыми мы следуем

TheFuzzStone
XMR.RU
Published in
12 min readAug 3, 2020

Оме: Я приветствую всех! Я собираюсь рассказать об острых форках, вилках, с которыми нам приходится иметь дело. Я называю их острыми, поскольку иногда столкновение с ними способно причинить боль. Это понятно тем, кто знаком с термином «форк», а тем, кто не знает, я кратко объясню, что это такое. Но я сделаю это немного иначе: я не хочу углубляться в технические подробности, а подойду к вопросу с социальной точки зрения, расскажу, чем хороши форки и в чём их опасность. Мы рассмотрим несколько примеров расхождений в группах людей, а также некоторые примеры из жизни сообществ Bitcoin и Ethereum.

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

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

Итак, сначала мне бы хотелось более подробно рассказать о роли, которую форки играют в блокчейн-пространстве. В частности, я сфокусируюсь на хардфорках, а не на софтфорках. Софтфорк является изменением программного обеспечения, реализующего протокол, которое будет обратно совместимым. Это означает, что некоторые люди в сети по-прежнему смогут пользоваться старой версией кода в новых условиях работы, новой передаче данных согласно протоколу. А хардфорк означает, что кто-то из сообщества начнёт пользоваться новой версией программного обеспечения, которое не будет понимать, что происходит, если будет задействован другой протокол. И поэтому мы называем такие форки «жёсткими» хардфорками. То есть если вы будете использовать одну версию, то она будет несовместима с другой, и поэтому блокчейн расходится на две цепочки истории транзакций. И если снова провести сравнение с софтфорками, тут не… у вас может быть два программных форка, софтфорка, и разница состоит в том, что часть сообщества, возможно, будет использовать node.js, а некоторые члены сообщества могут решить, что какие-то функции, которые команда разработчиков реализует на node.js, должны быть выполнены на io.js. И для этого будет произведён форк, а потом они снова сойдутся вместе.

Но и сами хардфорки могут быть разными. Некоторые из них могут быть случайными. Некоторые узлы в сети могут использовать неисправную версию программного обеспечения, неверно реализующую протокол, и в результате некоторого решающего изменения не все участники сети смогут понять, что происходит. Таким образом, в блокчейне, по сути, появляется две ветки, и две части сети не могут сообщаться друг с другом. Также возможна ситуация, когда сообщество проявит озабоченность происходящим, проявит интерес, то есть желание сообщества изменить протокол и программное обеспечение, которое этот протокол реализует, будет мотивированным. Но мне хотелось бы сфокусировать внимание на тех изменениях, что являются спорными. То есть когда часть сообщества не согласна с изменениями, и она продолжает использовать иную версию программного обеспечения, а другие говорят: «Ну, нам действительно хотелось бы, чтобы это произошло. Мы хотели бы внести эти изменения для себя. Мы начнём пользоваться этим и одновременно попытаемся убедить других также перейти на это программное обеспечение, и мы сможем сделать так, чтобы у нас с ними был собственный блокчейн».

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

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

Так в случае с Bitcoin было много споров в отношении размера блока, но в будущем, вполне возможно, это коснётся и других параметров протокола, таких как общий объём денежной массы Bitcoin. На данный момент итоговый объём должен составить 21 миллион монет. И это вопрос, который решается разработчиками программного обеспечения, реализующего протокол, и они решают, что для них было бы хорошо. Но также могут возникнуть разногласия, связанные с принципами организации децентрализованной инфраструктуры, которым надлежит следовать. И тут хорошим примером может служить Ethereum. После взлома DAO блокчейн Ethereum разделился на две ветки, и одна из них, являющаяся сегодня основным форком, нарушила один из ключевых принципов, который заключался в неизменяемости. Поэтому значительная часть людей сообщества, поддерживающего фирму, потеряла большие суммы, и в результате они решили забыть об этом, и спор завершился тем, что они сказали: «Oкей, забудем, что произошло, и давайте все согласимся с тем, что мы не потеряли никаких денег». А часть участников сообщества сказала: «Да нет, мы будем придерживаться принципа неизменяемости, и мы продолжим заниматься майнингом в ветке, которая также поддерживает этот принцип».

Но форки происходят и по множеству других причин. И сначала здесь нужно понять, что в первую очередь заставляет людей объединяться. В случае с фирмами люди работают вместе, поскольку, возможно, верят в какие-то свойства инфраструктуры или возможности, которые она обеспечивает. Причина может быть технологической, политической, экономической и даже теологической, ведь понятие неизменяемости не возникло из ниоткуда, вещи не остаются неизменными, всё меняется. Но мы пытаемся верить, что есть такая вероятность, и некоторые усиленно отстаивают эту точку зрения. Как в случае с Bitcoin, причина может быть экономической — сообщество поверило в то, что фиксированный общий объём денежной массы, равный 21 миллиону, может обеспечить какие-то хорошие свойства, и они будут поддерживать это. Или же они могут верить в то, что увеличение размера блока до 2 мегабайт может иметь непредсказуемые последствия, которые станут пагубными для сообщества. А с точки зрения политики, если есть мнение, что определённая история, поддерживаемая сообществом, принесёт кому-то личную выгоду или же будет выгодна для группы людей, то вы будете бороться за неё.

А сейчас мне бы хотелось кратко рассказать о некоторых эпических хардфорках, случившихся в истории, не ограничиваясь блокчейн-пространством. То есть с точки зрения любого разделения, происходящего в рамках определённой группы людей.

Начать можно с обычной группы друзей, которые перестают испытывать взаимную приязнь, перестают видеться. Или же брак, в котором супруги на дух друг друга не переносят и в результате разводятся. Представьте племя собирателей и охотников, которое бродит по местности в поисках воды, не зная, где взять её, и часть племени говорит: «Нам лучше пойти в этом направлении, возможно, там будет вода». А другая часть племени говорит: «нет, мы пойдём в том направлении и будем надеяться, что вода есть именно там». И племя разделяется и идёт разными дорогами. И это может быть религия, раскол. Некоторые люди верят в то, что Богу, конечно, молиться нужно, но немного иначе. И они начинают злиться, они пишут манифест и приколачивают его на двери церкви, и они стремятся убедить других верующих делать всё так и интерпретировать священные тексты так, как это делают они. Или же, как в случае со слабеющей империей, которая не может поддерживать общественный строй, в результате чего на различных территориях появляются свои лидеры, которые говорят, как всё должно быть. Именно так Римская империя распалась на западную и восточную империи.

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

Сейчас мне хотелось бы немного отклониться от темы и поговорить о срезах ноосферы. Мне просто необходимо рассказать об этих концепциях. Что такое ноосфера. Ноосфера — это сфера, включающая в себя все идеи. Это бесконечное пространство. Каждая идея может быть скопирована, и никто никому не мешает использовать эту идею. Эта концепция была предложена Эриком Реймондом в эссе «Собор и базар». Он является разработчиком и ярым сторонником открытого программного обеспечения, и в 90-е годы он исследовал понятие собственности в области опенсорса. Эрик говорит о том, что программное обеспечение представляет собой набор идей, которые можно копировать бесконечное количество раз. Но если вы копируете их бесконечное количество раз, то людям приходится выбирать какую-то одну версию из сделанных копий. И прошу прощения… Это интересно. Так как в случае с опенсорсом у вас сразу есть и динамика численности, с которой люди копируют какую-то идею для себя. Вы можете зайти на GitHub, нажать кнопку «copy» и получить собственную версию программного обеспечения. Но в то же самое время, если вы собираетесь установить Debian, вы не станете скачивать версию системы из какого-то случайного форка в интернете, вы найдёте надёжный источник для скачивания дистрибутива. Вы проверите подпись PGP, так как хотите знать, что вы скачиваете, и вам необходимо доверие к людям, курирующим дистрибутив или реализующим интерпретатор Python, который вам нужен, поскольку, давайте будем честными, мы не проверяем, делает ли код в точности то, что, по нашему мнению, он должен делать. Так что мы всегда оставляем доверие на откуп мейнтейнера проекта, мейнтейнера дистрибутива… То есть я хочу сказать, нарезка ноосферы представляет собой нарезку чего-то бесконечного, но в конечном счёте людям приходится выбирать, какому варианту протокола или каким идеям они будут следовать.

Таким образом, в данном случае мы имеем дело с некоторыми ограничениями, и вместе с тем мы можем бесконечное количество раз реализовывать форки проектов, форки идей, но, несмотря на то, что мы можем делать это бесконечно, всё заканчивается одним пользователем, что в некоторых случаях даже хорошо. Но когда речь идёт о форках протокола и инфраструктуры, которые позволяют передавать людям некоторые ценности, то мы уже не можем… не очень хорошо, если у каждого будет свой собственный приватный блокчейн со своим собственным приватным протоколом. То есть существует ограничение, связанное с тем, насколько часто мы можем разбивать, разделять вещи. И если проводить аналогию с общественными организациями, с племенем, перемещающимся по дикой местности, то любой может сказать: «Всё, вы не нравитесь мне. Я пойду своим путём». Но тогда можно попросту не выжить. Форк предполагает определённые издержки. И иногда из-за последствий, которые он будет иметь для сети, люди могут не принимать идею форка: либо потому, что им вполне комфортно пользоваться тем, что предлагает сообщество, либо потому, что их устраивает существующая инфраструктура в целом. А иногда это попросту связано с большими издержками.

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

Что они собой представляют… Так, у меня пропущен один слайд, прошу прощения. Я хотел поговорить о тех элементах, которые заставляют нас выбирать один вариант протокола, а не другой, один набор идей, а не иной, вместе со всем тем, что их сопровождает. Это может быть доверие, наше доверие мейнтейнеру, репутация разработчиков, которые продвигают новые возможности в рамках проекта. Это может быть стабильность, как в случае с Bitcoin. Вы можете решить не следовать за форком, если он существует какое-то время, большинство людей остаётся там, и наименее вероятно, что всё быстро изменится, и это обеспечивает стабильность, сохранение ценности валюты. Причина может заключаться в чистоте взглядов: «Нет-нет-нет, мы на самом деле верим в то, что всё должно оставаться так, как есть. Ради потомков мы должны продолжать заниматься майнингом в этом форке», то есть мы будем продолжать проводить транзакции, несмотря на то, что куча народу потеряет на этом деньги. Или же причины могут иметь пропагандистский характер. То есть какая-то группа людей найдёт очень убедительный способ склонить других людей к своему пути.

И в конце я хотел бы привести пару примеров. Первый связан с противостоянием Ethereum и Ethereum Classic, а второй касается Bitcoin и Bitcoin Cash. Если взглянуть на Ethereum и Ethereum Classic… тут нужно знать контекст. Это произошло после взлома DAO. Это был смарт-контракт, который обеспечивал возможность грантов для развития экосистемы Ethereum. И всё было хорошо, пока кто-то не нашёл проблему в смарт-контракте, которая позволяла развеять всю его ценность, в результате чего могла пропасть уйма денег. И было найдено решение: «Oкей, просто забудем о том, что произошло, и будем использовать другую версию протокола, в которой контракт будет исправлен. Таким образом, деньги сообщества не перейдут в руки хакеров». Также велись разговоры о том, что Ethereum движется в сторону использования доказательства ставки и что если не сделать этого, то хакеры получат значительную долю в будущей системе, а нам хочется, чтобы люди в этом сообществе имели право голоса, и мы готовы обеспечить это при помощи неэтичных методов. Но кто-то сказал: «Но ведь это ответственность каждого отдельно взятого человека убедиться в том, что всё работает, как должно работать. И если не работает, то в такой системе это и будет ценой, которую придётся заплатить». Так что я считаю, что этот форк был реализован не только для того, чтобы сообщество не потеряло свои деньги, но и с точки зрения базовых принципов Ethereum. Виталик предложил: «Да, мы можем сделать это, мы можем сделать так, чтобы сообщество не понесло таких значительных потерь. Мы внесём это изменение в протокол. Это хардфорк, это радикальное изменение, и оно не будет иметь обратной совместимости, и если люди будут продолжать заниматься майнингом в другом форке, то это будет несовместимо с этим форком». И так у Ethereum, по сути, появилось два блокчейна и две валюты. Я думаю, что это был очень технократичный и направленный на сохранение репутации форк, поскольку люди доверились Виталику как создателю блокчейну, и если бы он стал поддерживать и продолжил разработку в этом форке, то, как мне кажется, это было бы неестественным, если бы множество представителей сообщества последовало за тем форком. Но также это был и теологический форк, так как очень многие действительно верили в принцип неизменяемости, верили в то, что он требует защиты, даже несмотря на то, что их способ поддержки Ethereum Classic, который заключался в том, чтобы не продавать валюту за Ethereum, был способом подержать идею ценности принципа неизменяемости. А разработчики, которые продолжили работать над Ethereum Classic, продемонстрировали собственную готовность потерять средства. Они могли бы отступить в начале, но они решили остаться и защищать свою идею.

И, наконец, другой пример — Bitcoin и Bitcoin Cash. Всё началось со спора относительно размера блока, то есть сколько транзакций можно включать в один блок. Всё запуталось и внезапно привело к тому, что люди сказали: «Нет-нет, мы остаёмся приверженцами начальным идеям Сатоши Накомото, и поэтому мы внесём эти изменения в протокол и продолжим следовать этим путём». Но если посмотреть, чем всё закончилось, то мы увидим, что люди проводили очень агрессивные пропагандистские кампании. Если зайти на bitciun.com, то там Bitcoin Cash описывается как эквивалент Bitcoin Core или как усовершенствование Bitcoin. И ничего не ясно. И если кто-то знакомый с экосистемой Bitcoin зайдёт на bitcoin.com, а ресурс является достаточно надёжным источником, то реакция будет примерно такой: «О, а Bitcoin Cash, пожалуй, будет получше». И человек не будет знать, в каком направлении двигаться дальше. И вот поэтому я утверждаю, что форки происходят не только по техническим, но и по пропагандистским причинам: это касается истории, которая стоит за происходящим, это касается репутации, которую мейнтейнер проекта имеет в сообществе.

Итак, у меня осталось всего пять минут, и предлагаю посвятить это время ответам на вопросы. Большое спасибо за внимание. Если у вас есть вопросы, здесь есть микрофон. Не знаю… Спасибо!

[Аплодисменты]

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

Диего: Давайте ещё поаплодируем. Большое тебе спасибо, Оме. Oкей, а у нас на очереди очередное выступление, приготовьтесь. Но также у нас проводится и семинар. Это будет Polis… Тебя ждут ещё в одном месте. Я поговорю с тобой через пару секунд…

Источник

Перевод: Mr. Pickles
Редактирование: Agent LvM
Коррекция: Kukima

https://xmr.ru/

--

--

TheFuzzStone
XMR.RU

Privacy, crypto, Linux and FOSS enthusiast. Co-founder of: XMR.RU