Найти тему
Bitcoin Review

Краткое пошаговое руководство по технологии Blockchain

Оглавление

Понимание трех основных технологий, лежащих в основе Bitcoin.

Спросите 10 человек, «что такое технология blockchain?», и вы получите 10 разных ответов, — даже в самой крипто-тусовке. Лучший подход к формированию истинного понимания blockchain заключается в понимании базовых его технологий шаг за шагом.

Поэтому в этой статье мы рассмотрим три основных компонента технологии blockchain: собственно блокчейн, одноранговые (пиринговые) сети и механизм консенсуса. Bitcoin не сможет существовать, если какой-либо из этих компонентов отсутствует. Начнем с блокчейна.

«Если вы не можете объяснить это просто, вы не понимаете это достаточно хорошо». — Альберт Эйнштейн

1. Понимание собственно блокчейна

Попросту говоря, блокчейн — это всего лишь способ структурирования данных. Вот и всё! Это регистр: файл, который отслеживает записи бухгалтерского учета.

Этот файл сравним с книгой, которая никогда не заканчивается.

На каждой странице книги записана информация и номер страницы внизу. По номеру страницы вы сразу же знаете, где эта страница находится в книге. Очевидно, что страница 49 располагается между страницами 48 и 50.

Как и страницы книги, блоки блокчейна заполняются информацией. Хотя блоки не имеют точных номеров, они имеют метку времени, которая выполняет ту же самую функцию. Новый блок всегда добавляется после блока с самой последней меткой времени. Таким образом формируется цепочка.

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

-2

В блокчейне Биткоина блоки содержат информацию о транзакциях. В каждом блоке указано, кто и кому передает сколько-то биткоинов.

Поскольку блокчейн Биткоина использовался для отслеживания движения всех биткоинов с момента их создания, всегда можно проверить и точно знать, кому и сколько принадлежит биткоинов. «Кто владеет чем» в любое время, — это то, что мы называем текущим «состоянием» блокчейна.

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

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

2. Понимание роли одноранговых сетей

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

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

Эти компьютеры называются «узлами» или «нодами» (nodes), и они работают совместно в одноранговой (peer-to-peer) сети, чтобы гарантировать, что блокчейн является безопасным и актуальным. Каждый из этих узлов хранит полную, обновленную (актуальную) версию blockchain. Каждый раз, когда добавляется новый блок, все узлы обновляют свой блокчейн. Использование одноранговой сети имеет определенные преимущества:

  • Всегда можно проверить состояние блокчейна, используя программу-проводник (blockchain explorer).
  • Не надо полагаться только на одну сторону, чтобы знать истинное состояние блокчейна.
  • Не надо полагаться на безопасность одного сервера, чтобы знать, что блокчейн защищен.
  • Злоумышленнику придется одновременно взломать тысячи компьютеров, а не один сервер.
  • Всегда есть уверенность, что блокчейн никогда не исчезнет, потому что для этого его надо будет уничтожить всем узлам.
-3

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

Например, как узнать, что все транзакции в блокчейне верны? Как узнать, что в блоках нет недействительных транзакций? И если есть разные версии blockchain, откуда мы узнаем, которые из них являются истинными?

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

3. Понимание механизма консенсуса

Механизм одноранговой сети использовал еще в 1999 году Napster(файлообменная пиринговая сеть).

Блокчейн также существовал до Биткоина.

Гениальный Сатоши Накамото, загадочный и анонимный основатель Биткоина, объединил блокчейн с консенсусным механизмом, основанным на криптографии. Консенсусный механизм — это то место, где происходит настоящая магия: он позволяет узлам в одноранговой сети работать вместе, не зная и не доверяя друг другу.

«Целью консенсусного алгоритма является обеспечение безопасного обновления состояния в соответствии с некоторыми конкретными правилами изменения состояния, когда право на выполнение изменения состояния распределяется среди (…) пользователей, которым предоставляется право коллективно выполнять изменение через алгоритм» — Виталик Бутерин

Теперь, если вы не совсем это поняли, механизм консенсуса — это просто набор правил, который согласовывается узлами в сети, запуская программное обеспечение сети. Эти правила обеспечивают, чтобы сеть работала по назначению и оставалась синхронизированной.

