Рубрикатор |
Блоги | Николай НОСОВ |
Блокчейн для чайников
08 июля 2021 |
Обеспечение доверия
С древних времен люди были озабочены проблемой сохранения исторической правды, того, как воспринимались события современниками, а не неблагодарными потомками, переписывающими историю в угоду текущим политическим предпочтениям. Это сделать было непросто. Таблички с клинописью шумеров бились и заносились песком, папирусы рвались. Радикальный подход использовали египетские фараоны, выбивавшие слова правды о своих великих деяниях на стенах храмов и обелисков. Но и это не всегда помогало – следующие фараоны сбивали надписи и выбивали что-то свое.
Информацию на одном обелиске можно уничтожить. Но если обелисков с аналогичными записями много, и они расположены в разных странах, задача становится более трудной. С соседними правителями придется договариваться. И чем их больше – тем договориться будет трудней. Да и зачем им заботиться о чужой славе? Другое дело, если на обелисках (узлах или в современной терминологии - нодах распределенной базы данных) будет вырублена правда и об их победах. Тогда имеет смысл поддерживать и свой узел (обелиск).
Блокчейн можно сравнить с обелиском, состоящим из поставленных друг на друга блоков. Нижний блок вытащить нельзя – развалится вся пирамида. Чем больше блоков стоит над вашим блоком с «правдой» – тем трудней работы по его замене, а ведь сделать это надо еще и на всех остальных пирамидах.
На каменном блоке могут быть выбиты не только деяния фараонов, но и записи обычных людей. Например, Петя передал право собственности на дачный участок Боре. Да и не только важные – «Здесь был Вася» тоже подойдет. Главное, чтобы Вася договорился с создателем блока, в современной терминологии – «майнером», чтобы тот внес запись и организовал расстановку новых блоков на всех пирамидах.
Стран и пирамидок много. Майнеров тоже. Каждый хочет получить деньги за установку вырубленного им блока. А блоки еще надо развести по разным «обелискам» - на это требуется время. В результате получается ситуация, когда в верхней части обелисков разных стран стоят разные блоки. И строителям надо прийти к соглашению (консенсусу) – какие блоки оставить, ведь в итоге все «обелиски» (версии правды) должны быть одинаковыми.
Самый демократичный выбор – по затраченной на строительство работе (proof of work, PoW). Майнер, быстрее правильно вырубивший очередной блок, успеет развести его по большему числу «пирамидок». Там где будут установлены его блоки – майнеры начнут делать следующие. Строитель пирамидки, которому поступили блоки от конкурирующих майнеров, выберет блоки от более высокой пирамиды, ведь ему не хочется напрасно делать тяжелую работу и он сделает ставку на лидера. Каждый поддерживает более перспективную версию итоговой пирамидки, таким образом, происходит своего рода заочное голосование строителей, причем ответственное голосование – они отвечают за правильный выбор своей тяжелой работой. С большей вероятностью победит майнер, первым вырубивший очередной блок, но вероятность успеха будет зависеть от временного разрыва с конкурентами и скорости работы поддержавших его «версию правды» строителей других пирамидок.
Проблемы консенсуса
В блокчейне Bitcoin считается, что шесть поставленных сверху блоков обеспечивают неизменность расположенной ниже конструкции. Гарантией служат затраченные на их изготовление мощности. Впрочем, в экстраординарной ситуации, затрагивающей интересы большинства майнеров, не исключен вариант, когда владельцы пирамидок договорятся и снесут большее количество блоков (хардфорк). В блокчейне Ethereum такое соглашение было достигнуто после успешной атаки злоумышленника на проект The Dao. В пересчете на курс на начало атаки речь шла о краже суммы порядка $50 млн., были затронуты финансовые интересы значительного количества майнеров, но и в такой ситуации часть игроков не согласилась с решением и продолжила строительство своих пирамидок, теперь уже отличающихся версией правды. Это крайне редкая ситуация, так что если в записи будет ошибка, то исправить ее задним числом будет нельзя.
Другая проблема – майнеры могут объединиться в артели (пулы) и совместно делать блоки, деля выручку между собой. Если такая «артель» займет доминирующее положение на рынке (сосредоточит в своих руках больше половины мощностей), то сможет навязывать другим игрокам свою версию правды (атака «50 процентов»). Опасность не гипотетическая – больше половины вычислительных мощностей блокчейна Bitcoin находится в Китае. Впрочем, пока это к проблемам не приводило.
Повышение сложности работ по вырубанию блока увеличивает время на его производство, время на доставку ранее произведенных блоков и как следствие упрощает достижение консенсуса. С другой стороны – уменьшает скорость строительства пирамидок. Так что приходится искать компромисс и учитывать развитие орудий труда, ускоряющих работу майнеров.
Многократное дублирование записей в независимых «пирамидках», зависимость новых блоков от старых (если вытащить старый блок – все пирамидка развалится) и метод консенсуса при выборе новых блоков – главные принципы построения блокчейна.
В цифровое время каменные блоки заменили цифровыми, но принцип остался схожим. Новые блоки зависят от старых, а чем больше узлов сети с реестрами записей, тем устойчивей и надежней. Но появились и новшества, связанные с криптографией.
Новый пользователь блокчейн-сети получает хранилище, что-то вроде почтового ящика в подъезде дома, и ключи (открытый и закрытый). Любой, кто знает адрес почтового ящика, может бросить в него деньги или письмо, но достать полученное может только владелец ключа. Это закрытый ключ, который нельзя терять или передавать другому – в противном случае помочь никто человеку не сможет.
С помощью закрытого ключа человек подписывает сообщение, передаваемое в транзакции (запись для выбивания на блоке), по сути - шифрует своим закрытым ключом хеш сообщения. Под хешированием подразумевается преобразование произвольного объема данных в битовую строку заданной длины. Например, можно взять следующую хеш-функцию – первых три цифры суммы порядковых номеров букв в русском алфавите. Тогда слово «дар» преобразуется в «024». (5(«д») + 1(«а») + 18 («р»)= 24). В блокчейне биткоина в качестве хеш-функции используется SHA-256.
Блок из транзакций собирается специальными умельцами (майнерами). В блок заносятся записи о переводе писем (денег, документов) из одного «почтового ящика» (кошелька) в другой. Майнер проводит проверку (валидацию) записей – соответствует ли она протоколу (правилам принятым в конкретном блокчейне), правильность электронной подписи, достаточно ли денег для перевода в кошельке, и отбрасывает негодные.
При использовании PoW майнеру приходится решать сложную вычислительную задачу – аналог тяжелой работы высекания каменного блока. Подобрать значение служебного поля так, чтобы итоговое значение хэш-функции блока, включающего при расчете хэши транзакций и хэш предыдущего блока (привязка к цепи (chain), аналог установки блока поверх блока) было меньше заданного значения, например, начиналось с десяти нулей. По-сути, конкурирующие за право подписать блок и получить за это вознаграждение майнеры платят за это используемой вычислительной мощностью. Если повезет и удастся первым решить задачу – затраты на вычисления окупятся – в момент написания заметки вознаграждение за блок превышало шесть биткоинов ( более $200 000). А в день формировалось более ста блоков.
Экономия vs безопасность
В методе PoW расходуется огромное количество ресурсов, причем очень неэффективно - все майнеры «высекают» блоки, но в итоговом варианте останется только один. По данным исследователей Кембриджского университета за прошедший в год на производство биткоина ушло больше электроэнергии, чем потребила вся Аргентина. Но метод доказал свою надежность и безопасность. Он используется в наиболее популярных блокчейнах – Bitcoin и Ethereum, хотя и подвергается критике за расточительность, особенно в условиях борьбы за экологию и сокращение потребляемых ресурсов.
Наиболее популярные альтернативные методы: подтверждения долей (Proof of Stake, PoS) и его вариация - делегирования подтверждения долей (Delegated Proof of Stake, DPoS). В них не тратятся огромные вычислительные мощности, строители не соревнуются в скорости «высекания» тяжелых блоков, сложность задачи не важна. Собирающим блок из транзакций делегатам, за которых проголосовали участники в DPoS или непосредственно участникам – владельцам кошельков (PoS), уже не приходится майнить, тратя огромные вычислительные ресурсы в борьбе за право первым найти заветную цифру. Они выбираются по установленным правилам (протоколу), при этом вероятность выполнения работы будет выше у участника, внесшего большую долю в проект.
В терминологии PoS строителя блока называют не майнером (не надо майнить - перебирать множество вариантов в поисках заветной цифры), а форджером. Форджеры открытыми ключами пользователей проверяют корректность записей и наличие денег в кошельках, а потом своим закрытым ключём подписывают блок. Дальше блоки конкурируют, как и в PoW. Форжер победившего блока получает комиссии.
Чем больше криптоваюты у участника – тем больше вероятность попасть в делегаты (форжеры). Чем больше денег человек сможет потерять в случае краха проекта (пользователи откажутся от пользования блокчейном и построенные пирамидки станут никому не нужны), тем ответственней он отнесется к работе и не станет искажать информацию в сговоре со злоумышленником.
Теоретически возможных векторов атак на PoS-блокчейны больше. Экономия энергоресурсов при использовании PoS приводит к легкости высекания блока и соответственно простоты поддержки строительства сразу нескольких «колонн». Разработчикам блокчейна приходится думать о механизмах наказания поддерживающих несколько цепочек игроков для предотвращения атаки «боковой ветвью» – созданию альтернативной цепочки блоков злоумышленником, включающем искаженную информацию.
Кроме того в PoS-системах существует проблема централизации капитала. Чем больше денег, тем больше можно построить блоков и заработать на комиссиях за транзакции. В итоге работу сети контролирует ограниченный круг лиц, что особенно часто проявляется в DPоS – «делегированном» варианте PoS.
Не всегда, но нужен
Хайп вокруг блокчейна уже прошел. Блокчейн – дорогая, тяжелая, требующая большое количество ресурсов технология. Это не панацея на все случаи жизни. Обычные централизованные системы значительно быстрее и эффективней.
Нет смысла создавать блокчейн для хранения данных, в фальсификации которых никто не заинтересован. Для этого лучше подойдут обычные базы данных с налаженным процессом резервного копирования. Блокчейн нужен там, где нет центра, которому можно доверять. Блокчейн – версия коллективной правды в среде, где риски потерь от искажения информации превышают стоимость создания и поддержания работоспособности сети. Но это тоже не мало.
Оставить свой комментарий:
Комментарии по материалу
Данный материал еще не комментировался.