Në këtë artikull do t'ju tregoj për DAG (Grafi Aykik Drejtuar) dhe aplikimin e tij në regjistrat e shpërndarë, dhe do ta krahasojmë atë me bllokçin.

DAG nuk është diçka e re në botën e kriptovalutave. Mund të keni dëgjuar për të si një zgjidhje për problemet e shkallëzueshmërisë së bllokçinëve. Por sot do të flasim jo për shkallëzueshmërinë, por për atë që i bën kriptovalutat të veçanta nga gjithçka tjetër: decentralizimi, mungesa e ndërmjetësve dhe qëndrueshmëria ndaj censurës.

Gjithashtu do t'ju tregoj se DAG është në të vërtetë më i qëndrueshëm ndaj censurës dhe se nuk ka ndërmjetës për të hyrë në regjistër.

Në bllokçinët që njohim, përdoruesit nuk kanë akses të drejtpërdrejtë në vetë regjistrin. Kur dëshironi të shtoni një transaksion në regjistër, ju duhet të "kërkoni" që të bëhet nga prodhuesi i bllokut (prodhuesi i bllokut, i njohur gjithashtu si "minatori"). Pikerisht minatorët vendosin se cilën transaksion të shtojnë në bllokun tjetër dhe cilën jo. Vetëm minatorët kanë akses ekskluziv në blloqe dhe të drejtat për të vendosur se çfarë transaksioni të pranohet për t'u shtuar në regjistër.
Minatorët janë ndërmjetësit që qëndrojnë midis jush dhe regjistrit të shpërndarë.

Në praktikë, zakonisht një numër i vogël i pool-eve të minatorëve kontrollojnë kolektivisht më shumë se gjysma e fuqive llogaritëse të rrjetit. Për bitcoin, këto janë katër pool-e, për Ethereum, dy. Në rast të mirëkuptimit mes tyre, ata mund të bllokojnë çdo transaksion që dëshirojnë.

Në vitet e fundit, janë propozuar shumë variacione të bllokçinëve, të ndryshme në parimet e zgjedhjes së prodhuesve të bllokut. Por vetë prodhuesit e bllokut nuk kanë ikur askund, ata akoma " qëndrojnë në barrierë": çdo transaksion duhet të kalojë përmes prodhuesit të bllokut, dhe nëse ai nuk e pranon, atëherë transaksioni, në efekt, nuk ekziston.

Kjo është një problem i paevitueshëm në rastin e bllokçinëve. Dhe nëse duam ta zgjidhim, ne duhet të ndryshojmë radikalisht dizajnin dhe të heqim dorë plotësisht nga blloqet dhe prodhuesit e bllokut. Në vend që të ndërtojmë një zinxhir bllokesh, ne do të lidhim vetë transaksionet, duke përfshirë në çdo transaksion hash-e të disa transaksioneve të mëparshme. Si rezultat, ne do të kemi një strukturë, të njohur në matematikë si grafi i drejtuar dhe aicyklik - DAG.
Tani tani ka një qasje të drejtpërdrejtë në regjistër, pa ndërmjetës. Kur dëshironi të shtoni një transaksion në regjistër – thjesht e shtoni atë. Zgjidhni disa transaksione prindërore, shtoni të dhënat tuaja, nënshkruani dhe dërgoni transaksionin tuaj në rrjet. E gatshme. Nuk ka askënd që mund të ju pengojë ta bëni këtë, prandaj transaksioni juaj është tashmë në regjistër.
Ky është mënyra më e decentralizuar, më e paprekshme ndaj censurës për të shtuar transaksione në regjistër pa ndërmjetës. Sepse çdo kush që dëshiron thjesht shton transaksionet e tij në regjistër, pa kërkuar leje nga askush.

DAG mund të konsiderohet si faza e tretë e evolucionit të regjistrave. Fillimisht ishin regjistrat e centralizuar, ku një palë kontrollonte qasjen në to. Më pas erdhën blockchain-et, ku tashmë kishte disa kontrollues që regjistronin transaksionet në regjistër. Dhe, përfundimisht, në DAG nuk ka asnjë kontrollues, përdoruesit shtojnë transaksionet e tyre drejtëpërdrejt.

