Блокчейну - нет!

История

Долгое время я часто, будучи инженером ИТ, в заказной разработке сталкивался с задачей “подключить функционал блокчейна”, или “выгружать \ публиковать важные бизнес факты в блокчейн”…

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

Итак, я читал книги, отмечу те, что повлияли больше других: “архитектура TON” и “BitShares 101”.

Я люблю свободу и с ходу не отринул идею работы с блокчейном и даже несколько лет назад хотел свой блокчейн….

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

Я решил , что не хочу иметь дела с софтом архитектуры “блокчейн” ни как пользователь, ни тем более как “разработчик”.

Я разобью аргументы на ПРОСТО и ПОДРОБНО. можете прочитать часть из них и если Вам будет достаточно их, чтобы не использовать блокчейн - дальше не читайте, чтобы не скучать, спасибо.

Просто

  1. Блокчейн работает не сам по себе а там есть сеть узлов, которые все время онлайн, должны быть онлайн. А же я ценю работу оффлайн и хочу иметь возможность не быть онлайн и не хочу быть обязан поддерживать работу этих узлов. А даже если это свои узлы , то тогда всю систему нельзя назвать “бесплатным решением”. На этом пункте я бы дальше уже не читал. лично мне хватает полностью этого недостатка, чтобы отказаться от такого софта.
  2. Узлы блокчейн сети это громоздкий софт. громоздкий означает, что он будет стоить вам дороже в разработке, неприлично дороже. я бы даже не взялся за разработку такого софта т.к. мне было бы это не комфортно.
  3. Блокчейн не “транспорт агностик” решение. т.е. он зависит от наличия сети и доступа к определенным узлам и протоколам - это значит, что он может быть в принципе заблокирован, например государством. для меня нет смысла пользоваться софтом, который можно остановить банальной блокировкой
  4. Блокчейн не решает почти никакие проблемы. Это наиболее важный и убойный пункт. Я подробно опишу почему именно и как так получается в главе “Подробно”

Небольшая эмоция от меня:

Я разрабатывал свои собственные глобальные базы данных много лет. И не по наслышке, а скорее даже уже до тошноты, в курсе о CAP теореме и её ограничениях. Я вертел её всякими углами с разными наборами бизнес идей , требований, и это мука непрерывно меня преследует резким порой желанием “попробовать еще вот этак”..

Например последние мои “поделки” (стоили мне лично несколько миллионов рублей в 2018 и нашей компании еще дороже) :

http://acapella.ru/acapelladb_doc/ хорошее корпоративное решение для реально большого масштаба задач.

http://acapella.ru/acapelladb_doc/v2_info/ еще одно отличное и очень гибкое решение (полностью доведенное до продакшн использования в бизнес целях учета финансов и проверенное этим)

Korni3 крайнее решение совсем другого плана. с другим набором ценностей, не для корпоративного сегмента, а больше для сообществ людей. source github faq

О CAP теореме… я дивился, что решение типа Riak находит своего пользователя и это удивительное решение без консистентности меня долго подспудно интересовало и я думал, как можно строить решения без требования “консистентность”. Меня радовало, что есть методы “Консистентности в конечном счёте” при помощи Kafka log подхода. И что на таких базисах можно строить даже консистентные системы в рамках заданной задачи, конечно же. Шилов Александр мне показывал это и я приходил от этого в полный восторг, потому, что способ решения задачи совсем не прямолинеен, а тем не менее такие решения довольно перспективны по причинам, например, удобства развертывания и другое…

Когда, вскоре, появились решения типа https://ksqldb.io/ я очень был рад и закрыл для себя тему поиска баланса в этом и начал думать над улучшеним дизайна Kafka для своих целей, зная, что мне а) интересно так строить б) мне в целом должно хватить функционала такого базиса. Вопрос стоял лишь в том, чтобы сделать такой журнал не столько самым быстрым (как пытается делать Kafka ублажая корпорации), сколько на самом деле децентрализованным - без zookeeper, чтобы удовлетворить народные запросы.

Мы строили решения акапелла для “автоматического распараллеливания” в кластере PaaS CPVM - там мы сохраняли консистентность “любой ценой”, там она была нужна…

https://cpsplatform.com/ в этой нашей платформе “интернета вещей” мы применяли разные решения, часто из них основана на консистентности “в конечном счёте”, где то её вообще нет, а где то она строгая ACID. см вкладку технологии .

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

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

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

