TON: Telegram Open Network. Sehemu ya 2: Blockchains, sharding

TON: Telegram Open Network. Sehemu ya 2: Blockchains, sharding

Maandishi haya ni muendelezo wa mfululizo wa makala ambamo ninachunguza muundo wa (inawezekana) mtandao uliosambazwa wa Telegram Open Network (TON), ambao unatayarishwa kwa ajili ya kutolewa mwaka huu. KATIKA sehemu iliyopita Nilielezea kiwango chake cha msingi - jinsi nodi zinavyoingiliana.

Ikiwezekana, wacha nikukumbushe kuwa sina uhusiano wowote na maendeleo ya mtandao huu na nyenzo zote zilikusanywa kutoka kwa chanzo wazi (ingawa hakijathibitishwa) - hati (pia kuna kuandamana brosha, akieleza kwa ufupi mambo makuu), ambayo yalionekana mwishoni mwa mwaka jana. Kiasi cha habari katika hati hii, kwa maoni yangu, inaonyesha ukweli wake, ingawa hakuna uthibitisho rasmi wa hii.

Leo tutaangalia sehemu kuu ya TON - blockchain.

Dhana za kimsingi

Akaunti ya (akaunti) Seti ya data iliyotambuliwa na nambari ya 256-bit account_id (mara nyingi huu ndio ufunguo wa umma wa mmiliki wa akaunti). Katika kesi ya msingi (tazama hapa chini zero workchain), data hii inarejelea salio la mtumiaji. "Chukua" maalum account_id mtu yeyote anaweza, lakini thamani yake inaweza tu kubadilishwa kulingana na sheria fulani.

Mkataba wa busara (mkataba mzuri) Kwa asili, ni kesi maalum ya akaunti, inayoongezewa na msimbo wa mkataba wa smart na uhifadhi wa vigezo vyake. Ikiwa katika kesi ya "mkoba" unaweza kuweka na kutoa pesa kutoka kwake kulingana na sheria rahisi na zilizopangwa mapema, basi katika kesi ya mkataba mzuri sheria hizi zimeandikwa kwa njia ya nambari yake (katika Turing-kamili fulani). lugha ya programu).

Jimbo la Blockchain (hali ya blockchain) Seti ya majimbo ya akaunti zote/mikataba mahiri (kwa maana dhahania, jedwali la hashi, ambapo funguo ni vitambulishi vya akaunti na maadili ni data iliyohifadhiwa kwenye akaunti).

Ujumbe (ujumbe) Hapo juu nilitumia usemi "pesa ya mkopo na debit" - huu ni mfano fulani wa ujumbe ("transfer N gramu kutoka kwa akaunti akaunti_1 kuhesabu akaunti_2"). Ni wazi, nodi pekee inayomiliki ufunguo wa kibinafsi wa akaunti inaweza kutuma ujumbe kama huo akaunti_1 - na kuweza kuthibitisha hili kwa saini. Matokeo ya kuwasilisha ujumbe huo kwa akaunti ya kawaida ni ongezeko la salio lake, na matokeo ya mkataba wa smart ni utekelezaji wa kanuni yake (ambayo itashughulikia upokeaji wa ujumbe). Bila shaka, ujumbe mwingine pia unawezekana (kuhamisha sio kiasi cha fedha, lakini data ya kiholela kati ya mikataba ya smart).

Shughuli (shughuli) Ukweli kwamba ujumbe umewasilishwa unaitwa shughuli. Shughuli hubadilisha hali ya blockchain. Ni shughuli (rekodi za uwasilishaji wa ujumbe) zinazounda vizuizi kwenye blockchain. Katika suala hili, unaweza kufikiria hali ya blockchain kama hifadhidata inayoongezeka - vizuizi vyote ni "tofauti" ambavyo vinahitaji kutumiwa kwa mfuatano ili kupata hali ya sasa ya hifadhidata. Maalum ya ufungaji wa "tofauti" hizi (na kurejesha hali kamili kutoka kwao) itajadiliwa katika makala inayofuata.

Blockchain katika TON: ni nini na kwa nini?

