Pira TPS ing pamblokiran sampeyan?

Pitakonan favorit babagan sistem sing disebarake saka wong non-teknis yaiku "Pinten tps ing pamblokiran sampeyan?" Nanging, nomer sing diwenehake kanggo nanggepi biasane ora ana sing padha karo apa sing pengin dirungokake. Nyatane, dheweke pengin takon "apa blokchain sampeyan bakal cocog karo syarat bisnisku," lan syarat kasebut dudu nomer siji, nanging akeh kahanan - ing kene ana toleransi kesalahan jaringan, syarat finalitas, ukuran, sifat transaksi lan akeh parameter liyane. Dadi jawaban kanggo pitakonan "pinten tps" ora gampang, lan meh ora lengkap. Sistem sing disebarake kanthi puluhan utawa atusan simpul sing nindakake petungan sing cukup rumit bisa uga ana ing macem-macem negara sing ana gandhengane karo kahanan jaringan, isi blokade, kegagalan teknis, masalah ekonomi, serangan ing jaringan lan akeh alasan liyane. . Tahap ing ngendi masalah kinerja bisa beda-beda saka layanan tradisional, lan server jaringan blockchain minangka layanan jaringan sing nggabungake fungsionalitas database, server web lan klien torrent, sing ndadekake banget rumit babagan profil beban ing kabeh subsistem. : prosesor, memori, jaringan, panyimpenan

Kedadeyan yen jaringan desentralisasi lan pamblokiran minangka piranti lunak sing cukup spesifik lan ora biasa kanggo pangembang piranti lunak terpusat. Mula, aku pengin nyorot aspek penting babagan kinerja lan kelestarian jaringan desentralisasi, pendekatan kanggo ngukur lan nemokake kemacetan. Kita bakal ndeleng macem-macem masalah kinerja sing mbatesi kacepetan nyedhiyakake layanan kanggo pangguna blockchain lan nyathet fitur karakteristik piranti lunak jinis iki.

Tahap panjalukan layanan dening klien blockchain

Supaya bisa ngomong kanthi jujur ​​babagan kualitas layanan sing luwih utawa kurang kompleks, sampeyan kudu nganggep ora mung nilai rata-rata, nanging uga maksimal / minimal, median, persentil. Secara teoritis, kita bisa ngomong babagan 1000 tps ing sawetara pamblokiran, nanging yen transaksi 900 rampung kanthi kacepetan gedhe, lan 100 "macet" sawetara detik, mula wektu rata-rata sing dikumpulake ing kabeh transaksi ora dadi metrik sing bener kanggo klien. sing aku ora bisa ngrampungake transaksi ing sawetara detik. Sauntara "bolongan" disebabake babak konsensus ora kejawab utawa pamisah jaringan bisa nemen ngrusak layanan sing wis nuduhake kinerja banget ing bangku test.

Kanggo ngenali bottlenecks kasebut, sampeyan kudu duwe pangerten sing apik babagan tahapan ing ngendi pamblokiran nyata bisa ngalami kesulitan nglayani pangguna. Ayo njlèntrèhaké siklus ngirim lan ngolah transaksi, uga entuk negara anyar saka pamblokiran, saka ngendi klien bisa verifikasi yen transaksi wis diproses lan diitung.

  1. transaksi kawangun ing klien
  2. transaksi wis mlebu ing klien
  3. klien milih salah siji saka kelenjar lan ngirim transaksi menyang
  4. klien langganan nganyari kanggo database negara saka simpul, nunggu asil transaksi katon
  5. simpul nyebarake transaksi liwat jaringan p2p
  6. sawetara utawa siji BP (produser pemblokiran) pangolahan akumulasi transaksi, nganyari database negara
  7. BP mbentuk blok anyar sawise ngolah jumlah transaksi sing dibutuhake
  8. BP nyebarake blok anyar liwat jaringan p2p
  9. blok anyar dikirim menyang simpul sing diakses klien
  10. node nganyari database negara
  11. simpul ndeleng nganyari babagan klien lan ngirim kabar transaksi

