TON: Telegram Open Network. Parti 2: Blockchains, sharding

TON: Telegram Open Network. Parti 2: Blockchains, sharding

Dan it-test huwa kontinwazzjoni ta 'serje ta' artikoli li fihom nikkunsidra l-istruttura tan-netwerk (preżumibbilment) distribwit Telegram Open Network (TON), li qed jitħejja għar-rilaxx din is-sena. IN parti preċedenti Iddeskrivejt il-livell l-aktar bażiku tiegħu - il-mod kif in-nodi jinteraġixxu ma 'xulxin.

Fil-każ, ħalluni nfakkarkom li m'għandi x'taqsam xejn mal-iżvilupp ta' dan in-netwerk u l-materjal kollu nġabar minn sors miftuħ (għalkemm mhux verifikat) - dokument (hemm ukoll akkumpanjament fuljett, li tiddeskrivi fil-qosor il-punti ewlenin), li dehru fl-aħħar tas-sena li għaddiet. L-ammont ta' informazzjoni f'dan id-dokument, fl-opinjoni tiegħi, jindika l-awtentiċità tiegħu, għalkemm m'hemm l-ebda konferma uffiċjali ta' dan.

Illum se nħarsu lejn il-komponent ewlieni ta 'TON - il-blockchain.

Kunċetti bażiċi

Kont (kont). Sett ta' data identifikat b'numru ta' 256-bit account_id (l-aktar spiss din hija ċ-ċavetta pubblika tas-sid tal-kont). Fil-każ bażi (ara hawn taħt katina tax-xogħol żero), din id-dejta tirreferi għall-bilanċ tal-utent. "Occupy" speċifiku account_id kulħadd jista ', imma inti tista' tbiddel il-valur tiegħu biss skond ċerti regoli.

Kuntratt intelliġenti (kuntratt intelliġenti). Fil-fatt, huwa każ speċjali ta 'kont, supplimentat b'kodiċi ta' kuntratt intelliġenti u ħażna tal-varjabbli tiegħu. Jekk fil-każ ta '"kartiera" huwa possibbli li tikkredita u tirtira flus minnha skond regoli relattivament sempliċi u predeterminati, allura fil-każ ta' kuntratt intelliġenti, dawn ir-regoli jinkitbu fil-forma tal-kodiċi tiegħu (f'xi Turing -lingwa ta' programmar kompluta).

Stat tal-blockchain (stat tal-blockchain). Is-sett ta 'stati tal-kontijiet kollha / kuntratti intelliġenti (fis-sens astratt, tabella hash, fejn iċ-ċwievet huma identifikaturi tal-kontijiet, u l-valuri huma d-dejta maħżuna fil-kontijiet).

Messaġġ (messaġġ). Fuq, użajt l-espressjoni "kreditu u ħassar il-flus" - dan huwa eżempju partikolari ta 'messaġġ ("trasferiment N grammi mill-kont kont_1 biex tagħti kont kont_2"). Ovvjament, in-nodu biss li jippossjedi ċ-ċavetta privata tal-kont jista 'jibgħat messaġġ bħal dan. kont_1 - u kapaċi tikkonfermaha b'firma. Ir-riżultat tat-twassil ta 'messaġġi bħal dawn f'kont regolari huwa żieda fil-bilanċ tiegħu, u għal kuntratt intelliġenti - l-eżekuzzjoni tal-kodiċi tagħha (li se tipproċessa l-irċevuta tal-messaġġ). Naturalment, messaġġi oħra huma wkoll possibbli (trasferiment mhux ammonti monetarji, iżda data arbitrarja bejn kuntratti intelliġenti).

transazzjoni (transazzjoni). Il-fatt li messaġġ jitwassal jissejjaħ transazzjoni. It-tranżazzjonijiet ibiddlu l-istat tal-blockchain. Huma tranżazzjonijiet (rekords tal-kunsinna tal-messaġġi) li jiffurmaw il-blokki fil-blockchain. F'dan ir-rigward, tista 'taħseb fl-istat tal-blockchain bħala database inkrementali - il-blokki kollha huma "diffs" li jeħtieġ li jiġu applikati b'mod sekwenzjali biex tikseb l-istat attwali tad-database. L-ispeċifiċitajiet tal-ippakkjar ta 'dawn id-"diffs" (u r-restawr tal-istat sħiħ minnhom) se jiġu diskussi fl-artikolu li jmiss.

