TON: Telegram Açıq Şəbəkə. 2-ci hissə: Blokçeynlər, parçalanma

TON: Telegram Açıq Şəbəkə. 2-ci hissə: Blokçeynlər, parçalanma

Bu mətn bu il buraxılmağa hazırlanan (ehtimal ki) paylanmış şəbəkə Telegram Open Network (TON) strukturunu araşdırdığım bir sıra məqalələrin davamıdır. IN əvvəlki hissə Mən onun ən əsas səviyyəsini - qovşaqların bir-biri ilə qarşılıqlı əlaqəsini təsvir etdim.

Hər halda, sizə xatırlatmaq istərdim ki, mənim bu şəbəkənin inkişafı ilə heç bir əlaqəm yoxdur və bütün materiallar açıq (təsdiqlənməmiş olsa da) mənbədən toplanıb - sənəd (müşayət edən də var broşura, əsas məqamları qısaca qeyd etməklə), keçən ilin sonunda ortaya çıxdı. Bu sənəddəki məlumatların miqdarı, fikrimcə, onun həqiqiliyini göstərir, baxmayaraq ki, bunun rəsmi təsdiqi yoxdur.

Bu gün biz TON-un əsas komponentinə - blokçeynə baxacağıq.

Əsas anlayışlar

Haqq-hesab (hesab). 256 bitlik nömrə ilə müəyyən edilmiş məlumat dəsti İstifadəçi ID (əksər hallarda bu hesab sahibinin açıq açarıdır). Əsas halda (aşağıya baxın sıfır iş zənciri), bu məlumat istifadəçinin balansına aiddir. "İşğal" xüsusi İstifadəçi ID hər kəs edə bilər, lakin onun dəyəri yalnız müəyyən qaydalara uyğun olaraq dəyişdirilə bilər.

Ağıllı müqavilə (ağıllı müqavilə). Əslində, bu, ağıllı müqavilə kodu və dəyişənlərinin saxlanması ilə tamamlanan xüsusi bir hesab vəziyyətidir. Əgər “pul kisəsi” vəziyyətində siz nisbətən sadə və əvvəlcədən müəyyən edilmiş qaydalara uyğun olaraq ondan pul qoya və çıxara bilirsinizsə, ağıllı müqavilə vəziyyətində bu qaydalar onun kodu şəklində yazılır (müəyyən Turing-komplektdə) proqramlaşdırma dili).

Blockchain Dövləti (blockchain vəziyyəti). Bütün hesabların/ağıllı müqavilələrin dövlətlər dəsti (mücərrəd mənada, açarların hesab identifikatorları, dəyərlər isə hesablarda saxlanılan məlumatlar olan hash cədvəli).