Saiki ayo dideleng kanthi cetha babagan tahapan kasebut lan jelasake masalah kinerja potensial ing saben tahapan. Ora kaya sistem terpusat, kita uga bakal nimbang eksekusi kode ing klien jaringan. Cukup asring, nalika ngukur TPS, wektu pangolahan transaksi diklumpukake saka kelenjar, lan ora saka klien - iki ora adil. Klien ora peduli sepira cepet simpul ngolah transaksi kasebut; sing paling penting kanggo dheweke yaiku wektu nalika informasi sing dipercaya babagan transaksi iki sing kalebu ing blokchain kasedhiya kanggo dheweke. Iku metrik iki sing ateges wektu eksekusi transaksi. Iki tegese klien sing beda-beda, malah ngirim transaksi sing padha, bisa nampa wektu sing beda-beda, sing gumantung saka saluran, beban lan jarak simpul, lsp. Dadi pancen perlu kanggo ngukur wektu iki ing klien, amarga iki minangka parameter sing kudu dioptimalake.

Nyiyapake transaksi ing sisih klien

Ayo dadi miwiti karo loro TCTerms pisanan: transaksi kawangun lan mlebu dening klien. Anehe, iki uga bisa dadi bottleneck kinerja blockchain saka sudut pandang klien. Iki ora biasa kanggo layanan terpusat, sing njupuk kabeh kalkulasi lan operasi kanthi data, lan klien mung nyiapake panjaluk singkat sing bisa njaluk data utawa kalkulasi sing akeh, entuk asil sing wis siap. Ing pamblokiran, kode klien dadi luwih kuat, lan inti pamblokiran dadi luwih entheng, lan tugas komputasi massive biasane ditransfer menyang piranti lunak klien. Ing pamblokiran, ana klien sing bisa nyiapake siji transaksi kanggo wektu sing cukup suwe (Aku ngomong babagan macem-macem bukti merkle, bukti sing ringkes, tanda tangan ambang lan operasi kompleks liyane ing sisih klien). Conto sing apik babagan verifikasi rantai sing gampang lan persiapan sing abot kanggo transaksi ing klien yaiku bukti keanggotaan ing dhaptar adhedhasar Merkle-tree, kene artikel.

Uga, aja lali yen kode klien ora mung ngirim transaksi menyang pamblokiran, nanging luwih dhisik takon babagan kahanan pamblokiran - lan kegiatan iki bisa nyebabake kemacetan jaringan lan simpul pamblokiran. Dadi, nalika njupuk pangukuran, bakal cukup kanggo niru prilaku kode klien kanthi lengkap. Sanajan ing pamblokiran sampeyan ana klien cahya biasa sing menehi tandha digital biasa ing transaksi sing paling gampang kanggo nransfer sawetara aset, saben taun isih ana petungan sing luwih gedhe ing klien, algoritma crypto saya kuwat, lan bagean pangolahan kasebut bisa dadi bottleneck sing signifikan ing mangsa ngarep. Mulane, ati-ati lan aja kantun kahanan nalika, ing transaksi langgeng 3.5s, 2.5s ngginakaken ing nyiapake lan mlebu transaksi, lan 1.0s kanggo ngirim menyang jaringan lan nunggu respon. Kanggo netepake risiko bottleneck iki, sampeyan kudu ngumpulake metrik saka mesin klien, lan ora mung saka simpul blockchain.

Ngirim transaksi lan ngawasi statuse

Langkah sabanjure yaiku ngirim transaksi menyang simpul pamblokiran sing dipilih lan nampa status nampa menyang blumbang transaksi. Tahap iki padha karo akses database biasa; simpul kudu ngrekam transaksi ing blumbang lan miwiti nyebarake informasi babagan kasebut liwat jaringan p2p. Pendekatan kanggo ngevaluasi kinerja ing kene padha karo ngevaluasi kinerja layanan mikro Web API tradisional, lan transaksi kasebut dhewe ing blockchain bisa dianyari lan aktif ngganti statuse. Umumé, nganyari informasi transaksi ing sawetara pamblokiran bisa kedadeyan kaping pirang-pirang, umpamane nalika ngalih ing antarane garpu rantai utawa nalika BPs ngumumake niat kanggo nyakup transaksi ing blok. Watesan ukuran blumbang iki lan jumlah transaksi bisa mengaruhi kinerja pamblokiran kasebut. Yen blumbang transaksi kapenuhan ukuran maksimum bisa, utawa ora pas ing RAM, kinerja jaringan bisa nyelehake banget. Blockchain ora duwe sarana terpusat kanggo nglindhungi saka banjir pesen sampah, lan yen blockchain ndhukung transaksi volume dhuwur lan biaya sing murah, iki bisa nyebabake kolam transaksi kebanjiran - potensial liyane bottleneck kinerja.

