Ce este Tendermint Core? Cel mai cuprinzător ghid vreodată

Ce este Tendermint Core? …

Timp de citire: 17 minute

Cosmosul este unul dintre cele mai promițătoare proiecte de acolo. Cu oameni precum Jae Kwon și Ethan Buchman în echipa lor, are un mare potențial. În inima și sufletul său se află Tendermint Core.

Ultimate Guide to Tendermint

Tendermint Core combină algoritmul consensului Tendermint împreună cu un protocol de bârfe p2p. Deci, atunci când puneți totul împreună în stiva de software, obțineți Tendermint Core împreună cu stratul de aplicație Cosmos-SDK.

Oricum, așa că, înainte de a merge mai departe, să analizăm de ce Tendermint este o astfel de necesitate.

Bitcoin și Blockchain

Când Satoshi Nakamoto a creat Bitcoin, el a realizat primul sistem criptografic descentralizat vreodată. Partea cu adevărat remarcabilă a acestei descoperiri a fost că a reușit să rezolve problema generalului bizantin, care a ajutat o rețea de suprafață (WAN) să ajungă la un consens într-un mediu de încredere. Bitcoin a folosit algoritmul dovezii de lucru pentru a avea grijă de consensul lor.

Acestea fiind spuse, contribuția principală a Bitcoin poate fi foarte bine faptul că a introdus întreaga lume în tehnologia blockchain.

Un blockchain este, în termenii cei mai simpli, o serie de date înregistrate imutabil de date, gestionate de un cluster de computere care nu sunt deținute de nicio entitate. Fiecare dintre aceste blocuri de date (adică bloc) sunt securizate și legate între ele folosind principii criptografice (adică lanț).

Cu alte cuvinte, un blockchain este un stare deterministă mașină replicată pe noduri care nu au neapărat încredere reciprocă.

Prin determinism înțelegem că, dacă se fac aceiași pași specifici, atunci acesta va duce întotdeauna la același rezultat.

De exemplu. 1 + 2 va fi întotdeauna 3.

Deci, ce înseamnă starea? Să ne uităm la wrt Bitcoin și Ethereum.

În Bitcoin, statul este o listă de solduri pentru fiecare cont, care este o listă a rezultatelor tranzacției necheltuite (UTXO). Această stare se modifică prin tranzacții care schimbă soldul.

Pe de altă parte, în Ethereum, aplicația este o mașină virtuală care rulează contracte inteligente. Fiecare tranzacție trece prin mașina virtuală Ethereum și modifică starea în funcție de contractul inteligent specific care este apelat în cadrul acesteia.

Dacă vă uitați la arhitectura tehnologiei blockchain, atunci veți avea trei straturi specifice:

  • Rețele: Propagarea tranzacției / informațiilor de-a lungul nodurilor
  • Consens: Permite nodurilor să ia o decizie furnizată >2/3 din noduri sunt non-malware
  • Cerere: Responsabil pentru actualizarea statului, având în vedere un set de tranzacții, adică procesarea tranzacțiilor. Având în vedere o tranzacție și o stare, aplicația va returna o nouă stare.

Pentru indicii vizuale:

Ultimate Guide to Tendermint

Probleme cu arhitectura actuală Blockchain

Se pare că construirea unui blockchain de la bază cu toate aceste 3 straturi este cu adevărat o muncă grea. Așadar, multe proiecte au preferat să se bazeze pe forțarea bazei de cod Bitcoin. Acum, deși acest lucru economisește mult timp, este faptul că sunt încă încătușați de limitările protocolului Bitcoin. Evident, nu puteți executa proiecte complexe atunci când utilizați un protocol care este bine cunoscut pentru problemele sale de transfer.

Lucrurile s-au îmbunătățit mult când Ethereum a intrat în joc. Ethereum a oferit dezvoltatorilor o platformă pe care să o poată utiliza pentru a-și crea propriul cod personalizat, adică contracte și proiecte inteligente. Cu toate acestea, la fel ca în cazul Bitcoin, Ethereum suferă de aceeași problemă. Amândoi au arhitectură monolitică spre deosebire de modulară.

Arhitectura monolitică vs Arhitectura modulară

Arhitectura monolitică înseamnă că totul este compus dintr-o singură piesă. Atunci când software-ul este considerat „monolitic”, componentele sunt interconectate și interdependente între ele, iar designul este mai autonom. În acest caz, arhitectura este mai strâns cuplată și componentele asociate trebuie să fie prezente pentru ca codul să fie executat sau compilat.

