Обмен электронных валют по самому выгодному курсу!
 


Kurbetsoft
Доступно в Google PlayПротив хард-форков

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

Вступление

ОБЗОР ПРОБЛЕМ

Хард-форк представляет собой полное замещение одного протокола другим. По сравнению с альтчейном (альткойн или сайдчейн), хард-форки несут с собой ряд очевидных проблем:

  1. Они пытаются разорвать существующий контракт и заменить его «обновлённой» версией. Вся суть договора заключается в том, что выполнение его условий является обязательным до тех пор, пока все стороны не согласятся внести в них изменения. Однако необходимое согласие на изменение условий часто бывает трудно измерить и оценить по причине множества факторов, таких, как размер, неоднородность и подпольный характер Биткойн-сообщества. В связи с монетарными сетевыми эффектами, в результате хард-форка, контракты могут быть нарушены даже незначительным меньшинством членов сообщества.
  2. При этом, хард-форк подразумевает, что некий «авторитетный» участник за всех решает, какую сеть Биткойна теперь следует считать подлинной. Это однозначно уже не одноранговая система! Хард-форк – это плевок в лицо консенсусу Накамото, т.к. важнейшее из правил Сатоши отвечает именно на этот вопрос и является единственной целью существования Биткойна.
  3. В результате хард-форка сбрасывается счётчик накопления безопасности. В Биткойне существует проблема курицы и яйца, когда нет никакого способа судить о безопасности чего бы то ни было до тех пор, пока она не будет гарантирована большими суммами пользовательских денег.
  4. Хард-форки практически гарантируют, что, в конечном итоге, деньги пользователей будут украдены, а на разработчиков будет оказываться давление со стороны.

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

(Но если приглядеться внимательней, вы увидите, что у всех четырёх пунктов есть одна общая причина: Сатоши создал P2P-сеть таким образом, чтобы не оставить не одной уязвимой точки для атаки.)

ПРЕИМУЩЕСТВА ХАРД-ФОРКОВ

Справедливости ради, я отмечу следующие преимущества хард-форков:

  • Меньше старого багажа: Хард-форки, безусловно, «чище» – они достигают своей цели прямым путём и настолько просто, насколько это возможно. Отличная метафора этому – гортанный нерв жирафа. Если бы природа могла выполнять хард-форки, она бы переделала его с нуля, создав прямой канал длиной 5 сантиметров. Но так не бывает, и потому природа в процессе эволюции слепо сохраняет максимально возможную обратную совместимость, по смыслу схожую с нашим софт-форком. В результате, длина нерва больше примерно в 140 раз, без всяких практических на то причин – совершенно неэффективно.
  • Больше прозрачности: При хард-форке пользователи уведомляются о необходимости установить обновление и о том, как это сделать. Это не тихое принудительное обновление.
  • Больше самостоятельности: У пользователя есть возможность сразу отклонить хард-форк. Это преимущество в случае, если изменения неудачны, но это же и серьёзный недостаток, если изменения полезны.
  • Больше гибкости: Будучи, по сути, началом с нуля, хард-форки могут использоваться для самых разнообразных действий. (Впрочем, как на своём опыте убедились многие конкурирующие криптосистемы, такая гибкость способна создать больше проблем, чем решить. Продолжая биологические метафоры, это может быть аналогично тому, что более 99,999999% мутаций не приводят к эволюции вида, вызывая вместо этого смерть от раковых заболеваний.)

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

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

Три фоновых комментария

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

Держите в уме эти три соображения при рассмотрении стратегии обновлений протокола.

1. НЕЖЕЛАНИЕ ОБНОВЛЯТЬСЯ

Люди не хотят обновлять имеющиеся у них программы.

upgrade-headache

Мобильные телефоны

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

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

Генри Форд или Стив Джобс могут сетовать, что «покупатели не знают, что им нужно», но это правило работает и в обратном направлении! Сколько существующих пользователей Биткойна используют функцию RelativeCheckLocktimeVerify (или хотя бы просто Lightning Network, если на то пошло)?

(Почему?)

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

Обновления – отстой

Дело в том, что обновления – отстой. Они могут нарушить ваш рабочий процесс любым возможным образом!

workflow

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

2. СТОИМОСТЬ БЕСПЛАТНОЙ РАБОТЫ

Представьте, что вам нужно нанять кого-то на работу. (И наоборот: вспомните свой первый опыт поиска работы.) Кого вам нужно нанять (как вам устроиться на работу)?

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

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

Но и в таком случае вы сталкиваетесь со значительной проблемой – с необходимостью проверки качества выполняемой им работы. Представим следующую ситуацию: [1] работа занимает 1 час; [2] ваше время оценивается в 10 долларов в час; и [3] вы можете нанять кого-то, кто сделает эту работу за 2 часа и по ставке 3 доллара в час. Наняв кого-то, вы выигрываете 4 доллара (= $10 — (2 * $3)). Однако если вы потратите 30 минут на проверку работы вашего сотрудника, то вы потеряете дополнительно 5 долларов, и общий итог теперь составит -$1.

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

