От блокчейна до DAG: избавление от посредников

В тази статия ще ви запозная с DAG (насочен ацикличен граф) и приложението му в дистрибутирани регистри, а също и ще го сравним с блокчейна.

От блокчейна до DAG: избавление от посредников

DAG не е нещо ново в света на криптовалутите. Може да сте чували за него като решение на проблемите с мащабируемостта на блокчейните. Но днес ще говорим не за мащабируемост, а за това, което прави криптовалутите различни от всичко останало: децентрализация, липса на посредници и устойчивост на цензура.

От блокчейна до DAG: избавление от посредников

Също така ще ви покажа, че DAG всъщност е по-устойчив на цензура и в него няма посредници за достъп до регистъра.

От блокчейна до DAG: избавление от посредников

При познатите ни блокчейни потребителите нямат пряк достъп до самия регистър. Когато искате да добавите транзакция в регистъра, трябва да „помолите“ производителя на блокове (блок-продуцент или „майнер“) да го направи. Именно майнерите решават коя транзакция да добавят в следващия блок, а коя не. Само те имат ексклузивен достъп до блоковете и правото да решават чия транзакция да приемат за добавяне в регистъра.

Майнерите са посредниците, които стоят между вас и дистрибутирания регистър.

От блокчейна до DAG: избавление от посредников

На практика, обикновено малък брой пулове от майнери колективно контролират повече от половината изчислителни мощности на мрежата. За биткойн това са четири пула, а за Ethereum – два. В случай на сговор между тях, те могат да блокират всякакви транзакции, които пожелаят.

От блокчейна до DAG: избавление от посредников

През последните няколко години бяха предложени много разновидности на блокчейни, които се различават по принципите на избиране на производители на блокове. Но самите производители на блокове не изчезват, те все още „стоят на шлагбаума“: всяка транзакция трябва да премине през производителя на блокове, и ако той не я приеме, транзакцията фактически не съществува.

От блокчейна до DAG: избавление от посредников

Това е неизменен проблем при блокчейна. И ако искаме да го решим, трябва радикално да променим дизайна и напълно да се отървем от блоковете и производителите на блокове. Вместо да изграждаме верига от блокове, ще свързваме самите транзакции, включвайки в всяка транзакция хешове на няколко предишни. В резултат получаваме структура, известна в математиката като насочен ацикличен граф – DAG.

Сега всеки има директен достъп до регистъра, без посредници. Когато искате да добавите транзакция в регистъра – просто я добавяте. Избирате няколко родителски транзакции, добавяте своите данни, подписвате и изпращате транзакцията си в мрежата. Готово. Няма никого, който да може да ви попречи да го направите, така че транзакцията ви вече е в регистъра.

Това е най-децентрализираният, най-устойчив на цензура начин за добавяне на транзакции в регистъра без посредници. Защото всеки, който желае, може просто да добави своите транзакции в регистъра, без да пита разрешение от никого.

От блокчейна до DAG: избавление от посредников

DAG може да се счита за третия етап от еволюцията на регистрите. Първо имаше централизирани регистри, където една страна контролираше достъпа до тях. След това дойдоха блокчейните, в които имаше няколко контролера, които записваха транзакции в регистъра. И накрая, в DAG няма никакви контролери, потребителите добавят своите транзакции директно.

От блокчейна до DAG: избавление от посредников

Сега, когато имаме тази свобода, тя не трябва да води до хаос. Трябва да имаме съгласие относно състоянието на регистъра. И това съгласие, или консенсус, обикновено означава съгласие относно две неща:

  1. Какво се е случило?
  2. В какъв ред е станало това?

На първия въпрос можем лесно да отговорим: щом коректно създадената транзакция е добавена в регистъра, тя се е случила. И точка. Информацията за това може да достигне до всички участници в различно време, но в крайна сметка всички възли ще получат тази транзакция и ще разберат, че тя се е случила.

Ако това беше блокчейн, миньорите щяха да решават какво се случва. Всичко, което миньорът реши да включи в блока – то и се случва. Всичко, което не включи в блока – не се случва.

В блокчейните миньорите също решават втория проблем на консенсуса: ред. Им е позволено да подреждат транзакциите вътре в блока както решат.

Как да определим реда на транзакциите в DAG?

От блокчейна до DAG: избавление от посредников

Само по себе направление графа уже создает определенный порядок. Каждая транзакция ссылается на одну или несколько предыдущих, родительских транзакций. Родители, в свою очередь, ссылаются на своих предков, и так далее. Очевидно, что родительские транзакции появляются раньше дочерних. Если любая из транзакций может быть достигнута через ссылки «родитель-ребёнок», мы можем точно установить порядок между транзакциями в данной цепочке.