Kama ilivyoelezwa katika makala iliyotangulia, blockchain ni muundo wa data, vitu (vizuizi) ambavyo vimeamuru kwa "mnyororo", na kila kizuizi kinachofuata cha mnyororo kina hashi ya ile iliyotangulia.. Maoni yaliuliza swali: kwa nini tunahitaji muundo kama huo wa data wakati tayari tunayo DHT - jedwali la hashi iliyosambazwa? Ni wazi, baadhi ya data inaweza kuhifadhiwa katika DHT, lakini hii inafaa tu kwa taarifa si "nyeti" sana. Salio la fedha za Crypto haziwezi kuhifadhiwa katika DHT - kimsingi kutokana na kukosekana kwa hundi uadilifu. Kwa kweli, ugumu wote wa muundo wa blockchain unakua ili kuzuia kuingiliwa na data iliyohifadhiwa ndani yake.

Walakini, blockchain katika TON inaonekana ngumu zaidi kuliko katika mifumo mingine mingi iliyosambazwa - na kwa sababu mbili. Ya kwanza ni hamu ya kupunguza hitaji uma. Katika fedha za kienyeji, vigezo vyote vimewekwa katika hatua ya awali na jaribio lolote la kuvibadilisha kwa hakika husababisha kutokea kwa "ulimwengu mbadala wa sarafu-fiche." Sababu ya pili ni msaada wa kusagwa (kugawanyika, kugawanyika) blockchain. Blockchain ni muundo ambao hauwezi kuwa mdogo kwa muda; na kwa kawaida kila nodi inayohusika na uendeshaji wa mtandao inalazimika kuihifadhi kabisa. Katika mifumo ya jadi (ya kati), sharding hutumiwa kutatua matatizo hayo: baadhi ya rekodi katika hifadhidata ziko kwenye seva moja, nyingine kwa nyingine, nk. Katika kesi ya fedha za crypto, utendaji huo bado ni nadra kabisa - hasa, kutokana na ukweli kwamba ni vigumu kuongeza sharding kwenye mfumo ambapo haukupangwa awali.

TON inapangaje kutatua shida zote mbili hapo juu?

Maudhui ya Blockchain. Minyororo ya kazi.

TON: Telegram Open Network. Sehemu ya 2: Blockchains, sharding

Kwanza kabisa, hebu tuzungumze juu ya kile kilichopangwa kuhifadhiwa kwenye blockchain. Majimbo ya akaunti ("pochi" katika kesi ya msingi) na mikataba ya smart itahifadhiwa huko (kwa urahisi, tutafikiri kuwa hii ni sawa na akaunti). Kwa asili, hii itakuwa meza ya kawaida ya hashi - funguo ndani yake zitakuwa vitambulisho account_id, na maadili ni miundo ya data iliyo na vitu kama vile:

  • usawa;
  • msimbo mzuri wa mikataba (kwa mikataba mahiri tu);
  • uhifadhi wa data wa mikataba mahiri (kwa mikataba mahiri pekee);
  • takwimu;
  • (hiari) ufunguo wa umma kwa uhamisho kutoka kwa akaunti, kwa akaunti_id chaguo-msingi;
  • foleni ya barua pepe zinazotoka (hapa zimeingizwa ili kutumwa kwa mpokeaji);
  • orodha ya jumbe za hivi punde zilizowasilishwa kwa akaunti hii.

Kama ilivyoelezwa hapo juu, vizuizi vyenyewe vinajumuisha shughuli - ujumbe unaotumwa kwa akaunti_id anuwai. Hata hivyo, pamoja na account_id, jumbe pia zina sehemu ya 32-bit kitambulisho_cha_kazi - kinachojulikana kitambulisho mnyororo wa kazi (mnyororo wa kazi, blockchain inayofanya kazi) Hii hukuruhusu kuwa na blockchains kadhaa huru kutoka kwa kila mmoja na usanidi tofauti. Katika kesi hii, workchain_id = 0 inachukuliwa kuwa kesi maalum, zero workchain - ni mizani ndani yake ambayo italingana na TON (Grams) cryptocurrency. Uwezekano mkubwa zaidi, mwanzoni, minyororo mingine ya kazi haitakuwapo kabisa.

Shardchains. Dhana ya Sharding isiyo na kikomo.

