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

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

Teks iki minangka kelanjutan saka seri artikel ing ngendi aku nliti struktur jaringan sing disebarake Telegram Open Network (TON), sing disiapake kanggo release taun iki. ING bagean sadurunge Aku njlèntrèhaké tingkat paling dhasar - cara node sesambungan karo saben liyane.

Yen ngono, aku ngelingake yen aku ora ana hubungane karo pangembangan jaringan iki lan kabeh materi dijupuk saka sumber sing mbukak (sanajan ora diverifikasi) - dokumen (uga ana sing ngiringi brosur, kanthi ringkes njlentrehake poin utama), sing muncul ing pungkasan taun kepungkur. Jumlah informasi ing dokumen iki, miturut pendapatku, nuduhake keasliane, sanajan ora ana konfirmasi resmi babagan iki.

Dina iki kita bakal ndeleng komponen utama TON - blockchain.

Konsep dhasar

akun (akun). Sakumpulan data sing diidentifikasi kanthi nomer 256-bit akun_id (paling asring iki kunci umum saka pemilik akun). Ing kasus dhasar (ndeleng ngisor nul workchain), data iki nuduhake imbangan pangguna. "Occupy" tartamtu akun_id sapa bisa, nanging regane mung bisa diganti miturut aturan tartamtu.

Kontrak pinter (kontrak pinter). Intine, iki minangka kasus khusus saka akun, ditambah karo kode kontrak cerdas lan panyimpenan variabel. Yen ing kasus "dompet" sampeyan bisa nyimpen lan mbatalake dhuwit saka iku miturut aturan sing relatif prasaja lan wis ditemtokake, banjur ing kasus kontrak pinter aturan iki ditulis ing wangun kode (ing tartamtu Turing-lengkap. basa pemrograman).

Negara Blockchain (negara blockchain). Setel negara kabeh akun / kontrak cerdas (ing pangertèn abstrak, tabel hash, ing ngendi tombol kasebut minangka pengenal akun lan nilai kasebut minangka data sing disimpen ing akun).

Pesen (pesen). Ing ndhuwur aku nggunakake ekspresi "kredit lan debit dhuwit" - iki minangka conto pesen tartamtu ("transfer N gram saka akun akun_1 kanggo akun akun_2"). Temenan, mung simpul sing duwe kunci pribadi akun sing bisa ngirim pesen kasebut akun_1 - lan bisa konfirmasi iki karo teken. Asil ngirim pesen kasebut menyang akun reguler yaiku paningkatan keseimbangane, lan asil saka kontrak cerdas yaiku eksekusi kode kasebut (sing bakal ngolah panrimo pesen). Mesthi, pesen liyane uga bisa (mindhah ora jumlah moneter, nanging data sewenang-wenang antarane kontrak pinter).

Transaksi (transaksi). Kasunyatan bilih pesen dikirim disebut transaksi. Transaksi ngganti negara blockchain. Iku transaksi (cathetan pangiriman pesen) sing nggawe pamblokiran ing blockchain. Ing babagan iki, sampeyan bisa mikir babagan kahanan blokade minangka basis data tambahan - kabeh pamblokiran minangka "beda" sing kudu ditrapake sacara berurutan kanggo entuk status database saiki. Spesifik kemasan "beda" kasebut (lan mulihake kahanan lengkap) bakal dibahas ing artikel sabanjure.

Blockchain ing TON: apa lan kenapa?

Kaya sing kasebut ing artikel sadurunge, pamblokiran minangka struktur data, unsur-unsur (blok) sing diurutake dadi "rantai", lan saben blok rantai sabanjure ngemot hash saka sing sadurunge.. Komentar kasebut takon pitakonan: kenapa kita butuh struktur data kaya nalika kita wis duwe DHT - tabel hash sing disebarake? Temenan, sawetara data bisa disimpen ing DHT, nanging iki mung cocok kanggo informasi sing ora "sensitif". Saldo Cryptocurrency ora bisa disimpen ing DHT - utamané amarga lack of mriksa ing integritas. Bener, kabeh kerumitan struktur pamblokiran tuwuh kanggo nyegah gangguan karo data sing disimpen ing kono.

Nanging, pamblokiran ing TON katon luwih rumit tinimbang ing umume sistem distribusi liyane - lan amarga rong alasan. Kapisan yaiku kepinginan kanggo nyilikake kabutuhan garpu. Ing mata uang kripto tradisional, kabeh paramèter disetel ing tahap wiwitan lan upaya kanggo ngganti kasebut bener-bener ndadékaké munculé "alam semesta cryptocurrency alternatif." Alasan kapindho yaiku dhukungan kanggo crushing (sharding, sharding) pamblokiran. Blockchain minangka struktur sing ora bisa dadi cilik saka wektu; lan biasane saben simpul tanggung jawab kanggo operasi jaringan dipeksa kanggo nyimpen rampung. Ing sistem tradisional (terpusat), sharding digunakake kanggo ngatasi masalah kasebut: sawetara cathetan ing database dumunung ing siji server, sawetara ing liyane, etc. Ing kasus cryptocurrencies, fungsi kasebut isih langka - utamane, amarga kasunyatane angel nambah sharding menyang sistem sing ora direncanakake.

Kepiye rencana TON kanggo ngrampungake loro masalah ing ndhuwur?

Konten Blockchain. Rante kerja.

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

Kaping pisanan, ayo ngomong babagan apa sing direncanakake kanggo disimpen ing pamblokiran. Negara akun ("dompet" ing kasus dhasar) lan kontrak cerdas bakal disimpen ing kono (kanggo kesederhanaan, kita bakal nganggep yen iki padha karo akun). Intine, iki bakal dadi tabel hash biasa - tombol kasebut bakal dadi pengenal akun_id, lan nilai minangka struktur data sing ngemot barang kayata:

  • imbangan;
  • kode kontrak pinter (mung kanggo kontrak pinter);
  • panyimpenan data kontrak pinter (mung kanggo kontrak pinter);
  • statistik;
  • (opsional) kunci umum kanggo transfer saka akun, kanthi default account_id;
  • antrian pesen sing metu (ing kene dilebokake kanggo diterusake menyang panampa);
  • dhaptar pesen paling anyar sing dikirim menyang akun iki.

Kaya sing kasebut ing ndhuwur, pamblokiran kasebut kalebu transaksi - pesen sing dikirim menyang macem-macem akun account_id. Nanging, saliyane account_id, pesen uga ngemot kolom 32-bit workchain_id - sing diarani pengenal rante kerja (rante kerja, blockchain digunakake). Iki ngidini sampeyan duwe sawetara pamblokiran bebas saka siji liyane karo konfigurasi beda. Ing kasus iki, workchain_id = 0 dianggep minangka kasus khusus, nul workchain - iku saldo ing sing bakal cocog karo TON (Gram) cryptocurrency. Kemungkinan, ing wiwitan, rantai kerja liyane ora bakal ana.

Shardchains. Paradigma Sharding Tanpa wates.

Nanging wutah ing jumlah pamblokiran ora mandheg ing kono. Ayo menehi hasil karo sharding. Bayangake yen saben akun (account_id) diparengake pamblokiran dhewe - ngemot kabeh pesen sing teka - lan negara kabeh pamblokiran kasebut disimpen ing simpul sing kapisah.

Mesthi, iki banget boros: paling kamungkinan, ing saben iki shardchains (shardchain, pamblokiran pecahan) transaksi bakal teka arang banget, lan akeh simpul kuat bakal dibutuhake (looking ahead, aku Wigati sing kita ora mung ngomong babagan klien ing ponsel - nanging bab server serius).

Mulane, shardchain nggabungake akun kanthi awalan biner saka pengenal: yen shardchain duwe awalan 0110, mula bakal kalebu transaksi kabeh akun_id sing diwiwiti karo nomer kasebut. Iki shard_prefix bisa duwe dawa saka 0 kanggo 60 bit - lan bab utama iku bisa ngganti mbosenke.

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

Sanalika salah siji saka shardchains wiwit nampa akeh banget transaksi, simpul digunakake ing, miturut aturan sing wis ditemtokake, "dibagi" dadi anak loro - ater-ater sing bakal dadi siji dicokot maneh (lan kanggo salah siji saka wong-wong mau dicokot iki bakal dadi. padha karo 0, lan kanggo liyane - 1). Tuladhane, shard_prefix = 0110b bakal dipérang dadi 01100b lan 01101b. Ing siji, yen loro shardchains "tanggane" wiwit aran cukup nyaman (kanggo sawetara wektu), padha bakal nggabung maneh.

Mangkono, sharding rampung "saka ngisor munggah" - kita nganggep yen saben akun duwe shard dhewe, nanging saiki padha "disambungake" dening prefiks. Iki tegese Paradigma Sharding Tanpa wates (paradigma sharding tanpa wates).

Kanthi kapisah, aku pengin nandheske manawa rantai kerja mung ana - nyatane, workchain_id iku bagéan saka pengenal saka shardchain tartamtu. Ing istilah formal, saben shardchain ditetepake kanthi pasangan angka (workchain_id, shard_prefix).

Koreksi kesalahan. Blockchain vertikal.

