Что такое направленный ациклический граф (DAG)?

Фото - Что такое направленный ациклический граф (DAG)?
Представьте себе блокчейн, у которого нет последовательной цепочки транзакций. Вместо этого он напоминает разветвленную сеть хаотично (на первый взгляд) связанных между собой блоков. Так выглядит схема направленного ациклического графа (DAG). Разбираемся в особенностях его архитектуры.
Directed Acyclic Graph (или направленный ациклический граф) – это структура данных, состоящая из узлов (которые иногда называют вершинами) и направленных ребер (или дуг), соединяющих их. Главная уникальность архитектуры DAG – отсутствие полных циклов. Это означает, что, двигаясь по дугам от одной вершины к другой, невозможно вернуться к исходной информации (то, что в классическом блокчейне называется нулевым блоком).

В чем особенность DAG?

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

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

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

Это выглядит следующим образом:

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

Поскольку связь между блоками осуществляется нелинейно, это открывает возможность для параллельной обработки информации, значительно повышая скорость процесса. Кроме того, снижается зависимость сети от работы “наемных” валидаторов. Это происходит за счет того, что отпадает необходимость подтверждать каждую транзакцию отдельно. Поэтому DAG не нуждается в большом количестве “обслуживающего персонала”. Он устойчивее и надежнее, чем другие структуры данных, ведь отказ одного узла не влияет на работу остальных – обязанности выпавшего узла легко перебирают на себя другие, хранящие ту же самую информацию о валидированных транзакциях.
Схема Directed Acyclic Graph (DAG) похожа на паутину или ветвистое дерево. Источник: Medium

Схема Directed Acyclic Graph (DAG) похожа на паутину или ветвистое дерево. Источник: Medium

Как функционирует DAG?

  1. Данные о подтвержденных транзакциях хранятся в узлах точно так же, как и в блоках классического блокчейна.
  2. Ребра указывают направление связи между узлами. При этом узлы связаны между собой не последовательно, а по принципу Many-to-many (многие ко многим). 
  3. Собираемая информация движется только в одном направлении: от более старой к новой. В коде DAG зашита специальная функция, которая не дает вернуться к ранее сформированному узлу. Собственно, именно поэтому граф и называется направленным.
  4. Новые узлы с данными добавляются в самом конце графа, как и у привычного нам классического блокчейна.

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

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

Недостатки блокчейна на основе DAG 

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

Существует несколько причин:

  1. Реестры, созданные с использованием DAG, более сложны для понимания и реализации, чем традиционные блокчейны. Это во многом отпугивает и разработчиков, и компании, которые планируют использовать блокчейн в своей работе.
  2. Поддержание нескольких сетей на основе DAG в согласованном состоянии может быть непростой задачей, особенно в условиях децентрализации. Кроссчейн-мосты между такими сложными системами разработать пока не удалось никому.
  3. Чтобы поддерживать безопасность блокчейнов на основе DAG, могут понадобиться централизованные рычаги управления. Это часто идет вразрез с идеями децентрализации, которыми руководствуются создатели классических блокчейнов.

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

Какие проекты используют технологию DAG?

Поскольку сети на основе DAG не используют энергоемкий майнинг и, как следствие, не требуют затрат на мощное оборудование и электроэнергию, комиссии за транзакции в них в сотни раз ниже, чем на обычных блокчейнах. Поэтому некоторые криптовалютные проекты, например IOTA и корпоративная экосистема Hedera Hashgraph, используют ациклический граф вместо традиционной цепочки блоков.
Разработчики IOTA построили на основе направленного ациклического графа платформу для обслуживания потребностей Интернета вещей, где каждый гаджет может проводить микроплатежи без комиссий. А Hedera обслуживает закрытый корпоративный сектор финансовых услуг и не нуждается в притоке сторонних пользователей и согласовании с другими блокчейнами.

Один из возможных алгоритмов ациклического графа использует также проект Filecoin — криптографическое хранилище файлов, которое является децентрализованной альтернативой Dropbox, Google Drive и Amazon.
Filecoin применяет протокол запроса-ответа GraphSync, который синхронизирует части блокчейна между собой и позволяет быстро синхронизировать данные между разными устройствами, хранящими части файлов в сети одноранговых нод.

Но потенциал DAG значительно шире. 
Ациклический блокчейн может быть использован для создания децентрализованных социальных сетей, где каждый пользователь выступает в качестве узла, а связи между людьми становятся дугами для передачи информации (обмена сообщениями).
DAG также может использоваться для отслеживания изменений в файлах или документах — стать незаменимым для версионирования ПО и исправления багов в обновлениях.
Эта технологию определенно еще не продемонстрировала всех своих возможностей.