Seria Viitorul Blockchain

Da, blockchain are o problemă de scalabilitate. Iată care este aceasta și iată ce fac oamenii pentru a o rezolva.

Bătălia pentru o soluție scalabilă este cursa lunară a blockchain-ului. Bitcoin procesează 4,6 tranzacții pe secundă. Visa face în medie în jur de 1.700 de tranzacții pe secundă (pe baza unui calcul derivat din afirmația oficială de peste 150 de milioane de tranzacții pe zi). Potențialul de adoptare există, dar este blocat în prezent de scalabilitate.

Un studiu publicat de Tata Communications în 2018 a arătat că 44% dintre organizațiile din sondajul său adoptă blockchain, dar face aluzie și la problemele universale care apar la implementarea noilor tehnologii. De la un nivel arhitectural, problema nerezolvată a scalabilității apare ca un blocaj pentru adoptarea blockchain și aplicațiile practice.

Cum spune Deloitte Insights, „sistemele bazate pe blockchain sunt relativ lente. Viteza de tranzacționare lentă a blockchain este o preocupare majoră pentru întreprinderile care depind de sisteme de procesare a tranzacțiilor tradiționale de înaltă performanță”. Lumea a primit o mostră a problemelor de scalabilitate în 2017 și 2018: întârzieri severe de transfer și comisioane ridicate în rețeaua Bitcoin și celebra aplicație Cryptokitties care a congestionat rețeaua blockchain Ethereum (o rețea pe care se bazează mii de aplicații descentralizate).

Pentru a scala un blockchain, nu este suficient să se mărească dimensiunea blocului sau să se scadă durata blocului prin reducerea complexității hash-ului. Cu oricare dintre cele două metode, capacitatea de scalare atinge un plafon înainte de a atinge tranzacțiile necesare pentru a concura cu afaceri precum Visa, care „gestionează în medie 150 de milioane de tranzacții în fiecare zi” sau aproximativ 1.736 de tranzacții pe secundă (TPS).

În comparație, vitezele de tranzacționare ale Bitcoin sunt enorm de mici. În prezent, dimensiunea blocului este stabilită la 1MB (1.048.576 de octeți – deși, prin SegWit, această dimensiune poate crește până la 4MB teoretic), iar dimensiunea medie a tranzacției este de 380,04 octeți (presupunând că fiecare tranzacție este de la un portofel la x portofele – deci o tranzacție pe loturi ar conta ca o singură tranzacție. Voi vorbi mai multe despre tranzacțiile pe loturi mai târziu și de ce am etichetat-o astfel) și pare să fie în creștere.Prin urmare, cantitatea medie de tranzacții care pot încăpea într-unul dintre blocurile Bitcoin, în prezent, este calculată astfel:

Timpurile actuale de generare a blocurilor Bitcoin sunt de 10 minute; adică, la fiecare zece minute, un nou bloc este minat. În zece minute (600 de secunde), Bitcoin poate efectua în medie aproximativ 2.759,12 tranzacții, pe baza ipotezelor anterioare. Cu alte cuvinte, blockchain-ul Bitcoin poate garanta în prezent doar 4,6 tranzacții pe secundă.

Creșterea dimensiunii blocurilor sau scăderea timpului de generare a blocurilor nu va rezolva problema: O privire asupra TPS-ului non-SegWit

Problema scalabilității vine la pachet cu propunerile de valoare ale blockchain-ului; prin urmare, nu se poate crește pur și simplu scalabilitatea prin schimbarea parametrilor din blockchain.

Comunitatea Bitcoin poate ajusta două variabile pentru a încerca să crească TPS-ul. O variabilă este dimensiunea blocului (B), care este în prezent codificată dur la 1MB. În mod ideal, B ar trebui să fie mărită pentru a crește TPS. Cealaltă variabilă este timpul de generare a blocurilor (TB), care se ajustează prin modificarea complexității puzzle-ului de hashing. În mod ideal, TB ar trebui să fie redus pentru a crește TPS.