От блокчейна до DAG: избавление от посредников

Однако порядок между транзакциями не всегда можно определить только на основе формы графа. Например, когда две транзакции располагаются на параллельных ветвях графа.

От блокчейна до DAG: избавление от посредников

Чтобы разрешить неоднозначность в таких случаях, мы полагаемся на так называемых провайдеров порядка. Мы также называем их «свидетелями». Это обычные пользователи, чья задача — постоянно отправлять транзакции в сеть в установленном порядке, т.е. так, чтобы каждая из их предыдущих транзакций могла быть достигнута через ссылки «родитель-ребёнок». Провайдеры порядка – доверенные пользователи, на которых вся сеть полагается, что они не будут нарушать данное правило. Чтобы рационально доверять им, мы требуем, чтобы каждый провайдер порядка был известным (неанонимным) лицом или организацией и имел что-то, что может потерять в случае нарушения правил, например, репутацию или бизнес, основанный на доверии.

От блокчейна до DAG: избавление от посредников

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

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

От блокчейна до DAG: избавление от посредников

Теперь, когда у нас есть провайдеры порядка, мы можем выделить их транзакции в DAG и упорядочить все остальные транзакции вокруг порядка, созданного ими. Возможность создания такого алгоритма существует (см. Obyte White Paper для технических деталей).

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

И тъй като редът се определя единствено от позициите на транзакциите на доставчиците в DAG, всички възли в мрежата рано или късно ще получат всички транзакции и ще стигнат до едно и също заключение относно реда на транзакциите.

От блокчейна до DAG: избавление от посредников

Така че, имаме съгласие относно това, което считаме, че се е случило: всяка транзакция, която е попаднала в DAG, е станала факт. Имаме и съгласие относно реда на събитията: той е видим чрез родствени връзки на транзакциите или може да бъде извлечен от реда на транзакциите, изпратени от доставчиците на реда. Следователно имаме консенсус.

От блокчейна до DAG: избавление от посредников

Тази форма на консенсус имаме в Obyte. Въпреки че достъпът до регистъра на Obyte е напълно децентрализиран, консенсусът относно реда на транзакциите все още е централизиране, тъй като 10 от 12 доставчици се контролират от създателя (Антон Чурюмов), а само двама от тях са независими. Търсим кандидати, които желаят да станат независими доставчици на ред, за да ни помогнат да децентрализираме установяването на реда в регистъра.

Наскоро се появи трети независим кандидат, желаещ да установи и поддържа възел на доставчика на реда – Университет Никозия.

От блокчейна до DAG: избавление от посредников

Сега, как контролираме двойните разходи (double-spends)?

Според правилата, при откритие на две транзакции, които харчат една и съща монета, транзакцията, която се е появила по-рано в крайния ред на всички транзакции, печели. Втората се анулира от алгоритъма на консенсуса.

От блокчейна до DAG: избавление от посредников
В случай, че е възможно да се установи ред между две транзакции, които харчат една монета (чрез родителски връзки), всички възли незабавно отхвърлят подобна опит за двойно изразходване.

От блокчейна до DAG: избавление от посредников

В случай обаче, че редът не е видим от родителските връзки между две такива транзакции, и двете се приемат в регистъра, и ще трябва да изчакаме консенсуса и установяването на реда между тях с помощта на доставчиците на ред. Тогава печели по-ранната транзакция, а втората става невалидна.

От блокчейна до DAG: избавление от посредников

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

От блокчейна до DAG: избавление от посредников

Това е много важно правило, което позволява на цялата система да бъде устойчива на опити за цензура. 

Нека си представим, че всички доставчици на ред влизат в заговор, опитвайки се да "цензурират" една конкретна транзакция. Те могат да я игнорират и никога да не я изберат "родител" за своите транзакции, но това не е достатъчно; тази транзакция все пак може да бъде включена косвено като родител на някоя друга транзакция, издадена от който и да е потребител на мрежата, който не участва в злото. С времето такава транзакция ще получава все повече и повече деца, внуци и правнуци от обикновени потребители, разраствайки се като снежна топка, и всички договорили се доставчици на ред ще трябва да игнорират и тези транзакции. В крайна сметка, те ще трябва да цензурират цялата мрежа, което е еквивалентно на саботаж.

От блокчейна до DAG: избавление от посредников

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

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster