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

Star-schema-example

Блокчейн вряд ли полностью заменит традиционные БД. Источник: SqlPac / Wikimedia Commons

В блоге компании 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) база данных; несколько баз данных с механизмом подписки для пользователей.

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

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

Автор: Gideon Greenspan
Источник: MultiChain

Tip



Categories: Общество, Технологии, Финансы, Экономика

6 replies

  1. Уже лучше, текст от Гринспена действительно более вменяем, чем прошлый, однако…

    “Возможные причины предпочесть блокчейн — низкие затраты”

    И вот самый интересный и ключевой вопрос – откуда в частной компании в этом случае будут низкие затраты? Когда Гринспен сам же пишет далее:

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

    Если вы не поняли, то это ответ. Вместо единого центрального сервера, поддерживающего БД предлагается создать целую группу “валидаторов” (заметим – у каждого из валидаторов должен быть свой полноценный “узел”, аки тоже полноценный сервер БД!!!)
    А поскольку валидаторов будут фактически назначать, то совершенно непонятно, на какой основе будут строиться их отношения. Невнятное “некоторая схема распределенного консенсуса” не катит.
    В биткойне ясно – валидаторы это майнеры и они имеют прямой финансовый интерес, они естественные конкуренты друг другу! На этом и работает вся математика, это сеть “без доверия”. А здесь?… Что-то рыхлое и совершенно невнятное. Конкурировать друг с другом по приказу директора? Кто больше блоков “навалидирует”, тому премия? Чушь ведь…

    Зачем?!.. Зачем частной фирме вместо одного быстрого сервера с поддержкой реляционной БД нанимать кучу “валидаторов”, где каждый будет со своим собственным серваком?
    Ежу ведь понятно, что выработка консенсуса стоит значительно больших вычислительных мощностей и занимает намного большее время, чем в классическом варианте.
    И ни о каких “низких затратах” здесь и речи быть не может. Затраты будут в десятки раз выше! Собственно так и есть, иногда просачиваются сведения, сколько бабла вбухивается в “частные блокчейны”.

    Однако, статья очень хороша! В ней прекрасно объяснили, каким именно образом собираются впаривать частным фирмам такой модный блокчейн. И это действительно будет работать, только стоить это будет – мама не горюй. По той простой причине, что придется оплачивать работу целой армии валидаторов и их серваков.

    Гринспен это прекрасно понимает, в самом начале почти незаметно : “если требования можно удовлетворить современными реляционными базами данных, было бы безумием использовать блокчейн”.

    Вопрос в том, когда это осознают частные фирмы. Даже интересно!

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

    • “откуда в частной компании в этом случае будут низкие затраты”
      Как я понимаю, так низкие затраты появляются как следствие того, что один валидатор не обязан проверять другого валидатора(ненужно доверие от директора). Приведу пример: центральный банк(то бишь директор) составляет белый список коммерческих банков(то бишь валидаторов). Во время межбанковского перевода из банка(банки:) А в банк(банку:) Б, банку Б надо проверять точно ли банк А имеет декларируемую сумму. На эту проверку и уходят затраты. Конечно, если-бы центр. банк запустил сервер с БД, где были бы все счета коммерческих банков, разделил бы коммерческим банкам логин+пароль, то это решило бы проблему доверия между коммерческими банками, т.к. они полностью доверяли бы серверу центр. банка. Однако центр. банк не желает заморачиваться с сервером, он только хочет выдавать или лишать коммерческие банки банковской лицензии. Мол вы там разбирайтесь сами. Вот на разборки и уходят затраты. А с блокчейном эти разборки будут стандартизированы, и во время перевода из “А” в “Б”, будут участвовать не только “А” и “Б”, но все банки из белого списка. То есть если “А” захочет обмануть “Б”, ему понадобится сговорится с половиной валидаторов из белого списка, что мало вероятно.

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

      • Ожидал подобную реплику))
        Удивительно, что она только одна. И Ваш ход мысли верен, просто нужно пройти чуть дальше.

        Ответ простой – в описанном вами случае блокчейн вовсе не частный, а самый что ни на есть обычный, распределенный!
        Блокчейн у вас не частный, а “МЕЖБАНКОВСКИЙ”. В наличие сеть без доверия, необходимость поиска консенсуса и т.д. Его отличие лишь в том, что ЦБ может в небольших пределах регулировать доступ к этому блокчейну. И всё. Этот блокчейн не может быть собственностью ЦБ, а будет находится под консенсусным контролем валидаторов, то бишь банков в вашем случае.
        Такие инновации можно только приветствовать. Да это скорее бы угробило существующую банковскую систему, чем Биткойн))

        “частный блокчейн нужен тогда, когда директор не желает запускать свой сервер с БД, но хочет чтобы работники(валидаторы) честно обменивались активами, при этом хочет оставить за собой право исключить или добавить работника.”

        Директор не хочет запускать единый сервер, но, по вашему, он захочет вместо этого запускать десятки и сотни серверов в своих отделах рангом ниже за свой-же счёт? Вы сами-то в это верите?
        И,вообще-то, отношения ЦБ и банков вовсе не то же самое, что отношения между директором и подчиненными.
        “право исключить или добавить работника”
        Разрешать и запрещать доступ к блокчейну еще не значит полноценно его контролировать, – это не делает его однозначно “частным”.
        Многим людям по суду в разных странах запрещают доступ к интернету например, а, следовательно и к блокчейну. И что?
        И напротив, получив полнейший контроль над блокчейном с помощью манипуляций доступа, вы попросту помножите на ноль все его преимущества, поскольку “сеть без доверия” превратите в сеть”единогласных”. И кому нужен такой блокчейн? Его ценность будет равна нулю при космической стоимости содержания.

        • “Разрешать и запрещать доступ к блокчейну еще не значит полноценно его контролировать”
          Насколько я понимаю, частный блокчейн это тот же блокчейн как и у биткойна, только:
          1. Есть отдельное лицо, которое составляет белый список валидаторов. Это лицо может и принимать новых валидаторов, и удалять старых.
          2. Только валидаторы обмениваются сообщениями, т.е. только они могут видеть содержимое блокчейна.

          “Блокчейн у вас не частный, а “МЕЖБАНКОВСКИЙ”. В наличие сеть без доверия, необходимость поиска консенсуса и т.д. Его отличие лишь в том, что ЦБ может в небольших пределах регулировать доступ к этому блокчейну. И всё. Этот блокчейн не может быть собственностью ЦБ, а будет находится под консенсусным контролем валидаторов, то бишь банков в вашем случае.”

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

          “Директор не хочет запускать единый сервер, но, по вашему, он захочет вместо этого запускать десятки и сотни серверов в своих отделах рангом ниже за свой-же счёт? Вы сами-то в это верите?”

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

          • “Как по мне, так частный, так как человек из вне не только не может влиять на ход транзакций, он даже не может видеть содержимое блокчейна. ЦБ как-бы контролирует блокчейн, так как может при желании любого валидатора зделать человеком из вне.”

            “Как-бы контролирует”. Ага.
            Ну ведь в предыдущем посте ответил уже! Обратите внимание на три последних абзаца, особенно – последний.
            Зачем зажёвывать-то? Интересно что-то новое…

            “Тут конечно слово директор не совсем уместно. Надо было бы говорить регулятор.”

            Директор осуществляет исполнительную власть, осуществляет права владения и если мы говорим про что-то “частное”, то слово “директор” в качестве примера вполне уместно. Директор как выразитель воли владельца по отношению к частной собственности.
            Если “директор” говорить неуместно, то и слово “частный” также будет абсолютно неуместно.
            А “Регулятор”… Знаете, Биткойн-сообщество тоже регулятор. ICANN – регулятор. Государство российское – регулятор, поскольку может вас по суду от инета, а значит и блокчейна отключить…
            Но это не значит, что гос-во владеет блокчейном.
            Гаишник – регулятор, но вы ведь не будете утверждать, что он владеет дорогой.
            Регулировать – еще не значит владеть. Это разные слова и смыслы.

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

Поделитесь своими мыслями