TON: Telegram Open Network. Deel 2: Blockchains, Schnëtt

TON: Telegram Open Network. Deel 2: Blockchains, Schnëtt

Dësen Text ass eng Fortsetzung vun enger Serie vun Artikelen, an deenen ech d'Struktur vum (viraussiichtlech) verdeelt Netzwierk Telegram Open Network (TON) ënnersichen, dat fir d'Verëffentlechung dëst Joer virbereet gëtt. IN virdrun Deel Ech hunn säi meescht Basisniveau beschriwwen - de Wee wéi d'Noden matenee interagéieren.

Just am Fall, loosst mech Iech drun erënneren datt ech näischt mat der Entwécklung vun dësem Netzwierk ze dinn hunn an all d'Material aus enger oppener (wann och net verifizéierter) Quell gesammelt gouf - Dokument (et gëtt och eng Begleedung Broschüren, kuerz d'Haaptpunkte beschriwwen), déi um Enn vum leschte Joer erauskoum. D'Quantitéit vun Informatioun an dësem Dokument, menger Meenung no, weist seng Authentizitéit un, obwuel et keng offiziell Bestätegung dovun ass.

Haut wäerte mir den Haaptkomponent vun TON kucken - de Blockchain.

Basis Konzepter

Kont (Kont). Eng Rei vun Daten identifizéiert vun enger 256-Bit Zuel account_id (meeschtens ass dëst den ëffentleche Schlëssel vum Kontbesëtzer). Am Basisfall (kuckt hei ënnen null workchain), dës Donnéeë bezéien sech op d'Gläichgewiicht vum Benotzer. "Occupy" spezifesch account_id jiddereen kann, mä säi Wäert kann nëmmen no bestëmmte Regelen geännert ginn.

Smart Kontrakt (Smart-Kontrakt). Am Wesentlechen ass et e spezielle Fall vun engem Kont, ergänzt mat Smart Kontrakt Code a Späichere vu senge Variablen. Wann Dir am Fall vun engem "Portemonnaie" Dir Sue kënnt no relativ einfachen a virbestëmmten Reegelen deposéieren an zréckzéien, da sinn am Fall vun engem Smart Kontrakt dës Regelen a Form vu sengem Code geschriwwe (an engem gewësse Turing-komplett) Programméiersprooch).

