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

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

Kini nga teksto usa ka pagpadayon sa usa ka serye sa mga artikulo diin akong gisusi ang istruktura sa (tingali) gipang-apod-apod nga network nga Telegram Open Network (TON), nga giandam alang sa pagpagawas karong tuiga. SA miaging bahin Gihubit nako ang labing sukaranan nga lebel - ang paagi nga nakig-uban ang mga node sa usag usa.

Sa kaso lang, pahinumdoman ko ikaw nga wala akoy kalabotan sa pag-uswag sa kini nga network ug ang tanan nga materyal nakuha gikan sa usa ka bukas (bisan wala pa gipamatud-an) nga gigikanan - dokumento (adunay kauban usab brosyur, sa mubo nga paglatid sa pangunang mga punto), nga mitungha sa kataposan sa miaging tuig. Ang gidaghanon sa impormasyon niini nga dokumento, sa akong opinyon, nagpakita sa pagkatinuod niini, bisan tuod walay opisyal nga kumpirmasyon niini.

Karon atong tan-awon ang nag-unang bahin sa TON - ang blockchain.

Panguna nga mga konsepto

Account (asoy). Usa ka hugpong sa datos nga giila sa usa ka 256-bit nga numero account_id (kasagaran kini mao ang publiko nga yawe sa tag-iya sa account). Sa base nga kaso (tan-awa sa ubos zero workchain), kini nga datos nagtumong sa balanse sa tiggamit. "Pag-okupar" nga espesipiko account_id bisan kinsa makahimo, apan ang bili niini mausab lamang sumala sa pipila ka mga lagda.

Smart nga kontrata (smart-kontrata). Sa esensya, kini usa ka espesyal nga kaso sa usa ka account, gidugangan sa smart contract code ug pagtipig sa mga variable niini. Kung sa kaso sa usa ka "pitaka" mahimo ka magdeposito ug mag-withdraw sa salapi gikan niini sumala sa medyo yano ug gitakda nang daan nga mga lagda, nan sa kaso sa usa ka smart nga kontrata kini nga mga lagda gisulat sa porma sa code niini (sa usa ka piho nga Turing-kompleto programming language).

Estado sa Blockchain (kahimtang sa blockchain). Ang hugpong sa mga estado sa tanan nga mga account / smart nga mga kontrata (sa abstract nga diwa, usa ka hash table, diin ang mga yawe mao ang mga identifier sa account ug ang mga bili mao ang mga datos nga gitipigan sa mga account).

mensahe (mensahe). Sa ibabaw gigamit nako ang ekspresyon nga "kredito ug debit nga salapi" - kini usa ka partikular nga pananglitan sa usa ka mensahe ("pagbalhin N gramo gikan sa account account_1 sa pag-asoy account_2"). Dayag nga, ang node lamang nga tag-iya sa pribadong yawe sa account ang makapadala sa ingon nga mensahe account_1 - ug makahimo sa pagkumpirma niini sa usa ka pirma. Ang resulta sa paghatud sa maong mga mensahe ngadto sa usa ka regular nga account mao ang pagdugang sa balanse niini, ug ang resulta sa smart contract mao ang pagpatuman sa code niini (nga maoy moproseso sa resibo sa mensahe). Siyempre, posible usab ang ubang mga mensahe (pagbalhin dili mga kantidad sa kwarta, apan arbitraryong datos tali sa mga smart nga kontrata).

Transaksyon (transaksyon). Ang kamatuoran nga ang usa ka mensahe gihatud gitawag nga usa ka transaksyon. Ang mga transaksyon nagbag-o sa kahimtang sa blockchain. Kini ang mga transaksyon (mga rekord sa paghatud sa mensahe) nga naglangkob sa mga bloke sa blockchain. Niining bahina, mahimo nimong hunahunaon ang kahimtang sa blockchain ingon usa ka incremental nga database - ang tanan nga mga bloke "mga kalainan" nga kinahanglan nga i-apply nga sunud-sunod aron makuha ang karon nga kahimtang sa database. Ang mga detalye sa pagputos niini nga "mga kalainan" (ug pagpasig-uli sa tibuok nga kahimtang gikan kanila) pagahisgotan sa sunod nga artikulo.

Blockchain sa TON: unsa kini ug ngano?

