Sabaraha TPS dina blockchain anjeun?

Patarosan favorit ngeunaan sistem anu disebarkeun ti jalma non-teknis nyaéta "Sabaraha tps dina blockchain anjeun?" Sanajan kitu, jumlah nu dibikeun dina respon biasana boga saeutik di umum jeung naon questioner hoyong ngadangu. Nyatana, anjeunna hoyong naroskeun "naha blockchain anjeun cocog sareng syarat bisnis kuring," sareng sarat ieu sanés hiji angka, tapi seueur kaayaan - di dieu aya kasabaran jaringan kasalahan, syarat finalitas, ukuran, sifat transaksi sareng seueur parameter sanésna. Jadi jawaban kana patarosan "sabaraha tps" teu gampang jadi basajan, sarta ampir pernah lengkep. Sistem anu disebarkeun kalayan puluhan atanapi ratusan titik anu ngalaksanakeun itungan anu rumit tiasa aya dina sajumlah ageung nagara anu béda-béda anu aya hubunganana sareng kaayaan jaringan, eusi blokcheyn, gagal téknis, masalah ékonomi, serangan dina jaringan sareng seueur alesan sanésna. . Tahap dimana masalah kinerja mungkin béda ti jasa tradisional, sareng server jaringan blockchain mangrupikeun jasa jaringan anu ngagabungkeun fungsionalitas database, server wéb sareng klien torrent, anu ngajantenkeun pajeulitna dina hal profil beban dina sadaya subsistem. : processor, memori, jaringan, neundeun

Éta kajadian yén jaringan desentralisasi sareng blockchain mangrupikeun parangkat lunak khusus sareng teu biasa pikeun pamekar parangkat lunak terpusat. Ku alatan éta, abdi hoyong nyorot aspék penting tina kinerja sarta kelestarian jaringan desentralisasi, pendekatan pikeun ngukur aranjeunna sarta manggihan bottlenecks. Urang bakal ningali rupa-rupa masalah kinerja anu ngabatesan kagancangan nyayogikeun jasa ka pangguna blockchain sareng perhatikeun fitur karakteristik parangkat lunak ieu.

Tahapan paménta jasa ku klien blockchain

Dina raraga nyarita jujur ​​ngeunaan kualitas sagala jasa leuwih atawa kirang kompléks, Anjeun kudu tumut kana akun teu ukur nilai rata, tapi ogé maksimum / minimum, median, percentiles. Téoritis, urang bisa ngobrol ngeunaan 1000 tps dina sababaraha blockchain, tapi lamun 900 transaksi réngsé kalawan speed pisan, sarta 100 "nyangkut" pikeun sababaraha detik, mangka rata-rata waktu dikumpulkeun dina sakabéh transaksi teu métrik lengkep adil pikeun klien. anu kuring teu bisa ngalengkepan urus dina sababaraha detik. Samentara "liang" disababkeun ku rounds konsensus lasut atawa pamisah jaringan bisa greatly ngaruksak layanan nu geus ditémbongkeun kinerja unggulan dina bangku test.

Pikeun ngaidentipikasi bottlenecks sapertos kitu, anjeun kedah gaduh pamahaman anu hadé ngeunaan tahapan dimana blockchain nyata tiasa sesah ngalayanan pangguna. Hayu urang ngajelaskeun siklus pangiriman jeung ngolah transaksi, kitu ogé pikeun meunangkeun kaayaan anyar blockchain, ti mana klien bisa pariksa yen urus na geus diolah jeung accounted pikeun.

  1. transaksi kabentuk dina klien
  2. urus ditandatanganan dina klien
  3. klien milih salah sahiji titik sarta ngirimkeun urus na ka dinya
  4. klien ngalanggan apdet kana database kaayaan titik, ngantosan hasil urus na muncul
  5. titik distributes urus ngaliwatan jaringan p2p
  6. sababaraha atawa hiji BP (produser block) prosés akumulasi transaksi, ngamutahirkeun database kaayaan
  7. BP ngabentuk blok anyar sanggeus ngolah jumlah diperlukeun tina transaksi
  8. BP ngadistribusikaeun blok anyar ngaliwatan jaringan p2p
  9. blok anyar dikirimkeun ka titik anu diaksés ku klien
  10. node ngamutahirkeun database kaayaan
  11. titik nilik update ngeunaan klien tur ngirim anjeunna bewara urus

