Autor: w1nt3r.eth

Compilare:深潮TechFlow

Poate blockchain-ul va dăinui, dar durata de viață a aplicațiilor descentralizate (dApps) este foarte scurtă.

Pe 31 octombrie 2024, am încercat să deschid dApps folosite în 2021 și rezultatul a fost înfricoșător: domenii expirate, implementări suspendate, pagini inexistente, servicii indisponibile.

Astea nu ar trebui să fie aplicații descentralizate, nu? Ar fi trebuit să fie aplicații care nu depind de entități centralizate, gratuite ca berea, libere ca discursul și rezistente la cenzură. Ele sunt aplicații care fac din Web3 noul internet.

Dar aceste aplicații aproape că au dispărut, iar majoritatea celor pe care le-am folosit acum doi ani nu mai există. Fantomele lor s-ar putea să mai existe undeva pe blockchain, atâta timp cât poți găsi adresa de contract corectă și ghici datele de apel corecte.

De ce s-a întâmplat asta? Care este problema? Ce putem face pentru a schimba această situație?

Atunci, ce este de fapt "dApp"?

Să aruncăm o privire asupra unor documente vechi pe care le-am găsit din epoca preistorică (2016).

"dApp" este prescurtarea pentru "aplicație descentralizată". Conceptul este că poți crea o aplicație web folosind tehnologii deschise (cum ar fi HTML/CSS/JS) și să o găzduiești pe o infrastructură descentralizată și fără permisiuni (cum ar fi IPFS). dApp interacționează cu blockchain-ul prin portofelul tău. Poți obține cele mai recente date și trimite tranzacții fără a depinde de companii centralizate.

Acest lucru face ca dApps să fie aproape imposibil de oprit. Gratuit, fără permisiuni, descentralizat. Acesta este visul celor care caută cu adevărat spiritul punk.

Pagină de aterizare frumoasă

Cu toate acestea, majoritatea oamenilor nu sunt preocupați de caracteristicile descentralizării și lipsei de permisiuni. Ei sunt mai interesați de utilitatea aplicației (și dacă numerele pot crește).

Dezvoltatorii Web3 își dau seama rapid că concurează pentru atenția utilizatorilor cu aplicații Web2 care sunt frumos proiectate, rapide și atrăgătoare, iar descentralizarea nu le oferă prea mult avantaj pe acest teren.

Cei care înțeleg tehnologia știu că blockchain-ul reprezintă o adevărată schimbare de paradigmă. Dar tot ce este pe blockchain este "open source" și poate fi copiat, așa că a devenit o marfă. Nu există bariere de concurență. Oricine poate implementa un contract Uniswap oriunde. De fapt, oricine poate crea propriul său L2!

Diferența reală constă în brand, canalele de distribuție, efectele de rețea și experiența utilizatorului. În milioane de implementări Uniswap, utilizatorii aleg ceea ce cunosc (brand), ceea ce este ușor accesibil (distribuție), ceea ce toată lumea folosește (efecte de rețea) și ceea ce are o interfață prietenoasă (experiența utilizatorului).

Deși am menționat experiența utilizatorului la final, aceasta nu este cea mai puțin importantă. O experiență proastă a utilizatorului poate avea un impact negativ. Fiecare proprietar de magazin de comerț electronic știe că pentru fiecare 100 de milisecunde de întârziere, ar putea pierde 10% din utilizatori. Dacă experiența utilizatorului este proastă, nu poți construi o marcă de lux. Dacă aplicația ta îi face pe utilizatori să se simtă deranjați, nu îi vei putea păstra.

Implementarea pe Vercel este mai simplă decât pe IPFS

A face bine nu este ușor

Chiar și atunci când majoritatea utilizatorilor nu sunt interesați de descentralizare, adevărații criptopunk încă îi pasă. Nu se spune „toată lumea ar trebui să fie un fanatic al descentralizării”, ci pentru că „asta este calea corectă”. Chiar și când entitățile centralizate devin ostile sau sunt supuse cenzurii, descentralizarea poate oferi oamenilor putere și autonomie.

