Содержание
Когда в сделке нет посредников, любой участник может обмануть другого. В блокчейне проблема решается с помощью строгих математических алгоритмов, по которым создаются блоки.
В материале расскажем, кто создает и проверяет блоки в блокчейне. Вы узнаете как алгоритмы консенсуса обеспечивают безопасность этого процесса.
- P2P: где используются одноранговые сети
- Шифрование в блокчейне: на пальцах
- Блокчейн — цепочка блоков транзакций. Разбираем определение по словам
- Шифрование в блокчейне: зачем нужна цифровая подпись
- Принцип работы блокчейна: кто создает блоки
- Для каких целей и задач подходит блокчейн
Вспоминаем основные понятия
- Одноранговая сеть — сеть, в которой узлы взаимодействуют между собой без посредника.
- Блокчейн — разновидность одноранговых сетей, цепочка блоков транзакций.
- Блок — специальная структура для записи транзакций.
- Транзакция — запись об изменении состояния активов.
Недоверие в блокчейне
Так как в блокчейне нет сервера, добавлять и проверять информацию приходится самим пользователям. При этом каждый участник может преследовать свои личные интересы в ущерб безопасности блокчейна. Отсюда возникает проблема недоверия участников друг к другу. Чтобы ее решить, используются математические алгоритмы, о которых дальше пойдет речь.
Представьте, что на вашем кошельке есть активы, а другой пользователь блокчейна считает, что их нет. Без постороннего вмешательства сложно решить, кто из двоих прав. Необходимо выбрать среди пользователей тех, кто будут проверять транзакции и добавлять только правильные. Таких пользователей называют майнерами.
Майнеры — участники блокчейна, которые занимаются созданием новых блоков и проверкой транзакций.
Для организации правильной работы майнеров необходимо договориться, кто ими будет и как они будут выполнять свою работу. Это непростая задача, ведь нужно придумать такие правила, соблюдать которые майнерам будет выгоднее, чем нарушать. Это классический пример задачи из теории игр: как выбрать стратегию, которая будет одинаково выигрышной для участников с разными интересами.
Такая задача была сформулирована и решена математиками еще в прошлом веке. Сейчас это решение обеспечивает безопасность как в блокчейне, так и в других сложных технологиях. Чтобы понять, как майнерам удается не нарушать интересы друг друга, рассмотрим эту задачу подробнее.
Задача византийских генералов
В научной статье 1982 года была сформулирована логическая дилемма. Она иллюстрирует проблему коммуникации узлов одноранговой сети, которые договариваются о следующем шаге. В качестве аналогии была использована Византия — древнее феодальное государство со множеством независимых армий. Отсюда и взялось название — Задача Византийских Генералов.
Действие происходит во время осады города византийской армией. Ночью легионы с разных сторон окружили город. Генералы каждого легиона ждут приказа главнокомандующего. Варианты приказа: «атаковать» или «отступать».
Первая сложность задачи — империя находится в упадке. Любой из генералов и даже главнокомандующий могут быть предателями Византии, заинтересованными в поражении. Генералам надо это учитывать, чтобы не допустить неблагоприятного исхода. Всего возможно три исхода сражения:
Благоприятный исход. Если все генералы атакуют — Византия уничтожит противника.
Промежуточный исход. Если все генералы отступят — Византия сохранит свою армию.
Неблагоприятный исход. Если некоторые генералы атакуют, а некоторые отступят — противник со временем по частям уничтожит всю армию Византии.
Если каждый генерал будет действовать на свое усмотрение, то вероятность благоприятного исхода весьма низка. Поэтому генералы нуждаются в обмене информацией между собой, чтобы прийти к единому решению.
Вторая сложность в задаче — отсутствие надежного канала коммуникации между генералами. Даже если среди генералов не окажется предателей, информация может оказаться ложной. Например, курьер задержится или попадет в плен. Такая ситуация собьет с толку других генералов и будет принято неверное решение. В таких условиях нужно выработать единую стратегию действий, которая будет выигрышной для всех генералов.
Математики доказали, что получить решение в данной задаче всегда возможно, если верных генералов больше двух третей от общего числа. В разных системах задача может быть решена по-разному.
Византийская отказоустойчивость — способность сети продолжать работать, даже если некоторые из узлов отказали или действуют злонамеренно. Другими словами, это свойство сети, в которой решена Задача Византийских Генералов.
Византийская отказоустойчивость бывает необходима в системах двигателей самолетов, на атомных электростанциях и практически в любой системе, действия которой зависят от результатов работы большого количества датчиков. Даже SpaceX рассматривает ее как потенциальное требование к своим системам.
Если данную задачу применить к контексту блокчейна, то генералы представляют собой майнеров. Они должны договориться и признать транзакцию действительной, чтобы она попала в блокчейн. Данный процесс называется достижением консенсуса.
Например, майнеры видят, что один пользователь хочет отправить биткоины другому. Первый майнер считает, что такая транзакция должна быть одобрена. Второй подозревает, что данную операцию производит злоумышленник. Третий отключился от сети и не проверил транзакцию. Принять единое решение и значит прийти к консенсусу.
Так как у Задачи Византийских Генералов несколько решений, то разные блокчейны добиваются византийской отказоустойчивости с помощью разных алгоритмов консенсуса. Рассмотрим подробнее наиболее распространенные.
Алгоритмы консенсуса
Блокчейн работает на основе распределенной сети. Нет единого центра, который управляет этой сетью. Для организации безопасной работы блокчейна необходимо договориться, кто будет майнером и как он будет создавать блоки. Майнеры работают по строго определенным правилам, которые называются алгоритмом консенсуса.
Алгоритм консенсуса — метод, который описывает как выбирается майнер в блокчейне и по каким правилам он создает блоки.
Чтобы лучше понять, для чего нужен консенсус в системе блокчейн, представим жильцов многоквартирного дома. Блокчейн им необходим, чтобы взаимодействовать друг с другом и принимать решения о развитии дома: собирать деньги на капитальный ремонт, выбирать обслуживающую организацию или назначать дежурства. Есть три способа договориться — три разных алгоритма консенсуса. Каждый из них основывается на некой математической модели.
Proof of Work (PoW) — алгоритм доказательства работы. Майнером может стать любой жилец дома. Чтобы создавать новые блоки, он должен будет использовать свой компьютер для решения сложных криптографических задач.
Алгоритм будет считать верной версией блокчейна ту, в которой больше всего блоков. А больше всего блоков будет в той версии, на создание которой жильцы потратили больше всего компьютерных мощностей. Получается очень демократичный метод: если 51% майнеров считают, что транзакции в блоки правильные, так и будет. Поэтому блокчейн почти невозможно взломать.
Proof of Stake (PoS) — алгоритм доказательства доли владения. Майнерами становятся те, у кого больше всего активов в блокчейне. У нас это будут жильцы с самыми большими квартирами. А в блокчейне Эфириума, например, это будут пользователи, у которых на счету больше всего криптовалюты ETH. При таком алгоритме затраты на электроэнергию минимальны, так как создание блоков в блокчейне больше не требует решения сложных криптографических задач. Чем больше твоя доля в блокчейне, тем чаще ты будешь создавать новые блоки.
Верной версией блокчейна, как и в Proof of Work, будет считаться та, в которой больше всего блоков. Но Proof of Stake нельзя назвать демократичным. Больше всего блоков создадут не большинство жильцов, а самые богатые жильцы. Однако, это еще более безопасно. Если майнерам принадлежит большая часть дома, то действовать злонамеренно им будет невыгодно.
Proof of Authority (PoA) — алгоритм доказательства личности. Может быть так, что жильцы собрались и решили, что создавать блоки будет одна квартира. Данный алгоритм распространен в частных, закрытых блокчейнах. Например, он хорошо подходит для управления многоквартирным домом из нашего примера.
Избранный майнер сам выбирает истинную версию блокчейна. Он должен будет идентифицировать себя, чтобы все жильцы верили ему. Если в какой-то момент жильцы перестанут быть согласными с решениями майнера, они смогут назначить другого. Новый майнер начнет строить свою цепочку блоков, а старый блокчейн останется существовать отдельно. Такой процесс в блокчейне называется хардфорком.
Алгоритмов консенсуса очень много. Постоянно изобретаются новые, но эти три наиболее известные, проверенные временем и часто применяемые.
Заключение
В любых одноранговых сетях возникает недоверие между участниками. В блокчейне данную проблему решают майнеры. Это те пользователи, которые проверяют транзакции и добавляют в новые блоки только правильные.
В статье 1982 года была описана Задача Византийских Генералов. В ней впервые был описан алгоритм того, как сеть может продолжать работать, даже если некоторые из узлов отказали или действуют злонамеренно.
В блокчейне используют три разновидности алгоритмов консенсуса:
- Proof of Work (PoW) — алгоритм доказательства работы.
- Proof of Stake (PoS) — алгоритм доказательства доли владения.
- Proof of Authority (PoA) — алгоритм доказательства личности.