Lakini ukuaji wa idadi ya blockchains hauishii hapo. Wacha tushughulike na kugawanyika. Hebu fikiria kwamba kila akaunti (account_id) imetengwa blockchain yake mwenyewe - ina ujumbe wote unaokuja - na majimbo ya blockchains zote hizo huhifadhiwa kwenye nodes tofauti.

Bila shaka, hii ni kupoteza sana: uwezekano mkubwa, katika kila moja ya haya shardchains (shardchain, blockchain kali) shughuli zitafika mara chache sana, na nodi nyingi zenye nguvu zitahitajika (kuangalia mbele, naona kwamba hatuzungumzii tu kuhusu wateja kwenye simu za mkononi - lakini kuhusu seva kubwa).

Kwa hiyo, shardchains huchanganya akaunti na viambishi awali vya binary vya vitambulisho vyao: ikiwa shardchain ina kiambishi awali cha 0110, basi itajumuisha shughuli za akaunti_ids zote zinazoanza na nambari hizi. Hii kiambishi awali_cha_changa inaweza kuwa na urefu kutoka bits 0 hadi 60 - na jambo kuu ni kwamba inaweza kubadilika kwa nguvu.

TON: Telegram Open Network. Sehemu ya 2: Blockchains, sharding

Mara tu moja ya minyororo inapoanza kupokea shughuli nyingi, nodi zinazofanya kazi juu yake, kulingana na sheria zilizowekwa tayari, "zimegawanyika" kwa watoto wawili - viambishi awali vyao vitakuwa kidogo zaidi (na kwa mmoja wao kidogo hii itakuwa. sawa na 0, na kwa nyingine - 1). Kwa mfano, kiambishi awali_cha_changa = 0110b itagawanyika 01100b na 01101b. Kwa upande wake, ikiwa shardchains mbili za "jirani" zinaanza kujisikia vizuri (kwa muda fulani), zitaunganishwa tena.

Kwa hivyo, kugawanyika kunafanywa "kutoka chini kwenda juu" - tunadhani kwamba kila akaunti ina shard yake, lakini kwa wakati huu "imeunganishwa" na viambishi awali. Hii ndiyo maana yake Dhana ya Sharding isiyo na kikomo (dhana isiyo na mwisho ya sharding).

Kwa kando, ningependa kusisitiza kwamba minyororo ya kazi inapatikana tu - kwa kweli, kitambulisho_cha_kazi ni sehemu ya kitambulisho cha shardchain maalum. Kwa maneno rasmi, kila shardchain inafafanuliwa na jozi ya nambari (kitambulisho_cha_kazi, kiambishi awali_cha_changa).

Urekebishaji wa hitilafu. Minyororo ya wima.

Kijadi, shughuli yoyote kwenye blockchain inachukuliwa kuwa "imewekwa kwenye jiwe." Walakini, kwa upande wa TON, inawezekana "kuandika upya historia" - ikiwa mtu (kinachojulikana. fundo la wavuvi) itathibitisha kuwa moja ya vitalu vilitiwa saini kimakosa. Katika kesi hii, kizuizi maalum cha kusahihisha kinaongezwa kwa shardchain inayolingana, iliyo na hashi ya block yenyewe inasahihishwa (na sio kizuizi cha mwisho kwenye shardchain). Kufikiria shardchain kama mlolongo wa vizuizi vilivyowekwa kwa usawa, tunaweza kusema kwamba kizuizi cha kusahihisha kimefungwa kwenye kizuizi kisicho sahihi, lakini kutoka juu - kwa hivyo inazingatiwa kuwa sehemu ya "blockchain" ndogo ya wima. . Kwa hivyo, tunaweza kusema kwamba shardchains ni blockchains mbili-dimensional.

TON: Telegram Open Network. Sehemu ya 2: Blockchains, sharding

