Polygon, precedentemente conosciuto come Matic Network, è una soluzione di scaling di livello 2 per Ethereum che mira a fornire transazioni più veloci e meno costose per le applicazioni decentralizzate. Polygon ha annunciato di recente una nuova funzionalità che consente agli sviluppatori di creare contratti intelligenti aggiornabili sulla sua piattaforma.
I contratti intelligenti sono accordi autoeseguibili che funzionano sulla blockchain e applicano le regole di una transazione senza intermediari. Tuttavia, i contratti intelligenti sono anche immutabili, il che significa che una volta distribuiti non possono essere modificati o aggiornati. Questo rappresenta una sfida per gli sviluppatori che desiderano correggere bug, aggiungere nuove funzionalità o migliorare le prestazioni dei loro contratti intelligenti.
La soluzione di Polygon consiste nell’abilitare contratti intelligenti aggiornabili utilizzando un pattern proxy. Il pattern proxy è un pattern di progettazione che crea un oggetto segnaposto che funge da intermediario tra l’utente e il contratto intelligente effettivo. L’oggetto proxy può delegare chiamate al contratto intelligente effettivo o a un diverso contratto intelligente se quello originale viene aggiornato.
In questo modo, gli sviluppatori possono distribuire nuove versioni dei loro contratti intelligenti senza influire sugli utenti esistenti o perdere il loro stato e dati. Polygon sostiene che questa funzionalità migliorerà la sicurezza, la scalabilità e l’usabilità della sua piattaforma e consentirà una maggiore innovazione e sperimentazione nello spazio decentralizzato.
Come si confronta la soluzione di Polygon con altre soluzioni per contratti intelligenti aggiornabili? Ci sono diverse approcci per la creazione di contratti intelligenti aggiornabili, ognuno con i propri vantaggi e svantaggi. Alcuni dei più comuni sono:
- Archiviazione eterna: questo approccio separa la logica e i dati di un contratto intelligente in due contratti diversi. Il contratto logico può essere aggiornato puntando a un nuovo indirizzo, mentre il contratto dati rimane invariato e conserva lo stato e i dati del contratto intelligente. Questo approccio preserva l’integrità dei dati e la sicurezza, ma aumenta anche i costi del gas e la complessità dell’interazione con contratti multipli.
- Delegatecall: questo approccio utilizza un opcode a basso livello chiamato delegatecall per delegare chiamate da un contratto a un altro. L’opcode delegatecall consente a un contratto di eseguire il codice di un altro contratto preservando il proprio contesto e stato. In questo modo, un contratto può fungere da proxy e delegare chiamate a un contratto aggiornato senza cambiare il proprio indirizzo o stato. Questo approccio riduce i costi del gas e la complessità, ma introduce anche rischi di sicurezza e potenziali bug a causa della natura a basso livello di delegatecall.
- Archiviazione non strutturata: questo approccio utilizza un trucco intelligente per archiviare l’indirizzo di un contratto aggiornato in una posizione specifica nella memoria di un contratto proxy. Il contratto proxy utilizza quindi il codice assembly per caricare l’indirizzo dalla memoria e delegare chiamate ad esso utilizzando delegatecall. In questo modo, un contratto può fungere da proxy e delegare chiamate a un contratto aggiornato senza cambiare il proprio indirizzo o stato. Questo approccio riduce i costi del gas e la complessità, ma introduce anche rischi di sicurezza e potenziali bug a causa della natura a basso livello di delegatecall e assembly.
La soluzione di Polygon utilizza un pattern proxy che sfrutta delegatecall e archiviazione non strutturata per creare contratti intelligenti aggiornabili. Polygon afferma che la sua soluzione è più sicura, scalabile e utilizzabile rispetto ad altre soluzioni perché fornisce:
- Un’interfaccia standardizzata per la creazione e la gestione di contratti intelligenti aggiornabili
- Un meccanismo trasparente per l’aggiornamento di contratti intelligenti senza influire sugli utenti o sui dati
- Un’architettura modulare che consente agli sviluppatori di scegliere diverse strategie di aggiornamento e modelli di governance
- Un set completo di strumenti e librerie per lo sviluppo e il test di contratti intelligenti aggiornabili
La funzionalità di contratti intelligenti aggiornabili di Polygon è attualmente in versione beta e disponibile per il test sulla rete di prova di Mumbai. Polygon ha in programma di lanciarlo presto sulla sua mainnet e fornire ulteriori documentazione e tutorial per gli sviluppatori che desiderano utilizzarlo.