Block chain

Материал из Bitcoin Wiki
Перейти к: навигация, поиск

Block chain (произносится, как "блок чейн") – публичная база всех транзакций, когда-либо совершенных в системе Bitcoin. Используя эту базу, каждый пользователь имеет возможность узнать, какое количество Bitcoin принадлежало какому-либо конкретному адресу в определенный отрезок времени. База поддерживается с помощью распределённых усилий множества майнеров.

Принцип построения

Каждый созданный блок содержит хэш предыдущего. Таким образом создается цепочка блоков, которая берет начало от так называемого genesis block (первый блок в системе Bitcoin) до последнего найденного системой блока. Редактировать информацию в блоке, который находится в цепи уже продолжительное время – не практично, так как в таком случае так же пришлось бы редактировать информацию во всех последующих блоках. Благодаря этим свойствам double-spending атака (повторная трата уже израсходованных средств) в системе bitcoin практически не выполнима.

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

Форки в block chain

У любого блока из цепи есть только один путь к genesis block. В свою очередь от genesis block цепь может разделятся на несколько, образуя таким образом форк (англ., "fork"). Форки, состоящие из одного блока, — это довольно распространенное явление. Они образуются, если несколько узлов "нашли" блок с разницей в несколько секунд. Когда такое происходит, остальные узлы начинают строить дальнейший block chain на блоке, который пришел им первым. Когда какой-либо из двух блоков получает продолжение - его цепочка считается главной в block chain, поскольку она становится длиннее.

Блоки, которые не являются частью главной block chain, не используются. Так же за них не начисляется награда. Такие блоки называются "orphan-блоки" ("орфаны"). Так как в блоке может быть ссылка только на один предшествующий блок, объединить 2 различные цепи невозможно.

См. также