Wéi vill TPS sinn op Ärem Blockchain?

Eng Liiblingsfro iwwer all verdeelt System vun enger net-technescher Persoun ass "Wéi vill tps sinn op Ärem Blockchain?" Wéi och ëmmer, d'Zuel, déi an der Äntwert gëtt, huet normalerweis wéineg gemeinsam mat deem wat de Froeger gär hätt. Tatsächlech wollt hien froen "wäert Är Blockchain meng Geschäftsbedéngungen passen", an dës Ufuerderunge sinn net eng Zuel, awer vill Konditiounen - hei sinn Netzwierkfehler Toleranz, Finalitéit Ufuerderunge, Gréissten, Natur vun Transaktiounen a vill aner Parameteren. Also d'Äntwert op d'Fro "wéivill tps" ass onwahrscheinlech einfach, a bal ni komplett. E verdeelt System mat Zénger oder Honnerte vu Wirbelen, déi zimlech komplex Berechnungen ausféieren, kann an enger grousser Zuel vu verschiddene Staaten am Zesummenhang mat dem Zoustand vum Netz sinn, den Inhalt vun der Blockchain, technesche Feeler, wirtschaftleche Probleemer, Attacken am Netz a vill aner Grënn. . D'Etappen, bei deenen d'Leeschtungsproblemer méiglech sinn, ënnerscheede sech vun traditionelle Servicer, an e Blockchain Netzwierkserver ass en Netzwierkservice deen d'Funktionalitéit vun enger Datebank, Webserver an Torrent Client kombinéiert, wat et extrem komplex mécht wat de Lastprofil op all Subsystemer ugeet. : Prozessor, Erënnerung, Reseau, Stockage

Et geschitt sou datt dezentraliséiert Netzwierker a Blockchainen zimlech spezifesch an ongewéinlech Software fir zentraliséiert Softwareentwéckler sinn. Dofir wëll ech wichteg Aspekter vun der Leeschtung an der Nohaltegkeet vun dezentraliséierten Netzwierker ënnersträichen, Approche fir se ze moossen a Flaschenhals ze fannen. Mir wäerte verschidde Performanceprobleemer kucken, déi d'Geschwindegkeet vun der Servicer fir Blockchain Benotzer limitéieren an d'Features charakteristesch vun dëser Zort Software notéieren.

Etappe vun enger Service Ufro vun engem Blockchain Client

Fir éierlech iwwer d'Qualitéit vun all méi oder manner komplexe Service ze schwätzen, musst Dir net nëmmen duerchschnëttlech Wäerter berücksichtegen, awer och Maximum / Minimum, Medianen, Prozentzuelen. Theoretesch kënne mir iwwer 1000 tps an e puer Blockchain schwätzen, awer wann 900 Transaktioune mat enormer Geschwindegkeet ofgeschloss goufen, an 100 fir e puer Sekonnen "stécken", dann ass d'Duerchschnëttszäit, déi iwwer all Transaktiounen gesammelt gëtt, net eng komplett fair Metrik fir e Client deen ech konnt net d'Transaktioun an e puer Sekonnen komplett. Temporär "Lächer" verursaacht duerch verpasst Konsensronnen oder Netzwierksplits kënnen e Service staark ruinéieren, deen exzellent Leeschtung op Testbänken gewisen huet.