Tani, kur kemi një liri të tillë, ajo nuk duhet të çojë në kaos. Ne duhet të kemi një marrëveshje mbi gjendjen e regjistrit. Dhe kjo marrëveshje, ose konsensusi, zakonisht do të thotë marrëveshja mbi dy gjëra:
- Çfarë ndodhi?
- Në cilën rend ndodhi kjo?
Për pyetjen e parë, ne mund të përgjigjemi lehtë: sa herë që një transaksion i krijuar siç duhet është shtuar në regjistër, ai ka ndodhur. Pikë. Informacioni në lidhje me këtë mund të arrijë te të gjithë pjesëmarrësit në kohë të ndryshme, por në fund të fundit të gjithë nodet do të marrin këtë transaksion dhe do të dinë që ai ndodhi.
Nëse do të kishte qenë një blockchain, minatorët do të vendosnin se çfarë ndodh. Çdo gjë që një minator vendos të përfshijë në bllok – ajo ndodh. Çdo gjë që ai nuk e përfshin në bllok – nuk ndodh.
Në blockchain-e, minatorët gjithashtu zgjidhin problemin e dytë të konsensusit: rendi. Ata kanë leje të organizojnë transaksionet brenda bllokut siç të dojnë.
Si mund të përcaktohet rendi i transaksioneve në DAG?

Vetëm sepse grafi ynë është i drejtuar, ne tashmë kemi një rend. Çdo transaksion lidhet me një ose më shumë transaksione të mëparshme, prindërore. Prindërit, nga ana e tyre, lidhen me prindërit e tyre, dhe kështu me radhë. Prindërit, natyrisht, shfaqen më parë se transaksionet fëmijë. Nëse ndonjë nga transaksionet mund të arrihet përmes lidhjeve "prind-fëmijë", ne e dimë saktësisht rendin midis transaksioneve në këtë zinxhir transaksionesh.

Por rendi midis transaksioneve nuk është gjithmonë e mundur të përcaktohet vetëm nga forma e grafit. Për shembull, kur dy transaksione ndodhin në degë paralele të grafit.

Për të zgjidhur paqartësitë në këto raste, ne mbështetemi në ata që quhen provajzë të rendit. Ne i quajmë gjithashtu "dëshmitarë". Këta janë përdorues të zakonshëm, detyra e të cilëve është të dërgojnë vazhdimisht transaksione në rrjet duke respektuar rendin, pra që çdo transaksion i tyre i mëparshëm mund të arrihet përmes lidhjeve "prind-fëmijë". Provajzët e rendit janë përdorues të besueshëm, dhe e gjithë rrjeti mbështetet në atë që ata nuk do të shkelin këtë rregull. Për të besuar në mënyrë të arsyeshme , ne kërkojmë që çdo provajz i rendit të jetë një person i njohur (jo anonim) ose një organizatë dhe të ketë diçka që mund të humbasë në rast se shkel rregullat, për shembull, reputacionin ose një biznes i bazuar në besim.

Provajzët e rendit zgjidhen nga përdoruesit, dhe çdo përdorues përfshin listën e provajzëve të tij të besuar në çdo transaksion që dërgon në rrjet. Kjo listë përbëhet nga 12 provajzë. Ky është një numër mjaft i vogël, në mënyrë që një person të mund të verifikojë identitetin dhe reputacionin e secilit prej tyre, dhe i mjaftueshëm për të siguruar që rrjeti të vazhdojë të funksionojë në rast të problemeve të pashmangshme me një pakicë provajzësh rendi.
Kjo listë provajzësh ndryshon nga përdoruesi në përdorues, por listat e transaksioneve fqinje mund të ndryshojnë maksimumi me një provajz.

Tani, kur kemi provajzët e rendit, ne mund të veçojmë transaksionet e tyre në DAG dhe të rendisim të gjitha transaksionet e tjera rreth rendit të krijuar nga ata. Ekziston mundësia për të krijuar një algoritem të tillë (shih për detajet teknike).
Por ndodhitë në tërë rrjetin nuk mund të përcaktohen menjëherë, na nevojitet kohë që ofruesit e rendit të dërgojnë një numër të mjaftueshëm të transaksioneve të tyre për t'u siguruar për rendin përfundimtar të transaksioneve të kaluar.
Dhe, përsa kohë që rendi përcaktohet vetëm nga pozitat e transaksioneve të ofruesve në DAG, të gjitha nyjat e rrjetit në një moment do të marrin të gjitha transaksionet dhe do të arrijnë në një përfundim të njëjtë në lidhje me rendin e transaksioneve.

