Apr 26, 2024 06:36
Надежная компьютерная система должна функционировать, даже если один или несколько ее компонентов выйдут из строя. Неисправный компонент может проявлять недооцененное поведение: передавать противоречивые данные в разные части системы. Так что же такое проблема византийских генералов? Эта проблема - абстрактное выражение проблемы решения такого рода сбоев.
Проблема византийских генералов - это игровая теоретическая проблема, описывающая, насколько сложно рассредоточенным сторонам прийти к консенсусу без помощи доверенной центральной стороны. Как члены сети могут согласиться с определенной реальностью, когда никто не может проверить идентичности других членов?
Теория игр - это структура для размышления о социальных событиях с конкурирующими действующими лицами. В стратегической среде теория игр представляет социальные обстоятельства среди конкурирующих участников и производит оптимальное принятие решений автономными и конкурирующими агентами.
Византийские генералы основаны на аналогии теории игр. Проблема в том, что множество генералов осадили Византию. Они окружили город, но должны решить, когда атаковать одновременно. Они победят, если все генералы нападут одновременно; однако они проиграют, если атакуют по одиночке.
Поскольку любые письма, которые они отправляют или получают, могли быть перехвачены или обманным путем отправлены защитниками Византии, у генералов нет безопасных каналов связи друг с другом. Как генералы могут координировать одновременные атаки?
Этот пост объясняет, что такое византийский сбой в блокчейне и как решить проблему византийских генералов.
Исследовательская работа
"Проблема византийских генералов" - исследовательская статья Лесли Лампорта, Роберта Шостака и Маршалла Писа, была опубликована в 1982 году. Важность этой проблемы очевидна с первой страницы, которая отмечает, что исследование финансировалось Национальным управлением по аэронавтике и исследованию космического пространства (NASA), Командованием системы противоракетной обороны и Исследовательским управлением армии.
Хотя проблема византийских генералов изучалась в информатике и до 1982 года, это была одна из первых попыток перевести ее на параллельные системы и предложить решения. Следующая аналогия иллюстрирует проблему византийских генералов. Несколько дивизий византийской армии расположены за пределами вражеского города, готовые к войне. Единственный способ для различных генералов связаться - это с помощью гонца. Они должны договориться о плане действий.
Однако мы должны предположить, что некоторые генералы, намеренно не позволяя лояльным генералам принять единый план действий, являются предателями. Чтобы обеспечить невозможность для небольшой группы предателей прервать коммуникацию, требуется алгоритм.
Чтобы решить проблему византийских генералов, лояльным генералам нужен безопасный способ договориться о плане (известный как консенсус) и выполнить его (известный как координация). Хотя решение проблемы византийских генералов - сложная задача, мы теперь лучше понимаем фундаментальную проблему. Важно отметить, что, как показывает пример, эту концепцию можно применить к военным коммуникациям.
Однако эта проблема влияет на все типы компьютерных систем, а не только на те, которые используются в военных приложениях. Проблему византийских генералов необходимо решить, если распределенной группе узлов (например, компьютеров или других физических устройств) необходимо достичь надежной связи.
Понимание византийской отказоустойчивости (BFT)
Существует несколько причин, по которым распределенная компьютерная система может выйти из строя. В вышеописанном военном сценарии византийские сбои фактически являются предателями, пытающимися прервать связь между лояльными генералами.
Применительно к реальным компьютерным системам это может быть ошибка программного обеспечения, отказ аппаратного обеспечения или злонамеренная атака. Другими словами, византийские сбои не обязательно должны быть результатом хорошо скоординированных действий злоумышленника. Могут быть сложности, препятствующие узлам достичь консенсуса в распределенных сетях.
Любой сбой системы, который проявляет разные симптомы для разных наблюдателей, называется византийской ошибкой. Это не накладывает никаких ограничений и предположений о типе поведения, которое может проявить узел (например, узел может генерировать произвольные данные, выдавая себя за честного участника).
В любой распределенной компьютерной системе византийские сбои практически неизбежны.
Давайте представим, что произошло отключение питания и все узлы одновременно вышли из строя. Теперь возникает вопрос: остается ли сеть работоспособной и способной поддерживать надежную связь? Или вся система внезапно перестает работать или становится открытой для атак?
В достаточно надежной сети даже такая мелочь, как несколько отключившихся узлов, не оказывает заметного влияния на сеть. Византийская отказоустойчивость - это способность защититься от таких условий. Сети, способные выдержать больше византийских сбоев, считаются более устойчивыми, что означает, что они более надежны, чем те, которые не могут.
Фактическое проявление и таксономия византийских ошибок в различных системах являются обширной и сложной темой. Однако ее можно указать таким образом, что возникнет формальное определение византийской отказоустойчивости.
Стоит отметить, что византийские ошибки являются наиболее серьезными и трудными для исправления. Византийская отказоустойчивость требуется на атомных электростанциях, в авиационных двигательных системах и практически в любой системе, действия которой зависят от результатов большого количества датчиков.
Проблема византийских генералов в распределенной системе
Только децентрализованные системы подвержены проблеме византийских генералов, поскольку у них нет надежного источника информации, и они не имеют способа подтвердить информацию, получаемую от других пользователей сети. В централизованных системах доверенный орган отвечает за распространение точной информации и предотвращение распространения ошибочной или мошеннической информации по сети.
Например, в традиционной финансовой системе банкам доверяют предоставлять клиентам точные данные о балансах и истории транзакций. Если банк пытается обмануть или ввести в заблуждение своих клиентов, центральный банк или правительство уполномочены восстановить доверие.
Проблему византийских генералов, которая непоследовательно требует установления истины, не решают централизованные системы. Вместо этого они вообще не сталкиваются с этой проблемой, предпочитая эффективность надежности. Однако централизованные системы подвержены коррупции центрального органа управления.
Пример проблемы византийских генералов
Проблема византийских генералов демонстрируется на примере денег. Как общество могло бы создать денежную систему, которой доверяли бы и с которой соглашались бы все ее члены? На протяжении большей части истории общества использовали в качестве валюты драгоценные металлы или другие редкие предметы, такие как ракушки или стеклянные бусины. Золото решало проблему византийских генералов, потому что ему доверяли и признавали в децентрализованных системах, таких как международная торговля.
Однако вес и чистота золота оставались ненадежными до сих пор. Неспособность золота полностью решить проблему византийских генералов привела к тому, что создание и выпуск денег были монополизированы доверенными центральными органами, в основном правительствами. Правительства монополизировали монетные дворы, чтобы вселить доверие к весу и чистоте валюты. Таким образом, проблема византийских сбоев не была решена централизованными системами.
Более того, доверенные центральные органы для денег, правительства, предали это доверие, захватывая, обесценивая или изменяя их. Чтобы решить проблему византийских генералов, валюта должна быть проверяемой, устойчивой к подделке и неизменяемой. Это достижение стало возможным только с приходом Биткойна.
Как решить проблему византийских генералов?
Проблему можно решить, реализовав протокол, использующий отказоустойчивые механизмы. При столкновении с неопределенностью принятие процедуры между генералами - лучший способ принимать решения.
В результате это становится вероятностным, а не детерминированным, потому что ничего нельзя гарантировать. Именно так и происходит, когда прямая связь между равноправными узлами минимальна, и каждый из них автономен. Поскольку каждый генерал находится в разных местах, между ними есть физическая разобщенность.
Проблема византийских генералов может быть решена с помощью блокчейна. Все сводится к предоставлению людям способа безопасно и надежно общаться в непредсказуемом мире. В реальном мире большинство транзакций происходит между незнакомцами, которые не знают и не доверяют друг другу.
Каждый человек подобен генералу, ожидающему приказа атаковать или защищать свою позицию. Нет посредников, которые могли бы арбитражно решить вопрос атаки от вашего имени; вы полностью предоставлены самому себе в принятии решения.
Блокчейн создает слой, которому можно доверять, не доверяя каждому отдельному участнику. Это достигается за счет объединения сети узлов для согласования истины, прежде чем она будет записана. Если генерал не уверен в содержании сообщения, другие генералы могут проверить его, основываясь на том, что они знают как истину.
После того, как один узел записал его, копия отправляется всем остальным узлам в сети, делая информацию избыточной. Консенсусный алгоритм Proof-of-Work (ПОД) разработан для достижения этой цели. Злоумышленники все равно будут пытаться обойти систему, потому что информация не всегда точна.
Поскольку система была разработана для использования широкой публикой, в блокчейне присутствуют отказоустойчивые механизмы и безопасность. В этом сценарии требовалась криптография, чтобы гарантировать невозможность изменения сообщений.
Система предоставляет пары ключей для цифрового подписания сообщения, чтобы подтвердить личность как доказательство того, что оно исходит от предполагаемого отправителя. После аутентификации сообщений они записываются для обеспечения прозрачности и исторического доказательства подотчетности.
Как Биткоин решает проблему византийских генералов?
Что касается денег, Биткоин был первым реализованным решением проблемы византийских генералов. Многие планы и проекты до Биткоина пытались создать деньги, независимые от правительства, но все они по-своему потерпели неудачу.
Как денежная система Биткоин нуждается в средствах управления собственностью и предотвращения двойных трат. Биткоин использует блокчейн, или публичный распределенный реестр, хранящий историю всех транзакций, чтобы сделать это доверительным образом. В аналогии византийских генералов блокчейн - это истина, с которой все стороны должны согласиться.
Если бы все узлы в сети Биткоина могли согласиться с тем, какие транзакции произошли, когда и в каком порядке, они могли бы проверять владение Биткоинами и создать работающую доверительную денежную систему без необходимости в централизованном органе управления.
Доказательство выполнения работы (ПОД) и проблема византийских генералов
Хотя термин "проблема византийских генералов" не употребляется в этом документе, Накамото фактически предоставил решение, которое было реализовано в январе 2009 года с запуском сети Биткоин.
Сатоши придумал способ использовать криптографическую безопасность и шифрование с открытым ключом для решения проблемы византийских генералов в цифровой электронной сети. Криптографическая безопасность использует хеширование, процесс кодирования, для предотвращения фальсификации данных. Идентичность пользователя сети проверяется с помощью шифрования с открытым ключом.
Транзакция защищена в блоке, который связан с другими блоками через свое хеш-значение при криптографической безопасности. Все хеши можно отследить до корневого из всех хешей, который является начальным блоком. Блокчейн - это система, использующая дерево Меркла для проверки хешей, исходящих из генезис-блока.
Каждый блок в сети, исходящий из первого блока, также известного как генезис-блок, является действительным. Майнеры, конкурирующие с другими майнерами в решении криптографических головоломок для создания блоков, являются частью консенсусного метода доказательства выполнения работы.
Используя консенсусный механизм доказательства выполнения работы, Биткоин преодолел проблему византийских генералов и установил четкие, объективные правила для блокчейна. Чтобы добавить информацию в блокчейн, называемую блоками, член сети должен опубликовать доказательство того, что он приложил много усилий для создания блока. Эта работа обходится создателю дорого, что мотивирует их делиться точной информацией.
В сети Биткоин не может быть разногласий или фальсификации информации, потому что правила объективны. И система выбора того, кто может чеканить новые Биткоины, и правила, регулирующие допустимость или недопустимость транзакций, являются объективными. Более того, после добавления блока в блокчейн его невозможно удалить, что делает историю Биткоина неизменной.
Таким образом, проблема византийских генералов решается майнерами, которые подобны генералам в версии Сатоши блокчейна. Каждый узел отвечает за проверку транзакций, которые аналогичны сообщениям, доставляемым генералам. Злоумышленников (например, хакеров), пытающихся украсть сообщения или навредить сети, можно считать врагом.
Хакерам (т.е. человеку посередине) трудно атаковать блокчейн, потому что сообщения защищены криптографией. Для предотвращения манипуляций сообщения или транзакции объединяются в блоки и хешируются для дополнительной защиты. Сатоши делает ситуацию более вероятностной, поместив майнеров в соревнование по проверке блоков. Это делает систему более децентрализованной, поскольку ни один майнер не может монополизировать проверку и получать все вознаграждения.
Вместо этого майнеры должны конкурировать в решении головоломки, используя свою вычислительную мощность, известную как хешрейт. Чем выше хешрейт майнера, тем выше вероятность решения головоломки. Когда майнер, решивший головоломку, транслирует решение в сеть, все остальные майнеры должны подтвердить или отклонить значение, если оно ошибочно. Целевое значение сложности - это значение, которое должно быть равно или меньше правильного значения.
Таким образом, члены сети Биткоин могут в любой момент согласовать статус блокчейна и все транзакции в блокчейне. Каждый узел проверяет, являются ли блоки действительными по критерию доказательства выполнения работы, а транзакции - по дополнительным критериям.
Если член сети попытается транслировать вводящую в заблуждение информацию, все узлы в сети обнаружат ее как объективно недействительную и проигнорируют. В доверии к другим членам сети Биткоин нет необходимости, поскольку каждый узел может самостоятельно проверить всю информацию в сети, что делает Биткоин доверительной системой.
Блокчейн также децентрализован, что означает отсутствие единой точки отказа в системе. Блоки сохраняются в распределенной базе данных, которая реплицируется по всей сети. Эта избыточность также способствует отказоустойчивости, гарантируя, что ни один неисправный компьютер не сможет вывести из строя всю систему. Это эквивалентно наличию нескольких гонцов на случай, если один из них будет атакован врагом. Сообщение не будет потеряно, поскольку его скопируют другие гонцы.
Новые решения: Доказательство доли владения (PoS) и Делегированное доказательство доли владения (DPoS)
PoS - это другой механизм консенсуса блокчейна, который пытается решить проблему византийских генералов. Он был впервые развернут в 2012 году. В отличие от сетей, основанных на PoW, сети на основе PoS не полагаются на майнинг криптовалюты. Вместо этого выполняется так называемый стейкинг.
В этой системе пользователи (называемые валидаторами) ставят на кон средства.
Валидаторы, владеющие большим количеством монет в блокчейне, могут подтверждать больше блоков и получать более высокие вознаграждения. Пользователи, пытающиеся подтвердить неверные транзакции, рискуют потерять свои поставленные на кон средства.
В отличие от сети на основе PoW, где требуются специализированные устройства для майнинга, в сети PoS пользователи могут ставить монеты на кон, используя обычные домашние компьютеры. Несколько сетей на базе PoS разработали способы предотвращения атак двойных трат и других потенциальных уязвимостей безопасности, вызванных византийскими сбоями. Например, Эфириум 2.0 (Serenity) будет использовать алгоритм Casper PoS, который требует согласия двух третей узлов для создания блока.
Делегированное доказательство доли владения (DPoS) - это консенсусный метод блокчейна, работающий аналогично доказательству доли владения, и он был разработан впервые в 2014 году. И в том, и в другом случае пользователи должны рисковать своими деньгами. Однако в сетях на базе DPoS только некоторые пользователи (называемые делегатами) могут подтверждать транзакции и создавать блоки.
В целом любой пользователь может поставить монеты блокчейна на кон, чтобы отдать голос в поддержку кандидата в делегаты. Как правило, вознаграждения за блоки распределяются пропорционально суммам, поставленным на кон избранными узлами своим избирателям.
Узлы могут достигать консенсуса значительно быстрее в DPoS, чем в PoW или PoS. В масштабе это означает, что транзакции могут обрабатываться гораздо быстрее. Сохранение высокого уровня византийской отказоустойчивости с DPoS в некоторых случаях может стать проблематичным из-за этого компромисса.
Поскольку за обеспечение безопасности сети отвечает меньшее количество узлов, им потенциально легче вступить в сговор против общих интересов большинства. Однако сети на базе DPoS пытаются не допустить такого сценария, регулярно проводя выборы делегатов для обеспечения их подотчетности за принятые решения.