Tabelul 1: diferitele scenarii de creștere a TPS vor fi examinate în secțiunea de mai jos. Doar în S1 și S2 blockchain-ul Bitcoin poate atinge un TPS similar cu cel al Visa, dar ambele scenarii sunt imposibile din cauza timpului de propagare a tranzacțiilor, care va fi discutat și în această secțiune.

Scenarii 1 & 2

Pentru a crește de la 4,4 la 1.736 de la Visa, Bitcoin ar trebui să își mărească TPS-ul de 377,5 ori. Cu alte cuvinte, B ar trebui să crească de la 1MB la 377,5MB (tabelul 1, S1) sau TB ar trebui să fie redus de la zece minute la 1,6 secunde (tabelul 1, S2). Un al treilea scenariu ar fi acela de a le ajusta pe amândouă. Oricare dintre cele trei scenarii este irealizabil pe blockchain din cauza unui al treilea factor necontrolat: timpul de retransmisie (TR) necesar pentru a transmite un bloc nou către fiecare nod din rețeaua Bitcoin.

În prezent, se estimează că există 10.198 de noduri în rețeaua Bitcoin. Transmiterea unui 1MB (1.048.576 octeți) prin rețeaua peer-to-peer durează ceva timp. Institutul de Tehnologie din Karlsruhe măsoară timpul de propagare a blocurilor Bitcoin, iar timpul mediu de propagare a blocurilor raportat la 17 ianuarie 2019 a fost de 13.989,42 milisecunde sau aproximativ 14 secunde pentru a se propaga la 99% din rețea. TB nu poate scădea sub 99% din TR (TR99)=14, deoarece, dacă o face, atunci un bloc nou ar fi generat înainte ca un bloc vechi să fie primit de majoritatea blocurilor din rețea. Cu cât TB se apropie mai mult de TR99, cu atât apar mai multe probleme legate de bifurcații, blocuri orfane și reorganizări ale lanțului și (în cazuri extreme) vulnerabilități de securitate, cum ar fi atacurile de tip double-spend.

Scenariul 3

Chiar dacă TB = TR99 = 14, cu o dimensiune a blocurilor de 1MB, lanțul de blocuri Bitcoin ar putea să-și crească viteza doar până la 188 TPS (Tabelul 1, S3). Deși această scară reprezintă o creștere de 188 de ori a TPS, nu este nici pe departe apropiată de cei 1 736 TPS pe care Visa îi realizează zilnic; în plus, aceasta se suprapune pe riscurile menționate anterior. Cealaltă variabilă, B, poate fi reajustată, dar nu fără a afecta TR, ceea ce ar afecta TR99 și, prin urmare, limita inferioară a TB.

Scenariul 4

De exemplu, prin dublarea dimensiunii lui B (de la 1MB la 2MB), timpul de care are nevoie fiecare nod din rețea pentru a descărca un bloc nou, TR, ar crește, de asemenea, – de aproximativ 2 ori; astfel, la 2MB, TR99 = 28s, deci limita inferioară a TB ar fi, de asemenea, de 28s. Prin creșterea lui B cu orice factor și, ulterior, a lui TR cu același factor, TPS-ul net ar rămâne același – în acest caz, aproximativ 188 TPS (tabelul 1, S4). O soluție pentru reducerea impactului lui B din TR este creșterea lățimii de bandă între toate nodurile din cadrul rețelei Bitcoin. Din păcate, pentru că este o rețea P2P, această responsabilitate cade în poala fiecărui peer din rețea.

Emergența SegWit

În 2017, Segregated Witness (SegWit) a intrat în vigoare în toate nodurile Bitcoin. Notă – nu voi intra în toate detaliile despre SegWit, dar dacă vreți să aflați despre istoria sa și rolul său în apariția hard fork-ului Bitcoin Cash, aruncați o privire la acest articol:

