Проблема византийских генералов - это термин, вытравленный из компьютерного описания ситуации, когда вовлеченные стороны должны согласовать единую стратегию, чтобы избежать полного отказа, но когда некоторые из вовлеченных сторон коррумпированы и распространяют ложную информацию или иным образом ненадежны.
Проблема византийских генералов служит отличным фундаментальным примером того, как функционирует консенсусный алгоритм Биткоина для проверки работоспособности, и его понимание, как правило, повышает понимание вами других алгоритмов консенсуса.
Проблема византийских генералов для начинающих.
Добро пожаловать в Византийскую армию, малыш, надень ботинки, зачисти свой шлем и возьми свой невероятно тяжелый щит - мы собираемся победить.
Вы пришли как раз в нужное время - мы окружили этот город, но у нас, к сожалению, сложная проблема с логистикой. У нас есть две армии, по одной на каждой стороне вражеского города, и мы должны атаковать в одно и то же время . Город достаточно силен, чтобы защищаться от одной из наших армий, но недостаточно силен, чтобы защищаться от двух одновременно. Если мы не атакуем одновременно, мы проигрываем. И проиграть отстой.
Итак, генералы каждой армии должны договориться о точном моменте наступления. Они общаются, отправляя посыльного туда и обратно через вражеский город. Другого способа общения нет - сотовые не очень хорошо работали в 600 году нашей эры.
Например, генерал А отправит сообщение « Эй, генерал Б, мы собираемся атаковать в четверг. Можем ли мы рассчитывать на то, что вы нападаете с нами ? »Затем курьер бежит по городу и доставляет сообщение генералу Б, который, в свою очередь, отвечает:« Мы не можем напасть четверг, у нас групповой пилатес. Что насчет пятницы? Если мы нападем в пятницу, вы будете атаковать с нами? И затем курьер бежит по городу, чтобы доставить сообщение генералу А и так далее.
Тем не менее, вот что важно: послание потенциально может быть поймано в городе и заменено фэйковым посланием, который намеренно попытается обмануть другого генерала, чтобы напасть на город в неподходящее время, обрекая нашу армию на поражение .
Невозможно проверить, является ли сообщение подлинным, так как же мы, как лучшие военные стратеги на земле, можем создать «недоверчивую» систему, которая обеспечивает победу в нападении на город?
И это проблема византийских генералов.
Проблема Византийских Генералов и Биткоин
Вышеупомянутая дилемма не обязательно ограничена только двумя генералами. В распределенной сети, такой как сеть Биткоин, все участники и узлы в основном имеют одинаковую иерархию. Таким образом, теперь вместо того, чтобы добиваться проверки и соглашения между двумя сторонами, нам необходимо одобрить всех участников, одновременно нейтрализуя коррумпированных или вводящих в заблуждение игроков.
Соглашение между всеми этими узлами называется, как вы уже догадались, консенсусом .
Решение проблемы византийских генералов не простое. Оно требует некоторого хеширования, тяжелой вычислительной работы и связи между всеми узлами (генералами) для проверки сообщения.
Следующие шаги
Если вы все еще немного запутались в проблеме византийских генералов, не беспокойтесь. Мы собрали несколько видео объяснений, чтобы помочь вам лучше понять проблему византийских генералов, и последующую разработку «Византийской отказоустойчивости», основного метода, который сеть биткоина использует для генерации цепочек доказательств работы в стиле Hashcash (или майнинга). ).
Вот <1-минутное объяснение драматической музыки (что Numb3rs - отличное шоу для каждого математика).
Вот <25-минутное объяснение Ивана о технологиях, которое выходит с высоты птичьего полета на проблему Византийских генералов, а также на множество мельчайших решений.
И вот <1,5-часовая лекция одного-единственного Андреаса М. Антонопулоса (чье имя по иронии судьбы звучит как византийский генерал) о алгоритмах консенсуса, проблеме византийских генералов и множестве промежуточных вещей.
Удачи в учебном путешествии, солдат!