Fir sou Flaschenhalsen z'identifizéieren, ass et néideg e gutt Verständnis vun de Stadien ze hunn, op deenen e richtege Blockchain Schwieregkeete kann hunn d'Benotzer ze déngen. Loosst eis den Zyklus fir d'Liwwerung an d'Veraarbechtung vun enger Transaktioun beschreiwen, souwéi en neien Zoustand vun der Blockchain ze kréien, aus deem de Client ka verifizéiere datt seng Transaktioun veraarbecht a verrechent gouf.

  1. d'Transaktioun gëtt op de Client geformt
  2. d'Transaktioun gëtt op de Client ënnerschriwwen
  3. de Client wielt ee vun de Wirbelen a schéckt seng Transaktioun un
  4. de Client abonnéiert op Updates vun der Staatsdatebank vum Node, waart op d'Resultater vu senger Transaktioun erschéngen
  5. den Node verdeelt d'Transaktioun iwwer de p2p Netz
  6. e puer oder een BP (Block Produzent) Prozesser cumuléierten Transaktiounen, Aktualiséierung vun der Staat Datebank
  7. BP formt en neie Block no der Veraarbechtung vun der erfuerderter Unzuel vun Transaktiounen
  8. BP verdeelt en neie Block iwwer de p2p Netz
  9. den neie Block gëtt op den Node geliwwert, deen de Client zougitt
  10. Node Aktualiséierungen Staat Datebank
  11. den Node gesäit den Update iwwer de Client a schéckt him eng Transaktiounsnotifikatioun

Loosst eis elo dës Etappe méi no kucken a beschreiwen déi potenziell Leeschtungsprobleemer op all Etapp. Am Géigesaz zu zentraliséierte Systemer wäerte mir och d'Code-Ausféierung op Netzwierkclienten berücksichtegen. Zimlech dacks, wann Dir TPS moosst, gëtt d'Transaktiounsveraarbechtungszäit vun de Wirbelen gesammelt, an net vum Client - dat ass net ganz fair. De Client ass egal wéi séier den Node seng Transaktioun veraarbecht huet; dat Wichtegst fir hien ass de Moment wou zouverlässeg Informatioun iwwer dës Transaktioun an der Blockchain verfügbar ass. Et ass dës Metrik déi am Wesentlechen d'Transaktiounsausféierungszäit ass. Dëst bedeit datt verschidde Clienten, och déi selwecht Transaktioun schécken, komplett verschidden Zäiten kréien, déi ofhängeg vum Kanal, der Belaaschtung an der Proximitéit vum Node, etc. Also ass et absolut néideg dës Zäit op Clienten ze moossen, well dëst de Parameter ass dee muss optimiséiert ginn.

Eng Transaktioun op der Client Säit virbereeden

Loosst eis mat den éischten zwee Punkten ufänken: d'Transaktioun gëtt vum Client geformt an ënnerschriwwen. Komesch genuch, dëst kann och e Flaschenhals vun der Blockchain Leeschtung aus der Siicht vum Client sinn. Dëst ass ongewéinlech fir zentraliséiert Servicer, déi all Berechnungen an Operatiounen mat Daten iwwerhuelen, an de Client bereet einfach eng kuerz Ufro vir, déi eng grouss Quantitéit un Daten oder Berechnungen ufroe kann, fir e fäerdegt Resultat ze kréien. A Blockchainen gëtt de Client Code ëmmer méi staark, an de Blockchain Kär gëtt ëmmer méi liicht, a massiv Rechenaufgaben ginn normalerweis op d'Client Software transferéiert. A Blockchaine ginn et Clienten déi eng Transaktioun fir eng zimlech laang Zäit virbereeden (ech schwätzen iwwer verschidde Merkle Beweiser, succinct Beweiser, Schwell Ënnerschrëften an aner komplex Operatiounen op der Client Säit). E gutt Beispill vun einfacher On-Chain Verifizéierung a schwéier Virbereedung vun enger Transaktioun op de Client ass Beweis vu Memberschaft an enger Lëscht baséiert op Merkle-Bam, hei en Artikel.

Vergiesst och net datt de Client Code net einfach Transaktiounen un d'Blockchain schéckt, awer als éischt den Zoustand vun der Blockchain ufroen - an dës Aktivitéit kann de Stau vum Netz a Blockchain Noden beaflossen. Also, wann Dir Miessunge maacht, wier et raisonnabel d'Behuele vum Client Code sou komplett wéi méiglech ze emuléieren. Och wann an Ärem Blockchain et gewéinlech Liichtclienten sinn, déi eng regulär digital Ënnerschrëft op déi einfachst Transaktioun setzen fir e puer Verméigen ze transferéieren, ginn et all Joer nach méi massiv Berechnungen op de Client, Krypto-Algorithmen ginn méi staark, an dësen Deel vun der Veraarbechtung kann an Zukunft zu engem bedeitende Flaschenhals ginn. Dofir, passt virsiichteg a verpasst net d'Situatioun wann an enger Transaktioun déi 3.5s dauert, 2.5s fir d'Virbereedung an d'Ënnerschreiwe vun der Transaktioun ausginn, an 1.0s fir se an d'Netz ze schécken an op eng Äntwert ze waarden. Fir d'Risike vun dësem Flaschenhals ze bewäerten, musst Dir Metriken vu Clientmaschinn sammelen, an net nëmme vu Blockchain Noden.