Deși acest lucru face ca sistemul să fie creat pentru a fi mai robust, nu puteți obține cu adevărat din acesta și nu puteți crea coduri personalizate. Nu este cel mai flexibil sistem. În plus, există o altă problemă cu acest sistem. Dacă orice componentă a programului trebuie actualizată, întreaga aplicație va trebui refăcută. Nu este cu adevărat cea mai ideală situație de acum, nu-i așa??

Pe de altă parte, avem arhitectură modulară. Spre deosebire de monolitic, straturile nu sunt atât de legate între ele. Deci, deși este posibil să nu fie la fel de robust, este destul de ușor să actualizați întreaga aplicație lucrând cu diferite module separate.

Deoarece modulele sunt atât de independente, arhitectura modulară vă permite să actualizați de fapt o anumită secțiune fără a provoca modificări neprevăzute în restul sistemului. Procesele iterative sunt, de asemenea, mult mai simple în programele modulare, spre deosebire de monolit.

Arhitectura și obiectivele Tendermint

Tendermint utilizează arhitectura modulară. Obiectivele lor sunt următoarele:

  • Furnizați straturile de rețea și consens ale unui blockchain ca o platformă unde pot fi construite diferite aplicații descentralizate
  • Dezvoltatorii trebuie să se îngrijoreze doar de stratul de aplicație al blockchain-ului, economisind toate orele pe care le-ar fi pierdut lucrând la consens și la stratul de rețea..
  • Tendermint include, de asemenea, protocolul consens Tendermint, care este algoritmul de consens bizantin tolerant la defecțiuni utilizat în cadrul motorului Tendermint Core

Să vedem cum va arăta arhitectura Tendermint:

Ultimate Guide to Tendermint

După cum puteți vedea, aplicația este conectată la Tendermint Core printr-un protocol socket numit APCI sau Application Blockchain Interface. Deoarece Tendermint Core și aplicația care rulează pe acesta rulează în procese UNIX separate, trebuie să aibă o metodă pentru a vorbi între ele. ABCI îi ajută pe acești doi în comunicarea lor.

Deci, cum arată designul ABCI? ABCI va avea ceva componente distincte de proiectare:

Protocolul de mesaj # 1

  • Perechi de mesaje de solicitare și răspuns
  • Solicitările se fac prin consens, în timp ce aplicația are grijă de răspuns
  • Este definit folosind protobuf

# 2 Server / Client

  • Motorul consensului execută clientul
  • Aplicația rulează serverul
  • Există două implementări adecvate: async bytes raw și grpc

# 3 Blockchain Protocol

ABCI este foarte orientat spre conexiune. Cele trei conexiuni pentru Tendermint Core sunt următoarele:

  • Conexiune Mempool: Aceasta verifică dacă tranzacțiile trebuie transmise înainte de a fi angajate. Poate folosi doar CheckTx
  • Conexiune de consens: această conexiune ajută la executarea tranzacțiilor care au fost comise. Secvența de mesaje este, pentru fiecare bloc, BeginBlock, [DeliverTx,…], EndBlock, Commit
  • Conexiune interogare: ajută la interogarea stării aplicației. Această parte folosește numai interogare și informații

În general, obiectivul principal al Tendermint este de a oferi dezvoltatorilor un instrument care nu este doar practic, dar are și un randament ridicat. Iată proprietățile Tendermint care îl fac atât de atrăgător:

Compatibil cu blockchain public sau privat # 1

Diferite proiecte au nevoi diferite. Unele proiecte trebuie să aibă un sistem deschis în care oricine se poate alătura și contribui, cum ar fi Ethereum. Pe de altă parte, avem organizații precum industria medicală, care nu își pot expune datele aproape tuturor. Pentru ei, au nevoie de ceva de genul blockchain-ului permis.

Ok, deci, cum poate ajuta Tendermint să satisfacă ambele nevoi? Amintiți-vă că Tendermint se ocupă doar de rețea și consens pentru blockchain. Deci, ajută la:

  • Propagarea tranzacției între noduri prin protocolul de bârfă
  • Ajută validatorii să cadă de acord asupra setului de tranzacții care se adaugă la blockchain.

Ceea ce înseamnă acest lucru este că stratul aplicației este liber să fie definit în orice mod în care dezvoltatorii doresc să fie definit. Este la latitudinea dezvoltatorilor să definească modul în care setul de validatori este definit în ecosistem.

  • Dezvoltatorii pot permite aplicației să aibă un sistem de alegeri care alege validatori pe baza numărului de jetoane native pe care acești validatori au mizat-o în cadrul ecosistemului.
  • În plus, dezvoltatorii pot crea, de asemenea, o aplicație care definește un set restricționat de validatori pre-aprobați care se ocupă de consens și de noile noduri care ajung să intre în ecosistem. Aceasta se numește dovadă de autoritate și este semnul distinctiv al unui blockchain permis sau privat.