Об этом я напишу ниже в разделе “как быть”.

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

Подробно

Тут я мог бы просто процитировать содержимое статьи https://habr.com/ru/articles/688414/ “Блокчейн мало где применим” , согласившись со всем, что там написано. Да! я полностью согласен. Браво Автор.

Но я хотя бы дополнительно прокомментирую эту статью:

  • я согласен с тем, что централизованные базы быстрее и эффективнее. но я не согласен писать такое ПО - т.к. “такое ПО” значит, что есть сервер или “облако” и значит такой софт критически уязвим. Но я решил писать децентрализованный софт т.к. только так люди могут быть автономны в решениях друг от друга, не теряя возможности взаимодействия. Однако блокчейн для этого не обязателен.
  • Собственно про валюты. Я имел возможность убедиться, что создание своей независимой валюты - слишком очень сложная и комплексная задача. Она сложна еще и потому, что валюта - живой организм, которая живет по очень сложным правилам. В этой жизни есть решения людей, например об эмиссии или уничтожении валюты. Современные валюты не привязанные к реальным ценностям - живут по еще более сложным правилам и там ещё больше человеческого фактора. Нет смысла делать такое при помощи базы данных блокчейна , который создан для ситуаций отсутствия доверия в ситуации когда вам для жизни вашей валюты требуется доверие к людям от которых зависит функционирование этой валюты… а вот валюта , живущая без участия людей лишь по математическим законам, очень быстро перестаёт устраивать человеческое общество, это легко доказать.
  • Доверие. Некоторый жизненный парадокс. Я по жизненным обстоятельствам своих размышлений обратил внимание на сообщество участников кооперативов. Многие из них, ставят понятие “доверие” на вершину своих ценностей, они ищут доверие, культивируют доверие и …. почему-то им часто предлагают системы на основе блокчейна.
    • Этот странный пародокс в том, что это очень странно : “тем людям, кто ищет доверие предлагать ИТ решения на основе архитектуры, предназначенной работать исключительно в сообществах где никакое доверие не предполагается“.
    • Люди смотрят на блокчейн как децентрализованную архитектуру, и мыслят в её терминах , не понимая, что децентрализация идет в комплекте с некоторыми другими требованиями и свойствами , и выбор архитектуры должен делать специалист, начиная от постановки задачи, и не факт, что блокчейн им подойдет. Просто это первое, что попалось им на глаза.

Как быть

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

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

Чтобы говорить о движении в системе каких-то “денег” не обязательно конструировать внутреннее понятие собственно денег. Тем более создавать совсем уж свои деньги (сразу со всеми их признаками) в РФ нельзя.

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

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

  2. Каждый документ выпускает некоторое Лицо\человек, и он подписывает этот документ. Имея в распоряжении чей-то документ вы можете проверить (ваша копия программы может попутно проверить) “действительно ли кто-то его подписал и кто это был”.

  3. Каждый шаг - выпуск документа, а каждое состояние процесса - наличие у участников некоторого количества определенных документов. Не у всех участников одновременно может оказаться такой набор т.к. считается, что некоторые участники пассивны в произвольное время и не получают документов тогда, когда не доступны для этого. (в сетевой науке есть такая аксиома “сеть не надёжна”)

  4. Документ может быть создан, но может быть никому не известен (находится только у автора), либо он может быть распространен (в системе korni3 есть способ “распространения” который не является распространением юридически. точнее сама korni3 вообще не занимается этим, но это отдельная важная история, поэтому здесь везде слово “распространен” - условно, в искаженном смысле). Так же какие-то документы могут быть как бы распространены, но могут быть никем не прочитаны. Либо документ может быть прочитан, но не бесполезен и не учтен ни в каких процессах. Это данность, она понятна даже интуитивно - так всё и происходит везде у людей с документами.

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

  6. Система Korni3 это база данных которая накапливает такие документы от разных лиц в виде удобной для приложений SQL базы данных, чтобы это могло стать основой для отображения каких-то записей, состояний, процессов, чтобы строить системы для человека.

  7. Korni3 проверяет цифровые подписи, предоставляет версии, формирует списки записей и документов, показывает “состояние дел на дату”, работает с файлами, формирует особую структуру документов в файловой системе, чтобы этим набором легко было обмениваться с другими участниками.

  8. Подробно о работе системы Korni3 можно узнать по её описанию

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

    1. Записи, документы и файлы в этой базе данных могут использоваться пользовательским приложением для целей информирования или для целей создания некоторых бизнес процессов как описано выше.
    2. Важное ограничение тут в том, что нет никаких автоматических смарт контрактов и быть не может… потому, что источник записей и документов - только сами люди и появляются они в общем информационном поле только если приложение пользователя от имени пользователя создало эти записи\документы, используя его ЦП…. это значит, чтобы приложение пользователя обязано иметь открытый исходный код, чтобы можно убедиться в логике его работы с ЦП пользователя. (либо в системах типа *nix можно доступ к ЦП файлам определить лишь некоторым доверенным приложениям, например Korni3, который уже и так открыт в исходниках, как концепт и, кстати, так рекомендуется сделать в любом случае)
  10. Korni3 продуман как стандарт обмена подписанными документами, как формат этих документов, и как генератор и упаковщик этих документов. Он создан в классических традициях *nix утилит, как, например GIT. И специально не содержит сетевых функций - transport agnostic система.

    1. Это сделано специально, чтобы уйти от многих юридических проблем связанных с цензурированием и работой в интернет.
      1. Это позволяет писать любые “как бы сетевые приложения”, не являясь сетевым приложением и не заморачиваясь при их создании всеми рисками, которые обычно необходимо предусмотреть в подобном случае. (подробнее в описании технологии korni3)
      2. Это защищает само пользовательское приложение от любых посягательств современных законов, делая его фактически “просмотрщиком локальной базы данных” формируемой из многих отдельных документов…. (подробности этого принципа в описании технологии)
      3. Эта ваша база данных в такой же мере не подвержена влиянию внешних проверок и требований в которой не подвержена и частная собственность.
        • защищая эту структуру от цензуры я пытался найти такую опору на отмену которой государства вряд ли пойдут, я думаю, что частную собственность они не рискнут отменить ради большего контроля над людьми, хотя кто знает…. может им полного закрытия интернета будет мало и они решаться на обыски частных имений просто из-за беспочвенных обвинений… кто знает… ведь всего можно ожидать)