Schéckt eng Transaktioun an iwwerwaacht säi Status

De nächste Schrëtt ass d'Transaktioun op de gewielte Blockchain Node ze schécken an de Status vun der Akzeptanz an den Transaktiounspool ze kréien. Dës Etapp ass ähnlech wéi e reegelméissegen Datebankzougang; den Node muss d'Transaktioun am Pool notéieren an d'Informatioun doriwwer iwwer de p2p Netz verdeelen. D'Approche fir d'Performance hei ze bewäerten ass ähnlech wéi d'Bewäertung vun der Leeschtung vun traditionelle Web API Mikroservicer, an d'Transaktioune selwer a Blockchainen kënnen aktualiséiert ginn an aktiv hire Status änneren. Am Allgemengen kann d'Aktualiséierung vun Transaktiounsinformatioun op e puer Blockchainen e puer Mol optrieden, zum Beispill beim Wiessel tëscht Kettengabel oder wann BPs hir Absicht annoncéieren eng Transaktioun an engem Block opzehuelen. Limiten op d'Gréisst vun dësem Pool an d'Zuel vun Transaktiounen an et kënnen d'Performance vun der Blockchain beaflossen. Wann d'Transaktiounspool op déi maximal méiglech Gréisst gefëllt ass oder net am RAM passt, kann d'Netzleeschtung staark falen. Blockchains hu keng zentraliséiert Mëttele fir géint eng Iwwerschwemmung vu Junk-Messagen ze schützen, a wann de Blockchain héichvolumen Transaktiounen a kleng Fraisen ënnerstëtzt, kann dat dozou féieren datt den Transaktiounspool iwwerflësseg ass - e weidere potenzielle Performance-Flaschenhals.

A Blockchainen schéckt de Client eng Transaktioun un all Blockchain Node deen hie gär huet, den Hash vun der Transaktioun ass normalerweis dem Client bekannt ier hien schéckt, also alles wat hie maache muss ass d'Verbindung z'erreechen an no der Transmissioun ze waarden bis de Blockchain ännert sengem Staat, erméiglecht seng Transaktioun. Bedenkt datt andeems Dir "tps" moosst, kënnt Dir ganz aner Resultater fir verschidde Methode kréien fir mat engem Blockchain Node ze verbannen. Dëst kann e reguläre HTTP RPC oder e WebSocket sinn, deen Iech erlaabt de Muster "Abonnéieren" ëmzesetzen. Am zweete Fall kritt de Client eng Notifikatioun fréier, an den Node verbréngt manner Ressourcen (haaptsächlech Erënnerung a Verkéier) op Äntwerten iwwer den Transaktiounsstatus. Also wann Dir "tps" moosst, ass et néideg ze berücksichtegen wéi d'Cliente mat Noden verbannen. Dofir, fir d'Risiken vun dësem Flaschenhals ze bewäerten, muss de Benchmark Blockchain fäeg sinn Clienten mat WebSocket an HTTP RPC Ufroen ze emuléieren, a Proportiounen entspriechend real Netzwierker, wéi och d'Natur vun Transaktiounen an hir Gréisst änneren.

Fir d'Risike vun dësem Flaschenhals ze bewäerten, musst Dir och Metriken vu Clientmaschinn sammelen, an net nëmme vu Blockchain Noden.

Transmissioun vun Transaktiounen a Spären iwwer p2p Netz