Ikiwa, baada ya kuzuia makosa, mabadiliko yaliyofanywa nayo yalitajwa na vitalu vilivyofuata (yaani, shughuli mpya zilifanywa kulingana na zisizo sahihi), za kurekebisha pia zinaongezwa kwenye vitalu hivi "juu". Ikiwa vitalu havikuathiri habari "iliyoathiriwa", haya "mawimbi ya kurekebisha" hayatumiki kwao. Kwa mfano, katika mfano hapo juu, shughuli ya block ya kwanza, kuongeza usawa wa akaunti C, ilitambuliwa kuwa sio sahihi - kwa hivyo, shughuli inayopunguza salio la akaunti hii kwenye block ya tatu inapaswa pia kufutwa, na kizuizi cha kurekebisha. inapaswa kufanywa juu ya block yenyewe.

Ikumbukwe kwamba ingawa vizuizi vya urekebishaji vinaonyeshwa kama ziko "juu" zile za asili, kwa kweli zitaongezwa hadi mwisho wa blockchain inayolingana (ambapo inapaswa kuwa ya mpangilio). Eneo la pande mbili linaonyesha tu kwa hatua gani katika blockchain "wataunganishwa" (kupitia hashi ya block ya awali iko ndani yao).

Unaweza kutoa falsafa tofauti kuhusu jinsi uamuzi wa "kubadilisha zamani" ulivyo mzuri. Inaweza kuonekana kuwa ikiwa tunakubali uwezekano wa kizuizi kisicho sahihi kinachoonekana kwenye shardchain, basi hatuwezi kuepuka uwezekano wa kizuizi cha kurekebisha kibaya kuonekana. Hapa, kwa kadiri ninavyoweza kusema, tofauti ni katika idadi ya nodi ambazo lazima zifikie makubaliano juu ya vitalu vipya - kutakuwa na idadi ndogo ya watu wanaofanya kazi kwenye kila shardchain."kikundi cha kaziΒ» nodi (ambazo hubadilisha muundo wake mara nyingi), na kuanzishwa kwa vizuizi vya kurekebisha kutahitaji idhini ya kila mtu. nodi za vidhibiti. Nitazungumza zaidi juu ya wathibitishaji, vikundi vya kazi, na majukumu mengine ya nodi katika nakala inayofuata.

Blockchain moja kuwatawala wote

Kuna habari nyingi zilizoorodheshwa hapo juu kuhusu aina tofauti za blockchains, ambayo yenyewe inapaswa pia kuhifadhiwa mahali fulani. Hasa, tunazungumza juu ya habari ifuatayo:

  • kuhusu idadi na usanidi wa minyororo ya kazi;
  • kuhusu idadi ya shardchains na viambishi vyake;
  • kuhusu ambayo nodes kwa sasa ni wajibu kwa ambayo shardchains;
  • heshi za vizuizi vya mwisho vilivyoongezwa kwa minyororo yote ya shard.

Kama unavyoweza kudhani, mambo haya yote yameandikwa kwenye hifadhi nyingine ya blockchain - masterchain (masterchain, bwana blockchain) Kutokana na kuwepo kwa hashes kutoka kwa vitalu vya shardchains zote katika vitalu vyake, hufanya mfumo uunganishwe sana. Hii pia ina maana kwamba kizazi cha block mpya katika masterchain kitatokea mara baada ya kizazi cha vitalu katika shardchains - inatarajiwa kwamba vitalu katika shardchains itaonekana karibu wakati huo huo takriban kila sekunde 5, na block ijayo katika masterchain - sekunde. baada ya hapo.

Lakini ni nani atawajibika kwa utekelezaji wa kazi hii yote ya titanic - kwa kutuma ujumbe, kutekeleza mikataba ya busara, kuunda vizuizi kwenye shardchains na masterchain, na hata kuangalia vizuizi kwa makosa? Haya yote yatafanywa kwa siri na simu za mamilioni ya watumiaji na mteja wa Telegraph imewekwa juu yao? Au, labda, timu ya Durov itaacha mawazo ya ugatuaji na seva zao zitaifanya kwa njia ya zamani?

Kwa kweli, hakuna jibu moja au jingine ni sahihi. Lakini kando ya nakala hii inaisha haraka, kwa hivyo tutazungumza juu ya majukumu anuwai ya nodi (unaweza kuwa tayari umegundua kutajwa kwa baadhi yao), pamoja na mechanics ya kazi zao, katika sehemu inayofuata.

Chanzo: mapenzi.com

Kuongeza maoni