# 2 Înaltă performanță

Aplicațiile făcute prin Tendermint Core se pot aștepta la performanțe excepționale. Tendermint Core are un timp de blocare de doar 1 secundă. De asemenea, poate gestiona un volum de tranzacții de 10.000 de tranzacții pe secundă pentru tranzacții de 250 de biți, atâta timp cât aplicația îi permite acest lucru.

# 3 Finalitate

Ce este finalitatea?

În termeni simpli, înseamnă că, odată ce o anumită acțiune a fost executată, aceasta nu poate fi luată înapoi. Deci, să luăm exemplul unei tranzacții financiare simple. Să presupunem că cumpărați câteva acțiuni într-o companie, doar pentru că există o problemă în sistemul lor, nu ar trebui să pierdeți din dreptul de proprietate asupra acțiunilor dvs. După cum vă puteți imagina, finalitatea este extrem de critică pentru un sistem financiar. Imaginați-vă că faceți o tranzacție de un milion de dolari și apoi a doua zi, acea tranzacție nu mai este valabilă din cauza unei erori.

Așa cum am menționat anterior, Bitcoin și Ethereum (până la implementarea completă a Casper FFG) nu au cu adevărat finalitatea decontării. Cu ocazia unui hardfork sau a unui atac de 51%, tranzacțiile au șansa de a fi anulate.

Pe de altă parte, Tendermint oferă finalitate instantanee în decurs de 1 secundă de la finalizarea tranzacției. Furcile nu sunt create niciodată în sistem, atât timp cât mai puțin de 2/3 din validatori sunt dăunători. De îndată ce este creat un bloc (care se află într-o secundă) utilizatorii pot fi siguri că tranzacția lor este finalizată.

# 4 Securitate

Tendermint este sigură și îi obligă pe participanții să fie responsabili și pentru acțiunile lor. Așa cum am spus anterior, tendermint nu poate fi niciodată furcat atâta timp cât mai puțin de 2/3 din validatori sunt dăunători. Dacă într-un anumit caz, blockchain-ul se bifurcă, există o modalitate de a determina răspunderea. În plus, consensul Tendermint nu este doar tolerant la erori, ci este optim tolerant la erori bizantin

# 5 Ușor de utilizat

Un alt lucru extraordinar despre Tendermint este ușurința utilizatorului. Așa cum am menționat anterior, au o arhitectură modulară în care stratul aplicației poate fi personalizat în mod corespunzător. Acest lucru face posibil ca bazele de cod blockchain existente să fie legate fără efort de Tendermint prin ABCI. Exemplul perfect al acestui lucru este Etheremint, care este în esență fișa de bază a codului pentru mașina virtuală Ethereum de deasupra Tendermint.

Ethermint funcționează exact ca Ethereum, dar beneficiază și de toate caracteristicile pozitive pe care le-am enumerat mai sus. Toate instrumentele Ethereum precum Metamask și Truffle sunt compatibile cu Ethermint.

# 6 Scalabilitate

Implementarea dovezii mizei Tendermint este mult mai scalabilă decât un algoritm tradițional de consens al dovezii muncii. Principalul motiv este că sistemele bazate pe POW nu pot face sharding.

Fragmentarea practic partiționează orizontal o bază de date și creează baze de date mai mici sau fragmente care sunt apoi executate în paralel de către noduri. Motivul este că un bazin minier puternic poate prelua cu ușurință o bucată.

Tendermint va permite implementarea sharding-ului, ceea ce va spori considerabil scalabilitatea.

Protocolul de consens Tendermint

Ok, deci să analizăm modul în care funcționează protocolul consens Tendermint. Ce este mai exact un protocol de consens?

Acesta este modul în care Wikipedia definește procesul decizional prin consens:

„Luarea deciziilor prin consens este un proces de luare a deciziilor de grup în care membrii grupului se dezvoltă și sunt de acord să susțină o decizie în interesul general al întregului. Consensul poate fi definit profesional ca o rezoluție acceptabilă, una care poate fi susținută, chiar dacă nu „favoritul” fiecărei persoane. „Consensul” este definit de Merriam-Webster ca, în primul rând, acordul general și, în al doilea rând, solidaritatea grupului de credință sau sentiment ”.