Ing pamblokiran, klien ngirim transaksi menyang simpul pamblokiran apa wae sing disenengi, hash transaksi kasebut biasane dikenal dening klien sadurunge ngirim, mula kabeh sing kudu ditindakake yaiku nggayuh sambungan kasebut lan, sawise transmisi, ngenteni pamblokiran kasebut ganti. negara sawijining, mbisakake transaksi. Elinga yen kanthi ngukur "tps" sampeyan bisa entuk asil sing beda banget kanggo macem-macem cara nyambungake menyang simpul pamblokiran. Iki bisa dadi RPC HTTP biasa utawa WebSocket sing ngidini sampeyan ngetrapake pola "langganan". Ing kasus kapindho, klien bakal nampa kabar sadurungé, lan simpul bakal nglampahi kurang sumber daya (utamané memori lan lalu lintas) ing respon babagan status transaksi. Dadi nalika ngukur "tps" perlu kanggo njupuk menyang akun cara klien nyambung menyang simpul. Mulane, kanggo netepake risiko bottleneck iki, pamblokiran pathokan kudu bisa niru klien kanthi panjaluk WebSocket lan HTTP RPC, kanthi proporsi sing cocog karo jaringan nyata, uga ngganti sifat transaksi lan ukurane.

Kanggo netepake risiko bottleneck iki, sampeyan uga kudu ngumpulake metrik saka mesin klien, lan ora mung saka simpul blockchain.

Transmisi transaksi lan pamblokiran liwat jaringan p2p

Ing pamblokiran, jaringan peer-to-peer (p2p) digunakake kanggo nransfer transaksi lan pamblokiran antarane peserta. Transaksi nyebar ing saindhenging jaringan, wiwit saka salah siji simpul, nganti tekan produser blok peer, sing ngemas transaksi dadi blok lan, nggunakake p2p sing padha, nyebarake blok anyar menyang kabeh simpul jaringan. Basis jaringan p2p paling modern yaiku macem-macem modifikasi protokol Kademlia. kene ringkesan apik saka protokol iki, lan lah - artikel kanthi macem-macem pangukuran ing jaringan BitTorrent, sing bisa dingerteni manawa jinis jaringan iki luwih rumit lan ora bisa ditebak tinimbang jaringan sing dikonfigurasi kanthi kaku saka layanan terpusat. ugi, lah artikel babagan ngukur macem-macem metrik menarik kanggo node Ethereum.

Singkatipun, saben peer ing jaringan kasebut njaga dhaptar dinamis dhewe saka kanca-kanca liyane sing njaluk pamblokiran informasi sing ditangani dening konten. Nalika peer nampa panjalukan, iku salah siji menehi informasi sing perlu utawa liwat panjalukan kanggo peer pseudo-acak sabanjuré saka dhaftar, lan sawise nampa respon, iku liwat menyang panjaluk lan caches kanggo sawetara wektu, menehi iki pemblokiran informasi sadurungé wektu sabanjuré. Mangkono, informasi populer rampung ing akeh cache saka akeh kanca, lan informasi sing ora populer diganti kanthi bertahap. Peers nyimpen cathetan sapa sing wis nransfer informasi marang sapa, lan jaringan nyoba ngrangsang distributor aktif kanthi nambah rating lan nyedhiyakake layanan sing luwih dhuwur, kanthi otomatis ngganti peserta sing ora aktif saka dhaptar peer.