Blockchain Staat (Staat vun blockchain). De Set vu Staate vun alle Konten / Smart Kontrakter (an engem abstrakte Sënn, eng Hash-Tabelle, wou d'Schlëssele Kontidentifizéierer sinn an d'Wäerter d'Donnéeën op de Konten gespäichert sinn).

Сообщение (Message). Ech hunn hei uewen den Ausdrock "Kredit- a Geldgeld" benotzt - dëst ass e besonnescht Beispill vun engem Message ("Iwwerweisung" N gramm vum Kont Kont_1 op Kont Kont_2"). Natierlech kann nëmmen den Node deen de private Schlëssel vum Kont besëtzt esou e Message schécken Kont_1 - a kënnen dat mat enger Ënnerschrëft bestätegen. D'Resultat vun der Liwwerung vun esou Messagen op e reguläre Kont ass eng Erhéijung vun hirem Gläichgewiicht, an d'Resultat vum Smart Kontrakt ass d'Ausféierung vu sengem Code (deen d'Empfang vum Message veraarbecht). Natierlech sinn och aner Messagen méiglech (iwwerdroen net monetär Quantitéiten, mee arbiträr Daten tëscht Smart Kontrakter).

Transaktioun (Transaktioun). D'Tatsaach, datt e Message geliwwert gëtt, gëtt eng Transaktioun genannt. Transaktiounen änneren den Zoustand vun der Blockchain. Et sinn Transaktiounen (Message Liwwerung records) déi d'Blöcke an der Blockchain ausmaachen. An dëser Hisiicht kënnt Dir den Zoustand vun der Blockchain als eng inkrementell Datebank denken - all Blocks sinn "Diffs" déi sequentiell applizéiert musse ginn fir den aktuellen Zoustand vun der Datebank ze kréien. D'Spezifizitéite vun der Verpakung vun dësen "Diffs" (a restauréiert de ganzen Zoustand vun hinnen) ginn am nächsten Artikel diskutéiert.

Blockchain zu TON: wat ass et a firwat?

Wéi am virege Artikel ernimmt, blockchain ass eng Datestruktur, d'Elementer (Blöcke) vun deenen an eng "Kette" bestallt sinn, an all spéider Block vun der Kette enthält en Hash vum virdrun. D'Kommentaren hunn d'Fro gestallt: Firwat brauche mir iwwerhaapt sou eng Datestruktur wa mir schonn en DHT hunn - eng verdeelt Hash-Tabelle? Natierlech kënnen e puer Daten am DHT gespäichert ginn, awer dëst ass nëmme gëeegent fir net ze "sensibel" Informatioun. Cryptocurrency Balancen kënnen net an DHT gespäichert ginn - haaptsächlech wéinst dem Mangel u Kontrollen op Integritéit. Eigentlech wiisst d'ganz Komplexitéit vun der Blockchain Struktur fir Interferenz mat den Donnéeën, déi dra gespäichert sinn, ze verhënneren.

Wéi och ëmmer, de Blockchain am TON gesäit nach méi komplex aus wéi an de meeschten anere verdeelte Systemer - an aus zwee Grënn. Déi éischt ass de Wonsch de Besoin ze minimiséieren Gabel. An traditionelle Krypto-Währungen ginn all Parameteren an der éischter Etapp festgeluegt an all Versuch, se z'änneren, féiert tatsächlech zum Entstoe vun engem "alternative Krypto-Währungsuniversum". Den zweete Grond ass Ënnerstëtzung fir ze zerbriechen (schaarf, schaarf) blockchain. Blockchain ass eng Struktur déi mat der Zäit net méi kleng ka ginn; an normalerweis all Node verantwortlech fir d'Operatioun vum Netz ass gezwongen et komplett ze späicheren. An traditionellen (zentraliséierter) Systemer gëtt Sharding benotzt fir sou Probleemer ze léisen: e puer vun de Rekorder an der Datebank sinn op engem Server, e puer op engem aneren, etc. Am Fall vu Krypto-Währungen ass esou Funktionalitéit nach ëmmer zimlech seelen - besonnesch wéinst der Tatsaach, datt et schwéier ass, Sharding zu engem System ze addéieren, wou et net ursprénglech geplangt war.

Wéi plangt TON béid uewe genannte Problemer ze léisen?

Blockchain Inhalt. Workchains.

TON: Telegram Open Network. Deel 2: Blockchains, Schnëtt

Als éischt schwätze mer iwwer wat geplangt ass am Blockchain ze späicheren. D'State vu Konten ("Portemonnaien" am Basisfall) a Smart Kontrakter ginn do gespäichert (fir Simplicitéit wäerte mir dovun ausgoen datt dëst d'selwecht ass wéi Konten). Am Wesentlechen wäert dëst e reegelméissegen Hash-Tabelle sinn - d'Schlësselen an deem wäerten Identifizéierer sinn account_id, a Wäerter sinn Datestrukturen déi sou Saachen enthalen wéi:

  • Gläichgewiicht;
  • Smart Kontrakt Code (nëmme fir Smart Kontrakter);
  • Smart Kontrakt Datelagerung (nëmme fir Smart Kontrakter);
  • Statistiken;
  • (optional) ëffentleche Schlëssel fir Transfere vum Kont, par défaut account_id;
  • Schlaang vun erausginn Messagen (hei si aginn fir Expeditioun un den Empfänger);
  • eng Lëscht vun de leschten Messagen op dëse Kont geliwwert.

Wéi uewen ernimmt, besteet d'Blöcke selwer aus Transaktiounen - Messagen, déi op verschidde Account_id Konten geliwwert ginn. Wéi och ëmmer, zousätzlech zu account_id, enthalen Messagen och en 32-Bit Feld workchain_id - sougenannte Identifizéierer workchain (workchain, blockchain schaffen). Dëst erlaabt Iech verschidde Blockchainen onofhängeg vuneneen mat verschiddene Konfiguratiounen ze hunn. An dësem Fall gëtt workchain_id = 0 als spezielle Fall ugesinn, null workchain - et sinn d'Saldoten dran, déi dem TON (Grams) Krypto-Währung entspriechen. Wahrscheinlech, am Ufank wäerten aner Workchains guer net existéieren.

Shardchains. Onendlech Sharding Paradigma.

Awer de Wuesstum vun der Zuel vu Blockchainen hält net do op. Loosst eis mat Schnéi beschäftegen. Loosst eis virstellen datt all Kont (account_id) säin eegene Blockchain zougewisen ass - et enthält all d'Botschaften déi dohinner kommen - an d'Staaten vun all esou Blockchaine ginn op getrennten Noden gespäichert.

Natierlech ass dat ganz verschwendend: héchstwahrscheinlech an all eenzel vun dësen shardchains (shardchain, shard blockchain) Transaktiounen kommen ganz selten, a vill mächteg Wirbelen wäerte gebraucht ginn (viraus kucken, ech bemierken datt mir net nëmmen iwwer Clienten op Handyen schwätzen - awer iwwer sérieux Serveren).

Dofir kombinéieren shardchains Konten duerch d'binär Präfixe vun hiren Identifizéierer: wann e shardchain e Präfix vun 0110 huet, da wäert et Transaktioune vun all account_ids enthalen, déi mat dësen Zuelen ufänken. Dëst shard_prefix kann eng Längt vun 0 bis 60 Stécker hunn - an den Haapt Saach ass, datt et dynamesch änneren kann.

TON: Telegram Open Network. Deel 2: Blockchains, Schnëtt

Soubal ee vun de Shardchains ufänkt ze vill Transaktiounen ze kréien, sinn d'Noden, déi dru schaffen, no virbestëmmten Reegelen, "opgedeelt" se an zwee Kanner - hir Präfixe wäerten e bësse méi laang sinn (a fir ee vun hinnen ass dëse Bit gläich 0, a fir déi aner - 1). Zum Beispill, shard_prefix = 0110b wäert opgedeelt ginn 01100b an 01101b. Am Tour, wann zwee "Nopesch" Shardchains ufänken sech bequem genuch ze fillen (fir eng Zäit), wäerte se erëm fusionéieren.

Also gëtt d'Sharding "vun ënnen erop" gemaach - mir huelen un datt all Kont säin eegene Shard huet, awer fir de Moment gi se mat Präfixe "gekollt". Dëst ass wat et heescht Onendlech Sharding Paradigma (onendlech sharding Paradigma).

Separat wëll ech ënnersträichen datt d'Aarbechtsketten nëmme virtuell existéieren - tatsächlech, workchain_id et ass en Deel vum Identifizéierer vun enger spezifescher Shardchain. A formelle Begrëffer gëtt all Shardchain duerch e Paar Zuelen definéiert (workchain_id, shard_prefix).

Feeler Korrektur. Vertikal Blockchainen.

Traditionell gëtt all Transaktioun op enger Blockchain als "a Steen gesat." Wéi och ëmmer, am Fall vun TON ass et méiglech "Geschicht ëmzeschreiwen" - am Fall vun engem (de sougenannte. Fëscher Knuet) wäert beweisen datt ee vun de Blocken falsch ënnerschriwwe gouf. An dësem Fall gëtt e spezielle Korrekturblock op déi entspriechend Shardchain bäigefüügt, déi den Hash vum Block selwer korrigéiert (an net de leschte Block an der Shardchain). Wann Dir un d'Shardchain denkt als eng Kette vu Blocks déi horizontal ausgeluecht sinn, kënne mir soen datt de Korrekturblock un de falsche Block net op der rietser Säit befestegt ass, awer vun uewen - also gëtt ugeholl datt et Deel vun enger klenger "vertikaler Blockchain" gëtt. . Also kënne mir soen datt Shardchains sinn zweedimensional Blockchainen.

TON: Telegram Open Network. Deel 2: Blockchains, Schnëtt

Wann, no engem falsche Block, d'Ännerungen, déi doduerch gemaach goufen, duerch spéider Blocks referenzéiert goufen (dh nei Transaktioune goufen op ongëlteg gemaach baséiert), ginn d'Korrekturen och op dës Blocks "op Top" bäigefüügt. Wann d'Blöcke net déi "betraff" Informatioun beaflossen, gëllen dës "Korrekturwellen" net fir si. Zum Beispill, an der Illustratioun hei uewen, gouf d'Transaktioun vum éischte Block, d'Erhéijung vum Saldo vum Kont C, als falsch unerkannt - dofir sollt d'Transaktioun, déi d'Gläichgewiicht vun dësem Kont am drëtte Block erofsetzen, och annuléiert ginn, an e Korrekturblock soll uewen op der Spär selwer engagéiert ginn.

Et sollt bemierkt datt obwuel d'Korrekturblocken als "uewen" déi ursprénglech duergestallt sinn, tatsächlech ginn se um Enn vun der entspriechender Blockchain bäigefüügt (wou se chronologesch sollten sinn). Déi zweedimensional Plaz weist nëmmen op wéi engem Punkt an der Blockchain se "verlinkt" sinn (iwwer den Hash vum urspréngleche Block an hinnen).

Dir kënnt separat philosophéieren wéi gutt d'Entscheedung ass fir "d'Vergaangenheet z'änneren". Et géif schéngen datt wa mir d'Méiglechkeet zouginn datt e falsche Block an der Shardchain erscheint, da kënne mir d'Méiglechkeet net vermeiden datt e falsche Korrekturblock erscheint. Hei, souwäit ech kann soen, ass den Ënnerscheed an der Unzuel vun de Wirbelen déi Konsens iwwer nei Blocken erreechen mussen - et wäert eng relativ kleng Unzuel vu Leit op all Shardchain schaffen.Aarbechtsgrupp» Noden (déi seng Zesummesetzung zimlech dacks ännert), an d'Aféierung vu Korrekturblocken erfuerdert d'Zoustëmmung vu jidderengem Validator Noden. Ech schwätze méi iwwer Valideuren, Aarbechtsgruppen an aner Node Rollen am nächsten Artikel.

Ee Blockchain fir se all ze regéieren

Et gi vill Informatioun uewen opgezielt iwwer déi verschidden Aarte vu Blockchainen, déi selwer och iergendwou solle gespäichert ginn. Besonnesch schwätze mir iwwer déi folgend Informatioun:

  • iwwer d'Zuel an d'Konfiguratioun vun den Aarbechtsketten;
  • iwwer d'Zuel vun shardchains an hir Präfixe;
  • iwwer wéi eng Wirbelen am Moment verantwortlech sinn fir wéi eng Shardchains;
  • Hashes vun de leschte Blocken déi zu all Shardchains bäigefüügt ginn.

Wéi Dir vläicht scho virgestallt hutt, ginn all dës Saachen an enger anerer Blockchain Späichere opgeholl - masterchain (Meeschterleeschtung, Meeschter blockchain). Wéinst der Präsenz vun Hashes aus de Blocken vun all Shardchains a senge Blocken, mécht et de System héich verbonnen. Dëst bedeit ënner anerem datt d'Generatioun vun engem neie Block an der Masterchain direkt no der Generatioun vu Blocks an Shardchains geschitt - et gëtt erwaart datt Blocks a Shardchains bal gläichzäiteg ongeféier all 5 Sekonnen erscheinen, an de nächste Block am masterchain - eng zweet duerno.

Awer wien wäert verantwortlech sinn fir d'Ëmsetzung vun all dëser Titanic Aarbecht - fir Messagen ze schécken, Smart Kontrakter auszeféieren, Blocks an Shardchains an Masterchain ze bilden, a souguer Blocks fir Feeler ze kontrolléieren? Gëtt dëst alles geheim gemaach vun den Telefone vu Millioune Benotzer mat dem Telegram Client op hinnen installéiert? Oder, vläicht, wäert d'Durov Team d'Iddien vun der Dezentraliséierung opginn an hir Servere maachen et op déi al-äusgeleiert Manéier?

Tatsächlech ass weder déi eng nach déi aner Äntwert richteg. Awer d'Marge vun dësem Artikel lafe séier aus, also wäerte mir iwwer déi verschidde Rollen vun Noden schwätzen (Dir hutt vläicht schonn Ernimmungen vun e puer vun hinnen gemierkt), wéi och d'Mechanik vun hirer Aarbecht, am nächsten Deel.

Source: will.com

Setzt e Commentaire