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

Как это работает?

Как же достичь консенсуса в распределенной сети, участники которой не доверяют друг другу? Секрет довольно прост: блокчейн – это не просто техническая реализация протокола осуществления транзакций, это скорее некий вид экосистемы на стыке технологий и принципов экономики. В отсутствие этих принципов блокчейн теряет некоторые свои свойства. Для начала рассмотрим структуру блокчейна с технической точки зрения.С английского название blockchain переводится как «цепь блоков», которой он, в сущности, и является: 


Hash — Хэш
transactions — Транзакции
Transaction N — Транзакция N

Эти блоки и их цепь генерируются согласно определенным правилам и синхронизируются для всех участников сети. Каждый блок состоит из заголовка и списка транзакций. Заголовок блока включает свой собственный хэш, хэш предыдущего блока, хэши транзакций и дополнительную служебную информацию. Хэш любого блока состоит из хэшей транзакций. В результате сохраняется вся информация о проведенной передаче данных, и ее нельзя фальсифицировать, не заменив весь блок. Таким образом, блок становится контейнером для набора транзакций. При этом наличие хэша предыдущего блока позволяет создать цепь блокови защищает от фальсификации блоков.

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

  1. все пользователи сети имеют доступ к полной копии блокчейна и хранят (или могут хранить) ее в своих системах;
  2. любой пользователь сети может генерировать блоки;
  3. пользователи получают финансовое вознаграждение за генерирование блоков;
  4. для генерирования блоков необходимо решить вычислительную задачу.

Рассмотрим эти принципы подробнее. Первый и второй пункты списка более-менее понятны. Здесь нужно лишь упомянуть, что в современных версиях блокчейна хранить полную копию базы данных необязательно. Поговорим о третьем пункте. Пользователи получают финансовое вознаграждение за генерирование блоков, в результате чего возникает экономический стимул, способствующий привлечению новых пользователей, которые будут генерировать новые блоки. Этот процесс создания блоков известен как майнинг, а человек, создающий блоки, называется майнером. Позже мы еще не раз столкнемся с этим термином.Четвертый пункт самый интересный из всех. Что за вычислительная задача?Здесь вступает в действие принцип доказательства выполнения работы (Proof of Work, или PoW), и он заслуживает отдельной главы.Задача может варьироваться в зависимости от реализации блокчейна. Как правило, она подразумевает вычисление определенного хэша способом, который позволяет решить задачу только методом грубой силы.

Доказательство выполнения работы 

Так как биткоин – самая популярная криптовалюта, рассмотрим принципы работы блокчейна на примере этой валюты. Предположим, что у нас есть набор транзакций, которые еще не включены в блокчейн, а являются только кандидатами на включение. Майнеры получают эти транзакции и вступают в своеобразное соревнование: кто сгенерирует конкретный блок быстрее других и получит вознаграждение. Как упоминалось ранее, для генерирования блока необходимо решить определенную вычислительную задачу. Задача включает генерирование хэша (функция SHA-256). Этот хэш не может быть любым, его числовое значение должно быть меньше определенного числа N. Результат SHA-256 непредсказуем, поэтому правильный хэш можно выбрать только путем поиска методом перебора. Обычно для этого требуется большое количество повторных расчетов, которые поглощают вычислительные ресурсы процессора либо видеокарты занятого майнингом компьютера. Обнаружив удовлетворяющий правилам хэш блока, майнер генерирует блок и отправляет его другим участникам сети для проверки. Если блок сгенерирован правильно, он включается в цепь, и майнер получает вознаграждение. Обратите внимание, что скорость генерирования блоков не меняется, несмотря на растущий объем сети (количество участников).

Скорость балансируется за счет усложнения или упрощения вычислительной задачи (увеличения или уменьшения числа N).

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

Отдельная ветка может стать основной, только если она длиннее основной ветки. Это может произойти, если на эту ветку затрачено больше вычислительных ресурсов, чем на другую. Это, в свою очередь, возможно, если кто-то контролирует 51% вычислительной мощности сети.

Таковы базовые принципы работы блокчейна. Теперь перейдем к онлайн-голосованию и обсудим его трудности и нюансы.

Did this answer your question?