Ayeuna hayu urang ningal langkung caket kana tahap-tahap ieu sareng ngajelaskeun poténsi masalah kinerja dina unggal tahapan. Teu kawas sistem terpusat, urang ogé bakal mertimbangkeun palaksanaan kode dina klien jaringan. Cukup sering, nalika ngukur TPS, waktos ngolah urus dikumpulkeun tina titik, sareng sanés ti klien - ieu sanés adil. Klién henteu paduli kumaha gancangna node ngolah transaksina; anu paling penting pikeun anjeunna nyaéta momen nalika inpormasi anu dipercaya ngeunaan transaksi ieu kalebet dina blockchain sayogi pikeun anjeunna. Métrik ieu mangrupikeun waktos palaksanaan transaksi. Ieu ngandung harti yén klien béda, sanajan ngirim urus sarua, bisa nampa waktos lengkep beda, nu gumantung kana saluran, beban sarta jarak titik, jsb. Janten leres pisan pikeun ngukur waktos ieu dina klien, sabab ieu mangrupikeun parameter anu kedah dioptimalkeun.

Nyiapkeun transaksi di sisi klien

Hayu urang mimitian ku dua titik kahiji: urus kabentuk jeung ditandatanganan ku klien. Cukup aneh, ieu ogé tiasa janten bottleneck kinerja blockchain tina sudut pandang klien. Ieu mahiwal pikeun layanan terpusat, nu nyokot alih sagala itungan jeung operasi kalawan data, sarta klien saukur nyiapkeun pamundut pondok nu bisa ménta jumlah badag data atawa itungan, meunangkeun hasil siap-dijieun. Dina blockchains, kodeu klien jadi beuki loba kuat, sarta inti blockchain jadi beuki lightweight, sarta tugas komputasi masif biasana dibikeun ka software klien. Dina blockchains, aya klien nu bisa nyiapkeun hiji urus keur cukup lila (Kuring ngawangkong ngeunaan rupa-rupa proofs merkle, proofs succinct, tanda tangan bangbarung jeung operasi kompléks séjénna di sisi klien). Hiji conto alus ngeunaan verifikasi on-ranté gampang jeung persiapan beurat urus on klien nu bukti kaanggotaan dina daptar dumasar kana Merkle-tangkal, Ieuh artikel.

Ogé, ulah hilap yén kode klien henteu ngan ukur ngirim transaksi ka blockchain, tapi mimitina naroskeun kaayaan blockchain - sareng kagiatan ieu tiasa mangaruhan kamacetan jaringan sareng titik blockchain. Janten, nalika nyandak pangukuran, éta wajar pikeun niru paripolah kode klien sabisa-bisa. Sanaos dina blockchain anjeun aya klien cahaya biasa anu nempatkeun tanda tangan digital biasa dina transaksi pangbasajanna pikeun nransferkeun sababaraha aset, unggal taun masih aya itungan anu langkung ageung dina klien, algoritma crypto beuki kuat, sareng ieu bagian tina pamrosésan tiasa robah jadi bottleneck signifikan dina mangsa nu bakal datang. Ku alatan éta, ati jeung ulah sono kaayaan nalika, dina urus langgeng 3.5s, 2.5s spent dina Nyiapkeun sarta Signing urus, sarta 1.0s dina ngirim ka jaringan sarta ngantosan respon a. Pikeun meunteun résiko tina bottleneck ieu, anjeun kedah ngumpulkeun métrik tina mesin klien, sanés ngan tina titik blockchain.

Ngirim transaksi sareng ngawaskeun statusna

Léngkah salajengna nyaéta ngirim transaksi ka titik blockchain anu dipilih sareng nampi status nampi kana kolam renang transaksi. Tahap ieu sami sareng aksés database biasa; titik kedah ngarékam transaksi di kolam renang sareng ngawitan nyebarkeun inpormasi ngeunaan éta ngaliwatan jaringan p2p. Pendekatan pikeun meunteun kinerja di dieu sami sareng ngira-ngira kinerja microservices Web API tradisional, sareng transaksi sorangan dina blockchains tiasa diropéa sareng aktip ngarobih statusna. Sacara umum, ngamutahirkeun informasi urus dina sababaraha blockchains bisa lumangsung sababaraha kali, contona nalika pindah antara garpu ranté atawa nalika BPs ngumumkeun niat maranéhna pikeun ngawengku hiji urus di blok a. Watesan ukuran kolam renang ieu sareng jumlah transaksi di jerona tiasa mangaruhan kinerja blockchain. Lamun kolam renang urus dieusian kana ukuran maksimum mungkin, atawa teu pas dina RAM, kinerja jaringan bisa turun sharply. Blockchains teu boga sarana terpusat ngajaga ngalawan banjir seratan junk, sarta lamun blockchain nu ngarojong transaksi volume tinggi jeung waragad low, ieu bisa ngabalukarkeun kolam renang urus mun mudal-sejen bottleneck kinerja poténsial.

