#Токен_вики
В продолжении темы о важности алгоритмов консенсуса, уместным будет разобрать одну из главных криптографических задач, которая находит своё решение как раз благодаря свойствам технологии блокчейн. Что будет если один из узлов нашей сети блокчейна окажется недобросовестным? Как можно доверять системе, когда не знаешь насколько честны остальные её участники? Эти и многие другие вопросы висят в воздухе, когда заходит речь об сложных системах и доверии к ним. Чтобы на них ответить, давайте разберем условие задачи:
Есть несколько генералов, которые участвуют в военной операции по осаждению города. Каждый из них находится с разных сторон этого города, связи между ними нет. При этом, им необходимо принять общее решение об атаке или отступлении. Генералы могут отправлять друг к другу гонцов через город, но из-за отсутствия связи они не знают, добрался ли посыльный до адресата, или с ним что-то случилось по дороге. Так же существует вероятность, что один или несколько генералов могут оказаться предателями, в таком случае задача не будет выполнена, даже если сообщение через гонца дошло до адресатов.
У данной дилеммы есть несколько вариантов развития:
- Положительный. Все генералы оказались добросовестными и приняли общее решение атаковать, операция удалась
- Нейтральный. Все генералы снова честные и приняли решение не атаковать - ничего не произошло, но зато армия цела
- Отрицательный. Часть генералов оказалась предателями и атака завершилась неудачей, армия разбита
Если мы перенесём эту задачу на блокчейн, то генералы у нас - это компьютеры сети (ноды), а решение о нападении - это транзакция. Как же с помощью блокчейна решили эту проблему? Тут как раз и пригодились механизмы консенсуса, благодаря которым мы принимаем решение, о том, что если большинство узлов считают транзакцию справедливой, то она осуществляются. Помимо алгоритмов консенсуса тут играет роль и масштабируемость сети, потому что, большое количество узлов не дает возможности недобросовестным нодам оказать своё влияние на принятие общего решения. И последний момент- сложность майнинга. Для проведения каждой транзакции требуется большое количество мощностей, которые используются для решения сложных математических задач. Обладать большинством вычислительных мощностей в системе, которая пользуется доверием пользователем просто невозможно. Такое может встретиться только в молодых, не зарекомендовавших себя проектах, которые лучше обходить стороной.
Как итог, мы видим, что благодаря свойствам блокчейна, сама по себе дилемма византийских генералов не является проблемой для осуществления честных транзакций между участниками сети, ведь если кто-то окажется недобросовестным и захочет взломать такую сеть, остальные участники просто не согласятся с его решением и такая транзакция не будет проведена.