Немного теории
Теоретическая основа технологии появилась в 2008 году. Изначально она предназначалась исключительно для функционирования первой и самой известной полностью цифровой валюты – биткоина. То есть он является родоначальником технологии.
Что это за технология? Если коротко сформулировать, это распределённый реестр транзакций, объединенный в цепочку неизменяемых блоков.
Цепочка растущая, каждый новый блок – это фактически квант изменения состояния базы данных, а формирование этого кванта – ядро технологии.
Технология долгое время находилась в тени криптовалюты, а слова «блокчейн» и «биткоин» воспринимались как синонимы. Однако буквально 2-2,5 года назад пришло осознание, что сама технология имеет гораздо более широкие возможности, чем обеспечение функционирования цифровых валют. И появился взрывной интерес к ней и вал публикаций, посвященных применению этой технологии в различных областях.
Интерес этот вызван тем, что сама технология в принципе позволяет совместить, казалось бы, несовместимые вещи. С одной стороны – публичность и прозрачность, с другой – анонимность участников на этой платформе. С одной стороны – общая доступность к этой распределенной базе, с другой – математические методы ее построения обеспечивают ее супернадежность, т.е. ее практически нельзя уничтожить, пока жив хоть один узел, который поддерживает ее функционирование. В военной терминологии это называется «режим живучести».
Сама технология основана на нескольких базовых принципах, широко известных и до нее. Это криптография, распределенная пиринговая сеть (аналог торрент-сети) и самая важная часть – математически обоснованный консенсус по изменению состояния базы при переходе из одного состояния в другое при прибавлении нового блока.
Основа всего функционирования и первый элементарный кирпичик – это транзакция. В виде транзакции может быть представлена любая операция по передаче или изменению состояния актива. Сами транзакции передаются в этой распределенной среде в зашифрованном виде, но используются известные принципы двухфакторной авторизации с публичным и приватным ключом. Условная схема – на картинке.
Далее из этих отдельных транзакций строится фундамент этой базы данных, так называемые блоки. Все участники системы наполняют общую среду транзакциями, это так называемые свободные транзакции. Дальше работают некие механизмы, которые пытаются сформировать из этих свободных транзакций блоки. Блоки связаны в неизменяемую цепочку. Каждый следующий блок связан с предыдущим хэш-кодом.
Хэш-функция – это, условно говоря, свертка любого объема данных в некую строку фиксированной длины, она обладает двумя примечательными свойствами:
1. Она быстро формируется;
2. Нет двух одинаковых наборов исходных данных, которые бы соответствовали одинаковому хэшу. Побочный эффект: при изменении любого бита или байта или при перемене их местами в исходных данных, хэш меняется полностью.
Принципиальная возможность – эта функция односторонняя, то есть вычислить хэш легко, получить по хэшу обратную шифровку и получить исходные данные – невозможно.
Таким образом, связка всех блоков хэш-кодами позволяет достичь не чисто математическими методами неизменности данных в системе. Потому что легитимность всех узлов проверяется на всех узлах сети. Прямое вычисление быстрое, и как только им предпринимается попытка что-либо изменить в исходных данных, меняется хэш, и сразу понятно, что цепочка нелегитимна, транзакция отвергается системой.
Как происходит процесс формирования блоков? Каждый узел сети или, скажем, узел, имеющий дополнительные полномочия по правилам блокчейн-платформы, стремится сформировать блок из полусвободных транзакций. Тот, кто его сформировал, получает вознаграждение в виде внутренней расчетной единицы, благодаря которой функционирует сама сеть. Тот, кто сформировал блок, удовлетворяющий некоторым правилам, публикует его в сети, все остальные узлы сети подтверждают, что этот блок соответствует требованиям сети (это тот самый принцип консенсуса), и состояние базы данных меняется на этот блок, на этот квант.
Есть два метода формирования блоков. Первый – супернадежный, но требующий огромных вычислительных затрат, который впервые был использован в биткоин-системе, но до сих пор широко применяется. Это метод доказательства работы. Как он работает? Сама блокчейн-система и платформа задает некий текущий уровень сложности вычисления хэш-кода. Поскольку хэш-функция – односторонняя, вычислить удовлетворяющий такому уровню сложности хэш можно только путем перебора. Есть специальное поле, включающееся в набор исходных данных, по которым формируется этот хэш. Путем циклического перебора можно сформировать соответствующий хэш. И идет соревнование по всей сети, кто первым создаст блок, удовлетворяющий уровню сложности. Сама блокчейн-система следит за тем, чтобы новые блоки формировались не слишком быстро и не слишком долго. Это регулируется тем, что уровень сложности либо повышается, либо понижается в зависимости от периодичности формирования новых блоков.
Как только новый блок сформирован, он публикуется в сети, все остальные узлы подтверждают, что блок удовлетворяет правилам, потому что по готовому набору данных вычислить хэш можно очень быстро.
Транзакции, включенные в блок, считаются завершенными, и только в этом случае они завершаются. Этот блок включается в конец цепочки, публикуется хэш-код нового блока, а хэш предыдущего уже есть в новом блоке. Так и формируется цепочка.
Однако этот метод жутко ресурсозатратный. Чем больше масштаб сети и участников в ней, тем сложнее становятся вычисления. Сейчас на это тратятся огромные вычислительные ресурсы. Поэтому среди блокчейн-разработчиков ведется постоянный поиск альтернативного метода, который был бы столь надежным. О надежности первого метода говорит хотя бы тот факт, что в биткоин-системе циркулируют суммы на сотни миллионов долларов. И за 8 лет никому не удалось взломать эту систему и базу данных, хотя это очень лакомый кусочек для любого хакера, и было много попыток.
Поскольку это ресурсозатратная вещь, постоянно ведутся поиски альтернативных методов. Один из них – Proof-of-stake (Пруф оф стэйк), то есть доказательство доли владения. Смысл в том, что в нормальном функционировании сети больше всего заинтересованы люди, которые наиболее активно живут в этой сети. Из них выделяется некий пул доверенных узлов, которым разрешено формирование новых блоков. Этот пул постоянно меняется по каким-то принципам. То есть из одного пула формируется еще один пул, в котором право представления нового блока случайно выдается одному, в следующем цикле – другому и так далее. И периодически производится ротация самого пула.
Возможности применения блокчейн-технологии
Блокчейн можно применять в сферах, которые не связаны с цифровыми и валютными областями, например, для баз данных корпоративных систем.
Первая очевидная вещь – торговые площадки, на которых можно заключать прямые сделки среди незнакомых друг с другом участников без неких доверенных посредников в виде нотариусов, удостоверяющих центров и пр. Потому что сама технология обеспечивает доверие среди не доверенных участников (принцип консенсуса).
Одно из возможных интересных применений – поскольку имеется внутренняя расчетная единица, которой пользуются все участники блокчейн-платформы – это глобальная программа лояльности, в которую могут быть объединены различные торговые сети, и участники-физические лица. Наверное, каждый имеет множество дисконтных карт, поскольку это удобно и всем понятно. В данном случае ничего такого не нужно, кроме условного аккаунта в этой системе. Эта система позволит реально монетизировать бонусы за покупки и даст возможность совершать всякие полезные действия, типа размещения постов в соцсетях.
Кроме того, с ее помощью можно вести учет паев и долей без посредников, различные реестры прав собственности, системы голосования без возможности подделки голосов и т.д. Все это может казаться далекими перспективами и фантастикой, но летом 2016 года в такой консервативной области, как сельское хозяйство, родился первый практический блокчейн-проект. На картинке выше – не абстрактное лицо, а конкретный фермер Михаил Шляпников, который в своем фермерском хозяйстве на блокчейне реализовал систему фьючерских контрактов и учета паев своих колхозников.
Если ближе к тематике 1С, то сервис «1С: Бизнес-сеть» гораздо более естественным образом функционировал бы на блокчейн-технологии.
Надо отметить, что в самой платформе 1С есть все базовые инструменты, которые лежат в основе этой технологии. Поэтому и родилась идея представить технологию, попытаться ею заинтересовать чисто 1С-аудиторию. Но как можно было бы сделать новый класс информационных систем, используя принципы блокчейна?
Два есть разных подхода. Первый – сверху вниз, когда первичной является блокчейн-система, а дальше уже идет трансляция в учетные системы участников платформы. Вторая – обратный вариант, когда первичной является информация из системы участников, а блокчейн-систему используют для верификации данных в этой системе.
В целом сами транзакции блокчейна – это некий аналог глобальной бухгалтерской проводки, у которой есть две стороны. Поскольку сама транзакция верифицируется чисто математическими методами, трансляция ее в учетные системы позволяет избежать множества ручных операций, включая сверку взаиморасчетов и т.д. Вообще идеальным вариантом было бы внедрение принципов технологии в платформу 1С, как еще одного типа базы данных.
Основная задача разработчиков сейчас – всеми силами помочь преодолеть тот стереотип, который сложился вокруг блокчейн-технологии. Эта технология не только криптовалюта и не столько криптовалюта, а реальная возможность для построения новых систем. И сейчас можно этого добиться, только создавая прототипы этих систем и демонстрируя их работоспособность. Это создаст новые рабочие места, ниши для ИТ-специалистов.
Перечислю несколько интересных публичных блокчейн-платформ:
Ethereum. Она содержит транзакции, программный код на java-подобном языке, что позволяет сделать полностью автономные и автоматические системы, потому что программный код может исполняться при определенных условиях, в том числе порождать новые транзакции.
Ее антагонист – платформа Blockchain Engine. Она принципиально не содержит тьюринг-полного языка программирования, потому что считается, что это потенциальная уязвимость, ведь в программном коде можно написать все, что угодно.
Следующий интересный проект - Лиск. Это стартап мая 2016 года. Он построен по модульному принципу, то есть производится декомпозиция всего блокчейна на сайдчейны (боковые цепи), которые дальше объединяются в общий блокчейн. Он программируется на всем известном языке – чистом java-скрипт.
Попытки «скрестить» 1С с блокчейн-технологией
Замечено, что мощные технологии активно себя раскрывают только через 7-10 лет. Например, потоковое видео появилось в 1995 году, но ютуб – в 2005 году. Блокчейн появился в 2009 году, и только в 2016 году Центральный банк РФ сделал тестовую платформу Мастерчейн. В качестве тестировщиков выступают «Сбербанк», «Тинькофф», «Альфа-банк», «ВТБ24».
Уже было сказано, что 1С идеально подходит для быстрой разработки блокчейн-системы, так как там есть все необходимые объекты, механизмы, хэширование данных, криптография, планы обмена, веб-сервисы, http и мощнейший язык (скриптовый русскоязычный), на котором удобно настраивать различные сценарии.
Самые передовые платформы, в которых есть такой скриптовый язык 1С, – Ethereum или «Эфир». На этом языке очень удобно писать так называемые умные контракты – это небольшие программы-скрипты, которые легко проверить, они читабельны и понятны, но позволяют программировать транзакции со встроенным алгоритмом действия по определенным условиям. То есть транзакция происходит автоматически, когда выполняется код с какими-то условиями (например, наступила какая-то дата, кто-то кому-то оплатил услугу, товар и пр.)
Для управления обменами между блокчейн-системой и 1С можно использовать библиотеку стандартных подсистем, так как в ней есть все необходимые механизмы для управления обменами. Но минус заключается в том, что ее надо встраивать во все конфигурации. Это не всегда возможно, да и ее надо регулярно обновлять.
Есть наш продукт – «2is: Интеграция», который также прекрасно подходит для управления обменами, при этом не надо модифицировать конфигурации. Он гибко настраивается под любые сценарии обменов.
Как это выглядит. Есть учетные системы и конфигурация блокчейн, между ними проходит обмен. Из учетных систем данные превращаются в транзакции, транзакциями обмениваются блокчейн-системы разных участников (продавца и покупателя). Они подтверждают их, подписывают, дальше передают их майнеру, а тот окончательно фиксирует и утверждает блоки, и всем этим должна управлять некая шина данных или библиотека стандартных подсистем.
Например, у нас есть отправитель – бухгалтерия. Платежные поручения и накладные передаются, например, в формате EnterpriseData (или в другом) в блокчейн-систему и превращаются там в транзакции. Блокчейн-система управляет сделками: она передает подписанную электронной цифровой подписью транзакцию без сертифицирующих центров получателю. Получатель подписывает своей ЭЦП, то есть получается двойная запись по аналогии с бухгалтерией. Все это может происходить в автоматическом режиме. Далее все передается майнеру, а он делает блоки. Блоки рассылаются участникам, и они являются гарантами неизменности этих транзакций, защитой от подделки.
Как выглядит транзакция? У нас есть хэш-транзакции, по которым можно проверить, что транзакция неизменна. Транзакция содержит данные, которые могут быть зашифрованными, и хэш шифрованных данных. Т.е. если транзакция куда-то передается, мы всегда можем проверить, что данные, которые она принесла, нигде по пути не изменились.
Кроме того, есть входы и выходы. Для того, чтобы деньги передать, нужно указать, от кого мы эти деньги получили. То есть мы указываем входы – те транзакции, по которым мы деньги получили, а выходы – это получатели. Должен обязательно сходиться баланс. Разница может быть отправлена себе как сдача, либо она может считаться суммой комиссии майнера.
Технология, безусловно, перспективная. Есть еще некоторые проблемы с законодательством, потому что одни сопротивляются и даже хотели запретить блокчейн. Но теперь банки уже сделали тестовую платформу и работают на ней. Скорее всего, это позволит узаконить технологию.
Сейчас пришло то время, когда нужно начинать интересоваться блокчейн-технологией. Иначе можно упустить этот момент, и поезд уйдет.
Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2016 DEVELOPER.