În termeni mai simpli, consensul este un mod dinamic de a ajunge la un acord într-un grup. În timp ce votul se stabilește doar pentru o regulă a majorității fără niciun gând asupra sentimentelor și bunăstării minorității, un consens, pe de altă parte, asigură că se ajunge la un acord care ar putea beneficia întregul grup ca întreg.

Dintr-un punct de vedere mai idealist, consensul poate fi folosit de un grup de oameni răspândiți în întreaga lume pentru a crea o societate mai egală și mai echitabilă.

O metodă prin care se realizează luarea deciziilor prin consens se numește „mecanism de consens”.

Deci, acum ceea ce am definit ce este un consens, să vedem care sunt obiectivele unui mecanism de consens (date preluate din Wikipedia).

  • Căutarea acordului: Un mecanism de consens ar trebui să aducă cât mai mult acord din partea grupului.
  • Colaborativ: Toți participanții ar trebui să urmărească să lucreze împreună pentru a obține un rezultat care pune pe primul loc interesul superior al grupului.
  • De cooperare: Toți participanții nu ar trebui să își pună propriile interese pe primul loc și să lucreze mai mult ca o echipă decât indivizi.
  • Participativ: Mecanismul consensului trebuie să fie astfel încât toată lumea să participe activ la procesul general.
  • Inclusiv: Cât mai mulți oameni ar trebui să fie implicați în procesul de consens. Nu ar trebui să fie ca un vot normal, în cazul în care oamenii nu prea au chef să voteze, deoarece cred că votul lor nu va avea nici o pondere pe termen lung.
  • Egalitar: Un grup care încearcă să ajungă la un consens ar trebui să fie cât mai egalitar. Ce înseamnă, în principiu, că fiecare vot are aceeași greutate. Votul unei persoane nu poate fi mai important decât al altuia.

Acum, după ce am definit ce sunt mecanismele de consens și ce ar trebui să vizeze, trebuie să ne gândim la celălalt elefant din cameră.

Ce mecanisme de consens ar trebui utilizate pentru o entitate precum blockchain.

Înainte de Bitcoin, au existat o mulțime de iterații de sisteme valutare descentralizate peer-to-peer care nu au reușit, deoarece nu au putut răspunde la cea mai mare problemă atunci când a venit să ajungă la un consens. Această problemă se numește „Problema generalilor bizantini”.

Problema generalului bizantin

Pentru a face orice într-o rețea peer-to-peer, toate nodurile ar trebui să poată ajunge la un consens. Problema este că, pentru ca acest sistem să funcționeze, se pune mult accent pe oameni să acționeze în interesul întregii rețele. Cu toate acestea, după cum știm deja, oamenii nu sunt de încredere atunci când vine vorba de a acționa într-o manieră etică. Aici intervine problema generalului bizantin.

Ultimate Guide to Tendermint

Imaginați-vă această situație.

Există o armată care înconjoară un castel bine fortificat. Singura modalitate prin care pot câștiga este dacă atacă castelul împreună ca unitate. Cu toate acestea, se confruntă cu o mare problemă. Armata este departe una de cealaltă și generalii nu pot comunica și coordona atacul direct, iar unii generali sunt corupți.

Singurul lucru pe care îl pot face este să trimită un mesager de la general la general. Cu toate acestea, o mulțime de lucruri i s-ar putea întâmpla mesagerului. Generalii corupți pot intercepta mesagerul și pot schimba mesajul. Deci, ce pot face generalii pentru a se asigura că lansează un atac coordonat fără să se bazeze pe etica fiecărui general? Cum pot ajunge la un consens într-un mod fără încredere pentru a face ceea ce trebuie făcut?

Aceasta este problema generalului bizantin, iar Satoshi Nakamoto a rezolvat această problemă utilizând mecanismul de consens al dovezii muncii (POW).

Ce este dovada muncii?

Să verificăm modul în care funcționează POW în contextul exemplului nostru dat mai sus. Să presupunem că un general dorește să comunice cu un alt general. Cum crezi că va scădea?

  • La mesajul original se adaugă o „nonce”. Nonce este o valoare hexazecimală aleatorie.
  • Acest nou mesaj este apoi hash. Să presupunem că generalii sunt de acord în prealabil că vor trimite doar mesaje, care atunci când hash începe cu 4 „0” s.

    Dacă hashul nu dă numărul dorit de 0s, nonce-ul este modificat și mesajul este hashed din nou. Acest proces se repetă până când se primește hashul dorit.

  • Întregul proces consumă mult timp și ocupă multă putere de calcul.
  • Acum, când în sfârșit obțin valoarea hash, mesagerului i se dă mesajul original și nonce și i se spune să comunice cu ceilalți generali. Deci, ce se întâmplă dacă cineva încearcă să intercepteze mesajul? Vă amintiți efectul de avalanșă al funcțiilor de hash? Mesajul se va schimba drastic și din moment ce nu va mai începe cu numărul necesar de „0”, oamenii își vor da seama că mesajul a fost modificat.

