Nota: Această pagină este în mod serios depășită și în mare parte neîntreținută; din cauza incidentelor din trecut de editare, nu a fost supusă prea mult revizuirii de către colegi.

Un nod complet Bitcoin ar putea fi modificat pentru a ajunge la rate de tranzacționare mult mai mari decât cele observate în prezent, presupunând că respectivul nod rulează pe servere de vârf mai degrabă decât pe un desktop. Bitcoin a fost proiectat pentru a sprijini clienții ușori care procesează doar părți mici din lanțul de blocuri (a se vedea verificarea simplificată a plăților de mai jos pentru mai multe detalii în acest sens).

Vă rugăm să rețineți că această pagină există pentru a oferi calcule despre scalabilitatea unui nod complet Bitcoin și a tranzacțiilor pe lanțul de blocuri, fără a ține cont de securitatea rețelei și descentralizare. Nu este menită să discute scalabilitatea protocoalelor alternative sau să încerce să rezume dezbaterile filosofice. Creați pagini alternative dacă doriți să faceți acest lucru.

Nota pentru cititori

Când tehnicienii aud despre cum funcționează Bitcoin, se opresc frecvent la cuvântul „flooding” și spun „O, Doamne, asta nu poate fi scalabil!”. Scopul acestui articol este de a lua un exemplu extrem, rata maximă de tranzacționare a Visa, și de a arăta că bitcoin ar putea, din punct de vedere tehnic, să atingă o astfel de rată fără nici un fel de raționamente discutabile, schimbări în designul de bază sau suprapuneri inexistente. Ca atare, este doar un exemplu extrem – nu un plan pentru modul în care bitcoin va crește pentru a răspunde unor nevoi mai largi (ca sistem descentralizat, publicul utilizator de bitcoin este cel care va decide cum va crește bitcoin) – este doar un argument care arată că designul de bază al bitcoin poate crește mult mai bine decât ar putea bănui o persoană inteligentă la început.

Dan critică pe bună dreptate analiza prezentată aici – subliniind că operarea la această scară ar reduce semnificativ natura descentralizată a bitcoin: Dacă trebuie să ai mulți terabytes de spațiu pe disc pentru a rula un nod de „validare completă”, atunci mai puțini oameni o vor face, iar toți cei care nu o fac vor trebui să aibă încredere în cei care o fac să fie cinstiți. Dan pare (din slide-urile sale) să fi mers prea departe cu acest argument: el pare să sugereze că acest lucru înseamnă că bitcoinii vor fi controlați de genul de bănci centrale care sunt obișnuite în prezent. Analiza sa eșuează din două motive (iar al doilea este din vina faptului că această pagină este puțin înșelătoare):

În primul rând, chiar și la scara astronomică prezentată aici, capacitatea necesară se află în sfera de acțiune a persoanelor private (bogate) și, cu siguranță, ar fi la un moment dat, în viitor, când va fi necesară o astfel de capacitate. Un sistem care pune persoanele private, sau cel puțin grupuri mici de persoane private, pe picior de egalitate cu băncile centrale cu greu ar putea fi numit unul centralizat, deși ar fi mai puțin descentralizat decât bitcoin-ul pe care îl avem astăzi. De asemenea, sistemul nu ar putea ajunge la acest tip de scară fără ca utilizatorii de bitcoin să fie de acord în mod colectiv să mărească dimensiunea maximă a blocurilor, deci nu este un rezultat care se poate întâmpla fără consimțământul utilizatorilor de bitcoin.

În al doilea rând, și cel mai important, scalarea presupusă descrisă aici se referă la faptul că Bitcoin înlocuiește viza. Aceasta este o comparație proastă, deoarece bitcoin singur nu este un înlocuitor perfect pentru viză din motive care nu au nicio legătură cu scalarea: Bitcoin nu oferă tranzacții instantanee, credit sau diverse mecanisme antifraudă (pe care unii oameni le doresc, chiar dacă nu toată lumea le dorește), de exemplu. Bitcoin este un înlocuitor mai complet al cecurilor, al transferurilor bancare, al mandatelor poștale, al monedelor de aur, al CD-urilor, al conturilor de economii etc. și, dacă va fi adoptat pe scară largă, probabil că va înlocui utilizările cardurilor de credit, care ar fi mai bine deservite de aceste alte lucruri dacă ar funcționa mai bine online.

