Неизменяемость данных в блокчейне

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

Пользователь формирует транзакцию. Перед отправкой транзакции он генерирует для нее цифровую подпись, используя закрытый ключ своего аккаунта. Этот ключ известен только пользователю. После подписания у транзакции появляется поле proofs с электронной подписью. Теперь «тело» транзакции заверено, ее неизменность и принадлежность автору (открытый ключ, public key) подтверждены.

Пользователь с помощью запросов POST /transactions/broadcast и POST /transactions/signAndbroadcast отправляет подписанную транзакцию в API ноды (узла), к которой у него есть доступ.

Нода проверяет подпись, структуру транзакции, наличие контракта и т.д.. Если все проверки проходят корректно, нода принимает (валидирует) транзакцию.

Провалидированная транзакция попадает в UTX-пул ноды. Эта нода дальше будет рассылать информацию об этой транзакции всем другим нодам, с которыми имеет соединение. Таким образом каждая нода сети будет иметь эту транзакцию.

Для транзакции в UTX-пуле есть два варианта развития событий:

  1. транзакция будет добавлена в блок в процессе майнинга, либо

  2. транзакция будет удалена из UTX-пула и не попадёт в блок.

Каждая нода в блокчейне знает параметры консенсуса, согласно которому она должна выпускать блоки. Та нода, которая определена лидером (майнером раунда), отбирает те транзакции из UTX пула, которые она готова выпустить в блоке, еще раз их проверяет и выпускает блок.

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

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