Bu məqalədə mən sizə DAG (İdarə olunan Aykiliksiz Qraf, Directed Acyclic Graph) və onun paylanmış reyestrlərdəki tətbiqindən bəhs edəcəyəm və onu blokçeyn ilə müqayisə edəcəyik.

DAG kriptovalyuta dünyasında yeni bir anlayış deyil. Bəlkə də, siz onu blokçeynlərin miqyaslanma problemlərinin həlli kimi eşitmisiniz. Lakin bu gün biz miqyaslanmadan deyil, kriptovalyutaların digər şeylərdən fərqləndirən xüsusiyyətlərinə — mərkəzsizliyə, vasitəçilərin olmamasına və senzura davamlılığına baxacağıq.

Bundan əlavə, sizə DAG-ın əslində senzura qarşı daha dayanıqlı olduğunu və reyestrə daxil olmaq üçün vasitəçilərin olmadığını göstərəcəyəm.

Tanış olduğumuz blokçeyn-lərdə istifadəçilərin reyestrə birbaşa çıxışı yoxdur. Bir tranzaksiyanı reyestrə əlavə etmək istədikdə, siz blok istehsalçısından (blok istehsalçısı, yəni "minerlər") buna icazə istəməli olursunuz. Minaçılar hansı tranzaksiyanın növbəti blokda daxil ediləcəyinə və hansının edilməyəcəyinə qərar verirlər. Minaçılar bloklara eksklüziv çıxışa malikdirlər və hansı tranzaksiyaların reyestrə daxil ediləcəyini seçmə hüququna sahibdirlər.
Minaçılar siz və paylanmış reyestr arasında olan vasitəçilərdir.

Praktikada isə, adətən, az sayda minaçı hovuzları kollektiv şəkildə şəbəkənin daha yarıdan çoxunu idarə edirlər. Bitcoin üçün bu dörd hovuzdur, Ethereum üçün isə iki. Əgər onlar bir-biri ilə razılığa gəlsələr, istədikləri hər hansı tranzaksiyanın bloklanmasını təmin edə bilərlər.

Son illərdə blokçeyn istehsalçılarını seçmənin prinsiplərində müxtəlif variantlar təklif edilmişdir. Lakin istehsalçılar hələ də mövcuddur, onlar hələ də "sərhədin üstündə dayanırlar": hər bir tranzaksiya istehsalçının vasitəsilə keçməlidir və əgər o qəbul etmirsə, o tranzaksiya əslində yoxdur.

Bu, blokçeyn kontekstində qaçılmaz bir problemdir. Və əgər bu problemi həll etmək istəyiriksə, biz tamamilə radikal bir dizayn dəyişdirməliyik və blokları və blok istehsalçılarını tamamilə aradan qaldırmalıyıq. Və blok zənciri qurmaq əvəzinə, biz tranzaksiyaları birləşdirəcəyik, hər bir tranzaksiyaya bir neçə əvvəlki tranzaksiyanın hash-larını daxil edəcəyik. Nəticədə, biz riyaziyyatda yönləndirilmiş aykiliksiz qraf (DAG) kimi tanınan bir struktura sahib olacağıq.
İndi hər kəs reyestrə birbaşa çıxışa malikdir, vasitəçilər olmadan. Bir tranzaksiyanı reyestrə əlavə etmək istədikdə — siz sadəcə onu əlavə edirsiniz. Bir neçə valideyn tranzaksiyası seçirsiniz, öz məlumatlarınızı əlavə edirsiniz, imzalayıb tranzaksiyanızı şəbəkəyə göndərirsiniz. Hazırdır. Sizi dayandıracaq heç kim yoxdur, buna görə də tranzaksiyanız artıq reyestrdədir.
Bu, vasitəsiz olaraq tranzaksiyaları reyestrə əlavə etmənin ən desentralizə olunmuş, senzura qarşı ən dayanıqlı yoludur. Çünki istənilən bir kəs reyestrə tranzaksiyalarını əlavə edə bilər, heç kəsin icazəsini almadan.

DAG-ı reyestrlərin evrimində üçüncü mərhələ hesab etmək olar. Əvvəlcə mərkəzləşdirilmiş reyestrlər var idi, burada bir tərəf onlara girişə nəzarət edirdi. Sonra blokçeynlər gəldi, burada bir neçə nəzarətçi tranzaksiyaları reyestrə qeyd edirdi. Və nəhayət, DAG-da heç bir nəzarətçi yoxdur, istifadəçilər öz tranzaksiyalarını birbaşa əlavə edirlər.

