Am petrecut suficient timp urmărind promisiunile de „date ieftine” care se ciocnesc de constrângerile reale ale ingineriei, astfel că am devenit prudent într-un mod util. În primele cicluri de infrastructură, echipele livrează ceva care funcționează la scară de demonstrație, apoi factura apare când utilizarea devine haotică: vârfuri de lățime de bandă, noduri care se schimbă și, brusc, presupunerile de design fac cea mai mare parte a muncii. De aceea acord o atenție deosebită designurilor de stocare care pornesc de la modelul de cost, nu de la sloganuri.
Principala fricțiune aici este simplă: blockchain-urile sunt construite în jurul replicării mașinilor de stare (SMR), ceea ce înseamnă că fiecare nod complet re-execută tranzacții și stochează aceeași stare, astfel încât toată lumea să fie de acord. Asta e grozav pentru stări mici, de mare valoare, dar este brutal de ineficient pentru blocuri mari, cum ar fi activele de joc, media, fișierele de model sau jurnalele. Replicarea completă transformă „stochează un fișier” în „stochează-l N ori”, unde N este numărul nodurilor care contează. Chiar dacă împingi blocuri în calldata tranzacției, încă plătești rețeaua pentru a transporta date pe care majoritatea nodurilor nu doresc să le păstreze pentru totdeauna.
Este ca și cum ai cere fiecărui bibliotecar dintr-un oraș să păstreze o copie completă a fiecărei cărți noi, chiar și atunci când majoritatea oamenilor au nevoie doar să știe ISBN-ul și unde poate fi recuperată cartea.
Walrus abordează această povară prin separarea integrității de stocarea în vrac. În loc să forțeze stratul SMR să replicate întreaga blob, protocolul tratează blockchain-ul ca un ancoră de integritate și o suprafață de coordonare, în timp ce datele în sine trăiesc într-o rețea de stocare specializată. Trucul principal este codarea prin ștergere: o blob este împărțită în piese, apoi codificată în multe „fâșii” astfel încât originalul poate fi reconstruit din doar un subset al acestora. Aceasta înseamnă că obții durabilitate și disponibilitate fără a stoca multiple copii complete. Ponderarea totală a stocării devine o funcție a ratei de codare, nu o funcție a „câte validatoare există.”
Sub capotă, există câteva straturi care trebuie să se alinieze curat. Primul este selecția comitetului pentru nodurile de stocare: rețeaua are nevoie de un set definit de operatori responsabili pentru păstrarea fâșiilor pentru o perioadă dată (adesea organizată pe epoci). Această selecție nu este doar o listă; este o limită de securitate, deoarece modelul adversarial se schimbă atunci când apartenența se rotește. Al doilea este modelul de stare: lanțul nu stochează blob-ul, ci stochează identificatori și angajamente criptografice la ceea ce ar trebui să fie blob-ul. Acest angajament leagă conținutul, astfel încât oricine recuperează datele poate verifica că se potrivește cu intenția originală fără a avea încredere în furnizorul de stocare. Al treilea este fluxul criptografic: clienții codifică blob-ul, distribuie fâșiile pe multe noduri și mai târziu verifică fâșiile și reconstrucția blob-ului. Rețeaua poate adăuga, de asemenea, responsabilitate prin cerința ca operatorii să răspundă la audite/întrebări care demonstrează că încă păstrează fâșiile atribuite, astfel încât „am fost cinstit ieri” să nu devină un permis gratuit permanent.
Ceea ce îmi place din perspectiva unui constructor este că acest design este sincer cu privire la ceea ce blockchain-urile sunt cele mai bune. SMR este uimitor pentru acord și finalitate, nu pentru a fi un hard disk global. Dacă menții stratul de consens concentrat pe angajamente, membri și plăți, reduci presiunea asupra hardware-ului nodurilor și menții verificarea ușoară. Asta, la rândul său, poate face ca „să lansezi o aplicație care folosește fișiere mari” să pară mai puțin ca o luptă cu stratul de bază și mai mult ca o utilizare conform intenției.
Rolul token-ului WAL se potrivește economiei de stocare mai degrabă decât economiei de hype. Taxele acționează ca o chirie preplătită pentru stocare pe perioade fixe: utilizatorii plătesc pentru a stoca și a recupera, aceste plăți curg către operatori (și potențial către stakeri/delegatori) în timp, iar reînnoirile sunt adevăratul semnal al adecvării produs-piață. Staking-ul este mecanismul de negociere pe partea ofertei: aliniază operatorii cu comportamentul pe termen lung, ajută rețeaua să decidă cine este eligibil să servească și oferă protocolului o pârghie pentru a penaliza performanțele slabe. Guvernanța este suprafața de control lentă care poate regla parametrii precum programele de prețuri, regulile epocii și greutățile stimulentelor atunci când lumea reală învață lecții noi.
fiabilitatea pe termen lung depinde în continuare de participarea susținută a nodurilor și disciplina stimulentelor; churn-ul, întreruperile și comportamentul adversarial tind să apară mai târziu decât reperele.
Dacă ai proiecta o aplicație care are nevoie de fișiere mari, ai prefera să plătești pentru replicarea completă „doar în caz”, sau să plătești pentru disponibilitate verificabilă cu reconstrucția dintr-un subset—ce compromis ți se pare mai sigur?