A Blockchaine gëtt Peer-to-Peer (p2p) Netzwierk benotzt fir Transaktiounen a Blocken tëscht Participanten ze transferéieren. Transaktioune verbreet uechter d'Netzwierk, ugefaange vun engem vun den Noden, bis se Peer Block Produzenten erreechen, déi Transaktiounen a Blocken packen an, mat deemselwechte p2p, nei Blocks op all Netzwierkknoten verdeelen. D'Basis vun de meeschte modernen p2p Netzwierker ass verschidde Modifikatioune vum Kademlia Protokoll. hei eng gutt Resumé vun dësem Protokoll, an kuck - en Artikel mat verschiddene Miessunge am BitTorrent Netz, aus deem ee kann verstoen datt dës Zort Netzwierk méi komplex a manner prévisibel ass wéi e rigid konfiguréiert Netzwierk vun engem zentraliséierte Service. Och, kuck Artikel iwwer d'Messung vun verschiddenen interessanten Metriken fir Ethereum Noden.

Kuerz gesot, all Peer an esou Netzwierker hält seng eege dynamesch Lëscht vun anere Peer, aus deenen et Informatiounsblocken freet, déi vum Inhalt adresséiert ginn. Wann e Peer eng Ufro kritt, gëtt hien entweder déi néideg Informatioun oder gëtt d'Ufro un den nächste pseudo-zoufälleg Peer aus der Lëscht, an nodeems en eng Äntwert kritt huet, gëtt se un den Ufroer weiderginn an se fir eng Zäit cacheéiert, wat dëst gëtt Block vun Informatioun fréier d'nächst Kéier. Sou schléit populär Informatioun an enger grousser Unzuel vu Cache vun enger grousser Unzuel vu Peer op, an onpopulär Informatioun gëtt no an no ersat. Peers behalen records vu wien iwwerginn huet wéi vill Informatioun un wiem, an d'Netzwierk probéiert aktiv Distributeuren ze stimuléieren andeems se hir Bewäertungen erhéijen an hinnen e méi héije Serviceniveau ubidden, automatesch inaktiv Participanten aus Peer Lëschte verdrängt.

Also, d'Transaktioun muss elo iwwer d'Netz verdeelt ginn, sou datt d'Blockproduzenten se gesinn an an de Block enthalen. Den Node aktiv "verdeelt" eng nei Transaktioun fir jiddereen an lauschtert op d'Netzwierk, waart op e Block am Index, vun deem déi erfuerderlech Transaktioun erschéngt, fir de waarden Client z'informéieren. D'Zäit et dauert fir d'Netzwierk Informatiounen iwwer nei Transaktiounen a Spären uneneen an p2p Netzwierker z'iwwerdroen hänkt vun enger ganz grousser Zuel vu Faktoren of: d'Zuel vun éierleche Wirbelen, déi an der Géigend schaffen (aus engem Netzsiicht), de "waarm- up" vun de Cache vun dësen Wirbelen, d'Gréisst vun de Blocken, Transaktiounen, d'Natur vun Ännerungen, Netzwierkgeographie, Zuel vun Noden a vill aner Faktoren. Komplex Miessunge vu Leeschtungsmetriken an esou Netzwierker sinn eng komplex Matière; et ass néideg gläichzäiteg d'Ufroveraarbechtungszäit op béid Clienten a Peer (Blockchain Noden) ze evaluéieren. Probleemer an engem vun de p2p-Mechanismen, falsch Dateeviction a Caching, ineffektiv Gestioun vu Lëschte vun aktive Peer a vill aner Faktoren kënnen Verspéidungen verursaachen, déi d'Effizienz vum ganze Netz als Ganzt beaflossen, an dësen Flaschenhals ass am schwieregsten ze analyséieren. , Test an Interpretatioun vun Resultater.

Blockchain Veraarbechtung a Staatsdatenbankaktualiséierung