Prandaj, kemi konsensus në lidhje me atë që e konsiderojmë të ndodhur: çdo transaksion që ka hyrë në DAG është ndodhur. Po ashtu kemi konsensus mbi rendin e ngjarjeve: kjo është ose e dukshme në bazë të lidhjeve prind-fëmijë të transaksioneve, ose nxirret nga rendi i transaksioneve të dërguara nga ofruesit e rendit. Pra, kemi konsensus.

Ky lloj konsensusi e kemi në Obyte. Megjithëse hyrja në regjistrin Obyte është plotësisht e decentralizuar, konsensusi mbi rendin e transaksioneve është ende i centralizuar, pasi 10 nga 12 ofrues kontrollohen nga krijuesi (Anton Churyumov), dhe vetëm dy prej tyre janë të pavarur. Ne po kërkojmë kandidatë që dëshirojnë të bëhen një nga ofruesit e pavarur të rendit për të na ndihmuar të decentralizojmë vendosjen e rendit në regjistër.
Së fundmi ka pasur një kandidat të tretë të pavarur që dëshiron të vendosë dhe mbajë një nyje ofruesi rendi – Universiteti i Nikosisë.

Tani, si i kontrollojmë shpenzimet e dyfishta (double-spends)?
Sipas rregullave, kur zbulohen dy transaksione që shpenzojnë të njëjtën monedhë, transaksioni që është para në rendin përfundimtar të të gjitha transaksioneve fiton. Ndërsa i dyti invalidizohet nga algoritmi i konsensusit.

Në rastin kur ka mundësi të vendoset rendi midis dy transaksioneve që shpenzojnë një monedhë (sipër lidhjeve prind-fëmijë), të gjitha nyjat menjëherë e refuzojnë një përpjekje të tillë për shpenzim të dyfishtë.

Në rast se rendi nuk është i dukshëm nga lidhjet prindore midis dy transaksioneve të tilla, të dyja pranohet në regjistër, dhe do të na nevojitet të presim konsensusin dhe vendosjen e rendit midis tyre nga ofruesit e rendit. Atëherë fiton transaksioni më i hershëm, ndërsa i dyti bëhet i pavlefshëm.

Megjithëse transaksioni i dytë bëhet jo valid, ai vazhdon të mbetet në regjistër, pasi tashmë ka transaksione të mëpasshme që i referohen atij, të cilat nuk kanë shkelur asgjë dhe nuk e dinë se në të ardhmen ky transaksion do të bëhet jo valid. Ndryshe, do të na duhej të fshinim prindin nga transaksionet e mira që vijnë më pas, gjë që do të shkelte parimin kryesor të rrjetit - çdo transaksion i saktë pranohet në regjistër.

Ky është një rregull shumë i rëndësishëm, që i lejon gjithë sistemit të jetë i qëndrueshëm ndaj përpjekjeve të censurës.
Le të imagjinojmë se të gjithë ofruesit e rendit hyjnë në një marrëveshje për të "censuruar" një transaksion të caktuar. Ata mund ta injorojnë atë dhe kurrë të mos e zgjidhin si "prind" për transaksionet e tyre, por kjo nuk është e mjaftueshme; ky transaksion ende mund të përfshihet në mënyrë indirekte si prind i ndonjë transaksioni tjetër, të lëshuar nga çdo përdorues të rrjetit që nuk merr pjesë në marrëveshje. Me kalimin e kohës, ky transaksion do të marrë gjithnjë e më shumë fëmijë, nipër dhe mbesë nga përdorues të zakonshëm, duke u rritur si një top dëbore, dhe të gjithë ofruesit që kanë rënë dakord do të duhet të injorojnë edhe këto transaksione. Në fund, atyre do t'u duhet të censurojnë të gjithë rrjetin, gjë që është njëlloj si sabotazh.

Kështu, DAG mbetet i qëndrueshëm ndaj censurës, madje edhe nëse ndodhin marrëveshje mes ofruesve të rendit, duke e tejkaluar kështu blockchain-in për sa i përket qëndrueshmërisë ndaj censurës, ku nuk mund të bëjmë asgjë nëse minatorët vendosin të mos përfshijnë ndonjë nga transaksionet. Dhe kjo është një pasojë e pronësisë kryesore të DAG: pjesëmarrja në regjistër është krejtësisht e pavarur dhe pa ndërmjetës, ndërsa transaksionet janë të pakthyeshme.
Burimi: habr.com