İndi bu cür azadlığa malik olarkən, bu, xaosa yol açmamalıdır. Biz reyestrin vəziyyəti ilə bağlı razılığa malik olmalıyıq. Və bu razılıq, ya da konsensus, adətən iki şeylə bağlı razılıq deməkdir:
- O que aconteceu?
- Bu, hansı sırayla baş verib?
Birinci suala asanlıqla cavab verə bilərik: düzgün yaradılmış tranzaksiya reyestrə əlavə olunduğu anda baş verdi. Və bu, budur. Bu məlumat bütün iştirakçılara fərqli zamanlarda çatır, amma nəticədə bütün düyünlər bu tranzaksiyanı alır və onun baş verdiyini öyrənirlər.
Əgər bu bir blokçeyn olsaydı, minerlər nə baş verdiyini qərar verərdi. Miner tərəfindən bloka daxil edilməyə qərar verilən hər şey baş verir. Bloka daxil edilməyən hər şey isə baş vermir.
Blokçeynlərdə minerlər həmçinin konsensusun ikinci problemini: sıralamayı həll edirlər. Onlara bloka daxil olan tranzaksiyaları istədikləri kimi sıralamaq icazəsi verilir.
DAG-da tranzaksiyaların sırasını necə müəyyənləşdirə bilərik?

Sadəcə olaraq, qrafımız istiqamətli olduğu üçün, artıq müəyyən bir sıra var. Hər tranzaksiya bir və ya bir neçə əvvəlki, valideyn tranzaksiyasına istinad edir. Valideynlər, öz növbəsində, öz valideynlərinə istinad edir və belə davam edir. Valideynlər, açıqca, övlad tranzaksiyalarından əvvəl baş verir. Hər hansı bir tranzaksiya «valideyn-uşaq» keçidləri ilə əldə edilə bilirsə, bu tranzaksiyalar zəncirindəki sıralama haqqında dəqiq məlumatımız var.

Amma tranzaksiyalar arasındakı sıralamanı yalnız qrafın formasından müəyyən etmək hər zaman mümkün olmur. Məsələn, iki tranzaksiya qrafın paralel budaqlarında olduqda.

Belə hallarda qeyri-müəyyənliyi aradan qaldırmaq üçün biz özümüzü «sıra təminatçıları» adlandırdığımız şəxslərə güvənirik. Onları həmçinin «şahidlər» adlandırırıq. Bu, adi istifadəçilərdir ki, onların məqsədi, mütəmadi olaraq tranzaksiyaları şəbəkəyə sıra ilə göndərməkdir, yəni, belə ki, hər biriləri əvvəlki tranzaksiyaya «valideyn-uşaq» keçidləri ilə çatmaq mümkündür. Sıra təminatçıları – etibar olunan istifadəçilərdir, və bütün şəbəkə bu qaydanı pozmayacaqlarına güvənir. Bunun üçün rasional Onlara güveniyoruz, her bir sıralayıcının tanınmış (anonim olmayan) bir kişi veya organizasyon olması ve kuralları ihlal ederse kaybedecek bir şeyi, örneğin itibarı veya güvene dayalı bir işi olması gerekmektedir.

Sıralayıcılar kullanıcılar tarafından seçilir ve her kullanıcı, ağına gönderdiği her işlemde güvenilir sıralayıcılar listesini içerir. Bu liste 12 sıralayıcıdan oluşmaktadır. Bu, bir kişinin her birinin kimliğini ve itibarını kontrol edebileceği kadar küçük bir sayıdır ve sıralayıcılardan birkaçıyla kaçınılmaz problemler yaşandığında ağın çalışmaya devam etmesi için yeterlidir.
Bu sıralayıcılar listesi kullanıcıdan kullanıcıya değişir, ancak komşu işlemlerdeki listeler en fazla bir sıralayıcı ile farklılık gösterebilir.

Şimdi sıralayıcılara sahip olduğumuza göre, onların işlemlerini DAG içinde ayırt edebilir ve diğer tüm işlemleri sıralayıcıların oluşturduğu sıra etrafında düzenleyebiliriz. Böyle bir algoritmanın oluşturulması mümkündür (bkz. teknik detaylar için).
Ancak, ağ boyunca sıralama anında belirlenemez, sıralayıcıların yeterli sayıda işlemi göndermesi için zamana ihtiyacımız var ki böylece geçmiş işlemlerin nihai sıralamasından emin olabilelim.
Ve, sıralama yalnızca sıralayıcıların DAG içindeki işlem sıralarına bağlı olduğundan, ağın tüm düğümleri er ya da geç tüm işlemleri alacak ve işlemlerin sıralamasıyla ilgili aynı sona ulaşacaktır.