Короче.

Людям не нужен блокчейн и им не нужен никакой сервис.

Людям нужно “общее информационное пространство”. Им нужно свое приложение на своем компьютере и лучше всего бесплатное.

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

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

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

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

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

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

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

  • эти системы не смогут “гарантировать как банк” что бы то ни было. т.к. они будут на столько же “не обязательны” как и сами люди-участники. Они будут на столько же “лживы” как и люди-участники. Они будут на столько же “медленные”, как и люди-участники… и так далее. Но зато все участники будут знать, кто и что заявлял.
  • нельзя придумать очень сложные системы, в которых например, что то будет “отменяться” при наличии каких-то внешних условий т.е. например “отмена перевода” если это жулик… - по сути это полицейская функция. любая полицейская функция это наличие определенного силового аппарата с особыми возможностями (если вам такое требуется - лучше ввести реального человека с такой функцией). вообще в системах на основе korni3 не может быть никаких особых абонентов … нет, конечно если приложение предусматривает наличие особых VIP лиц… и эти лица могут выполнять операции которые никто не больше не может, то такое может быть реализовано… но я думаю, что всё равно всё это ограничится лишь выпуском каких-то особых документов…. да и ценности для меня таких документов сомнительны и не факт что их кто-либо захочет соблюдать. тут логичнее просто обратиться в гос суд, например.
  • Вообще, если вам кажется мало функционала - нужно просто брать ваш процесс и пробовать выразить его как выпуск публичных документов. Если вас устроит ваша схема - и все участники с этим согласятся, то такое решение реализуемо на такой платформе как korni3.

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

Однако, я всё же выступаю теперь, по опыту своих лет, за решения без гарантии доставки. Я думаю, что это более зрелый подход, гораздо близкий по свойствам к формам человеческой естественной организации. Все проблемы которые во все времена возникали в таких системах человечество всегда само решало - для людей не проблема решать несогласованности собственных процессов и решений. Да это другие методы построения систем, может даже менее комфортные для ИТ спецов и тех, кто ими управляет… потому что ИТ любят что все четко и по плану а тут что то может пойти не по плану и тут люди принимают решения в таких системах. и есть могут например возникнуть коллизии в документах… и людям придется по месту решать эти коллизии (суть коллизии контекстов хорошо описана здесь), придется общаться … т.е. такие системы больше для людей нежели для контроля людей, даже так : “для контроля людей такие системы вообще не подходят”.

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