Aceasta este problema. Nu este ușor să creezi o aplicație care să fie atât descentralizată, cât și să aibă o experiență bună a utilizatorului. Dar dificultatea provine din faptul că noi (dezvoltatorii) am devenit leneși.

Analizând BasePaint

Să ne uităm la un "dApp" tipic de astăzi și tehnologiile pe care se bazează. Voi folosi BasePaint, pe care l-am dezvoltat eu. Din anumite puncte de vedere, ar trebui să fie un "dApp Web3": folosește blockchain (Base L2) și depinde de portofelul utilizatorului pentru interacțiune. Dar nu este suficient pentru a oferi o experiență bună utilizatorului, așa că a trebuit să adaug unele elemente non-descentralizate. De fapt, am adăugat multe.

Componentele serviciului tehnic al BasePaint

Iată tehnologiile centralizate pe care a trebuit să le adopt în dezvoltare:

  • Domeniu. Sper că utilizatorii pot găsi și accesa site-ul nostru cu ușurință. Deoarece browserele nu suportă ENS, a trebuit să cumpăr un domeniu de la un registrator de domenii și să configurez DNS-ul pentru a indica către serverul corect.

  • Serviciu de găzduire. Trebuie să găzduiesc aplicația (inclusiv fișierele HTML/CSS/JS) undeva și să mă asigur că viteza de acces este rapidă și stabilă. Deși IPFS are un potențial mare, majoritatea browserelor nu îl suportă, viteza gateway-ului este lentă, iar URL-urile nu sunt prietenoase.

(Ai încercat să introduci

QmRxM6Fz3jYBNLTNn59Whtj8uiFodC53Z5nEep6eSkwf8V?)

  • Baza de date. Blockchain-ul este un bun sistem de baze de date în anumite cazuri, dar nu se potrivește pentru toate scenariile. De exemplu, stocăm informațiile de chat în baza de date Postgres, deoarece este mai ieftin și mai rapid. Deși putem încerca să le punem pe blockchain, viteza nu va putea niciodată să se compare cu baza de date centralizată.

  • Servicii backend. BasePaint are nevoie de unele calcule care nu sunt potrivite pentru a fi procesate pe Ethereum. De exemplu, generarea de video, sincronizarea pozițiilor cursorului mai multor utilizatori, verificarea permisiunilor de chat etc. În plus, trebuie să protejăm anumite informații sensibile, cum ar fi acreditivele de conexiune la bază de date și token-uri private.

  • Furnizorii JSON-RPC Ethereum. Teoretic, putem accesa blockchain-ul prin portofelul utilizatorului. Dar aceasta înseamnă că utilizatorii fără browsere care "susțin Web3" nu vor putea vedea nimic. Mai complicat este că există variații subtile între furnizorii RPC pentru diferite portofele. De exemplu, QuickNode limitează interogările de jurnal la 10.000, în timp ce Alchemy folosește unități de calcul proprii pentru a limita cererile. Utilizarea RPC-ului portofelului înseamnă că trebuie să gestionăm aceste variații subtile.

  • Indexer. Stocarea datelor pe blockchain este costisitoare. BasePaint rezolvă această problemă prin faptul că nu stochează pixelii în contract. În schimb, trimite toate datele necesare prin evenimentele Painted. Poți reconstrui orice pânză interogând evenimentele contractului inteligent. Dar imaginează-ți să faci asta pe pagina galeriei BasePaint (afișăm sute de pânze!). Pentru a oferi o experiență fluidă utilizatorilor, rulăm un indexer pentru a urmări evenimentele blockchain-ului și a stoca datele într-un mod care să permită interogări rapide.

  • Alte servicii. Folosim Reservoir pentru a obține date despre piața secundară și pentru a face minting cross-chain, Cloudflare ca CDN, R2 pentru stocarea și cache-ul video, DataDog pentru logare, PostHog pentru analiză, Neynar pentru a găsi adresele de portofel ale utilizatorilor Farcaster. Fiecare dintre aceste servicii ne-a economisit săptămâni sau chiar luni de timp de dezvoltare, dar le-a făcut aplicațiile noastre să fie mai puțin descentralizate. În plus, multe instrumente lipsesc un model de afaceri sustenabil și ar putea fi oprite în orice moment.

  • Card de credit. Această problemă mă face întotdeauna să râd și să plâng în același timp. Știai că majoritatea produselor SaaS criptografice nu pot fi plătite cu criptomonedă? Dacă soldul cardului meu de credit este insuficient sau expirat, domeniul meu, baza de date, serverul, punctele de finalizare RPC și alte produse SaaS se vor opri.

Cum se poate realiza descentralizarea aplicației?

Ca dezvoltator Web3, opțiunile pe care le văd în prezent sunt:

  1. Renunțarea la tehnologiile centralizate, construind un dApp hardcore care depinde complet de servicii descentralizate. Deși acest lucru ar putea funcționa în proiecte precum Tornado Cash, pentru produsele de consum obișnuite, aceasta ar aduce obstacole în experiența utilizatorului, ceea ce ar putea descuraja majoritatea utilizatorilor.

  2. Menținerea aplicațiilor centralizate, în timp ce se dezvoltă o versiune simplificată de dApp care depinde doar de stiva de tehnologie descentralizată. Acest lucru înseamnă că trebuie să întreții două aplicații independente, crescând astfel volumul de muncă și costurile.

  3. Adoptarea unei strategii de "îmbunătățire progresivă". Începând cu un dApp simplificat, dacă serverul este disponibil, utilizează-l pentru a îmbunătăți viteza. Aceasta necesită o gestionare strictă și, comparativ cu a doua opțiune, timpul salvat nu este semnificativ.

  4. Cod sursă deschis, permițând utilizatorilor să ruleze singuri (acesta este direcția noastră aleasă). Dar, în realitate, lansarea întregului sistem necesită o capacitate de inginerie software destul de ridicată, fiind mult mai complexă decât încărcarea unei pagini de pe IPFS.

Toate opțiunile de mai sus necesită un efort considerabil și nu sunt alegerea implicită. Verifică orice tutorial sau șablon dApp, aproape că nu se menționează aceste probleme. De fapt, dezvoltarea aplicațiilor descentralizate nu ar trebui să fie atât de dificilă. Dacă putem muta complexitatea la nivelul infrastructurii, crearea de dApp-uri ar trebui să fie mai simplă.

Poate ar trebui să ne ocupăm de acele probleme dificile?

Putem încerca să realizăm descentralizarea la nivelul infrastructurii. De exemplu, integrarea suportului ENS în getaddrinfo, astfel încât toate browserele să suporte nativ IPFS și să îmbunătățească viteza IPFS pentru a se compara cu cele mai avansate CDN-uri actuale. De asemenea, putem îmbunătăți JSON-RPC al Ethereum pentru a-l face mai practic pentru aplicațiile descentralizate (dApps). Dar acesta este doar partea simplă.

Pentru a înlocui bazele de date și serverele centralizate, trebuie să dezvoltăm o serie de tehnologii care nu există în prezent. Poate ar fi nevoie de un sistem de calcul distribuit bazat pe dovezi cu cunoștințe zero (ZK), capabil să obțină recompense pentru rularea codului, sau un super Ethereum capabil să execute eficient instrucțiuni x86 generale.

În plus, trebuie să găsim soluții descentralizate pentru toate serviciile construite în jurul criptomonedelor. Trebuie să proiectăm noi mecanisme de stimulare - cine va plăti pentru aceste resurse de calcul? Într-un sistem cu adevărat descentralizat, modelele comerciale SaaS existente nu vor funcționa. (Dar sperăm că costurile acestor servicii pot fi plătite prin criptomonede, fără a necesita carduri de credit.)