Deci, pentru a pune POW în contextul mineritului criptografic:

  • Minerii încearcă să rezolve puzzle-uri criptografice pentru a adăuga un bloc în blockchain.
  • Procesul necesită mult efort și putere de calcul.
  • Minerii își prezintă apoi blocul rețelei bitcoin.
  • Rețeaua verifică apoi autenticitatea blocului prin simpla verificare a hash-ului, dacă este corect, apoi se adaugă la blockchain.

Deci, descoperirea nonce-ului și hash-ului necesar ar trebui să fie dificilă, totuși verificarea dacă este validă sau nu ar trebui să fie simplă. Aceasta este esența dovezii de lucru.

Acum, probabil vă întrebați, de ce ar trebui minerii să-și sacrifice timpul și resursele pentru a mina bitcoinii? Ei bine, se dovedește că au un stimulent economic destul de sănătos:

Când descoperiți un bloc, primiți o recompensă de 12,5 bitcoini. Recompensa se înjumătățește la fiecare 210.000 de blocuri.

Odată ce ați extras un bloc, deveniți dictatorul temporar al blocului. Sunteți cel responsabil pentru plasarea tranzacțiilor în interiorul blocului și, prin urmare, aveți dreptul la comisioane de tranzacție.

Există doar un număr limitat de bitcoin, 21 de milioane mai exact. Deci, ce îi împiedică pe acești mineri să extragă toate bitcoinele simultan?

Se pare că mineritul bitcoin devine din ce în ce mai greu în timp. Această caracteristică se numește „dificultate”, iar dificultatea de exploatare continuă să crească pe măsură ce continuați să exploatați.

Acesta este motivul pentru care este aproape imposibil în zilele noastre ca minerii solo să exploateze Bitcoins folosind doar computerele lor. Minerii și-au unit acum forțele și au creat „bazine miniere” pentru a-și uni puterea de calcul împreună și a mea ca grup. Aceste grupuri utilizează ASIC-uri (circuite integrate specifice aplicației) create special pentru exploatarea bitcoinelor miniere.

Probleme cu POW

Există trei probleme principale cu algoritmii de dovadă a muncii. Am mai vorbit despre asta în detaliu, așa că vom face doar o prezentare generală.

  • Risipa de energie: Bitcoin consumă mai multă putere decât Irlanda și Republica Slovacă. Această uriașă irosire de energie este unul dintre principiile Bitcoin. Este risipă de dragul risipei.
  • Centralizare: După cum v-am spus deja, Bitcoin folosește ASIC pentru minerit. Problema cu asta este că ASIC-urile sunt scumpe, iar bazinele cu mai mulți bani tind să aibă mai multe ASIC-uri și, în consecință, mai multă putere minieră. Ca atare, Bitcoin nu este atât de descentralizat pe cât vrea să fie.
  • Scalabilitate: Însăși arhitectura POW previne scalabilitatea. Bitcoin gestionează doar 7 tranzacții pe secundă. Pentru un sistem financiar modern, pur și simplu nu este suficient de adecvat.

Intrați în Tendermint

Așadar, pentru a contracara numeroasele probleme ale sistemului consensului Proof-of-Work, Jae Kwon, absolvent în informatică și inginerie de sisteme, a creat Tendermint. Tendermint este un protocol pur bazat pe BFT, construit într-un cadru fără permisiuni, cu Proof-of-Stake (PoS) ca mecanism de securitate de bază.

Datorită complexității, Tendermint a durat aproape 4 ani să fie finalizat.

Jae Kwon și Tendermint CTO Ethan Buchman au fost inspirați de Raft și PBFT pentru a crea un sistem de consens care să satisfacă problema generalului bizantin. Este

„Modelat ca un protocol determinist, trăiește sub sincronie parțială, care realizează transferul în limitele latenței rețelei și a proceselor individuale în sine”.

Bine, știm că sunt o mulțime de cuvinte complicate de aruncat unul după altul, dar pentru a înțelege ce este consensul Tendermint și de ce a fost conceput așa cum a fost conceput, trebuie să înțelegeți ce înseamnă unii dintre acești termeni complicați. Veți vedea cum toate se leagă între ele ca un puzzle complicat.