Utilizatorii de Bitcoin trec uneori prea repede cu vederea acest fapt, deoarece oamenii se grăbesc să îl numească un defect, dar acest lucru este nedrept. Nici un sistem nu este ideal pentru toate utilizările, iar Bitcoin are un spectru mai larg de calități decât majoritatea instrumentelor monetare. Dacă comunitatea Bitcoin nu este dispusă să sublinieze faptul că unele lucruri ar fi mai bine realizate de alte sisteme, atunci devine ușor să se aducă argumente de paie: Dacă admitem că bitcoin ar putea fi folosit ca ceară de pardoseală și ca topping pentru deșert, cineva va sublinia întotdeauna că nu este cea mai bună ceară de pardoseală sau cel mai bun topping pentru deșert.

Este trivial să construiești sisteme de procesare a plăților și de creditare _asupra_ bitcoin, atât cele clasice (cum ar fi Visa însăși!), cât și cele „descentralizate”, cum ar fi Lightning. Aceste sisteme ar putea gestiona volume mai mari de tranzacții cu costuri mai mici și ar putea deconta frecvent pe bitcoinul care le susține. Acestea ar putea utiliza alte tehnici cu compromisuri diferite față de bitcoin, dar ar putea fi susținute și denominate de bitcoin, astfel încât să se bucure în continuare de lipsa de control central. Vedem începuturile acestui lucru astăzi cu serviciile de schimb de bitcoin și de portofele care permit plăți instantanee între membri.

Aceste servicii ar beneficia de moneda bitcoin stabilă și rezistentă la inflație, utilizatorii ar beneficia de tranzacțiile instantanee, de credit și de măsuri antifraudă, iar bitcoin, în general, s-ar bucura de o mai bună scalare datorită volumului de tranzacții descărcat, fără a-și compromite natura descentralizată. Într-o lume în care bitcoin ar fi utilizat pe scară largă, sistemele de procesare a plăților ar avea probabil prețuri mai mici, deoarece ar trebui să concureze cu tranzacțiile cu bitcoin brut; de asemenea, și-ar putea permite un preț mai mic, deoarece decontarea frecventă a bitcoin (și tranzacțiile de escrow bitcoin cu încredere zero) le-ar reduce riscul. Acest lucru este de două ori adevărat, deoarece bitcoin ar putea concepe o scară pentru a le înlocui în întregime, chiar dacă aceasta nu ar fi cea mai bună idee din cauza reducerii rezultate a descentralizării.

Obiective de scalabilitate

VISA gestionează în medie aproximativ 2.000 de tranzacții pe secundă (tps), așa că numiți-o o rată de vârf zilnică de 4.000 tps. Are o capacitate de vârf de aproximativ 56.000 de tranzacții pe secundă, însă, de fapt, nu utilizează niciodată mai mult de aproximativ o treime din această capacitate, chiar și în perioadele de vârf de cumpărături.

PayPal, în schimb, a gestionat aproximativ 10 milioane de tranzacții pe zi pentru o medie de 115 tps la sfârșitul anului 2014.

Să luăm 4.000 tps ca obiectiv de pornire. Evident, dacă vrem ca Bitcoin să se extindă la toate tranzacțiile economice din întreaga lume, inclusiv la cele în numerar, ar fi mult mai mult decât atât, poate mai mult în jurul a câteva sute de mii de tps. Iar necesitatea de a putea rezista la atacuri DoS (cu care VISA nu trebuie să se confrunte) implică faptul că am dori să ne extindem mult dincolo de ratele de vârf standard. Totuși, alegerea unei ținte ne permite să facem câteva calcule de bază, chiar dacă este puțin arbitrară.

Astăzi, rețeaua Bitcoin este limitată la o rată susținută de 7 tps din cauza protocolului Bitcoin care restricționează dimensiunea blocurilor la 1MB.

CPU

Protocolul are două părți. Nodurile trimit mesaje „inv” către alte noduri pentru a le anunța că au o nouă tranzacție. Dacă nodul receptor nu are acea tranzacție, o solicită cu un getdata.

