Рис. 7.5. Злоумышленник пытается построить цепочку из блоков, чтобы украсть чужие биткоины
В блокчейне транзакцию должны подтвердить другие пользователи, а не банк или платежная система, как в случае с фиатными валютами. Это называется алгоритмом консенсуса – процедурой достижения согласия всех участников сети относительно того, какие данные будут добавлены в блокчейн и какие транзакции будут считаться действительными.
Существует блокчейны, основанные на различных алгоритмах консенсуса. Самыми распространенными считаются:
• Proof of Work (PoW), применяемый в майнинге
• Proof of Stake (PoS), используемый в стейкинге криптовалюты
Для чего нужен майнинг, и за что майнерам платят деньги?
Майнинг – это процесс создания новых блоков в блокчейне за счет вычислительной мощности компьютеров. Майнеры получают вознаграждение за решение математических задач и за создание каждого нового блока. Перевод монет в этом алгоритме осуществляется следующим образом:
Шаг 1. Создание сообщения о транзакции
Допустим, Вася хочет перевести Феде 50 биткоинов. Он создает сообщение с деталями транзакции и заверяет его приватным ключом. Оно выглядит примерно так:
• дата и время проведения операции;
• вход (публичные адреса, от которых Вася получил 50 BTC);
• количество BTC, которое Вася отправляет Феде;
• размер комиссии для майнера;
• выход (публичный адрес Феди – счет для поступления биткоинов).
Рис. 7.6. Биткоин транзакция ADdgk76239KwiUFBVm9Lfsa23JAHjdwagh37845623d2390
Шаг 2. Добавление транзакции в блок
Все транзакции, и Васина тоже, попадают в мемпул – виртуальный зал ожидания. Здесь другие участники сети (майнеры) выбирают, какие транзакции включить в свой блок.
Шаг 3. Проверка транзакции на достоверность
Как узнать, есть ли на самом деле у Васи деньги? А вдруг он переведет одни и те же криптомонеты дважды? Чтобы подтвердить, что Вася фактически владеет монетами, майнеры устраивают своего рода соревнование – кто быстрее проверит транзакцию на валидность (достоверность). Их устройства (ноды или узлы) раз за разом выполняют математические вычисления (хеш-функции). Представьте, что у вас есть связка ключей, но открывает дверь только верный ключ. Вы снова и снова перебираете все варианты, пока не наткнетесь на подходящий. Так же действуют и узлы майнеров: они перебирают миллионы комбинаций. Для таких вычислений требуется действительно мощная и дорогая техника, которая потребляет много энергии.
Шаг 4. Достижение согласия на добавление блока
Когда майнер находит правильный хеш, то отправляет блок остальным майнерам на проверку. Если проверка успешно пройдена, значит, майнеры пришли к согласию и этот блок может быть добавлен в блокчейн. В этом суть алгоритма консенсуса Proof-of-Work – майнеру требуется согласие других участников на включение блока в цепочку, а «доказательством» выполнения его работы являются произведенные расчеты.
После того, как блок стал частью цепочки, следующие за ним блоки будут считаться «подтверждением» для этого блока. Допустим, ваша транзакция попала в блок 205, а длина блокчейна 210 блоков, значит, она имеет 5 подтверждений. Всякий раз, когда добавляется новый блок после вашего, сеть достигает консенсуса по поводу достоверности транзакций, в том числе и вашей. Деньги не придут на счет получателя, пока валидность транзакции не доказана. Для небольших сумм достаточно двух подтверждений, для перевода на сумму свыше 1 млн. долларов около 60.
Шаг 5. Обновление базы данных
После добавления блока база данных обновляется на компьютерах всех пользователей.
Шаг 6. Поступление средств
И через какое-то время 50 биткоинов поступают на счет Феди.
Есть криптовалюты, которые применяют другой алгоритм – Proof-of-Stake (доказательство доли). В этом алгоритме нет майнинга, а значит, не требуется мощное вычислительное оборудование и высокое энергопотребление. В блокчейнах с POS подтверждение транзакции и создание блока происходит при помощи стейкинга – хранения криптовалюты на счете.
«Доказательство доли» используют такие криптовалюты как Ethereum 2.0, Tezos, Solana.
Как работает алгоритм «доказательство доли» и обеспечивает безопасность сделки:
• В стейкинге, когда вы переводите криптомонеты, транзакция попадает в пул, откуда распределяется случайным образом между валидаторами (узлами).