Как избежать бессмысленных блокчейн-проектов

Как избежать бессмысленных блокчейн-проектовВ блоге компании MultiChain поднимают вопрос: всегда ли корпорациям нужен именно блокчейн?

Все обсуждают блокчейн. От Sibos до Money 20/20, от The Economist до Euromoney — каждый пытается вскочить в последний вагон уходящего блокчейн-поезда. Нет сомнений: компании продолжат строить пробные блокчейн-проекты или просить нашей помощи в этом. Казалось бы, мы должны только радоваться. Мы могли бы заработать кучу денег и реализовать уже спроектированную нами блокчейн-платформу нового поколения. Чего же мы ждем?

Мы ждем четкого понимания, в каких случаях блокчейн действительно добавляет ценности проекту в корпоративном IT. Видите ли, большая часть проектов, которые мы рассматриваем, не имеют никакого отношения к блокчейну. Дело обстоит так. Крупная компания находит нескольких сотрудников, которым это интересно. Им выделяют бюджет и говорят: «Сделайте что-нибудь на блокчейне». Они приходят к нам, размахивая банкнотами, и просят нас придумать для них проект.

Что насчет тех, у кого уже есть разработанный проект, в чем проблема? Часто он может быть реализован с использованием обыкновенной реляционной базы данных — монстра вроде Oracle и SQL Server или более открытых MySQL и Postgres. Позвольте заявить прямо: если требования можно удовлетворить современными реляционными базами данных, было бы безумием использовать блокчейн.

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

Что касается блокчейнов, то, например, наш продукт был одним из первых на рынке, и ему ровно пять месяцев. Его скачали несколько тысяч раз. На самом деле, он относительно стабилен, поскольку построен на базе Bitcoin Core — канонической реализации биткойна. И тем не менее, вся наша индустрия еще в младенчестве.

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

1. База данных

Первое правило: блокчейн — это тип распределенных баз данных. Начните с ответа на вопрос: почему вы используете базу данных, то есть структурированное хранилище информации. Это может быть традиционная реляционная БД, хранящая информацию в таблицах, или более модная NoSQL-база, похожая на файловую систему или словарь. (С теоретической точки зрения, NoSQL-базы являются подмножеством реляционных.)

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

2. Множество авторов

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

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

3. Отсутствие доверия

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

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

Что я имею в виду, говоря о недоверии? Я хочу сказать, что одит пользователь не хочет доверять другому модицикацию «своих» строк базы данных. Аналогично, когда мы говорим о чтении, пользователь не хочет принимать на веру информацию, полученную от другого пользователя, из-за различных экономических и политических мотиваций.

4. Отказ от посредника

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

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

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

5. Взаимодействие между транзакциями

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

Например, Алиса посылает средства Бобу, а Боб посылает что-то Чарли. Транзакция Боба в этом случае зависит от транзакции Алисы. Проверить транзакцию Боба можно только после транзакции Алисы. Из-за этой зависимости транзакции естественно разместить в единой распределенной базе данных. Продолжая мысль: ценное свойство блокчейна заключается в том, что несколько авторов могут создавать транзакцию одновременно, при этом ни один из них не рискует. Это решает проблему очередности оплаты, минуя доверенного посредника.

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

6. Установка правил

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

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

7. Выберите валидаторов

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

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

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

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

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

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

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

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

8. Обеспечивайте активы

Если вы дочитали это этого места, то заметили, что я называю блокчейны базами данных, а не «распределенными учетными книгами» (shared ledgers), как это часто делают. Почему? Потому что блокчейн как технологию можно применить далеко не только для отслеживания прав собственности на активы. Любая база данных с несколькими не доверяющими друг другу источниками записей может быть реализована посредством блокчейна, без доверенного посредника. Примеры: распределенный календарь, вики-проект, форум.

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

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

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

Заключение

Если ваш проект не удовлетворяет хотя бы одному из перечисленных критериев, вам не следует использовать блокчейн. Если не выполнено какое-либо из первых пяти условий, используйте одно из следующих решений: обычное файловое хранилище; централизованная база данных; реплицированная (master-slave) база данных; несколько баз данных с механизмом подписки для пользователей.

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

Выполнены все критерии? Поздравляю, вы нашли настоящее применение блокчейна!

Источник

Возможно вам понравятся эти статьи...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *