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

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

Téks ieu mangrupa tuluyan tina runtuyan artikel nu kuring nalungtik struktur (diduga) jaringan disebarkeun Telegram Open Network (TON), nu keur disiapkeun keur release taun ieu. DI bagian saméméhna Kuring ngajelaskeun tingkat anu paling dasar - cara node saling berinteraksi.

Bisi wae, hayu atuh ngingetkeun yén kuring henteu aya hubunganana sareng pamekaran jaringan ieu sareng sadaya bahan dicandak tina sumber anu kabuka (sanaos henteu diverifikasi) - surat penting (aya ogé anu ngiringan brosur, sakeudeung outlining titik utama), nu mucunghul di ahir taun ka tukang. Jumlah informasi dina dokumén ieu, dina pamanggih kuring, nunjukkeun kaaslianana, sanajan teu aya konfirmasi resmi ngeunaan ieu.

Dinten ieu kami bakal ningali komponén utama TON - blockchain.

Konsep dasar

rekening (rekening). Hiji set data dicirikeun ku angka 256-bit akun_id (paling sering ieu konci umum nu boga akun). Dina kasus dasar (tingali di handap nol workchain), data ieu nujul kana kasaimbangan pamaké. "Occupy" husus akun_id saha bisa, tapi nilai na ngan bisa dirobah nurutkeun aturan nu tangtu.

Kontrak pinter (pinter-kontrak). Intina, éta mangrupikeun kasus khusus tina akun, ditambah ku kode kontrak pinter sareng neundeun variabel na. Upami dina kasus "dompét" anjeun tiasa deposit sareng mundur artos tina éta dumasar kana aturan anu saderhana sareng parantos ditangtukeun, maka dina kasus kontrak pinter aturan ieu ditulis dina bentuk kode na (dina sababaraha Turing-lengkep. basa pamrograman).

Nagara Blockchain (kaayaan blockchain). Susunan nagara sadaya akun / kontrak pinter (dina rasa abstrak, tabel hash, dimana koncina nyaéta identifier akun sareng nilaina nyaéta data anu disimpen dina akun).

pesen (pesen). Di luhur kuring nganggo éksprési "kiridit sareng debit artos" - ieu mangrupikeun conto khusus pesen ("transfer N gram ti akun akun_1 kana rekening akun_2"). Jelas, ngan titik anu gaduh konci pribadi akun anu tiasa ngirim pesen sapertos kitu akun_1 - sarta bisa mastikeun ieu kalawan signature a. Hasil tina ngirimkeun pesen sapertos ka akun biasa nyaéta paningkatan kasaimbanganna, sareng hasil tina kontrak pinter nyaéta palaksanaan kode na (anu bakal ngolah resi pesen). Tangtosna, pesen sanésna ogé tiasa (mindahkeun sanés jumlah moneter, tapi data sawenang antara kontrak pinter).

transaksi (transaksi). Kanyataan yén pesen anu dikirimkeun disebut transaksi. Transaksi ngarobah kaayaan blockchain. Transaksi (catetan pangiriman pesen) mangrupikeun blok-blok dina blockchain. Dina hal ieu, anjeun tiasa nganggap kaayaan blockchain salaku database incremental - sadaya blok "diffs" anu kedah diterapkeun sacara berurutan pikeun nyandak kaayaan database ayeuna. Spésifik tina bungkusan ieu "diffs" (jeung malikkeun kaayaan pinuh ti aranjeunna) bakal dibahas dina artikel salajengna.

Blockchain di TON: naon éta sareng kunaon?

Sakumaha didadarkeun dina artikel saméméhna, blockchain mangrupikeun struktur data, unsur-unsurna (blok) diurutkeun kana "ranté", sareng unggal blok salajengna tina ranté ngandung hash tina anu sateuacana.. Koméntar naroskeun patarosan: naha urang peryogi struktur data sapertos kitu nalika urang parantos ngagaduhan DHT - tabel hash anu disebarkeun? Jelas, sababaraha data bisa disimpen dina DHT, tapi ieu ngan cocog pikeun informasi teu teuing "sensitip". balances Cryptocurrency teu bisa disimpen dina DHT - utamana alatan kurangna cék on integritas. Sabenerna, sakabéh pajeulitna struktur blockchain tumuwuh guna nyegah gangguan jeung data nu disimpen di dinya.

Sanajan kitu, nu blockchain di TON Sigana malah leuwih kompleks tinimbang di paling sistem disebarkeun lianna - sarta pikeun dua alesan. Anu kahiji nyaéta kahayang pikeun ngaminimalkeun kabutuhan garpu. Dina mata uang kripto tradisional, sadaya parameter disetél dina tahap awal sareng usaha naon waé pikeun ngarobih éta leres-leres nyababkeun mecenghulna "alam semesta cryptocurrency alternatif." Alesan kadua nyaéta rojongan pikeun crushing (sharding, sharding) blockchain. Blockchain mangrupikeun struktur anu henteu tiasa janten langkung alit dina waktosna; sarta biasana unggal titik jawab operasi jaringan kapaksa nyimpen eta lengkep. Dina sistem tradisional (terpusat), sharding dianggo pikeun ngabéréskeun masalah sapertos kitu: sababaraha rékaman dina pangkalan data aya dina hiji server, sababaraha dina anu sanés, jsb. Dina kasus mata uang kripto, fungsionalitas sapertos kitu masih jarang - khususna, kusabab sesah nambihan sharding kana sistem dimana éta henteu direncanakeun.