Blockchain f'TON: x'inhu u għaliex?

Kif imsemmi fl-artikolu preċedenti, Blockchain hija struttura tad-dejta, li l-elementi (blokki) tagħha huma rranġati f'"katina", u kull blokka li jmiss tal-katina fiha hash ta 'qabel.. Il-mistoqsija saret fil-kummenti: għaliex għandna bżonn struttura tad-dejta bħal din meta diġà għandna DHT - tabella hash distribwita? Ovvjament, xi dejta tista 'tinħażen fid-DHT, iżda dan huwa adattat biss għal informazzjoni mhux wisq "sensittiva". Il-bilanċi tal-kripto-munita ma jistgħux jinħażnu fid-DHT - primarjament minħabba n-nuqqas ta 'kontrolli għal integrità. Fil-fatt, il-kumplessità kollha tal-istruttura blockchain tikber sabiex tevita interferenza mad-dejta maħżuna fiha.

Madankollu, il-blockchain f'TON tidher saħansitra aktar ikkumplikata milli fil-biċċa l-kbira tas-sistemi distribwiti l-oħra - u hemm żewġ raġunijiet għal dan. L-ewwel hija x-xewqa li timminimizza l-ħtieġa għal frieket. Fil-kripto-muniti tradizzjonali, il-parametri kollha huma stabbiliti fl-istadju inizjali u kwalunkwe tentattiv biex jinbidelhom fil-fatt iwassal għall-emerġenza ta '"univers alternattiv tal-kripto-munita." It-tieni raġuni hija l-appoġġ għat-tgħaffiġ (sharding, sharding) blockchain. Blockchain hija struttura li ma tistax tiżgħar maż-żmien; u ġeneralment kull nodu responsabbli għas-saħħa tan-netwerk huwa sfurzat jaħżen kompletament. F'sistemi tradizzjonali (ċentralizzati), sharding jintuża biex isolvi problemi bħal dawn: xi wħud mir-rekords fid-database jinsabu fuq server wieħed, xi wħud fuq ieħor, eċċ. Fil-każ tal-kripto-muniti, tali funzjonalità għadha pjuttost rari - b'mod partikolari, minħabba l-fatt li huwa diffiċli li żżid sharding ma 'sistema fejn ma kinitx oriġinarjament ippjanata.

Kif tippjana TON li ssolvi ż-żewġ problemi ta 'hawn fuq?

Kontenut Blockchain. Workchains.

TON: Telegram Open Network. Parti 2: Blockchains, sharding

L-ewwelnett, ejja nitkellmu dwar dak li huwa ppjanat li jinħażen fil-blockchain. L-istati tal-kontijiet ("kartieri" fil-każ bażi) u l-kuntratti intelliġenti (għal sempliċità, se nassumu li dan huwa l-istess bħall-kontijiet) se jinħażnu hemmhekk. Essenzjalment, din se tkun tabella hash regolari - iċ-ċwievet fiha se jkunu identifikaturi account_id, u l-valuri huma strutturi tad-dejta li fihom affarijiet bħal:

  • bilanċ;
  • kodiċi tal-kuntratt intelliġenti (għal kuntratti intelliġenti biss);
  • Ħażna tad-dejta tal-kuntratt intelliġenti (għal kuntratti intelliġenti biss);
  • statistika;
  • (mhux obbligatorju) ċavetta pubblika għal trasferimenti minn kont, account_id awtomatikament;
  • kju ta' messaġġi ħerġin (hawnhekk jiddaħħlu biex jintbagħtu lir-riċevitur);
  • lista tal-aħħar messaġġi mwassla lil dan il-kont.

Kif imsemmi hawn fuq, il-blokki nfushom jikkonsistu fi tranżazzjonijiet - messaġġi mwassla lil diversi kontijiet account_id. Madankollu, minbarra account_id, il-messaġġi fihom ukoll qasam ta' 32-bit workchain_id - identifikatur tal-hekk imsejjaħ. katina tax-xogħol (katina tax-xogħol, blockchain li jaħdem). Dan jippermettilek li jkollok diversi blockchains indipendenti b'konfigurazzjonijiet differenti. F'dan il-każ, workchain_id = 0 jitqies bħala każ speċjali, katina tax-xogħol żero - huma l-bilanċi fih li jikkorrispondu għall-munita kripto TON (Grammi). Ħafna probabbli, għall-ewwel, workchains oħra ma jeżistu xejn.

Shardchains. Paradigma Infinita Sharding.

Iżda t-tkabbir fin-numru ta 'blockchains ma jieqafx hemm. Ejja nittrattaw it-tqattigħ. Immaġina li kull kont (account_id) għandu blockchain tiegħu stess - fih il-messaġġi kollha li jirċievi - u l-istati ta 'blockchains kollha bħal dawn huma maħżuna fuq nodi separati.

Naturalment, dan huwa ħela ħafna: x'aktarx, f'kull wieħed minn dawn shardchains (shardchain, shard blockchain) tranżazzjonijiet se jiġu riċevuti rari ħafna, u se jkunu meħtieġa ħafna nodi qawwija (b'ħarsa 'l quddiem, ninnota li qed nitkellmu mhux biss dwar klijenti fuq telefowns ċellulari - iżda dwar servers serji).

Għalhekk, shardchains jgħaqqdu l-kontijiet bil-prefissi binarji tal-identifikaturi tagħhom: jekk shardchain għandu prefiss ta '0110, allura se jinkludi tranżazzjonijiet tal-account_ids kollha li jibdew b'dawn in-numri. Dan shard_prefix jista 'jkollu tul minn 0 sa 60 bit - u l-aktar importanti, jista' jinbidel b'mod dinamiku.

TON: Telegram Open Network. Parti 2: Blockchains, sharding

Hekk kif wisq tranżazzjonijiet jibdew jidħlu f'wieħed mill-shardchains, in-nodi li jaħdmu fuqha, skond regoli predeterminati, "qasmu" f'żewġ tfal - il-prefissi tagħhom se jkunu daqsxejn itwal (u għal wieħed minnhom dan il-bit se jkun 0, u għall-ieħor - 1). Pereżempju, shard_prefix = 0110b se jinqasam fi 01100b u 01101b. Min-naħa tagħhom, jekk żewġ shardchains "ġirien" jibdew iħossuhom komdi biżżejjed (għal xi żmien), jerġgħu jingħaqdu.