8-12-2016_d0b2_08_59_53

Невозможно проверить работу бесплатно – даже «бесплатный» труд запросто может стоить целое состояние.

Наёмный труд дорог! (Это объясняет, почему в нашем мире одновременно [1] полно работы и [2] есть много людей, которые готовы трудиться, но не могут найти работу.)

3. КООРДИНАЦИЯ И НЕОДНОЗНАЧНОСТЬ

а. Март 2013

Рассмотрим этот обзор критического положения Биткойна в марте 2013 года.

Я согласен, что этот случай может помочь нам понять обновления Биткойна. Но вместе с тем, я не согласен с утверждением, что «Без централизованной координации разработчиков ядра Биткойна и сильного доверия, оказываемого им сообществом, немыслимо, чтобы это парадоксальное решение могло быть успешно претворено в жизнь».

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

Тем не менее, разработчикам удалось минимизировать ущерб, и вы не сможете придраться ко времени отклика.

б. Сила неспособности

Талеб недавно отметил, что определённые условия могут привести к становлению «тирании меньшинства», сетевые эффекты будут способствовать победе наиболее нетерпимого человека.

Это бы не удивило Томаса Шеллинга, который отметил в 1956 году, что наиболее ограниченный (т.е. самый нетерпимый) человек всегда будет обладать значительным преимуществом на переговорах. Вы и ваш босс приходите к согласию, что ваше рабочее время оценивается в диапазоне от 10 до 20 долларов в час. Самое разумное – это сказать «Я не готов согласиться на менее чем 20 долларов в час» и закрепить утверждение, надев ошейник, который взорвётся, если вы и впрямь получите меньше 20 долларов.

(Обе статьи написаны превосходно.)

в. Спокойный сон

Главным вопросом марта 2013 года был «как нам вновь объединить ветви в одну?», и наиболее подходящим ответом на него было следующее:

23:30 Питер Вуйле: мы _не можем_ дотянуться до каждого пользователя Биткойна в мире

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

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

Любой, кто беспокоится о том, чтобы не оказаться «не в той сети», неизбежно придёт к тому же выводу, что Питер Вуйле: понижение версии выиграет. В любой ситуации «мотивированной неоднозначности», понижение, вероятно, всегда выиграет. Хуже того, этот вывод обладает движущей силой – более умные люди придут к нему раньше, в результате чего первоначально неоднозначная ситуация превратится в безжалостную меритократию без всякого участия к проигравшим.

Однако разработчики сократили переходный период до минимума, минимизировав таким образом сопутствующий ущерб.

Заключение: С точки зрения каждого из этих трёх доводов, софт-форк предпочтительней хард-форка.

Примечание: Hashpower как координатор обновления

Многие утверждают, что hashpower обеспечит общий сигнал (обрекая менее тяжёлую цепочку на вымирание).

У этого аргумента есть определённое основание: скорость хэширования – хороший показатель здоровья (заброшенная цепочка не может продолжаться), он доступен глобально для всех принимающих решение лиц, и является общим.

В то же время, аргумент не учитывает врождённую реактивность майнинга. Во-первых, обратите внимание, что [1] существует бесконечное множество возможных хард-форков из любого имеющегося блока и никаких объективных критериев для дисквалификации какого-либо из них. Таким образом, решение благословить один из них, по сути, является произвольным и обратимым. Во-вторых, [2] если инвесторы поддерживают одну цепочку, эта финансовая поддержка непременно привлечёт к цепочке хэширование.

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

Теория игр и обновления Биткойна

Обновления Биткойна безопасны, потому что они не являются обязательными.

МОДЕЛЬ ОБНОВЛЕНИЯ

Вот простая игра, в которой:

  1. предлагаются обновления двух типов: уязвимое и неуязвимое;
  2. игрок в строках (Строка) принимает решение, обновляться или нет;
  3. игрок в столбцах (Колонка) принимает решение о том, атаковать или нет.

Игрок-колонка обладает информацией о том, [1] возможна ли атака, и [2] как атаковать (и может проводить атаки бесплатно). Игрок-строка несёт «расходы на исследования» в размере «а» – во столько игроку обходится знание о типе обновления.

%d1%81%d0%bd%d0%b8%d0%bc%d0%be%d0%ba-%d1%8d%d0%ba%d1%80%d0%b0%d0%bd%d0%b0-2016-12-27-%d0%b2-14-29-56

Если пользователь отклоняет обновление, ничего не происходит, все выигрыши равны нулю. Атакующий (левая колонка) желает преуспеть, заработав 4 очка, если он сможет обмануть игрока-строку при обновлении. Если атака проваливается, атакующий теряет 2 очка. Хорошие разработчики (правая колонка) зарабатывают 1 очко, если их полезные обновления установлены. Игрок в строке предпочитает обновиться, заработав 3 очка, но теряет 10, если устанавливает обновление от атакующего. Игрок в строке должен заплатить «а», чтобы узнать статус обновления («уязвимое» или «неуязвимое»).

РАВНОВЕСИЕ ИГРЫ