Imposibilitatea FLP # 1

Imposibilitatea FLP (Fischer Lynch Paterson) afirmă că un algoritm consens poate avea doar 2 din următoarele 3 proprietăți:

  • Siguranță
  • Reziliere garantată sau viață
  • Toleranță la erori

Ultimate Guide to Tendermint

Credit de imagine: Mediu

Cu alte cuvinte, imposibilitatea FLP stări acea

„Atât rezilierea, cât și acordul (viața și siguranța) nu pot fi satisfăcute într-o manieră temporală într-un sistem distribuit asincron, dacă trebuie să fie rezistent la cel puțin o eroare (își dovedesc rezultatul pentru toleranța generală la erori, care este mai slabă decât eroarea bizantină toleranță, deoarece necesită doar un nod de stopare – deci BFT este inclus în revendicările de imposibilitate FLP). ”

Deci, practic, este destul de imposibil ca o rețea WAN asincronă să ajungă la un consens, deoarece nu există o perioadă specifică de timp pe care o vor lua nodurile pentru a primi, procesa și răspunde la mesaje. Aceasta este în mod evident o mare problemă, deoarece este extrem de impracticabil ca o rețea mare de noduri precum Bitcoin să presupună că vor sincroniza.

Ok, deci sincronicitatea avea să fie o problemă. Cu toate acestea, cercetătorii Dwork, Lynch și Stockmeyers au aruncat o linie de salvare aici cu lucrarea lor numită „Consens în prezența sincronizării parțiale.”Acest lucru a fost numit consens DLS.

# 2 Consens DLS și sincronitate parțială

Hârtia DLS afirmă că între un sistem sincron și un sistem asincron există un sistem special care este „parțial sincron”. Deoarece acest sistem parțial sincron poate avea o durată superioară dată, va putea proiecta un protocol BFT fezabil.

Conform DLS, adevărata provocare în proiectarea protocoalelor este aceea de a avea unul care funcționează corect într-un sistem parțial sincron.

Așadar, să vedem cât de populare sunt protocoalele descentralizate precum Bitcoin și Ethereum în această privință.

Bitcoin are o limită superioară cunoscută, care este de aproximativ 10 minute. Deci, un bloc de tranzacții este produs la fiecare 10 minute. Această ipoteză de sincronizare este impusă rețelei astfel încât nodurile să primească 10 minute întregi pentru a colecta informațiile și a le transmite prin bârfe.

Ce este mașina de stat?

Pe de altă parte, avem Ethereum, care face presupuneri de sincronizare pentru blocurile și rețeaua lor, păstrând un timp de blocare superior pe 15 secunde. Cu un timp de blocare atât de redus, acestea sunt mai scalabile decât Bitcoin, cu toate acestea, nu sunt chiar atât de eficiente. Minerii Ethereum produc o mulțime de blocuri orfane.

# 3 Viață și încetare

Rezilierea este o proprietate care afirmă că fiecare procesor corect ar trebui să ia în cele din urmă o decizie. Majoritatea algoritmilor de consens, pe care îi avem acum, se bazează pe modele sincrone pentru siguranța și terminarea acestora. Au limite stabilite și reguli care sunt cunoscute, astfel încât, în cazul în care nu se țin, lanțul se bifurcă în mai multe protocoale

Sigur că există protocoale de consens care funcționează în rețele asincrone, totuși, urmând teorema imposibilității FLP, acestea nu pot fi deterministe. Ceea ce ne aduce la ….

# 4 Protocoale deterministe vs. nedeterministe

De obicei, protocoalele consens pur asincrone depind de membri nedeterministi precum Oracle, ceea ce implică un grad ridicat de incertitudine și complexitate.

Deci, cum tratează Tendermint toți acești factori?

Tendermint este un consens BFT majoritar asincron, determinist, în care validatorii au o miză care denotă puterea lor de vot. În triunghiul imposibilității FLP, preferă toleranța la erori și siguranța (consistența) în locul vieții.

Tendermint leagănă constant între perioadele de sincronie și asincronie. Aceasta înseamnă că, deși se bazează pe ipoteze de sincronizare pentru a face progrese, viteza progresului menționat nu depinde de parametrii sistemului, ci depinde de viteza reală a rețelei.

De asemenea, Tendermint nu se bifurcă niciodată în prezența asincroniei dacă mai puțin de 1/3 din validatori sunt corupți / neglijenți. Acesta este chiar motivul pentru care Tendermint este tolerant la defectele bizantine. Așa cum am spus mai devreme, Tendermint se concentrează pe siguranță deasupra vieții. Deci, dacă mai mult de o treime din validatori sunt rău intenționați, în loc de bifurarea rețelei, blockchain-ul Tendermint se va opri temporar până când mai mulți validatori 2/3 ajung la un consens.

