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
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) -
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.
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.
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.
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