İsmarıc (Mesaj). Yuxarıda "kredit və debet pulu" ifadəsini istifadə etdim - bu mesajın xüsusi bir nümunəsidir ("köçürmə" N qram hesabdan hesab_1 hesabına hesab_2"). Aydındır ki, yalnız hesabın şəxsi açarına sahib olan qovşaq belə bir mesaj göndərə bilər hesab_1 - və bunu imza ilə təsdiq edə bilər. Bu cür mesajların müntəzəm hesaba çatdırılmasının nəticəsi onun balansının artmasıdır və smart müqavilənin nəticəsi onun kodunun icrasıdır (mesajın qəbulunu emal edəcək). Əlbəttə ki, digər mesajlar da mümkündür (pul məbləğləri deyil, ağıllı müqavilələr arasında ixtiyari məlumatların ötürülməsi).

Əməliyyat (əməliyyat). Mesajın çatdırılması faktına əməliyyat deyilir. Əməliyyatlar blokçeynin vəziyyətini dəyişir. Blockchain-də blokları təşkil edən əməliyyatlardır (mesajın çatdırılması qeydləri). Bununla əlaqədar olaraq, blokçeynin vəziyyətini artımlı verilənlər bazası kimi düşünə bilərsiniz - bütün bloklar verilənlər bazasının cari vəziyyətini əldə etmək üçün ardıcıl olaraq tətbiq edilməli olan "fərqlərdir". Bu "fərqlərin" qablaşdırılmasının xüsusiyyətləri (və onlardan tam vəziyyəti bərpa etmək) növbəti məqalədə müzakirə ediləcəkdir.

TON-da blokçeyn: bu nədir və niyə?

Əvvəlki məqalədə qeyd edildiyi kimi, blokçeyn məlumat strukturudur, elementləri (blokları) “zəncir” şəklində sıralanır və zəncirin hər bir sonrakı bloku əvvəlkinin hashını ehtiva edir.. Şərhlər belə bir sual verdi: bizdə DHT - paylanmış hash cədvəli olduğu halda ümumiyyətlə belə bir məlumat strukturuna niyə ehtiyacımız var? Aydındır ki, bəzi məlumatlar DHT-də saxlanıla bilər, lakin bu, yalnız çox “həssas” olmayan məlumatlar üçün uyğundur. Kriptovalyuta qalıqları DHT-də saxlanıla bilməz - ilk növbədə yoxlamaların olmaması səbəbindən bütövlük. Əslində, blokçeyn strukturunun bütün mürəkkəbliyi onda saxlanılan məlumatlara müdaxilənin qarşısını almaq üçün artır.

Bununla belə, TON-dakı blokçeyn digər paylanmış sistemlərdən daha mürəkkəb görünür - və iki səbəbə görə. Birincisi, ehtiyacı minimuma endirmək istəyidir çəngəllər. Ənənəvi kriptovalyutalarda bütün parametrlər ilkin mərhələdə müəyyən edilir və onları dəyişdirmək cəhdi əslində “alternativ kriptovalyuta kainatının” yaranmasına gətirib çıxarır. İkinci səbəb əzmək üçün dəstəkdir (parçalanma, parçalanma) blokçeyn. Blokçeyn zamanla kiçilməyə bilməyən bir quruluşdur; və adətən şəbəkənin işinə cavabdeh olan hər bir node onu tamamilə saxlamağa məcbur olur. Ənənəvi (mərkəzləşdirilmiş) sistemlərdə bu cür problemlərin həlli üçün sharding istifadə olunur: verilənlər bazasında qeydlərin bir hissəsi bir serverdə, bəziləri digərində və s. Kriptovalyutalara gəldikdə, bu cür funksionallıq hələ də kifayət qədər nadirdir - xüsusən, əvvəlcə planlaşdırılmadığı bir sistemə şərdinq əlavə etmək çətin olduğuna görə.

TON yuxarıdakı problemlərin hər ikisini necə həll etməyi planlaşdırır?

Blockchain məzmunu. İş zəncirləri.

TON: Telegram Açıq Şəbəkə. 2-ci hissə: Blokçeynlər, parçalanma

Əvvəlcə blokçeynində nələrin saxlanması planlaşdırıldığından danışaq. Hesabların vəziyyəti (əsas halda pul kisəsi) və ağıllı müqavilələr orada saxlanılacaq (sadəlik üçün bunun hesablarla eyni olduğunu güman edəcəyik). Əslində bu, adi hash cədvəli olacaq - içindəki açarlar identifikatorlar olacaq İstifadəçi ID, və dəyərlər aşağıdakıları ehtiva edən məlumat strukturlarıdır:

  • balans;
  • ağıllı müqavilə kodu (yalnız ağıllı müqavilələr üçün);
  • ağıllı müqavilə məlumatlarının saxlanması (yalnız smart müqavilələr üçün);
  • statistika;
  • (isteğe bağlı) hesabdan köçürmələr üçün açıq açar, defolt olaraq account_id;
  • gedən mesajların növbəsi (burada onlar alıcıya yönləndirmək üçün daxil edilir);
  • bu hesaba çatdırılan ən son mesajların siyahısı.

Yuxarıda qeyd edildiyi kimi, blokların özləri əməliyyatlardan ibarətdir - müxtəlif account_id hesablarına çatdırılan mesajlar. Bununla belə, account_id-ə əlavə olaraq mesajlarda 32 bitlik sahə də var workchain_id — identifikator deyilən iş zənciri (iş zənciri, işləyən blokçeyn). Bu, müxtəlif konfiqurasiyaları olan bir-birindən asılı olmayan bir neçə blokcheyn əldə etməyə imkan verir. Bu halda, workchain_id = 0 xüsusi hal hesab olunur, sıfır iş zənciri — TON (Qram) kriptovalyutasına uyğun gələn qalıqlardır. Çox güman ki, əvvəlcə digər iş zəncirləri ümumiyyətlə olmayacaq.

Shardchains. Sonsuz Parçalanma Paradiqması.

Lakin blokçeynlərin sayındakı artım bununla bitmir. Gəlin parçalanma ilə məşğul olaq. Təsəvvür edək ki, hər bir hesaba (account_id) öz blokçeyni ayrılıb – o, ona gələn bütün mesajları ehtiva edir – və bütün belə blokçeynlərin vəziyyətləri ayrı-ayrı qovşaqlarda saxlanılır.

Əlbəttə ki, bu, çox israfçılıqdır: çox güman ki, bunların hər birində shardchains (shardchain, qırıq blokçeyn) əməliyyatlar çox nadir hallarda gələcək və çoxlu güclü qovşaqlara ehtiyac olacaq (irəliyə baxanda qeyd edirəm ki, biz təkcə mobil telefonlardakı müştərilərdən deyil, ciddi serverlərdən danışırıq).

Buna görə də, shardchainlər hesabları öz identifikatorlarının binar prefiksləri ilə birləşdirir: əgər shardchain-in 0110 prefiksi varsa, o zaman bu nömrələrlə başlayan bütün account_id-lərin əməliyyatlarını əhatə edəcək. Bu shard_prefiks 0-dan 60 bitə qədər uzunluğa malik ola bilər - və əsas odur ki, dinamik olaraq dəyişə bilər.

TON: Telegram Açıq Şəbəkə. 2-ci hissə: Blokçeynlər, parçalanma

Shardchainlərdən biri həddindən artıq çox əməliyyat almağa başlayan kimi, üzərində işləyən qovşaqlar, əvvəlcədən müəyyən edilmiş qaydalara uyğun olaraq, onu iki uşağa "bölürlər" - onların prefiksləri bir az daha uzun olacaq (və onlardan biri üçün bu bit olacaq). 0-a bərabər, digəri üçün isə 1). Misal üçün, shard_prefiks = 0110b bölünəcək 01100b və 01101b. Öz növbəsində, iki "qonşu" zəncir kifayət qədər rahat hiss etməyə başlasa (bir müddət), onlar yenidən birləşəcəklər.

