Compound Finance ha lanciato mercoledì l’aggiornamento Proposal #62 per implementare “Dynamic COMP reward distribution” e riparare un certo numero di bug minori.
Eppure, poco dopo il lancio dell’upgrade, Compound Labs ha documentato un’attività insolita che ha permesso ad alcuni utenti di riscattare più token $COMP di quelli realmente disponibili.
Controllando attentamente il contratto, l’auditor dello smart contract Kurt Barry ha detto che il bug è stato causato dal più infinitesimale degli errori. Ga aggiunto che questo piccolo difetto è costato a Compound Labs decine di milioni.
Solidity è il linguaggio di programmazione su Ethereum di tipo object-orientated, significa che organizza il design intorno agli oggetti e ai dati. Al contrario di come fanno i linguaggi basati su funzione e logica.
Ha alcuni punti in comune con C e C++ quindi è piuttosto semplice da imparare. Fato che un certo numero di programmatori si trova già a proprio agio con C e C++, la transizione verso Solidity non richiede molto sforzo.
Eppure questo approccio di tipo imperativo comporta rischi per i programmatori che devono scrivere il codice in modo che sia ben chiaro cosa fare durante ogni passaggio, anche una minima omissione lascia lo smart contract esposto a vulnerabilità.
In questo caso, l’indagine di Barry ha evidenziato che l’errore nella Proposal #62 di Compound dipendeva dalla mancanza del simbolo “=” in due posizioni.
I critici hanno evidenziato che la fase di audit e test di Compound avrebbe dovuto essere più accurata. Di fatto questo è un altro esempio del tipo di criticità che caratterizza Solidity, che appare ancora più evidente quando in ballo ci sono rischi di perdite milionarie.