во все предыдущие блоки со дня создания блокчейна, а также многократное дублирование (создание полных копий в другом месте) всех блоков. Такие же принципы являются основой существования Web 3.0 в целом. Благодаря этому дублированию обеспечивается надежность системы – неисправность одного или нескольких узлов не нарушит целостности всего блокчейна, в результате чего не пропадет нужная информация и ее нельзя будет подделать или изменить. И если в один или несколько блоков злоумышленники попытаются внести ложные данные, то они не будут приняты остальными узлами, а данный блок будет исключен из сети блокчейна. К примеру, если майнер-злоумышленник, чтобы получить вознаграждение, сгенерирует, а по сути выдумает, ложный блок и отправит его в сеть блокчейна, то другие майнеры сразу же обнаружат его замыслы и исключат из своей сети. Как иммунная система отторгает чужеродные клетки, попавшие в организм, так и блокчейн отторгнет узлы, пытающиеся добавить ложные блоки.
Любой человек знает, что от квартиры полагается иметь запасной ключ, а от неприятностей – запасной план. У воинов Древнего Рима были запасной меч и дополнительные дротики. Запасной парашют и два двигателя в самолете – это тоже примеры страховки методом дублирования. Или взять космическую ракету. Она стоит миллионы. Поэтому все основные узлы в ней имеют дублеров. И если вдруг один узел не срабатывает, то тут же включается второй, причем без задержки, практически одновременно с первым. Чем больше таких дублирующих блоков, тем надежнее ракета.
Дублирование делает надежнее, безотказнее не только технические системы, но и информационные, такие как блокчейн. И тут возникает вопрос: сколько нужно дублирующих блоков, чтобы система работала без сбоев? Можно ли сделать вывод, что в целом система работает корректно, если часть блоков работает неправильно?
Представим, что есть распределенная сеть, т. е. несколько компьютеров, серверов, которые находятся в абсолютно разных точках земного шара, объединенных в одну цепь. От каждого из них должно быть разослано какое-то сообщение всем остальным компьютерам. А те, получив его, в свою очередь тоже продолжат рассылку. Но некоторые из них могут принадлежать злоумышленникам, а некоторые просто не работать. Спрашивается: какая часть серверов должна функционировать нормально, чтобы те инструкции, что содержатся в рассылаемом сообщении, были выполнены правильно, несмотря на противодействие и сбои? Ведь распределенная сеть компьютеров, участвующих в блокчейне, не должна зависеть от злого умысла или халатности одного или ряда участников. Есть ли математически доказанное решение, как обеспечить консенсус в условиях децентрализации и отсутствия доверия между участниками системы? Такое решение позволило бы участникам достигнуть единства относительно того, какие транзакции считать верными.
Оказалось, что эта задача не нова. Как логическая дилемма она была придумана в 1982 году и получила название «Задача византийских генералов». Суть