Beləliklə, parçalanma "aşağıdan yuxarı" aparılır - hər bir hesabın öz parçası olduğunu güman edirik, lakin hələlik onlar prefikslərlə "bir-birinə yapışdırılır". Bunun mənası budur Sonsuz Parçalanma Paradiqması (sonsuz parçalanma paradiqması).

Ayrı-ayrılıqda vurğulamaq istərdim ki, işçi zəncirləri yalnız virtual olaraq mövcuddur - əslində, workchain_id bu, xüsusi bir shardchain identifikatorunun bir hissəsidir. Formal olaraq, hər bir zəncir bir cüt nömrə ilə müəyyən edilir (workchain_id, shard_prefiks).

Səhv korreksiyası. Şaquli blokçeynlər.

Ənənəvi olaraq, blokçeyndəki hər hansı bir əməliyyat "daşa qoyulmuş" hesab olunur. Bununla belə, TON vəziyyətində, "tarixi yenidən yazmaq" mümkündür - kimsə (sözdə. balıqçı düyünü) bloklardan birinin yanlış imzalandığını sübut edəcək. Bu halda, korreksiya olunan blokun özünün (həm də shardchain-dəki sonuncu bloku deyil) hashını ehtiva edən müvafiq shardchain-ə xüsusi korreksiya bloku əlavə olunur. Shardchain-i üfüqi şəkildə düzülmüş bloklar zənciri kimi düşünərək, deyə bilərik ki, düzəldici blok səhv bloka sağa deyil, yuxarıdan yapışdırılır - buna görə də onun kiçik "şaquli blokcheynin" bir hissəsi olduğu hesab olunur. . Beləliklə, biz shardchain olduğunu söyləyə bilərik iki ölçülü blokçeynlər.

TON: Telegram Açıq Şəbəkə. 2-ci hissə: Blokçeynlər, parçalanma

