Що таке спрямований ациклічний граф (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 також можна застосовувати для відстеження змін у файлах або документах, а отже, він спроможен стати незамінним для версіонування ПЗ і виправлення багів в оновленнях.
Ця технологія, безумовно, ще не продемонструвала усього спектру власних можливостей.