- Seria Viitorul Blockchain
- Da, blockchain are o problemă de scalabilitate. Iată care este aceasta și iată ce fac oamenii pentru a o rezolva.
- Creșterea dimensiunii blocurilor sau scăderea timpului de generare a blocurilor nu va rezolva problema: O privire asupra TPS-ului non-SegWit
- Emergența SegWit
- Abordări existente și viitoare pentru a rezolva problema scalabilității
- Plăți pe loturi într-o singură tranzacție
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.
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.