Tendermint este, de asemenea, complet determinist și nu există nicio aleatorie în protocol. Liderii sistemului sunt aleși într-o versiune deterministă, printr-o funcție matematică definită. Deci, putem demonstra matematic că sistemul se comportă așa cum ar trebui să se comporte.

Tendermint – Sistemul de dovadă a mizei

Într-un sistem de dovadă a mizei (POS), avem anumite persoane numite „validatori”. Acești validatori blochează o miză în interiorul sistemului. După aceea, ei au responsabilitatea de a paria pe blocul pe care consideră că va fi adăugat lângă blockchain. Când blocul este adăugat, primesc o recompensă proporțională cu miza lor.

Bine, deci așa funcționează un POS generic. Acum, să vedem cum funcționează tendermint.

Mai întâi să ne familiarizăm cu câțiva dintre termenii pe care îi vom folosi:

  • O rețea se compune dintr-o mulțime de noduri. Nodurile care sunt conectate la un anumit nod se numesc colegii săi.
  • Procesul de consens are loc la o anumită înălțime de bloc H. Procesul de determinare a blocului următor constă din mai multe runde.
  • Runda este formată din mai multe stări care sunt: ​​NewHeight, Propose, Prevote, Precommit și Commit. Fiecare stat este numit Roundstep sau doar „pas”.
  • Se spune că un nod se află la o înălțime dată, rotundă și pasă, sau la (H, R, S) sau la (H, R) pe scurt pentru a omite pasul.
  • A prevedea sau a preconecta ceva înseamnă a transmite un vot prevot sau a promite un vot pentru ceva.
  • Când apare un bloc >2/3 din prevote la (H, R), atunci se numește dovadă de blocare sau PoLC.

Ce este mașina de stat?

Mașina de stat este motorul protocolului Tendermint ca să spunem așa. Următoarea diagramă vă oferă o idee bună despre cum va arăta:

Ce este mașina de stat?

Ok, deci ce se întâmplă aici?

Vă amintiți stările prin care trece fiecare rundă? NewHeight, Propose, Prevote, Precommit și Commit.

Dintre acestea, „Propune, Prevote, Precommit” constă dintr-o rundă, în timp ce celelalte două sunt runde speciale. Într-un scenariu ideal, tranziția de stat ar acționa astfel:

NewHeight -> (Propune -> Prevotați -> Precomitere)+ -> Angajează-te -> NewHeight ->…

Cu toate acestea, nu așa poate funcționa întotdeauna. Este posibil să fie necesare mai multe runde înainte de blocarea blocului. Următoarele sunt motivele pentru care pot fi necesare mai multe runde:

  • Proponentul desemnat poate lipsi.
  • Blocul propus poate nu este valid.
  • Blocul nu s-a propagat la timp.
  • >2/3 din prevote nu au fost primite la timp de către nodurile validatorului.
  • Chiar dacă +2/3 din prevote sunt necesare pentru a trece la pasul următor, cel puțin un validator poate a votat sau a votat cu răutate pentru altceva.
  • >2/3 din angajamentele prealabile pentru bloc nu au fost primite, deși s-ar putea să fi fost primite prevoturi.

Ce se întâmplă în timpul fiecărei stări?

Bine … așa că acum să ne uităm la fiecare stare și să vedem cum se întrunește totul.

Propune

În această etapă, propunătorul desemnat, adică nodul selectat propune un bloc care să fie adăugat la (H, R). Această etapă se încheie în unul din cele două moduri:

Blocul este propus și intră în stadiul de promovare.

Timpul proponentului de a alege blocul expiră la care intră oricum în stadiul de promovare.

Prevotați

Acum ajungem la stadiul de promovare. În această etapă, fiecare validator trebuie să ia o decizie.

  • Dacă într-un fel, validatorul este blocat pe un bloc propus dintr-o rundă anterioară, se deconectează automat și difuzează acel bloc.
  • Dacă validatorul a primit o propunere acceptabilă pentru runda curentă, atunci semnează și difuzează o prevedere pentru blocul propus.
  • Cu toate acestea, dacă găsesc ceva înșelător cu propunerea sau nu au primit deloc nicio propunere (de exemplu, dacă timpul propunerii se epuizează), atunci semnează cu un „zero”.
  • În această etapă nu se întâmplă blocarea blocurilor.
  • În această perioadă, toate nodurile propagă prevoturile în întregul sistem prin intermediul protocolului de bârfă.