Għalhekk, sharding isir "minn isfel għal fuq" - nassumu li kull kont għandu shard tiegħu, iżda huma - għalissa - "inkollati" bi prefissi. Dan huwa dak li jfisser Paradigma Infinita Sharding (paradigma ta' sharding infinita).

Separatament, nixtieq nenfasizza li workchains jeżistu biss virtwalment - fil-fatt, workchain_id hija parti mill-identifikatur ta 'shardchain partikolari. F'termini formali, kull shardchain hija definita minn par ta 'numri (workchain_id, shard_prefix).

Korrezzjoni ta' żball. Blockchains vertikali.

Tradizzjonalment huwa maħsub li kwalunkwe tranżazzjoni fil-blockchain hija "stabbilita fil-ġebel". Madankollu, fil-każ ta 'TON, huwa possibbli li "tikteb l-istorja" - f'każ li xi ħadd (l-hekk imsejjaħ. għoqda tas-sajjied) se jipprova li wieħed mill-blokki kien iffirmat ħażin. F'dan il-każ, blokka korrettiva speċjali hija miżjuda mal-shardchain korrispondenti, li jkun fiha l-hash tal-blokk ikkoreġut innifsu (u mhux l-aħħar blokk fil-shardchain). Nirrappreżenta l-shardchain bħala katina ta 'blokki mqiegħda orizzontalment, nistgħu ngħidu li l-blokka korrettiva hija mwaħħla mal-blokk żbaljat mhux lejn il-lemin, iżda minn fuq - għalhekk, huwa kkunsidrat li ssir parti minn "blockchain vertikali" żgħira. . Għalhekk, nistgħu ngħidu li shardchains huma blockchains bidimensjonali.

TON: Telegram Open Network. Parti 2: Blockchains, sharding

Jekk, wara blokk żbaljat, blokki sussegwenti jirreferu għall-bidliet magħmula minnha (jiġifieri saru tranżazzjonijiet ġodda bbażati fuq dawk invalidi), dawk korrettivi huma miżjuda wkoll ma 'dawn il-blokki "minn fuq". Jekk il-blokki ma affettwawx l-informazzjoni "affetwata", dawn il-"mewġ korrettivi" ma japplikawx għalihom. Pereżempju, fl-illustrazzjoni ta’ hawn fuq, it-tranżazzjoni tal-ewwel blokk, li żiedet il-bilanċ tal-kont C, ġiet rikonoxxuta bħala żbaljata — għalhekk, it-tranżazzjoni li naqqset il-bilanċ ta’ dan il-kont fit-tielet blokk trid tiġi kkanċellata wkoll, u blokk korrettiv ġie kommess fuq il-blokk innifsu.

Għandu jiġi nnutat li għalkemm il-blokki korrettivi huma mpinġi bħala li jinsabu "fuq" dawk oriġinali, fil-fatt se jiżdiedu mat-tarf tal-blockchain korrispondenti (fejn għandhom ikunu lokalizzati kronoloġikament). L-arranġament bidimensjonali juri biss sa liema punt fil-blockchain se jkunu "hooked" (permezz tal-hash tal-blokk oriġinali li jinsab fihom).

Tista’ tiffilosofizza separatament dwar kemm hi tajba d-deċiżjoni li “tbiddel il-passat”. Jidher li jekk inħallu l-possibbiltà tad-dehra ta 'blokk mhux korrett fil-shardchain, allura ma nistgħux nipprevjenu l-possibbiltà tad-dehra ta' blokka korrettiva żbaljata. Hawnhekk, safejn nista 'ngħid, id-differenza fin-numru ta' nodi li għandhom jilħqu kunsens dwar blokki ġodda - relattivament żgħar se jaħdmu fuq kull shardchain "grupp ta’ ħidma» nodi (pjuttost li jinbidlu l-kompożizzjoni tiegħu), u l-introduzzjoni ta 'blokki korrettivi se teħtieġ il-kunsens ta' kulħadd nodi validaturi. Ser nitkellem aktar dwar validaturi, gruppi ta 'ħidma, u rwoli oħra ta' nodi fl-artiklu li jmiss.

Blockchain waħda biex tmexxihom kollha

Dan ta 'hawn fuq jelenka ħafna informazzjoni dwar it-tipi differenti ta' blockchains, li minnha nnifisha għandhom ukoll jinħażnu x'imkien. B'mod partikolari, qed nitkellmu dwar l-informazzjoni li ġejja:

  • dwar in-numru u l-konfigurazzjonijiet tal-workchains;
  • dwar in-numru ta 'shardchains u l-prefissi tagħhom;
  • dwar liema nodi huma attwalment responsabbli għal liema shardchains;
  • hashes tal-aħħar blokki miżjuda mal-shardchains kollha.

Kif forsi bdejt, dawn l-affarijiet kollha huma rreġistrati f'ħażna blockchain oħra - masterchain (masterchain, blockchain kaptan). Minħabba l-preżenza ta 'hashes mill-blokki tal-shardchains kollha fil-blokki tagħha, tagħmel is-sistema konnessa ħafna. Fost affarijiet oħra, dan ifisser li l-ġenerazzjoni ta 'blokki ġodda fil-masterchain se sseħħ immedjatament wara l-ġenerazzjoni ta' blokki fil-shardchains - huwa mistenni li blokki fil-shardchains se jidhru kważi simultanjament bejn wieħed u ieħor kull 5 sekondi, u l-blokk li jmiss f' il-masterchain - it-tieni wara dak.

Imma min se jkun responsabbli għall-implimentazzjoni ta 'dan ix-xogħol titaniku kollu - biex jibgħat messaġġi, jesegwixxi kuntratti intelliġenti, jifforma blokki fi shardchains u l-masterchain, u anke jiċċekkja blokki għal żbalji? It-telefowns ta 'miljuni ta' utenti bil-klijent Telegram installat fuqhom verament se jagħmlu dan kollu fil-mogħdija? Jew, forsi, it-tim ta 'Durov se jabbanduna l-ideat ta' deċentralizzazzjoni u s-servers tagħhom se jagħmlu dan l-antik?

Fil-fatt, la tweġiba waħda u lanqas l-oħra mhija korretta. Iżda l-oqsma ta 'dan l-artikolu qed jispiċċaw malajr, għalhekk se nitkellmu dwar ir-rwoli varji ta' nodi (tista 'tkun diġà nnotajt xi wħud minnhom imsemmija), kif ukoll il-mekkanika tax-xogħol tagħhom, fil-parti li jmiss.

Sors: www.habr.com

Żid kumment