- Torna al menu
- Torna al menuPrezzi
- Torna al menuRicerca
- Torna al menuConsenso
- Torna al menu
- Torna al menu
- Torna al menu
- Torna al menuWebinar ed Eventi
Il bug Ethereum rimanda i contratti intelligenti al tavolo da disegno
Un piccolo bug di Solidity ha scatenato un acceso dibattito tra gli sviluppatori Ethereum .
I bug sono una parte normale del software, ma su Ethereum possono essere particolarmente pericolosi.
Questa potrebbe essere la conclusione a cui si è giunti dopo aver scoperto questa settimana un bug nel linguaggio di programmazione Ethereum che riguarda uno specifico stile di contratto intelligente e, a causa del funzionamento Ethereum (che promette che le applicazioni funzioneranno esattamente come programmato), la maggior parte dei contratti interessati T può essere eliminata o modificata.
In breve, i proprietari di smart contract decentralizzati (quelli che T possono essere aggiornati da ONE proprietario) T possono fare nulla per risolvere il bug.
Due giorni dopo lasegnalazione di bug è stato rilasciato, gli sviluppatori hanno implementato una correzione nella versione 0.4.4 di Solidity. Tuttavia, il bug riguarda alcuni indirizzi e tipi di dati in questi contratti, pertanto T è ancora possibile modificarli con l'aggiornamento.
La buona notizia è che il bug potrebbe non aver interessato molti contratti intelligenti.
Il creatore di Solidity, Christian Reitwiessner, ha dichiarato a CoinDesk di aver eseguito un'analisi "semi-automatica" di ogni programma Ethereum elencato da un famoso block explorer e di aver scoperto che su 12.000 contratti, solo quattro erano sfruttabili.
Reitwiessner ha detto che nessuno di questi contratti contiene ether, poiché probabilmente sono stati utilizzati per scopi di test. Ma vale la pena notare che non tutti i contratti sono mostrati su Etherscan, l'esploratore di blocchi selezionato. (Ci sono più di 200.000 contratti in totale, quindi è difficile dire quanto siano sicuri i fondi contrattuali rimanenti).
Nel complesso, sembra essere un difetto minore se confrontato con The DAO, l'esempio più notevole di uno smart contract che non funziona come previsto. Tuttavia, ha generato discussioni su cosa potrebbe accadere nel caso di altri bug importanti, dato che non tutti gli smart contract avranno un proprietario centrale che può aggiornarli se qualcosa va storto.
ONE osservatore sui social media, ad esempio, sostenutoche potrebbe trattarsi di una "piccola collinetta sul fianco di una grande montagna" di problemi simili.
ONE delle idee più radicali per risolvere questo problema è rendere i contratti Ethereum aggiornabili nel breve termine, in modo che i proprietari abbiano un modo per disattivare o modificare il codice in caso di incidente. Ma il timore è che ciò potrebbe significare eliminare ciò che rende Ethereum (o altre piattaforme decentralizzate) uniche.
Loi Luu, dottorando presso la National University of Singapore, ha affermato che sarebbe meglio per Ethereum se gli utenti imparassero a usare contratti intelligenti sicuri nel modo più duro e decentralizzato.
Luu ha detto:
"Personalmente T penso che sia una buona idea. È fondamentalmente contro tutto ciò per cui sono stati progettati gli smart contract. Se Ethereum è una rete beta, lasciamo che gli smart contract falliscano, lasciamo che le persone Imparare la lezione."
Tuttavia, sebbene i commenti di Luu suggeriscano che potrebbe non essere una buona idea rendere aggiornabili tutti i contratti, esistono alcuni modi per prepararsi a potenziali bug futuri, soprattutto perché Ethereum è ancora una Tecnologie nuova.
Risolvere il problema
I programmi scritti nei linguaggi di livello superiore e di facile lettura di Ethereum, come Solidity o Serpent, vengono compilati in codice a livello di byte prima di essere aggiunti alla blockchain. Il problema in questo caso era la Tecnologie che eseguiva la compilazione.
Per risolvere il problema, Reitweissnerraccomandato che gli sviluppatori facciano due cose. ONE, se compilano un nuovo contratto, gli sviluppatori devono aggiornare alla nuova versione di Solidity per evitare il bug.
Il secondo modo per evitare il problema è l'esempio più curioso, poiché richiede l'aggiornamento o il ritiro dei finanziamenti per i contratti intelligenti già implementati, qualcosa che non ci si aspetterebbe fosse possibile con Ethereum.
Reitwiessner ha elaborato questo consiglio, spiegando che esistono due tipi di contratti: quelli controllati centralmente e quelli decentralizzati, in cui ONE ha "privilegi speciali".
Il primo tipo probabilmente offre un meccanismo di aggiornamento o un modo per rimuovere fondi dal contratto.
Il secondo tipo è più complicato. D'altro canto, poiché gli smart contract Ethereum trustless T possono essere rimossi o modificati una volta implementati, T c'è molto che gli sviluppatori possano fare se T hanno utilizzato uno smart contract centralizzato fin dall'inizio.
Tuttavia, Reitwiessner ha affermato che gli sviluppatori possono proteggersi da problemi futuri (come quelli con Solidity) adottando alcune misure.
"La mia raccomandazione per tali contratti sarebbe di KEEP di breve durata, in modo che i potenziali effetti negativi siano ridotti, oppure di effettuare un'analisi formale appropriata del bytecode del contratto. Stiamo attualmente sviluppando strumenti per aiutare a farlo", ha affermato.
Contratti aggiornabili
Tuttavia, ci sono alcuni modi per aggirare questo problema.
Hudson Jameson, responsabile delle relazioni esterne della Fondazione Ethereum , ha descritto un modo per aggiornare i contratti intelligenti che potrebbe essere potenzialmente decentralizzato, sostenendo che aggiungere un modo per aggiornare il codice live è una necessità.
"L'opinione generale dei nostri sviluppatori è che in questa fase iniziale sia importante disporre di misure di sicurezza nel codice per disattivare o aggiornare in modo sicuro i contratti di grande valore", ha affermato.
Jameson ha descritto alcuni potenziali "sistemi di sicurezza" per i contratti intelligenti, grazie ai quali i proprietari possono aggiornare i propri contratti anche dopo che sono stati distribuiti su Ethereum, oppure i contratti intelligenti possono rilevare quando sta succedendo qualcosa di sospetto.
Ha detto che T devono necessariamente essere centralizzati o sotto il controllo di ONE proprietario. Ad esempio, potresti avere uno smart contract che pone un limite a quanto di un asset può essere prelevato in una volta.
"Quindi, se un aggressore tenta di prosciugare i fondi o un asset del contratto, può innescare una risposta decentralizzata, come il blocco dell'utente e la notifica ad altre persone che utilizzano il contratto che potrebbero dover prelevare i propri fondi", ha affermato.
Ha descritto anche altri metodi, tra cui il rilevamento degli hacker, gli interruttori di spegnimento e le transazioni multi-firma in cui più di ONE persona deve firmare una transazione prima che l'ether possa essere erogato.
In attesa
Anche gli smart contract su Ethereum Classic (il gruppo che si è separato da Ethereum a causa di un disaccordo ideologico) sono interessati dal bug poiché la sua blockchain si basa sullo stesso set di strumenti.
Ma secondo il suo principale organizzatore Arvicco, gli sviluppatori stanno esplorando un diverso modo a lungo termine di sviluppare un linguaggio di programmazione che sia più resistente ai bug.
"ONE dei possibili modi è quello di spostare lo sviluppo del linguaggio dei contratti intelligenti dal paradigma oggetto/procedurale a quello funzionale", ha affermato.
Qualunque sia la possibile soluzione, la discussione implica che gli sviluppatori Ethereum T dovrebbero aspettarsi che i loro contratti intelligenti funzionino senza conseguenze potenzialmente pericolose per il momento, il che potrebbe essere o meno del tutto evidente a coloro che hanno già distribuito il codice sulla rete.
Per quanto riguarda in particolare Solidity, un altro bug inarrestabile potrebbe potenzialmente colpire altri contratti intelligenti in futuro.
Reitwiessner ha osservato che è sempre possibile che un compilatore introduca un bug, ed è possibile che Solidity o Serpent (l'altro linguaggio per smart contract di Ethereum) abbiano altri difetti non scoperti.
Ha tuttavia osservato che in oltre due anni di sviluppo, questo è stato il primo bug grave riscontrato nel linguaggio degli smart contract.
Immagine di costruzionetramite Shutterstock
Alyssa Hertig
Giornalista tecnologica collaboratrice di CoinDesk, Alyssa Hertig è una programmatrice e giornalista specializzata in Bitcoin e Lightning Network. Nel corso degli anni, il suo lavoro è apparso anche su VICE, Mic e Reason. Attualmente sta scrivendo un libro che esplora i dettagli della governance Bitcoin . Alyssa possiede alcuni BTC.
