Проблема византийских генералов

·

·

2 мин.

Принцип блокчейна, на котором построены все криптовалютные платформы, заключается в поиске консенсуса между всеми участниками сети. Тогда, когда получено согласие всех, происходить запись блока в журнал транзакций. Для осуществления транзакции частному лицу достаточно индивидуального пароля и адреса получателя. Но когда речь идет о записи блока, необходим консенсус. И проблема обмена информацией в сети в том, что из-за задержек возможна повторная отправка транзакции.

Пример (двойное расходование). У Александры есть 1 ВТС. Она отправляет его одновременно Олегу и Владиславу, которые не знают друг друга. Если между участниками сети нет коммуникации друг с другом, то есть нет консенсуса, возникнет проблема сети. Так как Александра не может отправить больше ВТС, чем у нее есть. Но если все участники будут согласовывать действия между собой, то Олег и Владислав поймут, что вторая совершенная Александрой сделка некорректная.

Идея византийского консенсуса

Проблема коммуникации между всеми участниками сети в криптографии была обозначена еще в 80-х годах прошлого века. И ее решение получило название византийского консенсуса, который затем лег в основу алгоритмов консенсуса блокчейна.

Проблема византийских генералов. Представьте следующую ситуацию. Перед крепостью расположены 4 византийских легиона, готовые атаковать крепость в любую минуту. Но они ждут команду от генералов, чей командный центр находится где-то в тылу. Генералы могут дать легионам две команды: атаковать или отступать. Дальнейшие варианты развития событий выглядят следующим образом:

  • Все легионы атакуют – крепость взята, враг повержен.
  • Все легионы отступают – также положительный исход, так как все остаются живы.
  • Часть легионов атакует, часть отходит назад – армия византийцев терпит поражение, враг торжествует.

В теории победа византийцев очевидна. Но где гарантия, что один из генералов легиона не окажется предателем? Или два легиона окажутся таковыми? А может и сам генерал командного центра работает на врага и специально даст легионам разные задачи? Теория вероятности предполагает, что в задаче с N-количеством легионов N-1 могут оказаться на стороне врага. И в случае разрозненных действий легионов поражение византийцев неизбежно.

Вывод: легионы после получения приказа должны обменяться информацией о том, кто какой приказ получил. Но если в стане византийцев предатель, он может дать неправильную информацию и дезинформировать другие легионы, передав разные данные разным легионам. Потому принцип обмена информацией происходит так:

  • Каждый легион отправляет трем остальным легионам информацию об атаке или отступлении. Причем предатель одному легиону отправляет «атаку», второму – «отступление».
  • Каждый легион формирует блок, в котором указывает полученные данные. И этот блок рассылает другим легионам.
  • Каждый легион получает на руки 4 блока (с учетом своего). По трем блокам расхождений не будет. И по расхождениям 4-го блока будет ясно, кто предатель.

Легионы A, D и C отправляют правдивую информацию. Легион B для дезинформации отправляет разным легионам разные данные. Сводная таблица блоков, которая есть у каждого легиона, позволяет понять, кто является «предателем».

Этот пример упрощенный. В математическом выражении решение византийских генералов выражена в нескольких функциях, но глубоко в нее вникать не нужно. Суть одна: все участники сети обмениваются информацией и блоками. Расхождениями являются спам, DDos-атаки и другие «мусорные» транзакции, которыми участниками сети игнорируются.

На основе византийского консенсуса были разработаны алгоритмы Proof-of-Work и Proof-of-Stake. В алгоритме PoW человеку для подтверждения своей подлинности нужно выполнить расчеты. В PoS подтверждают транзакции валидаторы – крупные узлы, держатели монет, обеспечивающие работоспособность сети.

В следующем обзоре вы познакомитесь с тем, какие другие алгоритмы консенсуса используются в блокчейне и в чем их преимущества.

Рубрики:

Теги: