https://geektimes.ru/company/wirex/blog/290067/6 июля в 16:10
Миф о неизменяемости блокчейнов перевод
Автор материала с помощью конкретных примеров опровергает одну из наиболее растиражированных характеристик блокчейна — неизменяемость.Вопрос неизменяемости блокчейнов, вызывающий в криптовалютном мире немало жарких споров, стал чем-то вроде квазирелигиозной доктрины — основополагающего верования, непоколебимого или неоспоримого. И как и в случае с доктринами доминирующих религий, участники противоборствующих лагерей пользуются неизменяемостью в качестве орудия высмеивания и издевок.
В прошлом году мы стали свидетелями двух ярких примеров:
Сторонники криптовалют, утверждающие, что неизменяемость может быть достигнута только с помощью механизмов децентрализованной экономики, таких, как доказательство выполненной работы (proof-of-work). С этой позиции закрытые блокчейны подлежат осмеянию, поскольку всецело зависят от правильного поведения небольшой группы валидаторов, которым, очевидно, нельзя доверять.
Пренебрежительного отношения к редактируемым (или изменяемым блокчейнам), которые предполагают внесение тех или иных ретроспективных изменений при достижении определенных условий. Критики задавали следующий вопрос: есть ли вообще смысл в использовании блокчейна, если его содержимое может быть отредактировано или изменено?
Тем, кто держится от всего этого в стороне, забавно наблюдать за попытками полить неверных грязью, не в последнюю очередь потому, что подобная критика попросту ошибочна, и корнями уходит в фундаментальное непонимание природы неизменяемости блокчейнов (и по сути любой компьютерной системы). Если совсем коротко, суть данного материала сводится к следующему:
Для блокчейнов не существует такого понятия, как идеальная неизменяемость. Правильнее будет задать следующий вопрос: каковы условия при которых тот или иной блокчейн может и не может быть изменен? И подходят ли эти условия для задачи, которую мы пытаемся решить?
Изменяемость в открытых чейнахДавайте рассмотрим два тезиса, приведенные во вступлении. Оба они используют неизменяемость в качестве основания для высмеивания другой точки зрения. Начнем с утверждения о том, что процедуры согласованной валидации, применяемые в контролируемых блокчейнах, не могут гарантировать «истинную неизменяемость», которую обещают блокчейны открытые.
Эта критика легко парируется указанием на уязвимость в самих открытых блокчейнах. Возьмем, к примеру, Ethereum, пострадавший в июне 2016 года от действий хакеров, воспользовавшихся губительной для всей системы уязвимостью. Кому-то удалось найти лазейку в коде умного контракта под названием The DAO, уже успевшего к тому моменту собрать инвестиции на сумму 250 млн долларов, в результате чего злоумышленники смогли быстро «слить» средства на свои счета. Разумеется, эта ситуация полностью противоречила замыслу создателей контракта и чаяниям инвесторов, а в условиях участия контракта всюду как на мантра повторялась фраза «код — единственный закон». Закон или нет, но менее чем через месяц, ПО Ethereum было обновлено с целью предотвратить вывод из системы «заработанной» хакерами криптовалюты.
Конечно же, такое обновление нельзя было осуществить принудительно, поскольку всякий пользователь Ethereum сам управляет собственным компьютером. Тем не менее эта мера получила публичную поддержку Виталика Бутерина, основателя Ethereum, и многих других лидеров комьюнити. В результате большинство пользователей осуществили переход, а блокчейн с новыми правилами сохранил прежнее имя Ethereum. Некоторое меньшинство пользователей выразили свое несогласие с изменением и продолжили использовать предыдущий блокчейн в соответствии с его первоначальными правилами работы, и он с тех пор называется Ethereum Classic. Конечно, более точно было бы назвать их, например, «Ethereum запятнанный» и «Ethereum чистый». Как бы то ни было, демократия есть демократия, и практичный и популярный Ethereum теперь стоит более чем в 10 раз дороже идеалистического, но оставленного на задворках блокчейн-мира Ethereum Classic.
Теперь давайте рассмотрим менее благоприятный сценарий, в результате которого ретроспективная неизменяемость блокчейна может быть подорвана. Давайте вспомним про то, что в ходе процесса создания блоков или так называемого майнинга в Биткоин и Ethereum применяется схема доказательства работы (proof-of-work), в рамках которой для генерации блока и получения награды за работу от узлов требуется решить математическую задачу. Ценность этой награды неизбежно превращает добычу новых блоков в гонку вооружений: майнеры соревнуются в скорости решения задачи. Для компенсации этого процесса сеть периодически изменяет сложность задач для поддержания постоянной скорости создания блоков: каждые 10 минут в Биткоин или 15 секунд в Ethereum.
За последние 5 лет сложность сети Биткоин выросла в 350 тыс. раз. Сегодня подавляющее большинство майнинговой активности происходит на дорогостоящем специализированном оборудовании в местах с холодной погодой и дешевым электричеством. Если у вас, например, найдется 1089 долларов, вы можете приобрести Antminer S9, способный справиться с криптовалютными вычислениями в 10 тыс. раз быстрее любого домашнего компьютера и потребляющий в 10 раз больше электричества. Разница на лицо и очень далека от лежащих в основе биткоин демократических идеалов, даже если такой подход и позволяет серьезно повысить защищенность блокчейн.
Но что значит эта защищенность? Если кто-либо захочет подорвать неизменяемость блокчейна Биткоин, то для этого есть один безотказный способ. Сначала злоумышленники приобретут больше майнинговой мощности, чем у всех остальных узлов сети вместе взятых, создав условия для так называемой атаки 51%. Далее, вместо того чтобы открыто и наравне со всеми участвовать в процессе добычи новых блоков, они будут майнить собственное секретное ответвление блокчейна, содержащее любые угодные именно им транзакции и запрещающее любые другие неугодные. И наконец, по прошествии удобного им времени, они проведут анонимное анонсирование своей секретной ветки в сети. Поскольку в гонке майнинговой мощности наши злоумышленники окажутся сильнее остальных участников, их ветка блокчейна будет содержать больше подтверждения работы, чем публичная. В итоге каждый узел перейдет именно на нее, поскольку, согласно правилам Биткоин, побеждает более «сложная ветка». Все ранее подтвержденные транзакции, не входящие в секретную ветку будут аннулированы, а отправленные с их помощью биткоины злоумышленники смогут отправить на любой удобный им адрес.
Этот рассказ, конечно, рассмешит всех, кто верит в Биткоин, поскольку я написал про «приобретение большей майнинговой мощности, чем у всех остальных узлов сети вместе взятых» так, как будто речь идет о какой-то тривиальной задаче. И конечно, они будут правы, поскольку задача эта не из легких, иначе подобное было бы не раз проделано многими желающими. Всякому, кто захочет провернуть нечто подобное потребуется очень много майнингового оборудования и очень много электроэнергии для его питания. И то и другое стоит огромных денег. Но есть один неудобный факт, который большинство «биткойнеров» предпочитает упоминать только вскользь: с точки зрения правительства любой страны среднего размера нужная для проведения атаки сумма по сей день представляет собой небольшие деньги.
Давайте рассчитаем стоимость атаки 51%, способной аннулировать все биткоин-транзакции за последний год. При актуальной на момент подготовки материала стоимости биткоина в 1500$ и награде в 15 биткоинов (включая комиссии транзакций) за 10-минутный блок, майнеры зарабатывают около 1.2 млрд долларов в год (1500$ × 15 × 6 × 24 × 365). Если предположить, и небезосновательно, что в целом майнеры не сталкиваются с потерями, или теряют немного, то получается, что общие расходы на майнинг также будут находиться в этих же пределах. (Расчет упрощен, в нем не учтена единоразовая стоимость покупки оборудования для майнинга, но 400 млн долларов хватит на достаточное количество Antminer 9s, способных сравниться по мощности с текущей мощностью всей биткоин-сети, поэтому в целом это не сильно влияет на конечный результат).
А теперь давайте вспомним информацию о том, что жители Китая пользуются Биткоином для уклонения от государственного контроля за движением капитала. Известно также, что прибыль китайского правительства от налогов составляет примерно 3 трлн долларов в год. Захотят ли власти недемократической страны потратить 0.04% своего бюджета на вывод из строя популярной схемы нелегального вывода средств из страны? Не стал бы утверждать наверняка, что именно так оно и будет, но думать, что такой сценарий невероятен — слишком наивная точка зрения. Добавляет остроты тот факт, что в полицейский надзор за интернетом в Китае вовлечены 2 млн сотрудников, зарплата которых должна составлять 10 млрд долларов в год при минимальной заработной плате 5 тыс долларов в год. По этой причине выделение 1.2 млрд долларов на вмешательство в ход транзакций становится вполне реальным в обозримом будущем шагом.
Однако даже такой анализ приводит к недооценки возможных вариантов развития событий, поскольку китайское правительство могло бы подорвать деятельность сети Биткоин гораздо более простым способом. Оказывается, что майнинг биткоинов, в силу низких цен на гидроэлектроэнергию и других факторов, происходит, по большей части, именно в Китае. Силовикам потребуется всего лишь несколько взводов солдат и единиц тяжелой техники для того, чтобы произвести физический захват предприятий, где происходит этот майнинг, и последующего их использования для цензурирования или отмены транзакции. Несмотря на то, что члены биткоин-комьюнити по всему миру безусловно заметят эти изменения, они попросту не смогут никак им противостоять если только не договорятся об изменении фундаментальных процессов сети Биткоин, то есть самой природы криптовалюты. Что там говорилось про свободные деньги, не поддающиеся цензуре?
Если бы мне надо было сделать ставку в этом споре, я бы поставил на то, что ни Китай, ни другие правительства скорее всего не станут атаковать биткоин описанным выше способом, потому что в конечном счете такое поведение расходится с их же интересами. Гораздо вероятнее, что они направят свой гнев на менее подконтрольных представителей семейства криптовалют, таких, как Dash, Zcash или Monero.
Тем не менее, малейшая вероятность того, что подобное вмешательство возможно сама по себе ставит доктрину неизменяемости криптовалюты на ее законное место. Блокчейны Биткоин и других подобных сетей просто нельзя назвать идеально или абсолютно не поддающимися изменению сущностями. Скорее можно сказать, что они неизменяемы лишь до тех пор, пока кто-нибудь достаточно крупный и богатый не решит уничтожить их. И все же, полагаясь на экономическую сложность дестабилизации сети, неизменяемость криптовалют вполне удовлетворяет специфическим потребностям всех тех, кто не желает доверять правительствам, компаниям и банкам. Этот подход может быть не идеален, но это лучшее из того, что им сегодня доступно.
Поддающиеся редактированию частные блокчейныТеперь давайте перейдем к закрытым блокчейнам, разработанным под нужды правительств и крупных компаний. Прежде всего следует понимать, что связка алгоритма proof-of-work с неизменяемостью — идея обреченная с коммерческой, легальной и регуляторной точек зрения, поскольку она позволяет любому (достаточно богатому) игроку провести анонимную атаку на сеть. Неизменяемость для учреждений может основываться только на хорошем поведении других таких же учреждений, с которыми они могут подписать договор и встретиться в суде, если в этом возникнет потребность. У закрытых блокчейнов есть и другой дополнительный плюс: они гораздо менее затратны в обслуживании, поскольку блокам требуется лишь простая цифровая подпись, сгенерированная узлами-валидаторами. До тех пор, пока большинство подтверждающих узлов следуют общим правилам, подобная неизменяемость позволяет добиться более надежных и дешевых результатов, нежели это возможно в случае с любыми открытыми криптовалютами.
Конечно, неизменяемость и в этом случае легко может быть сведена на нет, если все участники системы решат сделать это сообща. Давайте представим закрытый блокчейн для сбора данных по инфекционным болезням, которым пользуется группа из шести больниц. Допустим программа одной из больниц отправила в цепочку блоков большой и ошибочный набор данных, доставивший другим участникам неудобства. Спустя несколько телефонных звонков ИТ-отделы всех больниц договорились «откатить» состояние всех узлов на 1 час назад, удалить проблемные данные и позволить чейну работать как ни в чем не бывало. Кто тогда сможет остановить участников сети если все они договорятся о чем-то подобном? (Следует заметить, что некоторые алгоритмы консенсуса вроде PBFT не предусматривают формального механизма для таких откатов, однако это ограничение не остановит узлы от самоуправления и обхода правил, в случае если они поставят перед собой такую цель).
Теперь давайте рассмотрим случай, когда большинство участников закрытого блокчейна соглашаются сделать откат и удалить какую-либо транзакцию, но некоторые из них выступают против. Поскольку каждая из этих организаций имеет абсолютный контроль над своим узлом, никто не сможет навязать меньшинству необходимость присоединиться к консенсусу. Тем не менее, не пожелав поступиться принципами, такие пользователи создадут ситуацию с форком, поскольку будут проигнорированы всеми остальными узлами. Их ждет та же судьба, что и благородных сторонников Ethereum Classic и место в раю в придачу, когда придет время. Однако до тех пор, пока они находятся на нашей грешной земле, они окажутся исключены из процесса консенсуса, который собственно и был главной причиной создания чейна. В результате вся затея потеряет для них смысл, поскольку единственное полезное применение транзакций за пределами процесса консенсуса — это их использование в качестве доказательства в суде.
Запомнив эту ситуацию, давайте поговорим о втором примере. Рассмотрим предложение Accenture по использованию хэшей-хамелеонов, позволяющих максимально упростить процесс замены блоков, находящихся где-то далеко в начале цепочки. Главным стимулом для такой операции, по описанию Девида Трита, выступает желание быстро и эффективно удалить старую, проблемную транзакцию. Предложенная схема предполагает, что каждая такая замена оставляет за собой «шрам», видимый для всех участников сети. (Следует также отметить, что любые последующие транзакции, которые зависят от удаленной транзакции также должны быть удалены.)
Сложно оценить как много критиков поиздевались над этой идеей после ее публикации. Twitter и LinkedIn были переполнены, бурлили от негодования и страха. Отметились не только представители криптомира, получающие спортивное удовольствие от высмеивания всего, что имеет отношение к корпоративным блокчейнам. Идея была также встречена в штыки многими сторонниками закрытых блокчейнов.
И все же есть кейсы, когда идея открытого внесения ретроспективных изменений в блокчейн с помощью хэшей-хамелеонов идеально вписывается в работу сети. Чтобы понять какой в этом смысл, давайте зададим простой вопрос: кто будет иметь полномочия по замене старых блоков? Очевидно, что передавать их некоему случайному и неизвестному участнику сети нельзя, иначе чейн попросту станет неуправляемым.
Ответ заключается в том, что хэш-хамелеон может быть использован только обладателем его секретного ключа. Ключ требуется чтобы у новой версии блока с другими транзакциями внутри остался прежний хэш-хамелеон. Конечно, мы наверняка захотим избежать централизации управления в блокчейне, поэтому можем усилить схему, сделав так, чтобы у блока было сразу несколько хэшей-хамелеонов, а ключ каждого из них находился у разных участников сети. Или же мы можем воспользоваться технологиями разделения секрета, чтобы поделить ключ одного хэша-хамелеона между множеством участников. Так или иначе, работу чейна можно настроить так, чтобы ретроспективная замена блоков происходила только в случае ее одобрения большинством держателей ключей. Звучит как нечто знакомое, не правда ли?
Позвольте мне провести более явную параллель. Представим, что мы разделили управление хэшами-хамелеонами между теми же узлами-валидаторами, которые ответственны за создание блоков. Это означает, что старый блок может быть заменен только если большинство узлов-валидаторов согласится на такую операцию. И все же, как мы уже выяснили ранее, любой блокчейн с самого начала своего существования уже уязвим для ретроспективных изменений: большинство узлов-валидаторов может сделать это с помощью механизма отката. Поэтому с точки зрения организации управления сетью, хэши-хамелеоны в рамках модели большинства валидаторов фактически не меняют ничего.
А коли так, зачем вообще возиться с ними? Все дело в оптимизации производительности: хэши-хамелеоны позволяют производить замену старых блоков чейна гораздо эффективнее предложенных ранее способов. Представьте, что вам необходимо удалить некую транзакцию, расположенную почти в самом начале существующего уже 5 лет блокчейна. Может быть, эта потребность возникла из-за принятого в Евросоюзе закона о праве на забвение, позволяющего индивидам требовать удаления своих личных данных из записей компании. Узлы не могут просто удалить проблемную транзакцию с дисков, поскольку в результате изменится хэш соответствующего блока и связность цепочки будет нарушена. Следующее сканирование блокчейна или обмен данными между узлами приведет к тому, что вся система развалится.
Для решения этой задачи без применения хэшей-хамелеонов, узлам пришлось бы исключить проблемную транзакцию и перезаписать содержащий ее блок, пересчитать его новый хэш, и изменить старый хэш в следующем блоке цепочки. Однако эта операция повлияет и на хэш следующего блока, который также нужно будет пересчитать и заново подставить в следующий за ним блок и так далее, вплоть до самого нового блока. Несмотря на то, что создание позволяющих вносить такие изменения механизмов принципиально возможно, подобные процедуры могли бы продолжаться часами или днями напролет, если в блокчейне уже накопились миллионы блоков и транзакций. Что еще хуже, занятый подобными вычислениями узел, вполне может потерять способность обработки новой информации о сетевой активности. Поэтому хэши-хамелеоны предоставляют гораздо более эффективный в вычислительном отношении способ достижения той же цели. Если сравнить нежелательную транзакцию с глубоко зарытым под землей камнем, то хэши-хамелеоны позволяют телепортировать этот камень на поверхность вместо того, чтобы производить глубокие раскопки, вытаскивать камень и закапывать получившуюся яму.
Неизменяемость имеет много нюансовЯ надеюсь, что предоставив вам обзор рисков proof-of-work блокчейнов и технической ценности хэшей-хамелеонов, мне удалось убедить вас в том, что ответ на вопрос о том, действительно ли блокчейны не поддаются ретроспективным изменениям, зависит от большого количества нюансов и не может быть дан в виде простого «да» или «нет». Цитируя Саймона Тейлора, процитировавшего когда-то Иэна Григга, главный вопрос, который вам следует задавать звучит как: «Кто вы и чего хотите добиться?»
Для сторонников криптовалют, желающих избежать использования правительственных денег и услуг традиционной банковской системы, вера в открытые proof-of-work блокчейны, неизменяемость которых покоится на экономических ограничителях, а не на доверии к другим участникам системы — абсолютно логичный подход. И пусть им приходится мириться с риском того, что влиятельное правительство (или другой обеспеченный игрок) может вывести их сеть из строя, они все же могут утешить себя тем, что любая подобная операция будет стоить злоумышленнику немало сил и средств. Они также несомненно верят, что со временем криптовалюты будут становиться все более защищенными, по мере роста их ценности и требований к мощности оборудования для майнинга.
С другой стороны, для корпораций и других учреждений, желающих наладить безопасный обмен информации в базе данных организаций, применение неизменяемой proof-of-work модели совершенно не имеет никакого смысла. И дело здесь не столько в невероятной дороговизне такого подхода, сколько в том, что схема подтверждения работы позволяет любому достаточно мотивированному участнику анонимно захватить чейн и произвести цензурирование или возврат транзакций. Вместо этого, подобным пользователям необходима неизменяемость, основывающаяся на хорошем поведении большинства заранее известных узлов-валидаторов, подкрепленная юридическими договорами и законами.
И наконец, в большинстве кейсов применения контролируемых блокчейнов, у нас наверняка не будет потребности в том, чтобы валидаторы могли легко и без затрат заменить старые блоки цепочки. Как писал ранее Дейв Берч: «исправить некорректный дебит можно с помощью корректного кредита», а не с помощью попыток притвориться, что этого дебита никогда не существовало. Как бы то ни было, в случаях, когда требуется дополнительная гибкость, хэши-хамелеоны помогают блокчейнам стать практичнее.