ТОН: Телеграм отворена мрежа. Део 2: Блоцкцхаинс, шардинг

ТОН: Телеграм отворена мрежа. Део 2: Блоцкцхаинс, шардинг

Овај текст је наставак серије чланака у којима истражујем структуру (вероватно) дистрибуиране мреже Телеграм Опен Нетворк (ТОН), која се припрема за објављивање ове године. ИН претходни део Описао сам његов најосновнији ниво - начин на који чворови међусобно комуницирају.

За сваки случај, да вас подсетим да немам никакве везе са развојем ове мреже и сав материјал је преузет из отвореног (додуше непровереног) извора - документи (постоји и пратећа брошура, укратко излажући главне тачке), који се појавио крајем прошле године. Количина информација у овом документу, по мом мишљењу, указује на његову аутентичност, иако за то нема званичне потврде.

Данас ћемо погледати главну компоненту ТОН-а - блоцкцхаин.

Основни појмови

Рачун (рачун). Скуп података идентификованих 256-битним бројем ИД налога (најчешће је то јавни кључ власника налога). У основном случају (погледајте доле нулти радни ланац), ови подаци се односе на стање корисника. „Окупирај“ специфично ИД налога свако може, али се његова вредност може мењати само по одређеним правилима.

Паметан уговор (паметни уговор). У суштини, то је посебан случај налога, допуњен кодом паметног уговора и складиштењем његових променљивих. Ако у случају „новчаника“ можете уплатити и повући новац из њега према релативно једноставним и унапред одређеним правилима, онда су у случају паметног уговора та правила написана у облику његовог кода (у одређеном Туринг-комплетном програмски језик).

Блоцкцхаин Стате (стање блокчејна). Скуп стања свих налога/паметних уговора (у апстрактном смислу, хеш табела, где су кључеви идентификатори налога, а вредности подаци који се чувају у налозима).

