Pe scurt; DR: Paradigma existentă pentru modernizarea programelor Solana este un dezastru. Cel mai periculos lucru în scrierea codului smart contract este că modelele de date ale programului sunt efectiv blocate după implementare. În SWE tradițional, API-ul client este decuplat de backend. Poți schimba invizibil o schemă backend sau poți adăuga migrații într-o bază de date. În programarea Solana, poți încerca să pregătești un contract pentru viitor prin: - Adăugarea de struct padding și speranța că există suficienți biți goi în datele contului pentru modificări viitoare - Solicitarea utilizatorilor să semneze manual pentru a migra starea aplicației (experiență de utilizator groaznică) - Implementarea acțiunilor administrative la nivel de aplicație pentru migrarea schemelor Rețineți că toate cele de mai sus au potențialul de a afecta componabilitatea la nivel de VM. De asemenea, necesită o logică complexă și predispusă la erori pentru a fi executate în siguranță. Nu introduce doar riscul logic al datelor, ci și riscul managementului cheie. Un argument este să nu schimbi niciodată codul după implementare. La urma urmei, cadrul existent face extrem de dificilă modificarea în siguranță a formatelor de date existente. Totuși, chiar dacă imutabilitatea este de dorit, este naiv și imprudent să crezi că nu există bug-uri catastrofale de remediat sau funcții critice de adăugat în viitor (unele dintre ele necesitând schimbări de cablu). Companiile care construiesc pe acest stack sunt nevoite să aleagă între securitate, viteză și calitate. Astăzi, instrumentele care să permită întreținerea și dezvoltarea continuă a unui contract inteligent suficient de complex sunt inexistente. Iată câteva dintre caracteristicile la care m-aș gândi, inclusiv dacă aș construi acest mediu pornind de la principii de bază: - Ar trebui să existe API-uri separate în VM pentru a citi și scrie datele contului. Aceasta permite modificări ale schemei fără a întrerupe formatul wire atât pentru consumatorii on-chain, cât și off-chain. - Unele funcții administrative de contract inteligent (opt-in) ar trebui să existe la nivel de sistem, nu la nivel de aplicație. - La actualizarea executabilă, ar trebui să existe simultan o migrare atomică opțională a conturilor deținute de acel program. Chiar dacă scopul este imuabilitatea, integrarea uneltelor la nivel de sistem pentru a permite actualizări software sigure este esențială pentru aplicațiile de consum cu stări în evoluție. Sistemul actual este atât de fragil încât cel mai bun sfat pentru acești dezvoltatori este să nu atingă niciodată schemele on-chain decât dacă știu cu adevărat ce fac.