Sama sa gihisgotan sa miaging artikulo, Ang blockchain usa ka istruktura sa datos, ang mga elemento (mga bloke) nga gi-order nga usa ka "kadena", ug ang matag sunod nga bloke sa kadena adunay sulud nga hash sa nauna.. Ang mga komentaryo nangutana sa pangutana: nganong kinahanglan man nato ang ingon nga istruktura sa datos kung aduna na kita'y DHT - usa ka gipang-apod-apod nga hash table? Dayag nga, pipila ka mga datos mahimong tipigan sa DHT, apan kini angay lamang alang sa dili kaayo "sensitibo" nga impormasyon. Ang mga balanse sa Cryptocurrency dili mahimong tipigan sa DHT - nag-una tungod sa kakulang sa mga pagsusi sa integridad. Sa tinuud, ang tibuuk nga pagkakomplikado sa istruktura sa blockchain motubo aron malikayan ang pagpanghilabot sa mga datos nga gitipigan niini.

Bisan pa, ang blockchain sa TON tan-awon nga labi ka komplikado kaysa sa kadaghanan sa ubang mga gipang-apod-apod nga sistema - ug sa duha ka hinungdan. Ang una mao ang tinguha nga mamenosan ang panginahanglan mga tinidor. Sa tradisyonal nga mga cryptocurrencies, ang tanan nga mga parameter gitakda sa inisyal nga yugto ug bisan unsang pagsulay nga usbon kini sa tinuud nga hinungdan sa pagtunga sa usa ka "alternatibo nga uniberso sa cryptocurrency." Ang ikaduha nga rason mao ang suporta sa pagdugmok (sharding, sharding) blockchain. Ang Blockchain usa ka istruktura nga dili mahimong mas gamay sa paglabay sa panahon; ug kasagaran ang matag node nga responsable sa operasyon sa network napugos sa pagtipig niini sa hingpit. Sa tradisyonal (sentralisado) nga mga sistema, gigamit ang sharding aron masulbad ang ingon nga mga problema: ang pipila sa mga rekord sa database nahimutang sa usa ka server, ang uban sa lain, ug uban pa. Sa kaso sa mga cryptocurrencies, ang ingon nga pag-andar talagsa ra - labi na, tungod sa kamatuoran nga lisud idugang ang sharding sa usa ka sistema diin wala kini orihinal nga giplano.

Giunsa pagplano sa TON ang pagsulbad sa duha sa mga problema sa ibabaw?

Blockchain nga sulod. Mga kadena sa trabaho.

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

Una sa tanan, atong hisgutan kung unsa ang giplano nga tipigan sa blockchain. Ang mga estado sa mga account ("mga pitaka" sa base nga kaso) ug mga smart nga kontrata itago didto (alang sa kayano, atong hunahunaon nga kini parehas sa mga account). Sa esensya, kini usa ka regular nga lamesa sa hash - ang mga yawe niini mahimong mga identifier account_id, ug ang mga kantidad mao ang mga istruktura sa datos nga adunay mga butang sama sa:

  • balanse;
  • smart contract code (alang lamang sa mga smart contract);
  • smart contract data storage (para sa smart contracts lang);
  • estadistika;
  • (opsyonal) publikong yawe alang sa mga pagbalhin gikan sa account, pinaagi sa default account_id;
  • pila sa mga outgoing messages (dinhi sila gisulod para ipasa ngadto sa nakadawat);
  • usa ka lista sa pinakabag-o nga mga mensahe nga gipadala niini nga account.

Sama sa nahisgutan sa ibabaw, ang mga bloke mismo naglangkob sa mga transaksyon - mga mensahe nga gihatud sa lainlaing mga account_id account. Bisan pa, dugang sa account_id, ang mga mensahe usab adunay usa ka 32-bit nga field workchain_id β€” gitawag nga identifier kadena sa trabaho (kadena sa trabaho, nagtrabaho blockchain). Gitugotan ka niini nga adunay daghang mga blockchain nga independente sa usag usa nga adunay lainlaing mga pag-configure. Niini nga kaso, ang workchain_id = 0 giisip nga usa ka espesyal nga kaso, zero workchain - kini ang mga balanse niini nga katumbas sa TON (Grams) nga cryptocurrency. Lagmit, sa sinugdan, ang ubang mga kadena sa trabaho dili na maglungtad.

Mga shardchains. Walay Kinutuban nga Sharding Paradigm.