Səhv blokdan sonra onun etdiyi dəyişikliklərə sonrakı bloklar tərəfindən istinad edilirsə (yəni, etibarsız olanlar əsasında yeni əməliyyatlar aparılıbsa), düzəldici olanlar da bu bloklara “yuxarıda” əlavə olunur. Bloklar "təsirə məruz qalan" məlumatlara təsir etməyibsə, bu "düzəldici dalğalar" onlara şamil edilmir. Məsələn, yuxarıdakı təsvirdə C hesabının balansını artıran birinci blokun əməliyyatı səhv hesab edilmişdir - buna görə də üçüncü blokda bu hesabın qalığını azaldan əməliyyat da ləğv edilməli və düzəldici blok blokun özü üzərində törədilməlidir.

Qeyd etmək lazımdır ki, düzəldici bloklar orijinalların "yuxarıda" yerləşdiyi kimi təsvir edilsə də, əslində onlar müvafiq blokçeynin sonuna əlavə olunacaqlar (onlar xronoloji qaydada olmalıdır). İki ölçülü yer yalnız blokçeynin hansı nöqtəsinə “əlaqələndiriləcəyini” göstərir (onlarda yerləşən orijinal blokun hashı vasitəsilə).

"Keçmişi dəyişdirmək" qərarının nə qədər yaxşı olduğunu ayrıca fəlsəfə edə bilərsiniz. Belə görünür ki, biz shardchain-də səhv blokun görünməsi ehtimalını qəbul etsək, səhv düzəldici blokun görünməsi ehtimalından qaça bilmərik. Burada, deyə bildiyim qədər, fərq yeni bloklar üzrə konsensusa çatmalı olan qovşaqların sayındadır – hər bir shardchain üzərində işləyən nisbətən az sayda insan olacaq”.işçi qrupu» qovşaqları (tərkibini tez-tez dəyişir) və düzəldici blokların tətbiqi hər kəsin razılığını tələb edir validator qovşaqları. Növbəti məqalədə validatorlar, işçi qrupları və digər qovşaq rolları haqqında daha çox danışacağam.

Hamısını idarə etmək üçün bir blokçeyn

Müxtəlif növ blokçeynlər haqqında yuxarıda sadalanan çoxlu məlumat var ki, onlar da haradasa saxlanmalıdır. Xüsusilə, aşağıdakı məlumatlardan danışırıq:

  • iş zəncirlərinin sayı və konfiqurasiyası haqqında;
  • shardchainlərin sayı və onların prefiksləri haqqında;
  • hazırda hansı qovşaqların hansı shardchainlərə cavabdeh olduğu haqqında;
  • bütün shardchainlərə əlavə edilən son blokların hashləri.

Təxmin etdiyiniz kimi, bütün bunlar başqa bir blokçeyn yaddaşında qeyd olunur - masterchain (usta zənciri, master blockchain). Bloklarında bütün shardchain bloklarından hashlərin olması səbəbindən sistemi yüksək dərəcədə əlaqəli edir. Bu, digər şeylərlə yanaşı, masterchain-də yeni blokun yaradılmasının shardchain-də blokların yaradılmasından dərhal sonra baş verəcəyi deməkdir - ehtimal olunur ki, shardchain-lərdə bloklar təxminən eyni vaxtda təxminən hər 5 saniyədən bir, növbəti blok isə hər XNUMX saniyədə görünəcək. masterchain - bundan bir saniyə sonra.

Bəs bütün bu titanik işlərin həyata keçirilməsinə kim cavabdeh olacaq - mesajların göndərilməsi, ağıllı müqavilələrin icrası, shardchain və masterchain-də blokların formalaşdırılması və hətta blokların səhvlərə görə yoxlanması? Bütün bunları Telegram müştərisi quraşdırılmış milyonlarla istifadəçinin telefonları gizli şəkildə edəcəkmi? Yoxsa Durov komandası mərkəzsizləşdirmə ideyalarından imtina edəcək və onların serverləri bunu köhnə üsulla edəcəklər?

Əslində nə biri, nə də digər cavab düzgün deyil. Ancaq bu məqalənin kənarları tez tükənir, buna görə də növbəti hissədə qovşaqların müxtəlif rolları (bəzilərinin qeyd edildiyini artıq görmüsünüz), eləcə də onların işinin mexanikası haqqında danışacağıq.

Mənbə: www.habr.com

Добавить комментарий