Как работает биткоин. Разветвления структуры данных блокчейна

Поскольку блокчейн является децентрализованной структурой данных, различные его копии не всегда согласованы между собой. Блоки могут прибывать на различные узлы в разное время, в результате чего узлы «видят» текущее состояние структуры блокчейна по-разному. Чтобы решить эту проблему, каждый узел всегда выбирает и пытается наращивать ту цепочку блоков, в которой представлено наиболее убедительное доказательство выполнения работы, другими словами, наиболее длинную цепочку или цепочку с наибольшим общим объемом фактически выполненной работы. Суммируя объем работ, зафиксированный в каждом блоке цепочки, узел может вычислить общий объем работы, затраченный на создание этой цепочки. Поскольку все узлы выбирают цепочку с наибольшим общим объемом выполненной работы, глобальная биткойн-сеть в конечном итоге переходит в полностью согласованное состояние. Разветвления возникают как временные несоответствия между версиями структуры данных блокчейна, и эти несоответствия в конце концов устраняются по мере добавления новых блоков в одну из ветвей.

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

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

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

На первой схеме в сети принята единая точка зрения на структуру данных блокчейна, где блок-звезда представляет вершину основной цепочки.

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