Dadi, transaksi saiki kudu disebarake ing saindhenging jaringan supaya pamblokiran-produser bisa ndeleng lan nyakup ing blok kasebut. Node kasebut kanthi aktif "nyebarake" transaksi anyar kanggo kabeh wong lan ngrungokake jaringan, ngenteni blok ing indeks sing transaksi sing dibutuhake bakal katon kanggo menehi kabar marang klien sing nunggu. Wektu sing dibutuhake jaringan kanggo nransfer informasi babagan transaksi lan pamblokiran anyar ing jaringan p2p gumantung saka akeh faktor: jumlah simpul jujur ​​sing kerja ing cedhak (saka sudut pandang jaringan), "anget- munggah" saka cache simpul kasebut, ukuran blok, transaksi, sifat owah-owahan, geografi jaringan, jumlah simpul lan akeh faktor liyane. Pangukuran kompleks metrik kinerja ing jaringan kasebut minangka masalah sing rumit; perlu kanggo ngevaluasi wektu pangolahan panjalukan ing klien lan kanca-kanca (node ​​blockchain). Masalah ing sembarang mekanisme p2p, eviction data salah lan caching, Manajemen ora efektif saka dhaptar kanca-kanca aktif, lan akeh faktor liyane bisa nimbulaké telat sing mengaruhi efficiency saka kabeh jaringan minangka kabèh, lan bottleneck iki paling angel kanggo njelasno. , tes lan interpretasi asil.

Pangolahan blockchain lan nganyari database negara

Sisih paling penting saka pamblokiran yaiku algoritma konsensus, aplikasi kanggo pamblokiran anyar sing ditampa saka jaringan lan pangolahan transaksi kanthi ngrekam asil ing basis data negara. Nambahake blok anyar menyang rantai banjur milih rantai utama kudu cepet-cepet. Nanging, ing urip nyata, "kudu" ora ateges "bisa", lan siji bisa, contone, mbayangno kahanan ing ngendi loro rentengan saingan dawa terus-terusan ngalih ing antarane piyambak, ngganti metadata saka ewu transaksi ing blumbang ing saben ngalih. , lan terus-terusan muter maneh database negara. Tahap iki, kanggo nemtokake bottleneck, luwih prasaja tinimbang lapisan jaringan p2p, amarga eksekusi transaksi lan algoritma konsensus strictly deterministic, lan iku luwih gampang kanggo ngukur apa kene.
Ingkang utama yaiku ora mbingungake degradasi acak ing kinerja tahap iki kanthi masalah jaringan - simpul luwih alon ngirim pamblokiran lan informasi babagan rantai utama, lan kanggo klien eksternal iki bisa uga katon kaya jaringan alon, sanajan masalah kasebut ana ing panggonan temen beda.

Kanggo ngoptimalake kinerja ing tahap iki, migunani kanggo ngumpulake lan ngawasi metrik saka kelenjar kasebut dhewe, lan kalebu sing ana gandhengane karo nganyari database negara: jumlah blok sing diproses ing simpul, ukurane, jumlah transaksi, nomer ngalih antarane chain garpu, nomer pamblokiran ora bener , virtual machine wektu operasi, data commit wektu, etc. Iki bakal nyegah masalah jaringan dadi bingung karo kesalahan ing algoritma pangolahan chain.

Transaksi pangolahan mesin virtual bisa dadi sumber informasi sing migunani sing bisa ngoptimalake operasi pamblokiran. Jumlah alokasi memori, jumlah instruksi maca / nulis, lan metrik liyane sing ana gandhengane karo efisiensi eksekusi kode kontrak bisa nyedhiyakake akeh informasi sing migunani kanggo pangembang. Ing wektu sing padha, kontrak cerdas minangka program, sing tegese ing teori bisa nggunakake sumber daya apa wae: cpu / memori / jaringan / panyimpenan, saéngga pangolahan transaksi minangka tahap sing rada ora mesthi, sing, saliyane, owah-owahan banget nalika pindhah ing antarane versi. lan nalika ngganti kode kontrak. Mulane, metrik sing ana gandhengane karo pangolahan transaksi uga dibutuhake kanggo ngoptimalake kinerja pamblokiran kanthi efektif.

Ditampa dening klien saka kabar babagan inklusi transaksi ing pamblokiran