Face ceea ce pare că face numele – segregând partea de martor a fiecărei tranzacții de datele efective ale tranzacției. A apărut ca un soft fork, deci a fost instituit fără efecte majore asupra rețelei și codului blockchain existent. Datorită modului în care ar fi ponderată tranzacția martor, noile blocuri Bitcoin activate de SegWit ar putea fi mărite, teoretic, până la 4MB fără a schimba dimensiunea blocului Bitcoin.

Dic teoretic deoarece există factori suplimentari care contribuie la dimensiunea finală a blocului SegWit. De fapt, dacă verificați un blockchain explorer Bitcoin, veți vedea că (cel puțin la momentul publicării acestui articol) dimensiunea medie a blocurilor este încă sub 1MB.

Sursa: https://www.blockchain.com/charts

Dar asta nu înseamnă că blocurile nu pot depăși 1MB. La începutul anului 2018, am asistat la una dintre cele mai mari (probabil că încă este cea mai mare) dimensiuni de blocuri generate, care a ajuns să cântărească în jur de 2,1MB. Soft fork-ul lui SegWit a ajutat la îmbunătățirea dimensiunii blocurilor fără modificări ale codului de bază, dar tot nu îmbunătățește TPS într-o manieră scalabilă.

Când am examinat cele patru scenarii anterioare în cadrul unui consens proof-of-work, am văzut că simpla creștere a dimensiunii blocurilor sau reducerea complexității de minerit ne-ar putea duce doar până la un anumit punct. Chiar și o combinație a acestora ar fi limitată din cauza timpului de propagare a tranzacțiilor. Încercarea de a extrage blocuri noi mai repede decât se pot propaga blocurile vechi va duce la probleme de securitate destul de mari. SegWit a ajutat la atenuarea unora dintre problemele TPS între timp, dar este încă nevoie de o soluție mai scalabilă pentru a obține un TPS de tip Visa.

Se pare că mutarea oricărei piese la locul ei pentru a crește TPS-ul mută o altă piesă de la locul ei în altă parte în puzzle-ul blockchain; cu toate acestea, există proiecte și startup-uri care lucrează pentru a obține răspunsurile TPS necesare pentru a împinge adoptarea blockchain într-o etapă scalabilă.

Abordări existente și viitoare pentru a rezolva problema scalabilității

Când se caută răspunsul potențial la problema scalabilității, apar multiple alte probleme. De exemplu, dacă răspunsul este aplicabil numai pentru un anumit blockchain, atunci se bazează pe presupunerea că blockchain-ul respectiv va fi cel care va avea nevoie de acea scalabilitate în viitor; în caz contrar, efortul este nejustificat sau deplasat. Un alt considerent este acela de a înțelege care ar putea fi compromisul. În acest moment, toate soluțiile disponibile vin cu limitări.

Plăți pe loturi într-o singură tranzacție

Pros: Reduce dimensiunea unei înregistrări de tranzacție prin punerea mai multor tranzacții într-o singură tranzacție, permițând mai multe tranzacții în ansamblu pe bloc, ceea ce poate crește TPS-ul într-o anumită măsură.

Cons: Nu poate grupa tranzacțiile mai multor portofele împreună; riscă confidențialitatea

Plățile pe loturi au fost o caracteristică a Bitcoin (și, prin urmare, a bifurcațiilor Bitcoin, inclusiv Digibyte, Dogecoin, Bitcoin Cash, etc.) prin intermediul RPC sendmany. Bursele fac deja acest lucru și puteți vedea acest lucru atunci când încercați să vă căutați ID-ul tranzacției pe un explorator blockchain. Ceea ce s-ar putea să vedeți în cele din urmă este un portofel care trimite către mai multe portofele diferite. În acest caz, este o tranzacție pe loturi.

Vantajul acestui lucru este că punerea într-o singură tranzacție înseamnă că 1) trebuie să plătiți o singură taxă de tranzacție și 2) nu trebuie să scrieți o tranzacție completă care este, așa cum am descris anterior, de aproximativ 380 de octeți, pentru fiecare tranzacție. De fapt, din cei 380 de octeți pe care îi poate avea tranzacția, doar 34 de octeți ar putea fi informații despre tranzacție.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.