În plus, trebuie să ne asigurăm că experiența de dezvoltare a acestui nou sistem este cel puțin la fel de bună ca cea a platformelor centralizate actuale. Aceste platforme au investit miliarde de dolari în timp de inginerie pentru a se rafina și au investit sume uriașe în marketing pentru a umple internetul cu tutoriale, încercând să convingă pe toată lumea că soluțiile lor sunt cele mai bune.

Este cu adevărat important?

"Cercetătorii tăi se concentrează prea mult pe fezabilitatea tehnologiei, fără a se opri să se gândească dacă este potrivit să facă asta." - extras din (Jurassic Park)

Dar oare stratul aplicației chiar trebuie să fie descentralizat?

Nouns ne arată că poate că doar descentralizarea blockchain-ului este suficientă. Nouns are un ecosistem de aplicații prosper, toate aplicațiile interacționează cu același contract. Poți vota prin Camp sau Agora, nu contează, trebuie doar să alegi interfața preferată.

Pentru a atrage miliarde de utilizatori, criptomoneda ar putea trebui să devină o componentă integrată fără probleme a sistemelor existente. Aceasta înseamnă că experiența ideală cu criptomoneda este ca utilizatorii să nu știe că folosesc criptomonede, deoarece a fost abstractizată până la un nivel nesemnificativ. De exemplu, să poți cumpăra cafea cu o simplă atingere a telefonului, iar utilizatorii nu sunt interesați dacă folosesc USDC sau rețeaua Visa.

Piața a găsit o soluție locală optimă:

  • Blockchain-ul ca strat de bază este descentralizat, asigurând securitatea unor active de mii de miliarde de dolari și oferind un suport puternic pentru proprietate și rezistența la cenzură.

  • Stratul aplicației este centralizat. Companiile dezvoltă aplicații centralizate pentru a oferi cea mai bună experiență utilizatorului. Sistemele lor închise formează bariere de concurență, dar aceste aplicații interacționează totuși cu aceeași blockchain.

Instrumente lipsă

Sper că acest echilibru se va înclina mai mult spre descentralizare. Aș vrea să pot rula propriul meu Nouns Camp sau versiunea Agora local, la fel de simplu ca și cum aș face clic pe un link. Sper să avem câteva instrumente care să facă construirea acestor aplicații descentralizate mai simplă, fără a compromite experiența utilizatorului.

BasePaint este uimitor. Este un ecosistem auto-sustenabil: artiștii creează opere, colecționarii cumpără și obțin profit pe piața secundară, iar proprietarii pot influența afacerile zilnice prin vot. Acest model funcționează, iar noi am distribuit deja mai mult de un milion de dolari creatorilor prin acest mod.

Cu toate acestea, cel mai slab punct din întregul sistem este echipa noastră. Menținerea aplicației necesită un efort considerabil, cum ar fi repararea erorilor și îmbunătățirea experienței utilizatorului. În același timp, lucrăm și pentru a face sistemul mai descentralizat, cum ar fi să facem aplicația mai ușor de auto-găzduit, renunțând la controlul permisiunilor în loc să stabilim niște bariere.

Concluzie

Aplicațiile descentralizate (dApps) par să fi pierdut vitalitatea, deoarece avantajele "descentralizării" nu sunt momentan o preocupare pentru utilizatori, așa că dezvoltatorii trebuie să facă ajustări. Am oprit dezvoltarea instrumentelor menite să facă aplicațiile descentralizate.

Din fericire, infrastructura de bază a blockchain-ului este mai solidă decât oricând. Tehnologia de bază este mai robustă, iar foaia de parcurs de dezvoltare este promițătoare. Avem, de fapt, ocazia de a construi o platformă globală de calcul.

Cu toate acestea, din păcate, discuția despre cum să îmbunătățim interfața utilizatorului nu a fost suficient de apreciată. Conceptul de dApp a fost temporar pus deoparte...