Dina blockchains, klien nu ngirim transaksi ka sagala titik blockchain anjeunna resep, hash tina urus biasana dipikawanoh ku klien saméméh ngirim, jadi sagala anu kudu dipigawé nyaéta pikeun ngahontal sambungan na, sanggeus pangiriman, ngantosan blockchain robah. kaayaan na, sangkan transaksi na. Catet yén ku ngukur "tps" anjeun tiasa nampi hasil anu béda-béda pikeun metode anu béda pikeun nyambungkeun ka titik blockchain. Ieu tiasa janten RPC HTTP biasa atanapi WebSocket anu ngamungkinkeun anjeun ngalaksanakeun pola "ngalanggan". Dina kasus anu kadua, klien bakal nampi béwara sateuacana, sareng titik bakal nyéépkeun sumber daya (utamana mémori sareng lalu lintas) dina réspon ngeunaan status transaksi. Janten nalika ngukur "tps" kedah diperhatoskeun cara klien nyambung ka titik. Ku alatan éta, pikeun meunteun résiko bottleneck ieu, blokchain patokan kedah tiasa niru klien sareng pamundut WebSocket sareng HTTP RPC, dina proporsi anu cocog sareng jaringan nyata, ogé ngarobih sifat transaksi sareng ukuranana.

Pikeun meunteun résiko bottleneck ieu, anjeun ogé kedah ngumpulkeun métrik tina mesin klien, sanés ngan tina titik blockchain.

Pangiriman transaksi sareng blok liwat jaringan p2p

Dina blockchains, jaringan peer-to-peer (p2p) dipaké pikeun nransfer transaksi jeung blok antara pamilon. Transaksi sumebar ka sakuliah jaringan, mimitian ti salah sahiji titik, nepi ka ngahontal produser block peer, anu pak transaksi kana blok jeung, ngagunakeun p2p sarua, ngadistribusikaeun blok anyar ka sadaya titik jaringan. Dasar kalolobaan jaringan p2p modern nyaéta sababaraha modifikasi tina protokol Kademlia. di dieu kasimpulan hade protokol ieu, jeung di dieu - artikel kalawan rupa-rupa pangukuran dina jaringan BitTorrent, ti mana hiji bisa ngarti yén jenis jaringan ieu leuwih kompleks jeung kirang bisa diprediksi ti jaringan rigidly ngonpigurasi sahiji layanan terpusat. oge, di dieu artikel ngeunaan ngukur rupa metrics metot pikeun titik Ethereum.

Pondokna, unggal peer dina jaringan sapertos ngajaga daptar dinamis sorangan peers séjén ti mana eta requests blok informasi nu kajawab ku eusi. Nalika peer nampi pamenta, éta masihan inpormasi anu dipikabutuh atanapi ngalangkungan pamundut ka peer pseudo-acak salajengna tina daptar, sareng saatos nampi réspon, éta dikirimkeun ka anu nyuhunkeun sareng cache sakedap, masihan ieu. blok informasi saméméhna waktos salajengna. Ku kituna, informasi populér ends up dina angka nu gede ngarupakeun caches sajumlah badag peers, sarta informasi unpopular laun diganti. Peers nyimpen rékaman saha nu geus mindahkeun sabaraha informasi ka saha, sarta jaringan nyoba merangsang distributor aktip ku cara ningkatkeun ratings maranéhanana sarta nyadiakeun aranjeunna kalayan tingkat luhur layanan, otomatis displacing pamilon teu aktip ti daptar peer.