Dolayısıyla, ne olduğunu düşündüğümüzde bir fikir birliğine varıyoruz: DAG'a giren her işlem gerçekleşmiştir. Ayrıca olayların sıralaması hakkında da bir fikir birliğine sahibiz: bu ya işlemlerin akrabalık ilişkilerine dayanarak görülebilir ya da sıralayıcıların gönderdiği işlemlerin sıralamasından çıkartılabilir. Yani bir konsensüsümüz var.

Bu konsensüs türü Obyte'da mevcuttur. Obyte defterine erişim tamamen merkeziyetsiz olsa da, işlem sıralaması üzerindeki konsensüs hala merkezidir, çünkü 12 sıralayıcıdan 10'u yaratıcısı (Anton Churyumov) tarafından kontrol edilmektedir ve yalnızca ikisi bağımsızdır. Gelişimi merkeziyetsizleştirmek için bağımsız sıralayıcı olmak isteyen adaylar arıyoruz.
Son zamanlarda, bir sıralayıcı düğümünü kurmak ve sürdürmek isteyen üçüncü bir bağımsız aday ortaya çıktı – Nikosia Üniversitesi.

Peki, çift harcamaları (double-spends) nasıl kontrol ediyoruz?
Kurallara göre, aynı parayı harcayan iki işlem tespit edildiğinde, nihai işlem sıralamasında daha önce yer alan işlem kazanır. Diğer işlem ise konsensüs algoritması tarafından geçersiz kılınır.

İki işlem arasında bir düzen kurma imkanı varsa, bir madeni parayı harcayan tüm düğümler çift harcama girişimini hemen reddeder.

Ancak eğer iki böyle işlem arasındaki düzen, ebeveyn-çocuk ilişkilerinden görünmüyorsa, her ikisi de deftere kabul edilir ve bunlar arasında bir düzen tesis edilmesi için konsensüs beklememiz gerekir. Daha erken olan işlem kazanacak, diğeri geçersiz hale gelecektir.

İkinci işlem geçersiz hâle gelse de, hâlâ defterde kalır, çünkü ona atıfta bulunan ve hiçbir şey ihlal etmeyen sonraki işlemler vardır; bu işlemlerin gelecekte bu işlemin geçersiz hale geleceğinden haberi yoktur. Aksi takdirde, iyi sonraki işlemlerden ebeveynleri silmek zorunda kalırdık ki bu da ağın temel ilkesini ihlal eder – herhangi bir geçerli işlem deftere kabul edilmelidir.

Bu, tüm sistemin sansüre karşı dayanıklı olmasını sağlayan çok önemli bir kuraldır.
Diyelim ki tüm düzen sağlayıcıları, belirli bir işlemi ‘sansürlemek’ için anlaşma yapıyorlar. Onlar bunu göz ardı edebilir ve işlemlerinin ebeveyni olarak asla seçmeyebilir, ama bu yeterli değildir, bu işlem yine de herhangi bir anlaşmaya katılmayan ağ kullanıcıları tarafından yapılan başka bir işlemin ebeveyni olarak dolaylı olarak dahil edilebilir. Zamanla, bu işlem, sıradan kullanıcılardan daha fazla çocuk, torun ve torun çocuğu alacak şekilde büyüyerek kardan adama dönüşecek ve anlaşmaya varmış tüm düzen sağlayıcılarının bu işlemleri de göz ardı etmeleri gerekecek. Sonuçta, tüm ağı sansürlemeleri gerekecek ki bu da sabotaja eşdeğerdir.

Böylece, DAG, düzen sağlayıcılarının anlaşması olsa bile sansüre dayanıklı kalır, bu yönüyle blok zincirinden daha üstün, çünkü madenciler herhangi bir işlemi dahil etmemeye karar verdiğinde yapacak hiçbir şeyimiz yoktur. Bu, DAG'ın temel özelliğinden kaynaklanır: deftere katılım tamamen bağımsız ve aracısızdır, işlemler ise geri alınamaz.
Mənbə: habr.com