Costul mare este reprezentat de căutările criptografice și ale lanțului de blocuri implicate de verificarea tranzacției. Verificarea unei tranzacții înseamnă niște hashing și niște verificări de semnături ECDSA. RIPEMD-160 rulează la 106 megaocteți/sec (numiți-o 100 pentru simplitate), iar SHA256 este aproximativ la fel. Așadar, hashing-ul de 1 megabyte ar trebui să dureze aproximativ 10 milisecunde, iar hashing-ul de 1 kilobyte ar dura 0,01 milisecunde – suficient de rapid pentru a putea fi ignorat.

Bitcoin este în prezent capabil (cu câteva optimizări simple care sunt prototipate, dar nu au fost încă fuzionate) să efectueze aproximativ 8000 de verificări de semnături pe secundă pe un procesor quad core Intel Core i7-2670QM 2,2Ghz. Numărul mediu de intrări pe tranzacție este de aproximativ 2, deci trebuie să înjumătățim rata. Acest lucru înseamnă că 4000 tps este ușor de realizat din punct de vedere al procesorului cu un singur procesor destul de obișnuit.

După cum putem vedea, acest lucru înseamnă că, atâta timp cât nodurilor Bitcoin li se permite să folosească la maxim cel puțin 4 nuclee ale mașinilor pe care rulează, nu vom rămâne fără capacitate CPU pentru verificarea semnăturilor decât dacă Bitcoin gestionează un trafic de 100 de ori mai mare decât PayPal. La sfârșitul anului 2015, rețeaua gestionează 1,5 tranzacții/secundă, așa că, chiar presupunând o creștere enormă a popularității, nu vom ajunge la acest nivel pentru o perioadă lungă de timp.

Desigur, Bitcoin face și alte lucruri dincolo de verificarea semnăturilor, cel mai evident, gestionarea bazei de date. Noi folosim LevelDB, care face cea mai mare parte din munca grea pe un fir separat și este capabilă de sarcini foarte mari de citire/scriere. În general, utilizarea CPU a Bitcoin este dominată de ECDSA.

Rețea

Să presupunem o rată medie de 2000tps, deci doar VISA. Tranzacțiile variază ca mărime de la aproximativ 0,2 kilobytes la peste 1 kilobyte, dar astăzi este în medie o jumătate de kilobyte.

Aceasta înseamnă că trebuie să țineți pasul cu aproximativ 8 megabiți/secundă de date de tranzacție (2000tps * 512 bytes) / 1024 bytes într-un kilobyte / 1024 kilobytes într-un megabyte = 0,97 megabytes pe secundă * 8 = 7,8 megabiți/secundă.

Acest tip de lățime de bandă este deja comun chiar și pentru conexiunile rezidențiale din ziua de azi și este cu siguranță la limita inferioară a ceea ce furnizorii de colocare se așteaptă să vă ofere.

Când blocurile sunt rezolvate, protocolul actual va trimite tranzacțiile din nou, chiar dacă un peer le-a văzut deja la momentul difuzării. Rezolvarea acestui aspect pentru ca blocurile să fie doar liste de hașuri ar rezolva problema și ar face ca lățimea de bandă necesară pentru difuzarea blocurilor să fie neglijabilă. Astfel, deși această optimizare nu este complet implementată în prezent, nu luăm în considerare aici lățimea de bandă de transmisie a blocurilor.

Stocare

La rate de tranzacționare foarte mari, fiecare bloc poate avea o dimensiune de peste o jumătate de gigabyte.

Nu este necesar ca majoritatea nodurilor care validează complet să stocheze întregul lanț. În lucrarea lui Satoshi, acesta descrie „pruning”, o modalitate de a șterge datele inutile despre tranzacțiile care sunt complet cheltuite. Acest lucru reduce cantitatea de date care este necesară pentru un nod de validare completă la doar dimensiunea dimensiunii actuale a ieșirii necheltuite, plus unele date suplimentare care sunt necesare pentru a face față reorogărilor. Începând din octombrie 2012 (blocul 203258) au existat 7 979 231 de tranzacții, însă dimensiunea setului de ieșire necheltuit este mai mică de 100MiB, ceea ce este suficient de mic pentru a încăpea cu ușurință în memoria RAM chiar și pentru calculatoarele destul de vechi.

Doar un număr mic de noduri de arhivare trebuie să stocheze întregul lanț care merge înapoi până la blocul de geneză. Aceste noduri pot fi folosite pentru a porni de la zero noi noduri de validare completă, dar în rest nu sunt necesare.