Консенсусный протокол устанавливает правила:

  • Каким образом блоки должны быть добавлены в блокчейн,
  • когда блоки считаются действительными, и
  • как разрешаются конфликты.

Добавление блоков в блокчейн

Различные блокчейны добавляют блоки в свои цепи по-разному. Наиболее известным механизмом консенсуса является Доказательство выполненной работы (PoW) Биткоина.

Первое правило PoW состоит в том, что один блок должен быть добавлен в блокчейн, в среднем, каждые десять минут.

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

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

Впоследствии все остальные майнеры начинают добывать следующий блок.

Доказательство работы (PoW) Биткоина — не единственный механизм консенсуса. Доказательство ставки (PoS) также широко используется в распределенных книгах. В механизме «Доказательство ставки» можно «сделать ставку» на свои монеты, чтобы получить возможность добавить следующий блок в блокчейн. В некотором смысле, делающий ставку говорит: «Я ставлю свои монеты, что я правильно добавляю этот блок». Если он солжет, то потеряет свои монеты.

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

Проверка блоков

Когда майнер решает головоломку и формирует новый блок, все узлы в сети проверят, действителен ли блок, и добавят его в свою копию блокчейна. Сначала узлам необходимо достичь консенсуса относительно действительности. Только тогда сеть синхронизируется и состояние обновлений блокчейна.

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

Естественно, что блок будет являеться действительным, если действительными будут все транзакции, содержащиеся в нем. Например, в протоколе Биткоина говорится, что никто не может отправлять биткоины, которые он не получил первоначально от кого-то другого или в качестве вознаграждения за майнинг блока.

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

Теперь, допустим, я получил 1 биткоин, который затем послал Алисе. Потом я пытаюсь отправить тот же 1 биткоин Бобу. Как только блок с моей первой транзакцией в нем будет добавлен в цепочку, все узлы обновят блокчейн, чтобы отразить, что у меня больше нет этого одного биткоина. Любой новый сформированный блок, который будет содержать мою транзакцию для Боба, просто будет отклонен узлами. Программное обеспечение узлов видит, что транзакция в блоке не соответствует правилам, поэтому они не обновляют блокчейн с этим блоком.

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

Как разрешаются конфликты

Может случиться так, что два майнера одновременно добавляют действительные блоки в блокчейн. Представьте, что часть узлов приняла один действительный блок, а другая часть приняла другой действительный блок. Первая группа включала блок с моей транзакцией Алисе, а другая включала мою транзакцию Бобу. Теперь у нас внезапно возникли два разных состояния блокчейна в одно и то же время!

Мы называем это непреднамеренным «форком» ( ‘fork’ — «вилка»): блокчейн разветвляется на две разные цепи. У кого же оказался мой 1 биткоин? У Алисы или Боба? Какая из двух ответвленных цепей блокчейна является «истинной»?

Как правило, все консенсусные протоколы решают эту проблему с помощью простого правила: выигрывают самые длинные цепочки.

-4

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

Почему мы знаем, что это всегда произойдет?

Потому что майнеры — это экономические субъекты, которые действуют в личных интересах. Майнер не заинтересован в добыче на разветвленной цепи, зная, что она отомрет. Все транзакции (истинные транзакции) в разветвленной цепи никогда не происходили в основной цепочке, а это означает, что майнеры, которые добывали блоки на разветвленной цепи, не были вознаграждены за свою работу. Издержки майнинга блоков, которые не будут включены в основную цепочку, просто слишком высоки. И майнерам невыгодно продолжать майнинг на альтернативной ветке.

В редких случаях может произойти, что разветвленная цепь обладает значительным количеством ресурсов для добычи. В этом случае может потребоваться некоторое время, прежде чем станет ясно, какая из ответвленных цепей является основной цепью. Житейская мудрость подсказывает, что разумно ждать 6 новых блоков, чтобы действительно подтвердить транзакцию.

-5

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

Вывод

Вышеприведенное следует рассматривать как очень краткое введение в работу распределенных регистров (distributed ledgers).

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

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

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

Если это не захватывающая перспектива, тогда я не знаю, что это…

The Quick, 3-Step Guide to Blockchain Technology.