Порука (порука). Горе сам користио израз „кредитни и дебитни новац“ - ово је посебан пример поруке („трансфер Н грама са рачуна аццоунт_1 на рачун аццоунт_2"). Очигледно, само чвор који поседује приватни кључ налога може послати такву поруку аццоунт_1 - и то може потврдити потписом. Резултат достављања оваквих порука редовном налогу је повећање његовог стања, а резултат паметног уговора је извршење његовог кода (који ће обрадити пријем поруке). Наравно, могуће су и друге поруке (преношење не новчаних износа, већ произвољних података између паметних уговора).

трансакција (трансакција). Чињеница да је порука испоручена назива се трансакција. Трансакције мењају стање блоцкцхаина. Трансакције (записи о испоруци порука) чине блокове у блокчејну. С тим у вези, можете замислити стање блоцкцхаина као инкременталну базу података – сви блокови су „диффс“ који се морају применити секвенцијално да би се добило тренутно стање базе података. Специфичности паковања ових „дифова“ (и враћања пуног стања из њих) биће разматране у следећем чланку.

Блоцкцхаин у ТОН-у: шта је то и зашто?

Као што је поменуто у претходном чланку, блоцкцхаин је структура података чији су елементи (блокови) поређани у „ланац“, а сваки следећи блок ланца садржи хеш претходног. Коментари су постављали питање: зашто нам је уопште потребна таква структура података када већ имамо ДХТ – дистрибуирану хеш табелу? Очигледно, неки подаци се могу чувати у ДХТ-у, али ово је погодно само за не превише „осетљиве“ информације. Салдо криптовалута се не може чувати у ДХТ-у - првенствено због недостатка провера интегритет. Заправо, целокупна сложеност структуре блокчејна расте како би се спречило мешање у податке који се у њој чувају.

Међутим, блокчејн у ТОН-у изгледа још сложеније него у већини других дистрибуираних система – и то из два разлога. Први је жеља да се минимизира потреба за виљушке. У традиционалним криптовалутама, сви параметри су постављени у почетној фази и сваки покушај њихове промене заправо доводи до појаве „алтернативног универзума криптовалута“. Други разлог је подршка за дробљење (схадинг, схадинг) блоцкцхаин. Блоцкцхаин је структура која не може постати мања током времена; и обично је сваки чвор одговоран за рад мреже принуђен да га складишти у потпуности. У традиционалним (централизованим) системима се за решавање оваквих проблема користи шардирање: неки записи у бази података се налазе на једном серверу, неки на другом итд. У случају криптовалута, таква функционалност је још увек прилично ретка - посебно због чињенице да је тешко додати шардовање систему где то није првобитно планирано.

Како ТОН планира да реши оба горња проблема?

Блоцкцхаин садржај. Воркцхаинс.

ТОН: Телеграм отворена мрежа. Део 2: Блоцкцхаинс, шардинг

Пре свега, хајде да разговарамо о томе шта се планира чувати у блокчејну. Стања налога („новчаници“ у основном случају) и паметни уговори ће бити ускладиштени тамо (ради једноставности, претпоставићемо да је ово исто што и налози). У суштини, ово ће бити обична хеш табела - кључеви у њој ће бити идентификатори ИД налога, а вредности су структуре података које садрже ствари као што су:

  • равнотежа;
  • шифра паметног уговора (само за паметне уговоре);
  • складиштење података о паметним уговорима (само за паметне уговоре);
  • статистика;
  • (факултативно) јавни кључ за трансфере са рачуна, подразумевано аццоунт_ид;
  • ред одлазних порука (овде се уносе за прослеђивање примаоцу);
  • списак најновијих порука испоручених на овај налог.

Као што је горе поменуто, сами блокови се састоје од трансакција - порука које се испоручују на различите налоге аццоунт_ид. Међутим, поред аццоунт_ид, поруке садрже и 32-битно поље воркцхаин_ид — идентификатор тзв радни ланац (радни ланац, радни блоцкцхаин). Ово вам омогућава да имате неколико блок ланаца независних један од другог са различитим конфигурацијама. У овом случају, воркцхаин_ид = 0 се сматра посебним случајем, нулти радни ланац — биланси у њему ће одговарати криптовалути ТОН (Грамс). Највероватније, у почетку, други радни ланци уопште неће постојати.

Схардцхаинс. Парадигма бесконачног шардинга.

Али раст броја блокчејнова се ту не зауставља. Хајде да се позабавимо шардањем. Замислимо да је сваком налогу (аццоунт_ид) додељен сопствени блок ланац – он садржи све поруке које му стижу – а стања свих таквих блокова се чувају на одвојеним чворовима.

Наравно, ово је веома расипно: највероватније, у сваком од ових схардцхаинс (схардцхаин, схард блоцкцхаин) трансакције ће стизати веома ретко и биће потребно много моћних чворова (гледајући унапред, напомињем да не говоримо само о клијентима на мобилним телефонима – већ о озбиљним серверима).

Према томе, ланац шарда комбинује налоге према бинарним префиксима својих идентификатора: ако шардлајн има префикс 0110, онда ће укључити трансакције свих аццоунт_ид-ова који почињу овим бројевима. Ово схард_префик може имати дужину од 0 до 60 бита - а главна ствар је да се може динамички мењати.

ТОН: Телеграм отворена мрежа. Део 2: Блоцкцхаинс, шардинг

Чим један од схардцхаин-ова почне да прима превише трансакција, чворови који раде на њему, према унапред одређеним правилима, га „поделе“ на два детета – њихови префикси ће бити за један мало дужи (а за једног од њих овај бит ће бити једнако 0, а за други - 1). На пример, схард_префик = 0110б ће се поделити на 01100б и 01101б. Заузврат, ако два „суседна“ ланца шарда почну да се осећају довољно опуштено (неко време), они ће се поново спојити.

Дакле, шардовање се врши „одоздо према горе“ – претпостављамо да сваки налог има свој шард, али су за сада „слепљени“ префиксима. То је оно што то значи Парадигма бесконачног шардинга (парадигма бесконачног шардинга).

Посебно, желео бих да нагласим да ланци рада постоје само виртуелно - заправо, воркцхаин_ид то је део идентификатора специфичног шардланца. У формалном смислу, сваки схардцхаин је дефинисан паром бројева (воркцхаин_ид, схард_префик).

Корекција грешке. Вертикални блокови.

Традиционално, свака трансакција на блокчејну се сматра „уклесаном“. Међутим, у случају ТОН-а могуће је „преписати историју“ – у случају да неко (тзв. рибарски чвор) ће доказати да је један од блокова погрешно потписан. У овом случају, посебан блок корекције се додаје одговарајућем ланцу шарда, који садржи хеш самог блока који се исправља (а не последњег блока у ланцу шарда). Размишљајући о схардцхаин-у као ланцу блокова постављених хоризонтално, можемо рећи да је корективни блок причвршћен за погрешни блок не десно, већ одозго - тако да се сматра да постаје део малог „вертикалног ланца блокова“ . Дакле, можемо рећи да су шардланци дводимензионални блок ланци.

ТОН: Телеграм отворена мрежа. Део 2: Блоцкцхаинс, шардинг

Ако су, након погрешног блока, промене које је извршио референцирале наредни блокови (тј. нове трансакције су направљене на основу неважећих), исправне се такође додају овим блоковима „на врх“. Ако блокови нису утицали на „погођене“ информације, ови „корективни таласи“ се не примењују на њих. На пример, на горњој илустрацији, трансакција првог блока, повећавајући стање рачуна Ц, препозната је као нетачна – дакле, трансакцију којом се смањује стање овог рачуна у трећем блоку такође треба поништити, а корективни блок треба да буде урезан на врху самог блока.

Треба напоменути да иако су корективни блокови приказани као лоцирани „изнад“ оригиналних, они ће у ствари бити додати на крај одговарајућег ланца блокова (где би требало да буду хронолошки). Дводимензионална локација само показује на коју тачку у блок ланцу ће бити „повезани“ (преко хеша оригиналног блока који се налази у њима).

Можете засебно филозофирати о томе колико је добра одлука да се „промени прошлост“. Чини се да ако признамо могућност појаве погрешног блока у ланцу шарда, онда не можемо избећи могућност да се појави погрешан корективни блок. Овде, колико могу да проценим, разлика је у броју чворова који морају да постигну консензус о новим блоковима – биће релативно мали број људи који ће радити на сваком шардлајну.“радна група» чворови (који прилично често мења свој састав), а за увођење корективних блокова биће потребна сагласност свих чворови валидатора. Говорићу више о валидаторима, радним групама и другим улогама чворова у следећем чланку.

Један блок-чејн да влада њима свима

Постоји много горе наведених информација о различитим типовима блок-чејна, које би такође требало негде да се чувају. Конкретно, говоримо о следећим информацијама:

  • о броју и конфигурацијама радних ланаца;
  • о броју шард ланаца и њихових префикса;
  • о томе који су чворови тренутно одговорни за које шардланове;
  • хешови последњих блокова додати свим шард ланцима.

Као што сте могли да претпоставите, све ове ствари су снимљене у другом блокчејн складишту - мастерцхаин (мастерцхаин, мастер блоцкцхаин). Због присуства хешова из блокова свих шард ланаца у својим блоковима, чини систем високо повезаним. То значи, између осталог, да ће се генерисање новог блока у мастер ланцу десити одмах након генерисања блокова у шард ланцима – очекује се да ће се блокови у шард ланцима појавити скоро истовремено отприлике сваких 5 секунди, а следећи блок у мастерцхаин - секунду након тога.

Али ко ће бити одговоран за спровођење целог овог титанског посла – за слање порука, извршавање паметних уговора, формирање блокова у шард ланцима и мастер ланцу, па чак и проверу блокова на грешке? Да ли ће све то тајно радити телефони милиона корисника на којима је инсталиран Телеграм клијент? Или ће, можда, тим Дурова одустати од идеје децентрализације и њихови сервери ће то учинити на старински начин?

У ствари, ни један ни други одговор није тачан. Али маргине овог чланка брзо понестају, па ћемо о разним улогама чворова (можда сте већ приметили помињање неких од њих), као и о механици њиховог рада, говорити у следећем делу.

Извор: ввв.хабр.цом

Додај коментар