Apan ang pagtubo sa gidaghanon sa mga blockchain wala mohunong didto. Atong atubangon ang sharding. Hunahunaa nga ang matag account (account_id) gigahin sa kaugalingon nga blockchain - kini naglangkob sa tanan nga mga mensahe nga moabut niini - ug ang mga estado sa tanan nga mga blockchain gitipigan sa lain nga mga node.

Siyempre, kini usik kaayo: lagmit, sa matag usa niini mga shardchains (shardchain, shard blockchain) panagsa ra moabut ang mga transaksyon, ug daghang kusgan nga mga node ang kinahanglan (sa pagtan-aw sa unahan, namatikdan nako nga dili lang kami naghisgot bahin sa mga kliyente sa mga mobile phone - apan bahin sa mga seryoso nga server).

Busa, ang mga shardchain naghiusa sa mga account pinaagi sa binary nga prefix sa ilang mga identifier: kung ang usa ka shardchain adunay prefix nga 0110, nan kini maglakip sa mga transaksyon sa tanang account_id nga nagsugod niini nga mga numero. Kini shard_prefix mahimong adunay usa ka gitas-on gikan sa 0 ngadto sa 60 bits - ug ang nag-unang butang mao nga kini mahimong mausab sa dinamikong paagi.

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

Sa diha nga ang usa sa mga shardchain magsugod sa pagdawat sa daghan kaayo nga mga transaksyon, ang mga node nga nagtrabaho niini, sumala sa gitino nang daan nga mga lagda, "gibahin" kini ngadto sa duha ka mga bata - ang ilang mga prefix mahimong usa ka gamay nga mas taas (ug alang sa usa kanila kini nga bit mahimong katumbas sa 0, ug alang sa lain - 1). Pananglitan, shard_prefix = 0110b mabahin sa 01100b ug 01101b. Sa baylo, kung ang duha ka "silingan" nga mga shardchain magsugod nga mobati nga komportable (sa pila ka panahon), sila maghiusa pag-usab.

Sa ingon, ang sharding gihimo "gikan sa ilawom pataas" - among gihunahuna nga ang matag account adunay kaugalingon nga shard, apan sa pagkakaron sila "gidugtong" sa mga prefix. Mao kini ang gipasabot niini Walay Kinutuban nga Sharding Paradigm (walay katapusan nga sharding paradigm).

Sa tinuud, gusto nako ipasabut nga ang mga kadena sa trabaho naglungtad lamang - sa tinuud, workchain_id kini kabahin sa identifier sa usa ka piho nga shardchain. Sa pormal nga termino, ang matag shardchain gihubit sa usa ka parisan sa mga numero (workchain_id, shard_prefix).

Pagtul-id sa sayop. Mga bertikal nga blockchain.

Sa naandan, ang bisan unsang transaksyon sa usa ka blockchain giisip nga "gibutang sa bato." Bisan pa, sa kaso sa TON, posible nga "isulat pag-usab ang kasaysayan" - kung adunay usa (ang gitawag nga. mangingisda knot) magpamatuod nga ang usa sa mga bloke sayop nga gipirmahan. Sa kini nga kaso, ang usa ka espesyal nga bloke sa pagtul-id gidugang sa katugbang nga shardchain, nga adunay sulud nga hash sa block mismo nga gitul-id (ug dili ang katapusan nga bloke sa shardchain). Ang paghunahuna sa shardchain ingon usa ka kadena sa mga bloke nga gibutang nga pinahigda, mahimo naton isulti nga ang corrective block gilakip sa sayup nga bloke dili sa tuo, apan gikan sa taas - mao nga giisip kini nga bahin sa usa ka gamay nga "vertical blockchain" . Sa ingon, makaingon kita nga ang mga shardchains duha-ka-dimensional nga mga blockchain.

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

Kung, pagkahuman sa usa ka sayup nga block, ang mga pagbag-o nga gihimo niini gi-refer sa sunod nga mga bloke (ie, ang mga bag-ong transaksyon gihimo base sa mga dili balido), ang mga corrective gidugang usab sa kini nga mga bloke "sa ibabaw". Kung ang mga bloke wala makaapekto sa "naapektuhan" nga kasayuran, kini nga mga "corrective waves" dili magamit sa kanila. Pananglitan, sa ilustrasyon sa ibabaw, ang transaksyon sa unang block, pagdugang sa balanse sa account C, giila nga dili husto - busa, ang transaksyon sa pagkunhod sa balanse niini nga account sa ikatulo nga block kinahanglan usab nga kanselahon, ug ang corrective block kinahanglan nga buhaton sa ibabaw sa block mismo.

