TON: Telegram Iepen netwurk. Diel 2: Blockchains, sharding

TON: Telegram Iepen netwurk. Diel 2: Blockchains, sharding

Dizze tekst is in fuortsetting fan in searje artikels wêryn ik de struktuer ûndersykje fan it (nei alle gedachten) ferspraat netwurk Telegram Open Network (TON), dat wurdt taret foar frijlitting dit jier. YN foarige diel Ik beskreau it meast basale nivo - de manier wêrop knopen mei elkoar omgean.

Krekt foar it gefal, lit my jo herinnerje dat ik neat te meitsjen haw mei de ûntwikkeling fan dit netwurk en al it materiaal waard sammele út in iepen (alhoewol net ferifiearre) boarne - dokumint (d'r is ek in byhearrende folder, mei koart de haadpunten), dy't ein ferline jier ferskynde. De hoemannichte ynformaasje yn dit dokumint jout nei myn miening de autentisiteit oan, hoewol d'r gjin offisjele befestiging is fan dit.

Hjoed sille wy sjen nei de wichtichste komponint fan TON - de blockchain.

Basisbegripen

account (rekken). In set fan gegevens identifisearre troch in 256-bit nûmer account_id (meastentiids is dit de iepenbiere kaai fan 'e accounteigner). Yn it basis gefal (sjoch hjirûnder nul workchain), dizze gegevens ferwize nei it lykwicht fan 'e brûker. "Occupy" spesifyk account_id elkenien kin, mar syn wearde kin allinnich feroare wurde neffens bepaalde regels.

Smart kontrakt (smart-kontrakt). Yn essinsje is it in spesjaal gefal fan in akkount, oanfolle mei tûke kontraktkoade en opslach fan har fariabelen. As jo ​​yn it gefal fan in "slúf" jild derfan kinne deponearje en weromlûke neffens relatyf ienfâldige en foarbeskaaide regels, dan wurde yn it gefal fan in tûk kontrakt dizze regels skreaun yn 'e foarm fan har koade (yn in bepaalde Turing-kompleet programmear taal).

Blockchain State (steat fan blockchain). De set fan steaten fan alle akkounts / tûke kontrakten (yn abstrakte sin, in hash-tabel, wêrby't de kaaien akkountidentifikatoren binne en de wearden de gegevens binne opslein yn 'e akkounts).

Jo berjocht (berjocht). Hjirboppe brûkte ik de útdrukking "kredyt- en debetjild" - dit is in bepaald foarbyld fan in berjocht ("oerdracht" N gram fan rekken account_1 te rekkenjen account_2"). Fansels kin allinich de knooppunt dy't de privee kaai fan it akkount hat, sa'n berjocht ferstjoere account_1 - en kinne dit befêstigje mei in hantekening. It resultaat fan it leverjen fan sokke berjochten nei in gewoane akkount is in ferheging fan har lykwicht, en it resultaat fan 'e tûke kontrakt is de útfiering fan syn koade (dy't de ûntfangst fan it berjocht ferwurket). Fansels binne ek oare berjochten mooglik (net oerdrage fan monetêre bedraggen, mar willekeurige gegevens tusken tûke kontrakten).

Transaksje (transaksje). It feit dat in berjocht wurdt levere wurdt in transaksje neamd. Transaksjes feroarje de steat fan 'e blockchain. It binne transaksjes (records foar levering fan berjochten) dy't de blokken yn 'e blockchain foarmje. Yn dit ferbân kinne jo tinke oan de tastân fan 'e blockchain as in inkrementele databank - alle blokken binne "diffs" dy't sequentieel moatte wurde tapast om de hjoeddeistige tastân fan 'e databank te krijen. De spesifikaasjes fan it ferpakking fan dizze "diffs" (en it werstellen fan 'e folsleine steat fan har) sille wurde besprutsen yn it folgjende artikel.

Blockchain yn TON: wat is it en wêrom?

Lykas neamd yn it foarige artikel, blockchain is in gegevensstruktuer, wêrfan de eleminten (blokken) wurde besteld yn in "keten", en elk folgjende blok fan 'e keatling befettet in hash fan' e foarige. De opmerkingen stelden de fraach: wêrom hawwe wy sa'n gegevensstruktuer überhaupt nedich as wy al in DHT hawwe - in ferspraat hash-tabel? Fansels kinne guon gegevens yn DHT opslein wurde, mar dit is allinich geskikt foar net te "gefoelige" ynformaasje. Cryptocurrency saldo kin net wurde opslein yn DHT - primêr fanwege it gebrek oan kontrôles op yntegriteit. Eins groeit de heule kompleksiteit fan 'e blockchain-struktuer om ynterferinsje te foarkommen mei de gegevens dy't dêryn opslein binne.

De blockchain yn TON liket lykwols noch komplekser dan yn 'e measte oare ferdielde systemen - en om twa redenen. De earste is de winsk om minimalisearje de needsaak foar foarken. Yn tradisjonele cryptocurrencies wurde alle parameters yn 'e earste faze ynsteld en elke besykjen om se te feroarjen liedt eins ta it ûntstean fan in "alternatyf cryptocurrency-universum." De twadde reden is stipe foar ferpletterjen (sharding, sharding) blockchain. Blockchain is in struktuer dy't net oer de tiid lytser wurde kin; en meastal wurdt elke knooppunt ferantwurdlik foar de eksploitaasje fan it netwurk twongen om it folslein op te slaan. Yn tradisjonele (sintralisearre) systemen wurdt sharding brûkt om sokke problemen op te lossen: guon fan 'e records yn' e databank sitte op ien server, guon op in oare, ensfh. Yn it gefal fan cryptocurrencies is sokke funksjonaliteit noch frij seldsum - benammen troch it feit dat it dreech is om sharding ta te foegjen oan in systeem wêr't it net oarspronklik pland wie.

Hoe is TON fan plan om beide boppesteande problemen op te lossen?

Blockchain ynhâld. Workchains.

TON: Telegram Iepen netwurk. Diel 2: Blockchains, sharding

Lit ús earst prate oer wat is pland om te wurde opslein yn 'e blockchain. De steaten fan akkounts ("slúven" yn 'e basiskoffer) en tûke kontrakten wurde dêr opslein (foar ienfâld sille wy oannimme dat dit itselde is as akkounts). Yn essinsje sil dit in gewoane hash-tabel wêze - de kaaien dêryn sille identifiers wêze account_id, en wearden binne gegevensstruktueren dy't sokke dingen befetsje as:

  • lykwicht;
  • smart kontrakt koade (allinich foar smart kontrakten);
  • smart kontrakt gegevens opslach (allinich foar smart kontrakten);
  • statistyk;
  • (opsjoneel) iepenbiere kaai foar oerstappen fan it akkount, standert account_id;
  • wachtrige fan útgeande berjochten (hjir wurde se ynfierd foar trochstjoeren nei de ûntfanger);
  • in list mei de lêste berjochten levere oan dit akkount.

Lykas hjirboppe neamd, besteane de blokken sels út transaksjes - berjochten levere oan ferskate account_id-akkounts. Neist account_id befetsje berjochten lykwols ek in 32-bit fjild workchain_id - saneamde identifier workchain (workchain, wurkje blockchain). Hjirmei kinne jo ferskate blockchains hawwe ûnôfhinklik fan elkoar mei ferskate konfiguraasjes. Yn dit gefal wurdt workchain_id = 0 beskôge as in spesjaal gefal, nul workchain - it is de saldo dêryn dy't sil oerienkomme mei de TON (Grams) Krypto-faluta. Meast wierskynlik, yn 't earstoan, sille oare wurkketten hielendal net bestean.

Shardchains. Infinite Sharding Paradigma.

Mar de groei fan it oantal blockchains stopet dêr net. Lit ús omgean mei sharding. Litte wy ús foarstelle dat elk akkount (account_id) in eigen blockchain wurdt tawiisd - it befettet alle berjochten dy't deroan komme - en de steaten fan al sokke blockchains wurde opslein op aparte knopen.

Fansels is dit heul fergriemend: wierskynlik yn elk fan dizze shardchains (shardchain, shard blockchain) transaksjes sille komselden oankomme, en in protte krêftige knopen sille nedich wêze (foarútsjen, ik merk op dat wy net allinich prate oer kliïnten op mobile tillefoans - mar oer serieuze servers).

Dêrom kombinearje shardchains akkounts troch de binêre foarheaksels fan har identifiers: as in shardchain in foarheaksel hat fan 0110, dan sil it transaksjes befetsje fan alle account_ids dy't begjinne mei dizze nûmers. Dit shard_prefix kin hawwe in lingte fan 0 oan 60 bits - en it wichtichste ding is dat it kin feroarje dynamysk.

TON: Telegram Iepen netwurk. Diel 2: Blockchains, sharding

Sadree't ien fan 'e shardchains begjint te folle transaksjes te ûntfangen, "spjalte" de knopen dy't der oan wurkje, neffens foarbepaalde regels, it yn twa bern - har foarheaksels sille in bytsje langer wêze (en foar ien fan har sil dit bit wêze lyk oan 0, en foar de oare - 1). Bygelyks, shard_prefix = 0110b sil splitst yn 01100b en 01101b. Op har beurt, as twa "buorjende" shardchains begjinne te fiele noflik genôch (foar in skoft), se sille fusearje wer.

Sa wurdt sharding dien "fan ûnderen nei boppen" - wy geane derfan út dat elk akkount syn eigen shard hat, mar foarearst wurde se "oaninoar lijm" troch foarheaksels. Dit is wat it betsjut Infinite Sharding Paradigma (ûneinige sharding paradigma).

Apart wol ik beklamje dat wurkkettingen mar praktysk besteane - yn feite, workchain_id it is diel fan 'e identifier fan in spesifike shardchain. Yn formele termen wurdt elke shardchain definiearre troch in pear nûmers (workchain_id, shard_prefix).

Flaterferbettering. Fertikale blockchains.

Tradysjoneel wurdt elke transaksje op in blockchain beskôge as "yn stien". Yn it gefal fan TON is it lykwols mooglik om "skiednis te herskriuwen" - yn gefal immen (de saneamde. fisker knoop) sil bewize dat ien fan 'e blokken ferkeard tekene is. Yn dit gefal wurdt in spesjale korreksjeblok tafoege oan 'e korrespondearjende shardchain, mei de hash fan it blok sels dat wurdt korrizjearre (en net it lêste blok yn' e shardchain). Tinkend oan 'e shardchain as in ketting fan blokken dy't horizontaal oanlein binne, kinne wy ​​​​sizze dat it korrektyf blok is hechte oan it ferkearde blok net nei rjochts, mar fan boppen - dus wurdt beskôge dat it diel wurdt fan in lyts "fertikale blockchain" . Sa kinne wy ​​sizze dat shardchains binne twadiminsjonale blockchains.

TON: Telegram Iepen netwurk. Diel 2: Blockchains, sharding

As, nei in ferkeard blok, de wizigingen dy't dêrtroch makke binne, waarden ferwiisd troch folgjende blokken (d.w.s. nije transaksjes waarden makke basearre op ûnjildige), wurde korrigearjende ek tafoege oan dizze blokken "boppe". As de blokken de "oandwaande" ynformaasje net beynfloedzje, binne dizze "korrigearjende weagen" net fan tapassing op har. Bygelyks, yn 'e yllustraasje hjirboppe, waard de transaksje fan it earste blok, it fergrutsjen fan it saldo fan akkount C, erkend as ferkeard - dêrom moat de transaksje dy't it saldo fan dit akkount yn it tredde blok ferminderet ek annulearre wurde, en in korrektyf blok moatte wurde begatt boppe op it blok sels.

It moat opmurken wurde dat hoewol de korrigearjende blokken wurde ôfbylde as "boppe" de orizjinele lizze, sille se feitlik wurde tafoege oan 'e ein fan' e oerienkommende blockchain (wêr't se gronologysk moatte wêze). De twadiminsjonale lokaasje lit allinich sjen op hokker punt yn 'e blockchain se sille wurde "keppele" (fia de hash fan it orizjinele blok yn har).

Jo kinne apart filosofearje oer hoe goed it beslút om "it ferline te feroarjen" is. It soe lykje dat as wy de mooglikheid tajaan dat in ferkearde blok ferskynt yn 'e shardchain, dan kinne wy ​​​​de mooglikheid net foarkomme dat in ferkearde korrektyf blok ferskynt. Hjir, foar safier't ik kin fertelle, is it ferskil yn it oantal knooppunten dy't konsensus moatte berikke oer nije blokken - d'r sil in relatyf lyts oantal minsken wurkje oan elke shardchain.wurkgroep» knopen (dy't syn gearstalling frij faak feroaret), en de ynfiering fan korrigearjende blokken sil de tastimming fan elkenien fereaskje validator knopen. Ik sil mear prate oer validators, wurkgroepen en oare knooppuntrollen yn it folgjende artikel.

Ien blockchain om se allegear te regearjen

D'r is in protte ynformaasje hjirboppe neamd oer de ferskate soarten blokken, dy't sels ek earne opslein wurde moatte. Yn it bysûnder, wy prate oer de folgjende ynformaasje:

  • oer it oantal en konfiguraasjes fan workchains;
  • oer it oantal shardchains en harren foarheaksels;
  • oer hokker knopen binne op it stuit ferantwurdlik foar hokker shardchains;
  • hashes fan de lêste blokken tafoege oan alle shardchains.

Lykas jo miskien hawwe rieden, binne al dizze dingen opnommen yn in oare blockchain-opslach - masterchain (masterchain, master blockchain). Troch de oanwêzigens fan hashes fan 'e blokken fan alle shardchains yn har blokken makket it it systeem heul ferbûn. Dit betsjut ûnder oare dat de generaasje fan in nij blok yn 'e masterchain direkt nei de generaasje fan blokken yn shardchains sil plakfine - it wurdt ferwachte dat blokken yn shardchains sawat tagelyk sawat elke 5 sekonden ferskine, en it folgjende blok yn' e masterchain - in sekonde dêrnei.

Mar wa sil ferantwurdlik wêze foar de ymplemintaasje fan al dit titanyske wurk - foar it ferstjoeren fan berjochten, it útfieren fan tûke kontrakten, it foarmjen fan blokken yn shardchains en de masterchain, en sels kontrolearjen fan blokken op flaters? Sil dit alles temûk dien wurde troch de tillefoans fan miljoenen brûkers mei de Telegram-kliïnt op har ynstalleare? Of, miskien, sil it Durov-team de ideeën fan desintralisaasje ferlitte en har servers sille it op 'e âlderwetske manier dwaan?

Eins is noch it iene noch it oare antwurd korrekt. Mar de marzjes fan dit artikel rinne gau út, dus wy sille prate oer de ferskate rollen fan knooppunten (jo hawwe miskien al opfallen fan guon fan harren), en ek de meganika fan har wurk, yn it folgjende diel.

Boarne: www.habr.com

Add a comment