De wichtegsten Deel vun der Blockchain ass de Konsens Algorithmus, seng Uwendung op nei Blocks aus dem Netz an d'Veraarbechtung vun Transaktiounen mat Opnam vun de Resultater an der Staatsdatenbank. En neie Block an d'Kette bäizefügen an dann d'Haaptkette auswielen soll sou séier wéi méiglech funktionnéieren. Wéi och ëmmer, am richtege Liewen heescht "soll" net "fonctionnéiert", an et kann een sech zum Beispill eng Situatioun virstellen, wou zwee laang konkurrierende Ketten stänneg tëscht sech wiesselen, d'Metadaten vun Dausende vun Transaktiounen am Pool bei all Schalter änneren , a stänneg d'Staatsdatenbank zréckrollen. Dës Etapp, wat d'Definitioun vum Flaschenhals ugeet, ass méi einfach wéi d'p2p Netzwierkschicht, well Transaktiounsausféierung a Konsens Algorithmus si strikt deterministesch, an et ass méi einfach eppes hei ze moossen.
Den Haapt Saach ass net zoufälleg Degradatioun an der Leeschtung vun dëser Etapp mat Netzwierkproblemer ze verwiesselen - Node si méi lues fir Blocken an Informatioun iwwer d'Haaptkette ze liwweren, a fir en externe Client kann dëst wéi e luesen Netzwierk ausgesinn, obwuel de Problem läit an eng komplett aner Plaz.

Fir d'Performance op dëser Etapp ze optimiséieren, ass et nëtzlech Metriken aus den Wirbelen selwer ze sammelen an ze iwwerwaachen, an hinnen déi am Zesummenhang mat der Aktualiséierung vun der Staatsdatenbank abegraff: d'Zuel vun de Blocken, déi um Node veraarbecht ginn, hir Gréisst, d'Zuel vun den Transaktiounen, d'Zuel vun de Schalter tëscht Kettengabel, d'Zuel vun ongëlteg Blocken, d'Operatiounszäit vun der virtueller Maschinn, d'Datevergabungszäit, asw. Dëst wäert verhënneren datt Netzwierkproblemer mat Feeler an der Ketteveraarbechtung Algorithmen verwiesselt ginn.

Eng virtuell Maschinn Veraarbechtungstransaktiounen kënnen eng nëtzlech Informatiounsquell sinn, déi d'Operatioun vun der Blockchain optiméiere kann. D'Zuel vun de Gedächtnisallokatiounen, d'Zuel vun de Lies-/Schreifinstruktiounen an aner Metriken am Zesummenhang mat der Effizienz vun der Ausféierung vum Kontraktcode kënne vill nëtzlech Informatioun un d'Entwéckler ubidden. Zur selwechter Zäit si Smart Kontrakter Programmer, dat heescht an der Theorie datt se all vun de Ressourcen konsuméiere kënnen: CPU / Erënnerung / Netzwierk / Späichere, sou datt d'Transaktiounsveraarbechtung eng zimlech onsécher Etapp ass, déi zousätzlech vill ännert wann Dir tëscht Versioune beweegt. a wann Dir Kontrakt Coden änneren. Dofir sinn Metriken am Zesummenhang mat der Transaktiounsveraarbechtung och gebraucht fir effektiv d'Performance vun der Blockchain ze optimiséieren.

Empfang vum Client vun enger Notifikatioun iwwer d'Inklusioun vun enger Transaktioun an der Blockchain

Dëst ass déi lescht Etapp vum Blockchain Client deen de Service kritt; am Verglach zu anere Stadien ginn et keng grouss Overheadkäschten, awer et ass nach ëmmer derwäert ze berécksiichtegen datt de Client eng voluminös Äntwert vum Node kritt (zum Beispill e Smart Kontrakt eng Rei vun Daten zréckginn). Op alle Fall ass dëse Punkt dee wichtegste fir deen deen d'Fro gestallt huet "wéivill tps sinn an Ärem Blockchain?", well Zu dësem Zäitpunkt gëtt d'Zäit fir de Service ze kréien opgeholl.

