Polys

Что такое блокчейн?




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

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

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

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

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

Хеш любого блока строится из хешей транзакций, таким образом, вся информация о происходившей передаче данных сохраняется, подменить ее не получится без замены всего блока. Так и получается, что блок становится некоторым контейнером для набора транзакций. А присутствие хеша предыдущего блока позволяет выстраивать блоки в цепочку и защититься от подмены блоков. Достаточно надежный алгоритм, не правда ли?
Блокчейн очень трудно взломать
Давайте рассмотрим, по каким правилам формируется блок? Вот тут как раз начинается некая магия, которая и позволяет блокчейну быть устойчивым к взлому системой передачи и записи транзакций. Несколько важных принципов, которые гарантируют прозрачность и децентрализованность сети:
  • все пользователи сети имеют доступ к полной копии блокчейна и хранят (или всего лишь могут хранить) ее у себя;
  • любой пользователь сети может заняться формированием блоков;
  • за формирование блока начисляется экономическая награда;
  • для формирования блока требуется решить вычислительную задачу;

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

Самое интересное - четвертый пункт. Что за вычислительная задача? А тут вступает в действие принцип Proof of Work. Он, кстати,заслуживает отдельной главы.

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

Proof of Work (PoW)

Как я говорил в самом начале своей статьи, блокчейны так или иначе связаны с хождением криптовалюты. Из криптовалют постоянно на слуху сеть Биткойн, вот давайте на ней и рассмотрим детально принцип действия блокчейна. Итак, представим, что есть набор транзакций, которые еще не включены в блокчейн и являются только кандидатами на включение. Майнеры получают эти транзакции и вступают в определенное соревнование, кто сможет создать определенный блок быстрее остальных и получить награду. Как я уже писал выше, чтобы создать блок, необходимо решить определенную вычислительную задачу. Задача заключается в формировании хеша (функции SHA-256), причем хеш должен быть не любой, его числовое значение должно быть ниже определенного числа N. Результат работы SHA-256 непредсказуем, потому подобрать нужный хеш можно только перебором. Обычно требуется большое количество перерасчетов, на которые затрачиваются CPU/GPU-ресурсы компьютера майнера. Когда удовлетворяющий правилам хеш блока найден, майнер формирует блок и рассылает его другим участникам сети для проверки. Если блок сформирован правильно, то он включается в цепочку и майнер получает награду. Важно заметить, что с увеличением мощности сети (количества участников), скорость формирования блоков не меняется. Скорость балансируется путем усложнения или упрощения вычислительной задачи (меняя число N в большую или меньшую сторону).

Наверняка прочитав все это у вас возник вполне закономерный вопрос — а для чего нужны вообще подобные танцы с бубном? Ответ очень просто — для безопасности сети. Ведь в сети есть такие проблемы и угрозы, которые в блокчейне нивелируются. Я совершенно серьезно! Сеть распределенная и иногда возможно формирование параллельной ветки блоков, потому что майнеры не знали друг о друге либо же действовали злонамеренно (например, чтобы провести транзакцию в одной ветке и отменить в другой). Каким образом выбрать одну-единственную ветку? Существует такое правило, что главной веткой становится та, где было затрачено больше CPU/GPU-ресурсов на формирование этой ветки, т.е. по сути та, в которой больше блоков. Таким образом, если майнер начал отдельную ветку блоков со своей историей транзакций (случайно или злонамеренно), рано или поздно эта ветка будет признана «мертвой» и отброшена сетью. Транзакции из этой ветки отменятся.

Подобная отдельная ветка (сиреневая на рисунке ниже) может стать основной, только если будет длиннее главной ветви (черная), а такое возможно, если на формирование сиреневой ветви будет затрачено больше CPU/GPU-ресурсов, чем на формирование черной ветви. А это в свою очередь возможно, только если кто-то один получил контроль над 51% вычислительной мощности сети.

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

Интереснее всего во всем этом экономика процесса.

Безопасность сети во многом формируется благодаря экономическим стимулам, заложенным в протокол. Давайте рассмотрим основные вопросы, которые могли у вас возникнуть, и тут же на них ответим? Итак:

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

Что, если кто-то получил 51% мощности сети?

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

Разнообразие блокчейн-систем

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

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

