Как транзакция попадает в блокчейн?
Транзакция в блокчейне начинается с того, что пользователь формирует её в своем кошельке или приложении. В транзакции указываются отправитель, получатель, сумма и иногда дополнительные данные. После этого транзакция подписывается приватным ключом отправителя, что подтверждает её подлинность и гарантирует, что только владелец средств может инициировать перевод. Подпись обеспечивает криптографическую защиту и исключает возможность подделки.
Передача транзакции в сеть
Подписанная транзакция передаётся в сеть блокчейна через узел, к которому подключено приложение или кошелек. Этот узел передает информацию другим узлам, и процесс распространения идет лавинообразно, пока все участники сети не получат данные. На этом этапе транзакция находится в так называемом мемпуле — временном хранилище неподтвержденных транзакций. Каждый узел поддерживает свой мемпул, куда попадают все новые транзакции, ожидающие включения в блок.
Проверка корректности
Прежде чем узел примет транзакцию в мемпул, он проверяет её на корректность. Проверка включает несколько этапов:
-
валидность цифровой подписи;
-
достаточность средств на счете отправителя;
-
отсутствие попытки двойной траты (double spending).
Если хотя бы одно из условий не выполняется, транзакция отклоняется. Если все проверки пройдены успешно, она остается в мемпуле и становится доступной для майнеров или валидаторов.
Выбор транзакции для включения в блок
Майнеры в сетях с Proof-of-Work или валидаторы в сетях с Proof-of-Stake формируют новые блоки. Для этого они выбирают транзакции из мемпула. Обычно приоритет имеют транзакции с более высокой комиссией, так как это делает их более выгодными для включения. Комиссия служит стимулом для участников, которые создают новые блоки, потому что они получают её в качестве вознаграждения вместе с блоковой наградой.
Формирование блока
После выбора транзакций формируется блок. Он включает:
-
заголовок блока, содержащий метаданные, такие как хэш предыдущего блока и время создания;
-
список транзакций;
-
служебные данные, необходимые для проверки блока.
В сетях с Proof-of-Work майнер начинает процесс нахождения корректного хэша блока, решая вычислительную задачу. В сетях с Proof-of-Stake валидатор подтверждает блок, опираясь на количество и возраст монет, находящихся в стейкинге.
Добавление блока в цепочку
Когда блок готов и признан корректным, он распространяется по сети. Остальные узлы проверяют его на соответствие правилам консенсуса. Если блок признается валидным большинством участников, он добавляется в цепочку блоков. С этого момента все транзакции, включенные в него, считаются подтвержденными.
Финализация транзакции
Хотя транзакция считается подтвержденной после включения в блок, часто используется понятие "число подтверждений". Это количество блоков, добавленных поверх блока, в котором находится транзакция. Чем их больше, тем сложнее отменить или изменить операцию, что повышает доверие к её необратимости. В сетях с высокой безопасностью достаточно нескольких подтверждений, чтобы транзакция считалась окончательной и необратимой.