Как работает биткоин. Часть 3.2

МАЙНИНГ ТРАНЗАКЦИИ В БЛОКАХ

Новые транзакции постоянно приходят в сеть из кошельков пользователей и от других приложений. Как только эти транзакции попадают в поле зрения узлов биткойн-сети, они добавляются во временный пул непроверенных транзакций, поддерживаемый каждым узлом. Когда майнеры создают новые блоки, они добавляют непроверенные транзакции из пула в новый блок, затем пытаются доказать корректность этого нового блока с помощью алгоритма майнинга (PoW).

Транзакции добавляются в новый блок с назначением приоритета в первую очередь по наибольшей сумме сбора за транзакцию и по нескольким другим критериям. Каждый майнер начинает процесс майнинга нового блока транзакций сразу же после получения предыдущего блока из сети, понимая, что он проиграл только что завершившийся раунд состязания. Майнер немедленно создает новый блок, заполняет его транзакциями, включает в блок отпечаток предыдущего блока и начинает вычисление по алгоритму доказательства выполнения работы для нового блока. Каждый майнер включает в свой блок особую транзакцию, в которой назначает оплату своему биткойн-адресу как вознаграждение за этот блок (в настоящее время 12.5 вновь созданного биткойна) плюс сумма сборов за все транзакции, включенные в этот блок. Если майнер находит решение, подтверждающее корректность блока, то он «выигрывает» назначенное вознаграждение, потому что его успешно созданный блок добавляется в общую структуру данных блокчейна, а оплаченные транзакции, включенные в этот блок, становятся утвержденными (проведенными). Цзин, участвующий в пуле майнинга, настроил свое программное обеспечение на создание новых блоков, которые передают вознаграждение на адрес пула. Поэтому полученное совместными усилиями вознаграждение распределяется между Цзином и другими майнерами пропорционально объему работы, который они фактически выполнили в прошедшем раунде.

Транзакция Алисы была принята сетью и помещена в пул непроверенных транзакций. После проверки программным обеспечением майнинга транзакция была включена в новый блок, называемый блоком-кандидатом (candidate block), сгенерированный пулом майнинга Цзина. Все майнеры, участвующие в этом пуле, немедленно начали вычисления по алгоритму доказательства выполнения работы для блока-кандидата. Приблизительно через пять минут после того, как транзакция была передана из кошелька Алисы, один из ASIC-майнеров Цзина нашел решение для блока-кандидата и объявил об этом в сети. После того как прочие майнеры проверили корректность победившего блока, они сразу включились в состязание по генерации следующего блока.

Победивший блок Цзина стал частью структуры данных блокчейна как блок под номером #277316, содержащий 420 транзакций, в том числе и транзакцию Алисы. Блок, в котором находится транзакция Алисы, теперь считается «подтверждением» правильности этой транзакции.

Приблизительно через 19 минут другим майнером был добавлен новый блок под номером #277317. Поскольку этот новый блок создан поверх блока #277316, содержащего транзакцию Алисы, он увеличил объем вычислений в структуре блокчейна, следовательно, укрепил доверие к этой и другим транзакциям в блоке. Каждый блок, помещенный в результате майнинга поверх предыдущего, содержит счетчики транзакций как дополнительное подтверждение легальности транзакции Алисы. Так как блоки размещаются один поверх другого своеобразным «столбиком», сложность отмены этой транзакции постоянно возрастает по экспоненте, следовательно, транзакция получает все больше и больше доверия в сети.

Можно видеть блок #277316, содержащий транзакцию Алисы. Ниже него находятся 277 316 блоков (начиная с блока #0), связанных друг с другом в цепочку блоков (blockchain — дословно «цепочка блоков») до самого первого блока #0, называемого первичным блоком (genesis block). Со временем «высота столбика» блоков увеличивается, соответственно, возрастает и сложность вычисления для каждого блока и для цепочки в целом. Блоки, созданные в результате майнинга после блока, содержащего транзакцию Алисы, становятся дополнительной гарантией, поскольку наращивают объем вычислений в постоянно увеличивающей свою длину цепочке. По соглашению любой блок с количеством подтверждений, большим шести, считается не подлежащим отмене, так как при отмене потребуется огромный объем вычислений для аннулирования и пересчета по шести блокам.