Kumaha TON ngarencanakeun pikeun ngajawab duanana masalah di luhur?

eusi Blockchain. Ranté gawé.

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

Munggaran sadaya, hayu urang ngobrol ngeunaan naon rencanana pikeun disimpen dina blockchain nu. Nagara akun ("dompet" dina kasus dasar) sareng kontrak pinter bakal disimpen di dinya (pikeun kesederhanaan, urang bakal nganggap yén ieu sami sareng akun). Intina, ieu bakal janten tabel hash biasa - konci na bakal janten identifier akun_id, sareng nilai mangrupikeun struktur data anu ngandung hal-hal sapertos:

  • kasaimbangan;
  • kode kontrak pinter (ngan keur kontrak pinter);
  • gudang data kontrak pinter (pikeun kontrak pinter wungkul);
  • statistik;
  • (meunang milih) konci umum pikeun mindahkeun tina akun, sacara standar account_id;
  • antrian pesen kaluar (di dieu aranjeunna diasupkeun pikeun diteruskeun ka panarima);
  • daptar pesen panganyarna dikirimkeun ka akun ieu.

Sakumaha didadarkeun di luhur, blok sorangan diwangun ku transaksi - pesen dikirimkeun ka sagala rupa akun account_id. Tapi, salian account_id, pesen ogé ngandung widang 32-bit workchain_id - disebut identifier ranté gawé (ranté gawé, blockchain digawé). Hal ieu ngamungkinkeun anjeun gaduh sababaraha blockchain anu mandiri sareng konfigurasi anu béda. Dina hal ieu, workchain_id = 0 dianggap kasus husus, nol workchain - éta kasaimbangan di dinya anu bakal pakait jeung TON (Gram) cryptocurrency. Paling dipikaresep, mimitina, workchains séjén moal aya pisan.

Ranté beling. Paradigma Sharding Taya Wates.

Tapi tumuwuhna jumlah blockchains teu eureun di dinya. Hayu urang nungkulan sharding. Hayu urang ngabayangkeun yén unggal akun (account_id) dialokasikeun blockchain sorangan - éta ngandung sadaya pesen anu datang ka dinya - sareng nagara bagian sadaya blockchains sapertos disimpen dina titik anu kapisah.

Tangtu, ieu pisan boros: paling dipikaresep, dina unggal ieu ranté beling (ranté beling, beling blockchain) transaksi bakal jarang sumping, sareng seueur titik anu kuat bakal diperyogikeun (ningali payun, kuring perhatikeun yén urang henteu ngan ukur ngobrol ngeunaan klien dina telepon sélulér - tapi ngeunaan server anu serius).

Ku alatan éta, shardchains ngagabungkeun akun ku awalan binér tina identifiers maranéhanana: lamun shardchain ngabogaan awalan 0110, mangka bakal kaasup transaksi sadaya akun_id nu dimimitian ku angka ieu. Ieu beling_awalan bisa boga panjang ti 0 nepi ka 60 bit - sarta hal utama anu bisa ngarobah dinamis.

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

Pas salah sahiji shardchains mimiti nampi seueur teuing transaksi, titik-titik anu dianggo dina éta, numutkeun aturan anu parantos ditangtukeun, "dibagi" kana dua murangkalih - awalanna bakal sakedik deui (sareng salah sahijina bit ieu bakal sarua jeung 0, jeung lianna - 1). Salaku conto, beling_awalan = 0110b bakal dibagi kana 01100b jeung 01101b. Kahareupna lamun dua "tatanggana" shardchains mimiti ngarasa betah cukup (pikeun sawatara waktu), maranéhna bakal ngahiji deui.

Ku kituna, sharding dipigawé "ti handap ka luhur" - urang nganggap yén unggal akun boga beling sorangan, tapi keur saheulaanan aranjeunna "glued babarengan" ku awalan. Ieu naon hartina Paradigma Sharding Taya Wates (paradigma sharding taya wates).

Kapisah, abdi hoyong ngantebkeun yén workchains aya ngan ampir - kanyataanna, workchain_id éta bagian tina identifier of a shardchain husus. Dina istilah formal, unggal shardchain dihartikeun ku pasangan angka (workchain_id, beling_awalan).

Koréksi kasalahan. Blockchain nangtung.