Public blockchain
Публичный блокчейн- это полностью открытая для любого пользователя система. К сети может присоединиться любой, историю транзакций также может посмотреть любой и даже принять участие в майнинге может любой желающий. Мы уже обсуждали принципы работы публичного блокчейна и именно в нем так важны экономические стимулы деятельности участников. Наиболее известным примером публичного блокчейна как раз является Биткойн.

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

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

  1. В блокчейне Etherium для любой транзакции требуется расход «газа» (внутренний термин, обозначающий «монету» ), таким образом сеть защищается от флуда и незаинтересованных участников. В случае permissioned blockchain, подобная пошлина может быть отменена, но и флуд не возникнет, так как участвуют авторизованные и ответственные участники.
  2. В публичном блокчейне майнеры занимаются майнингом за плату и таким образом обеспечивают безопасность сети. В permissioned blockchain в случае обмена между двумя сторонами, майнерами могут быть просто выделенные серверы с той и другой стороны и достаточно мониторить, что мощности одной стороны не превосходят 51%. Либо же, если стороны доверяют друг другу, то вообще отпадает смысл иметь много майнеров. Для таких систем, кстати, зачастую PoW подменяют Proof of Authority, но об этом в следующих статьях.

Разнообразие блокчейн-систем

Сейчас вокруг блокчейна очень много шума, так что я не могу не поделиться с вами некоторыми цифрами:
Как видно, интерес к блокчейну за последние три года подскочил весьма заметно. Надо отметить, что в первую очередь интерес блокчейн вызывает в финтехе, что, впрочем, неудивительно. Но применение блокчейна только финансовой сферой не ограничивается. Принципы работы блокчейна отлично подходят для использования в сферах, которые примерно удовлетворяют следующим критериям:
  • присутствует две и более стороны, у которых нет оснований на 100% доверять друг другу;
  • присутствует посредник, услуги которого стоят дорого;
  • присутствует посредник, которому нет оснований доверять;
  • требуется доверительно зафиксировать историю изменений/действий;

Это, безусловно, не обязательные и не всегда достаточные условия, но они могут стать отличной отправной точкой в размышлениях о применимости блокчейна. Какие возможные примеры применения сейчас видятся? Приведем несколько классических примеров:
  • Один из крупных трендов на сегодня - IoT(internet of things.). Использование блокчейна позволит организовать проведение транзакций и микротранзакций (их важно выделить, потому что сейчас проведение микротранзакций, по сути, невозможно из-за комиссий и подобных затрат на обслуживание централизованных систем) между машиной и машиной или машиной и человеком. Таким образом возможно выстроить экономическое взаимодействие между дронами. В данном случае совсем близкий пример из жизни: шаринг места на жестком диске между разными участниками (компьютер, NAS) и так далее. Вы можете настроить клиентское приложение так, чтобы часть места сдавать в аренду и получать за это определенную ренту. Уже есть такие стартапы.
  • Другой пример, который эксплуатирует свойство неизменности блокчейна, - запись информации об алмазах в блокчейн. Алмаз обладает рядом характеристик, которые позволяют однозначно установить идентичность конкретного экземпляра, то есть не бывает двух алмазов с одинаковым набором характеристик. Таким образом, можно построить хеш алмаза, записать его в блокчейн и отследить историю возникновения алмаза, его продаж/покупок. Это важно для ювелирных и страховых компаний.
  • Сеть Ripple: Это пример permissioned blockchain, в которой банки могут обмениваться транзакциями между собой без участия централизованного посредника (SWIFT). Подобный подход снижает стоимость транзакции и значительно повышает ее скорость.
  • Или же система хранения DNS записей. Уже функционирует блокчейн-сеть, в которой можно зарегистрировать домен. База доменов при этом хранится в блокчейне распределенно и заблокировать доступ к одному из доменов крайне затруднительно.
  • Недавно на конференции я встретил отличный пример применения блокчейна. Есть рынок факторинг услуг (если коротко, то поставщик продал товар, а покупатель нуждается в отсрочке платежа). У поставщика возникает кассовый разрыв. Факторинг-компания выкупает долг покупателя у поставщика с определенным процентом. Одна из ярких проблем на этом рынке следующая: поставщик может продать один долг нескольким факторинг-компаниям. А факторинг компании не могут объединиться в одну базу, так как справедливо опасаются поглощения своего бизнеса более крупными конкурентами. Вот в таком случае отлично подходит блокчейн. Каждый долг может быть записан в виде хеша (на основе кодов ОКАТО, КПП и так далее) в общий блокчейн, любая факторинг-компания может однозначно проверить, продан ли уже этот долг, не раскрывая данных о самом долге. Идеальный пример реального применения.
В следующей статье мы поговорим о Блокчейне 2.0, рассмотрим новые дополнительные возможности применения блокчейна и обсудим детально, почему блокчейн - потенциально инновация, сопоставимая с внедрением Интернета в наши жизни.