Iki minangka tahap pungkasan saka klien blockchain sing nampa layanan kasebut; dibandhingake karo tahapan liyane, ora ana biaya overhead sing gedhe, nanging isih perlu dipikirake kemungkinan klien nampa respon akeh saka simpul (contone, kontrak cerdas. ngasilake array data). Ing kasus apa wae, titik iki sing paling penting kanggo wong sing takon "pinten tps ing blokchain sampeyan?", Amarga Ing wayahe iki, wektu nampa layanan direkam.

Ing papan iki, mesthi ana kiriman wektu lengkap sing kudu ditindakake klien ngenteni tanggapan saka blokchain; wektu iki pangguna bakal ngenteni konfirmasi ing aplikasi kasebut, lan optimasi kasebut yaiku tugas utama pangembang.

kesimpulan

Akibaté, kita bisa njlèntrèhaké jinis operasi sing ditindakake ing pamblokiran lan dibagi dadi sawetara kategori:

  1. transformasi kriptografi, konstruksi bukti
  2. jaringan peer-to-peer, transaksi lan replikasi blok
  3. pangolahan transaksi, eksekusi kontrak cerdas
  4. nglamar owah-owahan ing pamblokiran menyang database negara, nganyari data ing transaksi lan pamblokiran
  5. panjalukan mung diwaca kanggo database negara, API simpul blockchain, layanan langganan

Umumé, syarat teknis kanggo node blockchain modern banget serius - CPU cepet kanggo kriptografi, jumlah RAM sing akeh kanggo nyimpen lan ngakses database negara kanthi cepet, interaksi jaringan nggunakake akeh sambungan sing mbukak bebarengan, lan panyimpenan gedhe. Keperluan sing dhuwur lan macem-macem jinis operasi mesthi nyebabake kasunyatan manawa simpul bisa uga ora duwe sumber daya sing cukup, banjur samubarang tahapan sing dibahas ing ndhuwur bisa dadi kemacetan liyane kanggo kinerja jaringan sakabèhé.

Nalika ngrancang lan ngevaluasi kinerja blockchains, sampeyan kudu nganggep kabeh poin kasebut. Kanggo nindakake iki, sampeyan kudu ngumpulake lan nganalisa metrik bebarengan saka klien lan simpul jaringan, goleki korélasi ing antarane, ngira wektu sing dibutuhake kanggo nyedhiyakake layanan kanggo klien, njupuk kabeh sumber daya utama: cpu / memori / jaringan / panyimpenan , ngerti carane padha digunakake lan pengaruhe saben liyane. Kabeh iki ndadekake mbandhingake kecepatan blokade sing beda-beda ing bentuk "pira TPS" minangka tugas sing ora bisa ditindakake, amarga ana akeh konfigurasi lan negara sing beda. Ing sistem terpusat gedhe, klompok atusan server, masalah kasebut uga rumit lan uga mbutuhake koleksi akeh metrik sing beda-beda, nanging ing blok blok, amarga jaringan p2p, kontrak pangolahan mesin virtual, ekonomi internal, jumlah derajat. kebebasan luwih gedhe, sing ndadekake tes kasebut sanajan ing sawetara server, iku non-indikatif lan mung nuduhake nilai-nilai sing meh ora ana hubungane karo kasunyatan.

Mulane, nalika ngembangake inti pamblokiran, kanggo ngevaluasi kinerja lan njawab pitakonan "Apa wis luwih apik dibandhingake karo wektu kepungkur?" Kita nggunakake piranti lunak sing cukup rumit sing ngrancang peluncuran blockchain kanthi puluhan simpul lan kanthi otomatis ngluncurake pathokan lan ngumpulake metrik. ; tanpa informasi iki angel banget kanggo debug protokol sing bisa digunakake karo akeh peserta.

Dadi, nalika sampeyan nampa pitakonan "pira TPS ing blockchain sampeyan?", Nawakake interlocutor sawetara teh lan takon apa dheweke wis siyap kanggo ndeleng rolas grafik lan uga ngrungokake kabeh telung kothak masalah kinerja blockchain lan saran kanggo solusine...

Source: www.habr.com

Add a comment