Angay nga hinumdoman nga bisan kung ang mga corrective block gihulagway nga nahimutang "ibabaw" sa orihinal, sa tinuud kini idugang sa katapusan sa katugbang nga blockchain (diin kini kinahanglan nga kronolohikal). Ang duha-ka-dimensyon nga lokasyon nagpakita lamang kung asa nga punto sa blockchain sila "masumpay" (pinaagi sa hash sa orihinal nga bloke nga nahimutang diha kanila).

Mahimo nimong pilosopiya kung unsa ka maayo ang desisyon nga "bag-ohon ang nangagi". Mopatim-aw nga kung atong dawaton ang posibilidad sa usa ka sayup nga bloke nga makita sa shardchain, nan dili naton malikayan ang posibilidad sa usa ka sayup nga pag-ayo nga bloke nga makita. Dinhi, kutob sa akong nahibal-an, ang kalainan mao ang gidaghanon sa mga node nga kinahanglan makaabut sa consensus sa bag-ong mga bloke - adunay medyo gamay nga gidaghanon sa mga tawo nga nagtrabaho sa matag shardchain.working groupΒ» mga node (nga kanunay nga nagbag-o sa komposisyon niini), ug ang pagpaila sa mga corrective block nanginahanglan pag-uyon sa tanan validator nodes. Maghisgot pa ako bahin sa mga validator, workgroup, ug uban pang mga papel sa node sa sunod nga artikulo.

Usa ka blockchain nga magmando kanilang tanan

Adunay daghang impormasyon nga gilista sa ibabaw mahitungod sa lain-laing mga matang sa blockchains, nga sa iyang kaugalingon kinahanglan usab nga tipigan sa usa ka dapit. Sa partikular, naghisgot kami mahitungod sa mosunod nga impormasyon:

  • mahitungod sa gidaghanon ug mga configuration sa mga workchain;
  • mahitungod sa gidaghanon sa mga shardchain ug sa ilang mga prefix;
  • bahin sa kung unsang mga node ang responsable karon kung unsang mga shardchains;
  • hash sa katapusang mga bloke nga gidugang sa tanang shardchain.

Sama sa imong nahunahunaan, kining tanan nga mga butang girekord sa lain nga pagtipig sa blockchain - masterchain (masterchain, master blockchain). Tungod sa presensya sa mga hash gikan sa mga bloke sa tanan nga mga shardchain sa mga bloke niini, kini naghimo sa sistema nga konektado kaayo. Kini nagpasabut, taliwala sa uban pang mga butang, nga ang henerasyon sa usa ka bag-ong bloke sa masterchain mahitabo dayon pagkahuman sa henerasyon sa mga bloke sa shardchains - gilauman nga ang mga bloke sa shardchain makita hapit dungan nga hapit matag 5 segundos, ug ang sunod nga bloke sa shardchain. masterchain - usa ka segundo pagkahuman niana.

Apan kinsa ang mahimong responsable sa pagpatuman niining tanan nga titanic nga buhat - alang sa pagpadala sa mga mensahe, pagpatuman sa mga smart nga kontrata, pagporma sa mga bloke sa shardchains ug masterchain, ug bisan sa pagsusi sa mga bloke alang sa mga sayup? Ang tanan ba nga kini sekreto nga buhaton sa mga telepono sa milyon-milyon nga mga tiggamit nga adunay kliyente sa Telegram nga na-install sa kanila? O, tingali, ang Durov team mobiya sa mga ideya sa desentralisasyon ug ang ilang mga server mobuhat niini sa karaan nga paagi?

Sa pagkatinuod, walay usa o ang lain nga tubag ang husto. Apan ang mga margin niini nga artikulo dali nga nahurot, mao nga maghisgot kami bahin sa lainlaing mga tahas sa mga node (tingali namatikdan na nimo ang mga paghisgot sa pipila niini), ingon man ang mga mekaniko sa ilang trabaho, sa sunod nga bahin.

Source: www.habr.com

Idugang sa usa ka comment