Регулярно сталкиваясь в процессе обсуждения технологии блокчейна с различным пониманием того что является технологией блокчейна, автор пришел к мнению что в среде IT специалистов нет консенсуса в понимании что же такое блокчейн и почему его появление вызвало такой резонанс в обществе. Часть специалистов использует отсутствие единого мнения что есть «блокчейн» для манипуляции заказчиком или пользователями с целью достижения сиюминутных, тактических целей, создавая еще большую энтропию и хаос в процессе становления данной технологии.
Многие IT-специалисты, с которыми приходилось сталкиваться жаловались на отсутствие критериев сравнения и оценки различных блокчейнов. Данная статья является попыткой определить, что же является технологией блокчейна и дать универсальные критерии сравнения технологии блокчейна. Что бы понять, что такое блокчейн нужно понять, что похоже на блокчейн, но блокчейном не является.
Хэш функции
Хэш функции и любые технологии, которые используют хэш функции для контроля целостности, в том числе используя хэш суммы для связывания блоков данных между собой в общем случае не являются блокчейном.
Зачем нужны хэш функции?
Хэш функции используют для контроля целостности, например, хэш сумму лог файла, перед тем как его выгрузить на внешний носитель записывают в новый, вновь созданный лог файл тем самым формируя цепочку связанных друг с другом файлов. Если администратор после выгрузки такого файла попытается подменить лог файл, то факт подмены будет выявлен при последующей проверке.
Почему программа, формирующая цепочки данных не является блокчейном?
Рассмотрим пример, который представлен выше. Давайте разработаем программу которая начнет писать информацию о транзакциях пользователей, вместо записей лога. Например, Алиса перевела Бобу 100 гигатокенов, далее подпишем данный перевод электронной подписью, подсчитаем хэш сумму, включим эту сумму в следующий блок, который в последствии так же подпишем и так далее. Некоторые «криптоаналитики» готовы это объявить блокчейном, прекрасным блокчейном, особенной если вы Боб. Но у любого здравомыслящего человека возникнет вопрос, как я могу доверять некой программе, что мешает в процессе работы блокчейна ее модифицировать или просто выключить? – Ничего не мешает.
Облачные базы данных
Давайте перейдем от программы, запущенной на одном компьютере к облачным вычислениям, пусть у нас будет облачная база данных, которая будет содержать нашу цепочку блоков – чем не блокчейн?
Зачем нужны облачные базы данных?
Облачная база данных это базы данных, которые запускаются на платформах облачных вычислений таких как Amazon EC2 GoGrid и т.п. Мы не будем рассматривать классическую виртуальную машину с СУБД, это по сути ничем не отличается от предыдущего примера, а рассмотрим вариант база данных как облачный сервис. Вот вроде уже красивое решение, за доступность данных отвечает облачный оператор, за целостность хеш функции – данные пакуются в блоки. Ну чем не блокчейн?
Почему облачные базы данных не являются блокчейном?
Картина по сути аналогична предыдущему примеру, только в данном случае ответственность делится между некой программой и облачным сервисом. Облачный сервис не контролирует корректность закладываемых данных, более того он может быть в любой момент отключен, например, если компания владелец «блокчейна» попадет в станционный список, см. Huawei. Использование облачной базы данных не мешает владельцу программы манипулировать закладываемыми в «блокчейн» данными. Тем не менее находились технические специалисты которые называли данную архитектуру блокчейном.
Кластеры
Вот технология, которая должна решить все предыдущие проблемы, здесь нет единой точке отказа, при желании пользователь может запустить свою «ноду» и наслаждаться участием в процессе «майнинга» или «минтинга» монет, и вроде бы вот оно счастье (для многих «криптоаналитиков» это уже точно блокчейн), но тут нужно вспомнить зачем же нужны кластеры.
Зачем нужны кластеры?
Отказоустойчивый кластер, а именно он больше всего походит на блокчейн, предназначен для создания программно-аппаратных решений, предназначенных для работы 24/7, когда выход из строя одного узла кластера не приводит потери работоспособности кластера. Я уже чувствую, что вот он блокчейн, сейчас мы к кластеру прикрутим хэш-функцию, которая позволит нам упаковывать результаты вычислений кластера в блоки, сделаем перевод 100 петатокенов и Боб станет криптомультимиллиардером.
Почему кластер не является блокчейном?
А это очевидно, для любого специалиста в области технологии блокчейна, возможно, кроме «криптоаналитика». Кластер не предназначен для противодействию внутреннему нарушителю. Пусть у нас будет кластер, где один узел будет «master», а N узлов будут «slave». У Джея, который так же решил стать криптомультимиллиардером, есть одна нода. Джей даже умеет писать программы на настоящем языке программирования. Не долго думая он модифицирует код своей ноды в кластере, следующий образом — он проводит транзакцию по переводу 100 петатокенов Боба себе. Рано или поздно нода Джея становится ведущей (master) в кластере транзакция по переводу 100 петатокенов попадает в блок, потому что нода Джея является ведущей все остальные ноды кластера включают транзакцию в блок, они не могут ее не включить, потому что ведущий узел принял решение включить это транзакцию в блок. Все — Джей стал криптомультимиллиардером, а Бобу остается только промолчать.
Что же является блокчейном?
Можно утверждать, что блокчейном является технология децентрализованного независимого параллельного выполнения алгоритма c последующей верификацией результатов выполнения алгоритмом консенсуса и синхронизацией результатов между всеми элементами сети блокчейна. Идеальным с точки зрения определения приведенного выше является блокчейн биткоина, тем не менее IT индустрия начала создавать альтернативные решения, основанные на технологии блокчейна.
Почему пытаются создать альтернативу биткоину?
Биткоин является практически идеальным решением за исключением трех параметров:
- скорости транзакции – многим пользователям неприятно, когда их переводы могут происходить неделями, реальная скорость подтверждения транзакций в сети биткоина не превышает 7 транзакций в секунду;
- возможности расширения бизнес логики – как известно блокчейн сеть запускается один раз в процессе ее эксплуатации может возникнуть необходимость изменить логику ее работы, ну или как минимум расширить ее;
- времени закрытия блока – среднее время закрытия блока 10 минут это достаточно медленно, особенно для тех, кто пытается создать на основе блокчейна платежные системы.
Что в итоге получилось
Как отреагировало IT-сообщество на недостатки блокчейн сети биткоина – в части ускорения работы блокчейна был предложен переход с алгоритмов консенсуса PoW на вариации алгоритмов консенсуса PoS, BFT (LPOS, DPOS, paxos и т.п.). В данной статье не будут разбираться плюсы и минусы различных алгоритмов консенсуса, это делалось уже много раз и эту информацию можно получить в интернете, а вот куда привело индустрию использование алгоритмов PoS в данной статье будет рассмотрено – централизация. Индустрия не придумала ничего лучше, чем променять децентрализацию на скорость. Ниже приведены некоторые популярные блокчейн сети с указанием числа узлов сети, которые принимают участие в создании блока:
- Bitcoin – не менее 1000 узлов;
- EOS – 21 узел;
- IOTA – 1 узел;
- Tron – 27 узлов;
- Graphiene – 21 узел.
Исходя из вышенаписанного можно утверждать, что развитие технологии блокчейна ушло в направление централизации, из-за мифической погони за скоростью транзакции. Все «криптоинвесторы» которые попадались на пути сравнивали блокчейны по, максимум, трем критериям — алгоритм консенсуса, количество транзакций в секунду, возможность создания собственных смарт-контрактов. Ниже сделана попытка определить критерии сравнения современных блокчейнов.
Критерии сравнения блокчейнов
- Децентрализация – сколько узлов одновременно может принимать участие в создании блока.
Почему это важно? Первая причина — это возможность атаки на ядро сети, например, DDoS атаки. Алиса, Боб и Джей создали сеть по обмену токенами на основе PoS алгоритма, она получилась очень быстрой, количество пользователей в сети прирастало в геометрической прогрессией, но по какой-то причине Джей не получил своей доли от прибыли, например, он потерял свой закрытый ключ. Джей настолько разозлился, что заказал DDoS атаку на ядро сети. Что будет дальше происходить? Ядро сети под атакой, транзакции пользователей не доходят, пользователи уходят из сети, проект закрывается. - Скорость принятия транзакций.
Один из основных критериев сравнения блокчейнов. Для многих «криптоаналитиков» он единственный. Почему возник ажиотаж вокруг этого критерия – очень низкая производительность блокчейна биткоина, не более 7 транзакций в секунду. Построить сложную автоматизированную систему имея скорость 7 логических операций в секунду на мой взгляд проблематично. Современные блокчейны обеспечивают скорость порядка 10 000 транзакций в секунду, достигается это как написано выше за счет централизации узлов, участвующих в консенсусе. - Время закрытия блока.
Важный критерий, особенно для автоматизированных систем работающих в режимах близких к реальному, например, процессиноговых центров. Время закрытия блока блокчейна биткоина составляет порядка 10 минут. Понятно, что с такой скоростью включения транзакций в блок розничная платежная система существовать не может. Сложно представить себе покупку килограмма яблок, если скорость прохождения платежа будет в среднем составлять 5 минут. - Время включения транзакции в блок.
Время включения транзакции в блок так же важна, как и скорость принятия транзакций или время закрытия блока. Многие разработчики говорят про скорость принятия транзакций, но никто не говорит про время включения транзакции в блок – это то время которое проходит от передачи транзакции клиентом в блокчейн, до получения клиентом блока с включенной в него транзакцией. Можно долго говорить про скорость принятия транзакций блокчейном или времени закрытия блока, но если время включения транзакции в блок превышает время закрытия блока на порядок, то показатель времени закрытия блока становится несущественным для определения качества работы блокчейна. - Возможность расширения функций блокчейна в процессе работы.
Блокчейн запускается один раз, а любая автоматизированная система с течением времени эволюционирует, у нее появляются новые функции, устраняются выявленные в процессе работы ошибки. Если в блокчейне не предусмотреть возможности расширения его функций штатным образом, то со временем пользователям системы придётся или создавать новый блокчейн для реализации новых функций или осуществлять перезапуск существующего блокчейна с изменёнными характеристиками, что является не оптимальным решением – попробуйте согласовать обновление программного обеспечения блокчейна и его перезапуск у 1000 пользователей. - Процент потерь транзакций до момент включения блок.
Об этом почему-то стесняются говорить разработчики блокчейна – какой процент транзакций теряется в случае нормальной, предельной и превышающей предельную нагрузки на блокчейн:
- какова вероятность попадания единичной транзакции в блок;
- какова вероятность попадания транзакции в случае штатной нагрузки на блокчейн – 50% от предельной завяленной;
- какова вероятность попадания транзакции в случае предельной нагрузки на блокчейн – 100% от предельной завяленной;
- какова вероятность попадания транзакции в случае запредельной нагрузки на блокчейн – 200% от предельной завяленной, 0.5? А может 0.001?
- Возможность сокращения актуального размера блокчейна без потери целостности или истории транзакций.
Особенностью технологии блокчейна является то, что размер хранимых данных в блокчейне увеличивается линейно и блокчейн нельзя сократить без нарушения его целостности, причиной этого является сцепление блоков друг с другом, когда хеш предыдущего блока включается в следующих блок. Как сделать так, чтобы размер блокчейна стал меньше, а целостность данных в нем была сохранена? Вот вопрос на который должны ответить строители современных блокчейнов.