Precomitere

Acum intrăm în pasul final al „rundei” numit „precomit”. La intrarea în această etapă, validatorii se angajează în prealabil să ia decizia prin difuzarea voturilor lor. Se poate întâmpla unul dintre următoarele trei scenarii:

  • Dacă validatorul primește >2/3 din prevoturile pentru un anumit bloc acceptabil, apoi validatorul se deconectează și transmite angajamentul lor anterior către bloc. De asemenea, sunt blocați la acel bloc. Un validator se poate bloca la un singur bloc odată.
  • Cu toate acestea, dacă validatorul primește mai mult de 2/3 din valorile NUL, atunci acestea se deblochează și precomitează apelul la „NIL”.
  • În cele din urmă, dacă nu au primit deloc o super-majoritate de 2/3, atunci nu se deconectează și nu blochează nimic.

De-a lungul acestei etape, nodurile continuă să bârfească continuu despre angajamentele prealabile din întreaga rețea.

În cele din urmă, dacă blocul propus obține mai mult de 2/3 precommits, atunci ne îndreptăm către pasul „Commit”. Cu toate acestea, dacă nu ajung la acel stadiu, atunci intră în etapa „Propune” din runda următoare.

Angajează-te

Statul Commit nu face parte din „runda”. Alături de NewHeight, este una dintre cele două runde speciale. În timpul stării de confirmare, sunt verificate două condiții paralele pentru a vedea dacă se îndeplinesc sau nu.

  • În primul rând, validatorii trebuie să primească blocul care a fost precomis de rețea. Odată ce acest lucru este făcut, ei semnează și își transmit angajamentul.
  • În al doilea rând, trebuie să aștepte până când au primit cel puțin 2/3 precomiteri pentru bloc.

    Odată ce acest lucru este făcut, blocarea devine dedicată rețelei.

NewHeight

Pur și simplu creșteți înălțimea blocului cu 1 pentru a arăta că blocul a fost adăugat.

Alegerea validatorilor

După cum probabil ați înțeles până acum, alegerea setului inițial de validatori este esențială pentru funcționarea Cosmosului. Deci, cât de exact vor fi aleși?

Spre deosebire de Bitcoin, în cazul în care oricine poate deveni miner oricând, există doar atât de mulți validatori pe care sistemul Tendermint le poate accepta. Deoarece validatorii vor avea nevoie individual de multe funcții, creșterea numărului de validatori va duce doar la întârziere..

Acesta este motivul pentru care Cosmos a decis să aleagă 100 de validatori în timpul zilei Genesis (adică ziua strângerii de fonduri.) Numărul validatorilor va crește cu 13% în fiecare an până la 10 ani când se va stabili la 300.

Ultimate Guide to Tendermint

Deci, ce zici de rezultate?

După cum afirmă cartea albă a cosmosului:

„Tendermint oferă performanțe excepționale. În parametrii de referință a 64 de noduri distribuite pe 7 centre de date de pe 5 continente, pe instanțe cloud de mărfuri, consensul Tendermint poate procesa mii de tranzacții pe secundă, cu latențe de comitere de ordinul unu până la două secunde. În special, performanța a peste o mie de tranzacții pe secundă este menținută chiar și în condiții dure de contradictoriu, cu validatori care se prăbușesc sau difuzează voturi artizanale. ”

Graficul de mai jos susține afirmația făcută mai sus:

Casper vs Tendermint

Alături de Tendermint, Casper este o altă implementare populară a protocolului POS.

În timp ce Tendermint se concentrează pe siguranță, concentrarea lui Casper este în viață, ceea ce înseamnă imposibilitatea FLP. Deci, ce se întâmplă în Casper în timpul unei furci?

Casper FFG va permite construirea în continuare a unui blockchain, având în același timp proprietatea că toate nodurile vor fi conștiente de faptul că acest lanț nu este finalizat. Deci, blockchain-ul poate rămâne disponibil fără nicio finalitate. Validatorii lanțului au posibilitatea de a se deplasa la lanțul furcat. Dacă votează mai mult de 2/3 din validatori, atunci schimbă lanțul.

În plus, Casper are un renumit mecanism de tăiere. Orice tip de atac rău intenționat va duce la reducerea mizei de către validatori.

Concluzia Tendermint

Deci, iată-l. Sperăm că v-am oferit cât mai multe informații valoroase. Ce părere aveți despre Tendermint și potențialul său? Sună în secțiunea de comentarii de mai jos!

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me