Cara tradisional, transaksi apa wae ing pamblokiran dianggep "diset ing watu." Nanging, ing kasus TON, bisa uga "nulis maneh sejarah" - yen ana wong (sing diarani. simpul nelayan) bakal mbuktekake manawa salah sijine pamblokiran kasebut salah ditandatangani. Ing kasus iki, blok koreksi khusus ditambahake menyang shardchain sing cocog, ngemot hash blok kasebut dhewe sing didandani (lan dudu blok pungkasan ing shardchain). Mikir shardchain minangka rantai blok sing ditata kanthi horisontal, kita bisa ujar manawa blok koreksi dipasang ing blok sing salah ora ana ing sisih tengen, nanging saka ndhuwur - mula dianggep dadi bagean saka "blockchain vertikal" cilik. . Mangkono, kita bisa ngomong yen shardchains iku pamblokiran rong dimensi.

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

Yen, sawise pamblokiran sing salah, owah-owahan sing digawe kasebut dirujuk dening pamblokiran sakteruse (yaiku, transaksi anyar digawe adhedhasar sing ora bener), sing korektif uga ditambahake ing blok kasebut "ing ndhuwur". Yen pamblokiran ora mengaruhi informasi "kena pengaruh", "gelombang korektif" iki ora ditrapake kanggo wong-wong mau. Contone, ing ilustrasi ing ndhuwur, transaksi pamblokiran pisanan, nambah saldo akun C, diakoni minangka salah - mulane, transaksi ngurangi saldo akun iki ing blok katelu uga kudu dibatalake, lan blok korektif kudu setya ing ndhuwur blok dhewe.

Perlu dicathet yen sanajan pamblokiran korektif digambarake minangka "ing ndhuwur" sing asli, nyatane bakal ditambahake ing mburi blok sing cocog (ing ngendi kudu kronologis). Lokasi loro-dimensi mung nuduhake menyang titik ing pamblokiran sing bakal "disambung" (liwat hash blok asli sing ana ing kono).

Sampeyan bisa filosofi kanthi kapisah babagan keputusan sing apik kanggo "ngganti masa lalu". Kayane yen kita ngakoni kemungkinan blok sing salah katon ing shardchain, mula kita ora bisa ngindhari kemungkinan muncule blok koreksi sing salah. Ing kene, kaya sing dakkandhakake, bedane yaiku jumlah simpul sing kudu entuk konsensus babagan blok anyar - bakal ana sawetara wong sing kerja ing saben shardchain.kelompok kerja» node (sing asring ngganti komposisi), lan introduksi blok korektif mbutuhake idin saka kabeh wong simpul validator. Aku bakal ngomong luwih akeh babagan validator, workgroup, lan peran simpul liyane ing artikel sabanjure.

Siji pamblokiran kanggo mrentah kabeh

Ana akeh informasi sing kadhaptar ing ndhuwur babagan macem-macem jinis pamblokiran, sing uga kudu disimpen ing endi wae. Utamane, kita ngomong babagan informasi ing ngisor iki:

  • bab nomer lan konfigurasi saka workchains;
  • babagan jumlah shardchains lan prefiks;
  • babagan simpul sing saiki tanggung jawab kanggo shardchains;
  • hash saka pamblokiran pungkasan ditambahake kanggo kabeh shardchains.

Kaya sing wis sampeyan duga, kabeh perkara kasebut dicathet ing panyimpenan blockchain liyane - masterchain (masterchain, pamblokiran master). Amarga anané hash saka blok kabeh shardchain ing blok kasebut, sistem kasebut disambungake banget. Iki tegese, antarane liyane, generasi blok anyar ing masterchain bakal kedadeyan sanalika sawise nggawe blok ing shardchains - samesthine blok ing shardchain bakal katon meh bebarengan kira-kira saben 5 detik, lan blok sabanjure ing shardchain. masterchain - detik sawise iku.

Nanging sapa sing bakal tanggung jawab kanggo implementasine kabeh karya titanic iki - kanggo ngirim pesen, nglakokake kontrak cerdas, mbentuk blok ing shardchains lan masterchain, lan malah mriksa blok kanggo kesalahan? Apa kabeh iki bakal ditindakake kanthi rahasia dening telpon jutaan pangguna kanthi klien Telegram sing diinstal? Utawa, mbok menawa, tim Durov bakal nglirwakake gagasan desentralisasi lan server bakal nindakake kanthi cara sing lawas?

Nyatane, ora ana siji utawa jawaban liyane sing bener. Nanging wates artikel iki cepet entek, supaya kita bakal pirembagan bab macem-macem peran saka kelenjar (sampeyan bisa uga wis ngeweruhi sawetara saka wong-wong mau), uga mekanika karya, ing sisih sabanjuré.

Source: www.habr.com

Add a comment