Фундаментальные проблемы открытых блокчейнов (Часть 1)
В этой статье специалист по программному обеспечению Притхи Касиредди (Preethi Kasireddy) делится своими взглядами на проблемы технологии блокчейн и способы их решения.Безусловно, технология блокчейн обладает огромным потенциалом.Разработчики блокчейнов исследуют впечатляющие возможности применения этой технологии, такие как децентрализованные биржи, рынки предсказаний и платформы для управления активами (и это лишь малая часть того, что уже придумано).Впечатляющие настолько, что в 2017 году общая сумма средств, собранных на ICO, составила более миллиарда долларов, а стоимость многих криптовалют выросла в разы. Это уже настоящая мания.Поймите меня правильно: я рада тому, что все это подстегивает интерес широкой публики к блокчейн-технологиям. У людей наконец перестали стекленеть глаза, когда они слышат от меня слова «биткойн» или «эфириум».Но ложка дегтя тоже имеется, хоть об этом особо и не говорят: у блокчейнов есть недостатки, которые на сегодняшний день существенно ограничивают возможности их широкого применения.Я уверена, что все эти недостатки преодолимы, но разработчикам и инвесторам важно видеть реальную картину. А она такова, что может пройти много лет, прежде чем пока еще ненадежные системы станут готовы к использованию в требуемом масштабе.В число этих недостатков входят:
- Ограничения масштабируемости
- Ограничения конфиденциальности
- Отсутствие формальной верификации контрактов
- Требования к размеру хранилища данных
- Ненадежные механизмы достижения консенсуса
- Отсутствие регулирования и единых стандартов
- Недостаток средств разработки
- Угроза квантовых компьютеров
- …и так далее.
В этой серии статей я рассмотрю перечисленные выше недостатки и приведу примеры решений, которые могли бы помочь их преодолеть.Как разработчик, я считаю важным сместить фокус внимания с этих модных ICO на стоящие перед нами реальные технологические проблемы.Замечу, что невозможно рассказать здесь обо всех недостатках технологии и способах их обхода. В этой серии статей я рассмотрю те из них, в которых достаточно хорошо разбираюсь.
1. Ограничения масштабируемости
Сейчас все открытые консенсус-протоколы для блокчейнов имеют одно и то же узкое место: каждый полный сетевой узел (полная нода) должен обрабатывать каждую транзакцию.Почему? Вспомним, что одна из основных характеристик блокчейнов — децентрализация, то есть в них нет единого Центра, ответственного за поддержку работоспособности и безопасность системы. Вместо этого, каждый узел вносит вклад в общую безопасность сети тем, что подтверждает каждую транзакцию и хранит полную копию состояния сети.Такой метод децентрализации обеспечивает основные преимущества блокчейна, которые важны для всех нас — гарантии безопасности, политическую нейтральность, устойчивость к цензуре, — но за это приходится платить масштабируемостью, так как количество транзакций, которое способен обработать блокчейн, равно пропускной способности одного сетевого узла.Из этого следует два практических вывода:
- Низкая пропускная способность. Блокчейн может обработать только ограниченное число транзакций.
- Низкая скорость выполнения транзакций. Обработка блока транзакций занимает существенное время. Например, в сети Биткойн интервал между блоками составляет 10 минут, в сети Ethereum — примерно 14 секунд, а в периоды пиковой нагрузки на это уходит еще больше времени. Для сравнения, в таких сервисах, как Square и Visa, транзакции подтверждаются практически мгновенно.
Поэтому разработчики публичных блокчейнов вынуждены искать компромисс между низкой пропускной способностью сетей и высокой степенью централизации.Другими словами, по мере роста размера блокчейна растут и требования к размеру хранилища, пропускной способности и вычислительной мощности каждого узла сети. Может наступить момент, когда на обработку блоков потребуется столько ресурсов, что останется слишком мало узлов, способных справляться с этой нагрузкой, и тогда сеть рискует стать централизованной.То есть мы сделаем полный круг и вернемся к централизованным системам, которые требуют доверия к нескольким крупным участникам, хотя на самом деле нам нужна система, способная обрабатывать тысячи транзакций в секунду и сохранять ту же степень децентрализации, какая была обещана изначально.
Решения проблемы масштабируемости
В идеале нам нужен блокчейн, не менее безопасный, чем Биткойн или Ethereum, и при этом не требующий, чтобы каждый узел обрабатывал как минимум определенную долю всех транзакций сети. Другими словами, нужен механизм, который ограничивал бы количество узлов, необходимых для подтверждения транзакций, но без потери уверенности участников сети в правильности и подлинности каждой транзакции. Звучит просто, но реализовать это очень сложно.Масштабируемость — это серьезное препятствие на пути к будущему успеху платформы. Есть несколько вариантов решения проблемы, которыми уже занимаются различные команды разработчиков.
Платежные каналы офчейн
Суть этого решения заключается в создании дополнительного слоя с сетью каналов для микроплатежей, которая позволит проводить большинство транзакций вне блокчейна, то есть вынести за пределы основного блокчейна действия, которые обычно записываются в него напрямую. В этой модели блокчейн используется как расчетный слой, в котором обрабатывается только последняя транзакция из серии взаимодействий между аккаунтами и фиксируется конечное состояние счетов. Таким образом, появляется возможность разгрузить блокчейн.Это решает обозначенную выше проблему с пропускной способностью, так как в этой модели блокчейн масштабируется до значительно больших объемов транзакций. Более того, поскольку транзакция считается совершенной, как только ее обработал платежный канал, а не после подтверждения включающего ее блока, каналы микроплатежей решают проблему скорости обработки транзакций, уменьшая период ожидания.В качестве примеров сетей микроплатежных каналов можно привести Raiden Network и Lightning Network.
Шардирование (sharding)
Идея шардирования состоит в том, что полная информация о состоянии блокчейна делится на сегменты (shards), и обработка разных частей этого состояния происходит одновременно в разных узлах сети. При этом каждый сегмент обрабатывает небольшую часть данных. В целом шардирование блокчейна похоже на шардирование базы данных, но в блокчейне, с его децентрализованным набором узлов, значительно сложнее обеспечить безопасность и проверку подлинности данных.
Вычисления офчейн
Это похоже на обработку состояния в нескольких каналах, только в еще большем масштабе. Идея этого метода состоит в том, что вне блокчейна происходит не только передача токенов, но и те вычисления, которые требуют слишком больших затрат ресурсов при их выполнении в блокчейне. Способ проведения этих вычислений гарантирует их безопасность и подлинность. Использование отдельного протокола для проведения вычислений и проверок вне блокчейна способствует увеличению пропускной способности сети. Пример применения этой модели для Ethereum — TrueBit.
Направленный ациклический граф
Направленный ациклический граф (DAG, от directed acyclic graph) состоит из вершин (точек) и ребер (соединительных линий между точками). В направленном ациклическом графе не существует пути обхода, возвращающегося к начальной точке (невозможны замкнутые циклы). Это позволяет установить топологический порядок для вершин и ребер.Основанные на DAG протоколы (например, Tangle в IOTA) позволяют полностью отойти от глобальных линейных блокчейнов, потому что в них состояние системы задано структурой, имеющей вид такого графа. Для обеспечения сетевой безопасности эти протоколы используют новаторские технологии, которые не требуют линейным образом обрабатывать каждую транзакцию в каждом узле.Протокол SPECTRE — еще решение, основанное на DAG — соединяет в DAG блоки и поддерживает параллельный майнинг блоков для повышения пропускной способности и производительности системы.Впрочем, на текущий момент крупномасштабных решений, реализующих такие протоколы, не существует. Это связано с наличием серьезных ограничений и уязвимостей, и надежные масштабируемые решения появятся только тогда, когда будут найдены способы исправить эти недостатки.