Primul factor limitativ al performanței Bitcoin este reprezentat de căutările pe disc odată ce setul de ieșire a tranzacțiilor neutilizate nu mai încape în memorie. Odată ce discurile dure sunt eliminate treptat în favoarea SSD-urilor, este foarte posibil ca accesul la setul UTXO să nu devină niciodată un blocaj serios.

Optimizări

Descrierea de mai sus se aplică software-ului actual, presupunându-se doar optimizări minore (de tipul celor care pot fi și au fost făcute de un singur om în câteva săptămâni).

Cu toate acestea, există potențial pentru optimizări și mai mari care pot fi făcute în viitor, cu prețul unei anumite complexități suplimentare.

CPU

Există algoritmi pentru accelerarea verificării pe loturi pe semnături cu curbe eliptice. Este posibilă verificarea simultană a semnăturilor lor pentru o accelerare de 2 ori mai rapidă. Aceasta este o implementare ceva mai complexă.

Verificare simplificată a plăților

Este posibil să se construiască o implementare Bitcoin care nu verifică totul, dar în schimb se bazează fie pe conectarea la un nod de încredere, fie își pune încrederea într-o dificultate ridicată ca un proxy pentru dovada de valabilitate. bitcoinj este o implementare a acestui mod.

În modul Simplified Payment Verification (SPV), numit după secțiunea din lucrarea lui Satoshi care îl descrie, clienții se conectează la un nod complet arbitrar și descarcă doar anteturile de bloc. Aceștia verifică dacă capetele de lanț se conectează între ele corect și dacă dificultatea este suficient de mare. Aceștia solicită apoi tranzacții care corespund anumitor modele de la nodul la distanță (de exemplu, plăți către adresele dumneavoastră), care furnizează copii ale acestor tranzacții împreună cu o ramură Merkle care le leagă de blocul în care au apărut. Acest lucru exploatează structura arborescentă Merkle pentru a permite dovada includerii fără a avea nevoie de conținutul complet al blocului.

Ca o optimizare suplimentară, antetele blocurilor care sunt îngropate suficient de adânc pot fi aruncate după un anumit timp (de exemplu, nu trebuie să stocați cu adevărat decât începând cu 2016 antete).

Nivelul de dificultate necesar pentru a obține încrederea că nodul la distanță nu vă furnizează tranzacții fictive depinde de modelul dumneavoastră de amenințare. Dacă vă conectați la un nod despre care se știe că este de încredere, dificultatea nu contează. Dacă doriți să alegeți un nod aleatoriu, costul pentru un atacator de a extrage o secvență de blocuri care conține o tranzacție falsă ar trebui să fie mai mare decât valoarea care poate fi obținută prin fraudarea dvs. Modificând cât de adânc trebuie să fie îngropat blocul, puteți face un schimb între timpul de confirmare și costul unui atac.

Programele care implementează această abordare pot avea o suprasolicitare fixă de stocare/rețea în cazul nul al lipsei de utilizare și o utilizare a resurselor proporțională cu tranzacțiile primite/expediate.

A se vedea și:

Vezi, de asemenea: Thin Client Security.

Lucrări înrudite

Există câteva propuneri pentru optimizarea scalabilității Bitcoin. Unele dintre acestea necesită un alt-chain / hard fork.

  • Compresia supremă a lanțului de blocuri – ideea că lanțul de blocuri poate fi comprimat pentru a obține „noduri lite fără încredere”
  • Lucrarea Finite Blockchain care descrie împărțirea lanțului de blocuri în trei structuri de date, fiecare mai potrivită pentru scopul său. Cele trei structuri de date sunt un blockchain finit (păstrează N blocuri în trecut), un „arbore de conturi” care păstrează soldul contului pentru fiecare adresă cu un sold diferit de zero și un „lanț de dovezi” care este o versiune redusă (în continuă creștere) a blockchain-ului.
  • Lightning Network, un protocol alternativ pentru compensarea tranzacțiilor în care nodurile stabilesc canale de microplăți între ele și se decontează ocazional pe lanțul de blocuri. Utilizatorii obișnuiți interacționează în principal sau numai cu canalele de plată și utilizează blockchain doar pentru transferuri mari și stocare la rece.

admin

Lasă un răspuns

Adresa ta de email nu va fi publicată.

lg