Op dëser Plaz gëtt et ëmmer e Verschécken vun der Vollzäit déi de Client huet misse waarden op eng Äntwert vum Blockchain; et ass dës Kéier datt de Benotzer op d'Bestätegung a senger Applikatioun waart, an et ass seng Optimiséierung déi Haaptaufgab vun den Entwéckler.

Konklusioun

Als Resultat kënne mir d'Zorte vun Operatiounen op Blockchainen beschreiwen an se a verschidde Kategorien opdeelen:

  1. kryptografesch Transformatiounen, Beweiskonstruktioun
  2. Peer-to-Peer Netzwierker, Transaktioun a Blockreplikatioun
  3. Transaktiounsveraarbechtung, Ausféierung vu Smart Kontrakter
  4. Ännerungen an der Blockchain op d'Staatsdatenbank uwenden, Daten iwwer Transaktiounen a Blocken aktualiséieren
  5. liesen-nëmmen Ufroe fir Staat Datebank, Blockchain Node API, Abonnement Servicer

Am Allgemengen, sinn déi technesch Ufuerderunge fir modern Blockchain Wirbelen extrem sérieux - séier CPUs fir cryptography, eng grouss Quantitéit vun RAM ze späicheren a séier Zougang zu der Staat Datebank, Reseau Interaktioun mat enger grousser Zuel vu gläichzäiteg oppe Verbindungen, a grouss Stockage. Esou héich Ufuerderungen an Heefegkeet vun verschidden Zorte vun Operatiounen féieren zwangsleefeg zu der Tatsaach, datt Wirbelen vläicht net genuch Ressourcen hunn, an dann kann ee vun den uewe diskutéiert Etappe eng aner Flaschenhals fir d'allgemeng Reseau Leeschtung ginn.

Wann Dir d'Performance vu Blockchainen designt an evaluéiert, musst Dir all dës Punkte berücksichtegen. Fir dëst ze maachen, musst Dir gläichzäiteg Metriken sammelen an analyséieren vu Clienten an Netzknäppchen, no Korrelatiounen tëscht hinnen kucken, d'Zäit schätzen déi et brauch fir Servicer u Clienten ze liwweren, all d'Haaptressourcen berücksichtegen: CPU / Erënnerung / Netzwierk / Lagerung , verstoen, wéi se benotzt ginn an beaflossen all aner. All dëst mécht d'Vergläiche vun de Geschwindegkeete vu verschiddene Blockchainen a Form vun "wéivill TPS" eng extrem dankbar Aufgab, well et eng grouss Zuel vu verschiddene Konfiguratiounen a Staaten gëtt. A grousse zentraliséierte Systemer, Cluster vun Honnerte vu Serveren, sinn dës Probleemer och komplex an erfuerderen och d'Sammlung vun enger grousser Zuel vu verschiddene Metriken, awer a Blockchainen, wéinst p2p Netzwierker, virtuelle Maschinnen Veraarbechtungskontrakter, intern Wirtschaft, d'Zuel vun de Graden D'Fräiheet ass vill méi grouss, wat den Test souguer op verschiddene Serveren mécht, et ass net indikativ a weist nëmmen extrem geschätzte Wäerter déi bal keng Verbindung mat der Realitéit hunn.

Dofir, wann Dir am Blockchain Kär entwéckelt, fir d'Performance ze evaluéieren an d'Fro ze beäntweren "huet et sech am Verglach mat der leschter Zäit verbessert?" Mir benotzen zimlech komplex Software déi de Start vun engem Blockchain mat Dosende vu Noden orchestréiert an automatesch e Benchmark lancéiert a Metriken sammelt. ; ouni dës Informatioun ass et extrem schwéier Protokoller ze debuggen déi mat multiple Participanten funktionnéieren.

Also, wann Dir d'Fro kritt "wéivill TPS sinn an Ärem Blockchain?", Bitt Äre Gespréichspartner Téi a frot ob hien prett ass eng Dose Grafiken ze kucken an och all dräi Këschte vu Blockchain Performance Probleemer ze lauschteren an Är Virschléi fir se léisen ...

Source: will.com

Setzt e Commentaire