Если а>0, то равновесие Нэша достигается при сочетании стратегий {Ничего не делать, Атаковать}. При а=0, появляется вторая точка равновесия – {Сначала проверить, Не атаковать}.

protocol-ne

При высоком значении «а», обновления очень небезопасны. Однако при а=0 всё меняется. Мало того, что новое равновесие {3, 1} является Парето-улучшением по отношению к старому {0, 0}, но, по прямой индукции, мы можем предположить, что, если игрок в колонке потрудится предложить обновление программного обеспечения, он избегает равновесия {Ничего не делать, Атаковать}.

КОГДА А=0 ?

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

Если мы говорим о хард-форках, то мы и ограничиваемся этим незначительным меньшинством (< 0,1%) людей. Но как насчёт обычных пользователей, которые привыкли получать надёжное программное обеспечение высокого качества, но совершенно незнакомы с такими понятиями как «gitian», «контрольная сумма», «бинарные файлы» и т.п.? Как достучаться до этих пользователей? Есть ли такой план?

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

Софт-форки преображают проверку нового кода – пользователи могут делать предположения о качестве кода и опровергать их, наблюдая за своими друзьями. Это влияет также и на стоимость – с хард-форками, пользователи вынуждены «платить» за проверку программного обеспечения.

Кто защищает разработчиков?

Если разработчики придерживаются политики софт-форков, то атакующий ничего не получает путём их принуждения.

Миром хард-форков управляют разработчики, и тот, кто контролирует разработчиков, контролирует программное обеспечение.

Мир софт-форков – это… что именно? Наша модель (выше) применима независимо от того, сколько атак предпринято злонамеренными разработчиками. Все ли предполагаемые обновления являются вредоносными или ни одно из них, вышеописанный процесс будет пассивно отфильтровывать все атаки, лишая каждую отдельную атаку смысла.

Верно и обратное: если процесс исключения неправомерного поведения разработчиков недостаточен либо отсутствует, то это является поводом для атаки.

Ключевой момент: неспособность разработчиков причинить вред подразумевает также невозможность их шантажирования.

Конечно, такой иммунитет далёк от совершенства. История, к сожалению, знает случаи запугивания разработчиков и оказывания значительного давления на них. Однако следует отметить, что для предприятия такого размера (миллиарды долларов) и качества (постоянная криминальная деятельность в глубоком Интернете, мошенничество, обман и введение в заблуждение, полное или почти полное отсутствие идентификации или проверки биографии), преследование разработчиков было совершенно минимальным. Имели место случаи распространения личных данных и грязных комментариев в Интернете, и этот пост, который, я на 95% уверен, представляет собой всего лишь сложную игру слов на основе концепции доказательности Биткойна.

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

Я связываю эту относительно постоянную миролюбивость с нашей приверженностью к софт-форкам (заметьте: мы не произвели ни одного хард-форка). Другими словами, я приписываю безопасность разработчиков и исследователей Биткойна тому факту, что мы не контролируем, кто получает деньги. Мы не можем отменять платежи, сбрасывать пароли и т.п. Мы не можем сделать ничего подобного.

safe-unable

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

Предполагаемые контрпримеры

Многие читатели заметят, что Эфириум прошёл уже через несколько хард-форков. В BitShares также было уже много хард-форков. И так можно сказать буквально обо всём: VISA, SWIFT, Google и так далее.

Если хард-форки случаются в естественных условиях, почему бы нам не заключить, что они безопасны для Биткойна?

1. БЕГ ВПЕРЕДИ ПАРОВОЗА

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

(Примечание: Это, в свою очередь, связано с тем, что нет никакого приемлемого способа играть на понижение с неудачными идеями [пока]. Если бы могли занимать короткую позицию по отношению к плохим идеям, любой, кто в них вложился, был бы немедленно наказан, и капитал был бы уведён от этих ошибочных инвестиций к продуктивной деятельности. Но, поскольку ошибочные инвестиции не исчезнут мгновенно, нам придётся мириться с этой чередой раздражающих пампов и дампов.)

2. ДИФФЕРЕНЦИАЦИЯ ПРОДУКТОВ

Во-вторых, готовность к хард-форкам – это возможность для ETH/BTS дифференцироваться от Биткойна. Bitcoin Unlimited идёт по тому же пути, гордясь своей готовностью к хард-форкам и общей атмосферой гибкости, адаптивности и гостеприимства. Это не столько даже хард-форки, сколько реклама для централизации.

vitalik-centralization

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

Следуя этому акценту на гибкость, однажды Эфириум подвергся хард-форку по произвольной причине, несмотря на то, что многие пользователи не давали на то согласие. Когда цепь разделилась, ~90% благосостояния проекта осталось в цепочке Виталика, что, казалось бы, говорит об относительном успехе хард-форка.

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

Заключение

Хард-форк неприемлем по многим причинам: это нарушает контракт Биткойна, создаёт риски для средств пользователей и подвергает опасности разработчиков.

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

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

 

Источник: Ethclassic




[vkontakte] [facebook] [twitter] [odnoklassniki] [mail.ru] [livejournal]

Каталог сайтов