Janten, transaksi ayeuna kedah disebarkeun ka sakumna jaringan supados blok-produser tiasa ningali éta sareng kalebet kana blok. Titik aktip "ngadistribusikaeun" transaksi anyar ka sadayana sareng ngadangukeun jaringan, ngantosan blok dina indéks dimana transaksi anu diperyogikeun bakal muncul pikeun ngabéjaan klien anu ngantosan. Waktu nu diperlukeun pikeun jaringan nransper informasi ngeunaan transaksi anyar jeung blok ka silih dina jaringan p2p gumantung kana sajumlah anu kacida gedéna faktor: jumlah titik jujur ​​gawe caket dieu (tina sudut pandang jaringan), nu "haneut- up" tina caches titik ieu, ukuran blok, transaksi, sifat parobahan, géografi jaringan, jumlah titik sarta loba faktor séjén. Pangukuran kompléks métrik kinerja dina jaringan sapertos kitu mangrupikeun masalah anu kompleks; perlu sakaligus ngevaluasi waktos pamrosésan paménta pikeun klien sareng peers (titik blockchain). Masalah dina salah sahiji mékanisme p2p, pangusir data anu salah sareng cache, manajemén henteu efektif tina daptar peers aktip, sareng seueur faktor sanésna tiasa nyababkeun telat anu mangaruhan efisiensi sadaya jaringan sacara gembleng, sareng bottleneck ieu paling hese dianalisis. , tés jeung interpretasi hasil.

pamrosésan Blockchain jeung ngamutahirkeun database kaayaan

Bagian anu paling penting tina blockchain nyaéta algoritma konsensus, aplikasina pikeun blok anyar anu ditampi tina jaringan sareng ngolah transaksi kalayan ngarékam hasil dina pangkalan data nagara. Nambahkeun blok anyar kana ranté teras milih ranté utama kedah dianggo gancang-gancang. Sanajan kitu, dina kahirupan nyata, "kedah" henteu hartosna "karya", sarta salah sahiji bisa, contona, ngabayangkeun kaayaan dimana dua ranté competing lila terus pindah antara sorangan, ngarobah metadata rébuan transaksi di kolam renang di unggal switch. , sarta terus rolling deui database kaayaan. Tahap ieu, dina watesan watesan bottleneck, leuwih basajan ti lapisan jaringan p2p, sabab palaksanaan transaksi sarta algoritma konsensus anu mastikeun deterministik, sarta leuwih gampang pikeun ngukur nanaon dieu.
Hal utama henteu ngalieurkeun degradasi acak dina pagelaran tahap ieu sareng masalah jaringan - titik langkung laun dina nganteurkeun blok sareng inpormasi ngeunaan ranté utama, sareng pikeun klien éksternal ieu sigana sapertos jaringan anu laun, sanaos masalahna aya dina tempat sagemblengna béda.

Pikeun ngaoptimalkeun kinerja dina tahap ieu, éta mangpaat pikeun ngumpulkeun sarta ngawas metrics ti titik sorangan, sarta kaasup di antarana nu patali jeung ngamutahirkeun kaayaan-database: jumlah blok diprosés dina titik, ukuran maranéhanana, jumlah transaksi, Jumlah saklar antara garpu ranté, jumlah blok teu valid, waktos operasi mesin virtual, waktos komitmen data, jsb. Ieu bakal nyegah masalah jaringan tina bingung jeung kasalahan dina algoritma processing ranté.

Transaksi ngolah mesin virtual tiasa janten sumber inpormasi anu mangpaat anu tiasa ngaoptimalkeun operasi blockchain. Jumlah alokasi memori, jumlah maca / nulis parentah, sarta metrics séjén patali jeung efisiensi palaksanaan kode kontrak bisa nyadiakeun loba informasi mangpaat pikeun pamekar. Dina waktos anu sami, kontrak pinter mangrupikeun program, anu hartosna dina téori aranjeunna tiasa ngonsumsi salah sahiji sumber daya: CPU / mémori / jaringan / panyimpen, ku kituna pamrosésan transaksi mangrupikeun tahap anu teu pasti, anu, salian ti éta, robih pisan nalika pindah antara versi. sareng nalika ngarobih kode kontrak. Ku alatan éta, metrics patali processing transaksi ogé diperlukeun pikeun éféktif ngaoptimalkeun kinerja blockchain.

Resi ku klien tina bewara ngeunaan citakan tina transaksi dina blockchain nu