Sacara tradisional, sagala transaksi dina blockchain dianggap "disetél dina batu". Sanajan kitu, dina kasus TON, kasebut nyaéta dimungkinkeun pikeun "nulis ulang sajarah" - bisi batur (nu disebut. pamayang cangreud) bakal ngabuktikeun yén salah sahiji blok ditandatanganan teu leres. Dina hal ieu, blok koreksi husus ditambahkeun kana shardchain pakait, ngandung hash tina blok sorangan keur dilereskeun (teu blok panungtungan dina shardchain nu). Pamikiran shardchain salaku ranté blok anu disusun sacara horisontal, urang tiasa nyebatkeun yén blok koréksi napel kana blok anu salah henteu ka katuhu, tapi ti luhur - ku kituna dianggap janten bagian tina "blockchain vertikal" leutik. . Ku kituna, urang bisa disebutkeun yen shardchains téh blockchains dua diménsi.

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

Upami, saatos blok anu salah, parobihan anu dilakukeun ku éta dirujuk ku blok-blok anu salajengna (nyaéta, transaksi anyar dilakukeun dumasar kana anu henteu sah), anu koréksi ogé ditambah kana blok ieu "di luhur". Upami blok henteu mangaruhan inpormasi "kapangaruhan", "gelombang korektif" ieu henteu dilarapkeun ka aranjeunna. Contona, dina ilustrasi di luhur, urus tina blok kahiji, ngaronjatna kasaimbangan akun C, ieu dipikawanoh salaku lepat - kituna, urus nurunna kasaimbangan akun ieu dina blok katilu ogé kudu dibatalkeun, sarta blok corrective. kudu komitmen dina luhureun blok sorangan.

Ieu kudu dicatet yén sanajan blok corrective digambarkeun salaku lokasina "luhureun" nu aslina, dina kanyataanana maranéhna bakal ditambahkeun kana tungtung blockchain pakait (dimana maranéhanana kudu kronologis). Lokasi dua diménsi ngan nembongkeun ka titik mana dina blockchain maranéhna bakal "numbu" (via hash tina blok aslina ayana di aranjeunna).

Anjeun tiasa nyalira filosofis ngeunaan kumaha hadéna kaputusan pikeun "ngarobah jaman baheula". Sigana lamun urang ngaku kamungkinan blok lepat muncul dina shardchain, mangka urang moal bisa nyingkahan kamungkinan blok corrective erroneous muncul. Di dieu, sajauh anu kuring tiasa nyarios, bédana aya dina jumlah titik anu kedah ngahontal konsensus dina blok énggal - bakal aya sajumlah leutik jalma anu damel dina unggal shardchain.grup digawé» node (anu sering robih komposisina), sareng ngenalkeun blok koréksi ngabutuhkeun idin sadayana titik validator. Kuring bakal ngobrol langkung seueur ngeunaan validator, workgroup, sareng peran node sanés dina tulisan salajengna.

Hiji blockchain pikeun aturan aranjeunna sadayana

Aya seueur inpormasi anu didaptarkeun di luhur ngeunaan sababaraha jinis blockchain, anu ogé kedah disimpen di mana waé. Khususna, urang ngobrol ngeunaan inpormasi ieu:

  • ngeunaan jumlah sareng konfigurasi workchains;
  • ngeunaan jumlah shardchains sareng awalanna;
  • ngeunaan titik mana anu ayeuna tanggung jawab pikeun shardchains;
  • hashes tina blok panungtungan ditambahkeun kana sagala shardchains.

Sakumaha anjeun panginten, sadaya hal ieu kacatet dina panyimpenan blockchain anu sanés - ranté master (ranté master, master blockchain). Kusabab ayana hashes tina blok sadaya shardchains dina blok-blokna, éta ngajantenkeun sistem disambungkeun pisan. Ieu ngandung harti, diantara hal séjén, yén generasi blok anyar dina masterchain bakal lumangsung langsung saatos generasi blok dina shardchains - diperkirakeun yén blok dina shardchains bakal muncul ampir sakaligus kira-kira unggal 5 detik, sarta blok salajengna dina masterchain - sadetik saatos éta.

Tapi saha anu bakal tanggung jawab palaksanaan sadaya karya titanic ieu - pikeun ngirim pesen, ngalaksanakeun kontrak pinter, ngabentuk blok dina shardchains sareng masterchain, bahkan mariksa blok pikeun kasalahan? Naha sadayana ieu bakal dilakukeun sacara rahasia ku telepon jutaan pangguna sareng klien Telegram dipasang dina aranjeunna? Atanapi, sigana, tim Durov bakal ngantunkeun ideu desentralisasi sareng serverna bakal ngalakukeun cara baheula?

Kanyataanna, salah sahiji atawa jawaban séjén teu bener. Tapi margins artikel ieu gancang kaluar, jadi urang bakal ngobrol ngeunaan rupa-rupa kalungguhan titik (anjeun meureun geus noticed nyebut sababaraha di antarana), kitu ogé mékanika karya maranéhanana, dina bagian salajengna.

sumber: www.habr.com

Tambahkeun komentar