Read this article in the English version here.
Il recente hack di Bancor ha rinvigorito la conversazione su come sono gli smart contract e le DAPP decentralizzate.
Jackson Palmer – il creatore di Dogecoin – sottolinea su Twitter, Bancor ha programmato lo smart contract in modo da permettere al team di congelare tutti i fondi con un “kill switch centrale” e aggiornare il contratto intelligente.
Quindi, mentre l’infrastruttura che ospita l’app – la blockchain di Ethereum – era decentralizzata, la quantità di autorità centrale coinvolta rende centralizzato il DAPP.
The key thing here is not the hack itself – it's the fact the Bancor team had the ability to freeze funds. How many other "decentralized" DApps have a built-in kill switch that's centrally controlled? https://t.co/3XtULafGRD
— Jackson Palmer (@ummjackson) July 9, 2018
Questa è una cosa molto importante da tenere a mente perché riduce sostanzialmente l’affidabilità e la sicurezza del sistema. Devi fidarti di Bancor per non congelare i tuoi token, e questo potrebbe essere accettabile per la maggior parte delle persone.
Ma dal punto di vista della sicurezza le conseguenze di tale decisione progettuale sono peggio. Un tale sistema richiede che venga violato un solo account per compromettere l’intero DAPP. Questo è un problema serio non solo per Bancor ma anche per molti altri DAPP.
Il codice non è legge
Dopo l’attacco del DAO nel 2016, ora si presume che la regola del “Codice è Legge” sia piuttosto impossibile, specialmente su Ethereum e su altre blockchain che gestiscono molta complessità sullo strato zero.
Ma questo non è necessariamente una brutta cosa, se usata correttamente. Se uno smart contract può essere disattivato per evitare attacchi e furti di hacker, cosa c’è che non va?
Se c’è una vulnerabilità, qualcuno ha bisogno di risolverlo, a qualsiasi costo. Certo, solo per uno scopo principale.
DApp centralizzate
Dopo aver criticato il design di Bancor, Palmer ha iniziato a esaminare altri progetti per scoprire quanto sia comune la presenza di tale autorità centralizzata tra le DAPP.
Sembra che anche Kyber Network possa disabilitare la rete e aggiornare anche lo smart contract.
Tale progettazione potrebbe causare conseguenze simili a quelle subite da Bancor nel caso in cui l’account del proprietario venga violato.
Anche Enigma ha la possibilità di sospendere tutti i trasferimenti di token a piacimento.
A volte la centralizzazione è giustificata
Un’altra scelta progettuale che è stata messa in dubbio da Palmer è la capacità del proprietario del contratto di MakerDAO di coniare nuovi token MKR.
Correct me if I'm wrong, but does this code not allow the owner of the MakerDAO contract to mint new coins? Source: https://t.co/hqcawp4qfU pic.twitter.com/TJ3UsrFFVn
— Jackson Palmer (@ummjackson) July 9, 2018
Ma è necessario sottolineare che il contratto è di proprietà di un altro contratto intelligente, così da capire chi ha la possibilità di creare nuovi token (o se ciò è possibile a tutti) avremmo bisogno di analizzare anche l’altro contratto. Un’altra cosa da tenere a mente è che MakerDAO ha effettivamente bisogno della possibilità di coniare nuovi token MKR come collateral DAI, quindi questa capacità è completamente giustificata in questo caso.
Palmer ha anche scritto contro Augur, ma – dal momento che il mercato delle previsioni è ora in diretta – le cose sono cambiate. Mentre il team potrebbe cambiare tutto ciò che riguarda il contratto intelligente ERC20 prima della migrazione REP, da ora in poi, non lo faranno più.
Bilancio
Molte DAPP hanno un’autorità centralizzata integrata nella loro architettura e questo non è necessariamente sempre negativo. Come abbiamo visto, nel caso di MakerDAO era in realtà inevitabile. Molti progetti in realtà iniziano con un alto grado di controllo centrale, ma hanno in programma di aggiornare il contratto in un modo che risolva questo problema una volta terminato lo sviluppo.
L’impossibilità di aggiornare un contratto può rivelarsi più costoso di una certa quantità di centralizzazione, che deve essere rimossa, nel caso in cui un bug venga scoperto in uno smart contract attivo.