Ieu mangrupikeun tahap ahir tina klien blockchain anu nampi jasa; dibandingkeun sareng tahap sanés, henteu aya biaya overhead anu ageung, tapi tetep kedah dipertimbangkeun kamungkinan klien nampi réspon anu ageung tina titik (contona, kontrak pinter. mulangkeun susunan data). Dina naon waé, titik ieu mangrupikeun anu paling penting pikeun anu naroskeun patarosan "sabaraha tps dina blockchain anjeun?", Kusabab. Dina waktos ayeuna, waktos nampi jasa kacatet.

Di tempat ieu, sok aya kiriman sapinuhna waktos anu klien kedah nyéépkeun ngantosan réspon ti blockchain; waktos ieu pangguna bakal ngantosan konfirmasi dina aplikasina, sareng éta optimasi na nyaéta tugas utama pamekar.

kacindekan

Hasilna, urang tiasa ngajelaskeun jinis operasi anu dilakukeun dina blockchain sareng ngabagi kana sababaraha kategori:

  1. transformasi cryptographic, konstruksi buktina
  2. jaringan peer-to-peer, transaksi sareng réplikasi blok
  3. processing transaksi, palaksanaan kontrak pinter
  4. nerapkeun parobahan dina blockchain kana database kaayaan, ngamutahirkeun data dina transaksi jeung blok
  5. requests baca-hijina ka database kaayaan, blockchain titik API, jasa langganan

Sacara umum, sarat teknis pikeun titik blockchain modern pisan serius - CPUs gancang pikeun kriptografi, jumlah badag RAM pikeun nyimpen jeung gancang ngakses database kaayaan, interaksi jaringan ngagunakeun angka nu gede ngarupakeun sambungan kabuka sakaligus, sarta gudang badag. Sarat anu luhur sapertos kitu sareng seueur jinis operasi anu béda-béda pasti nyababkeun kanyataan yén titik-titik henteu gaduh sumber anu cekap, teras salah sahiji tahapan anu dibahas di luhur tiasa janten bottleneck sanés pikeun pagelaran jaringan sacara umum.

Nalika ngarancang sareng ngevaluasi kinerja blockchains, anjeun kedah tumut kana sadaya titik ieu. Jang ngalampahkeun ieu, anjeun kudu ngumpulkeun jeung nganalisis metrics sakaligus ti klien tur titik jaringan, néangan correlations antara aranjeunna, estimasi waktu nu diperlukeun pikeun nyadiakeun layanan ka klien, tumut kana akun sagala sumber utama: cpu / memori / jaringan / gudang. , ngartos kumaha aranjeunna dianggo sareng silih pangaruhan. Sadaya ieu ngajantenkeun ngabandingkeun laju blokcheyn anu béda dina bentuk "sabaraha TPS" mangrupikeun tugas anu henteu ngahatur nuhun pisan, sabab aya sajumlah ageung konfigurasi sareng nagara bagian. Dina sistem terpusat badag, klaster tina ratusan server, masalah ieu ogé rumit sarta ogé merlukeun kumpulan sajumlah badag metrics béda, tapi dina blockchains, alatan jaringan p2p, mesin virtual ngolah kontrak, ékonomi internal, jumlah derajat. kabebasan langkung ageung, anu ngajantenkeun tés dina sababaraha server, éta non-indicative sareng ngan ukur nunjukkeun nilai perkiraan anu ampir teu aya hubunganana sareng kanyataan.

Ku alatan éta, nalika ngembang dina inti blockchain, pikeun evaluate kinerja sarta ngajawab patarosan "naha eta ningkat dibandingkeun panungtungan waktu?" Kami ngagunakeun software rada kompléks nu orchestrates peluncuran blockchain kalawan puluhan titik sarta otomatis ngajalankeun patokan sarta ngumpulkeun metrics. ; tanpa inpormasi ieu hésé pisan pikeun nga-debug protokol anu tiasa dianggo sareng sababaraha pamilon.

Janten, nalika anjeun nampi patarosan "sabaraha TPS dina blockchain anjeun?", Tawarkeun ka interlocutor anjeun sababaraha tea sareng naroskeun naha anjeunna siap ningali belasan grafik sareng ogé ngadangukeun sadaya tilu kotak masalah kinerja blockchain sareng saran anjeun pikeun ngajawab aranjeunna ...

sumber: www.habr.com

Tambahkeun komentar