Lo smart contract non si tratta, come sembra dire il nome, di un vero e proprio contratto intelligente, ma di un programma informatico.
Summary
Proprietà e caratteristiche di uno smart contract
A differenza dei tradizionali programmi informatici, non viene eseguito dal dispositivo dell’utente che lo lancia, ma da una rete decentralizzata.
Bitcoin, ovvero la prima rete decentralizzata non consente la creazione e l’esecuzione di smart contract complessi, quindi comunemente non è considerata una rete di smart contract.
Ethereum invece, è la rete decentralizzata considerata per eccellenza in quanto è una blockchain programmabile. In tal senso, la rete Ethereum funziona come un enorme computer mondiale distribuito su migliaia di nodi, ognuno dei quali è in grado di eseguire alla lettera e sempre nello stesso identico modo le istruzioni contenute in uno smart contract.
A dire il vero esistono anche molte altre reti in gradi di farlo, tra cui BNB Chain, Solana, Terra, Cardano, e anche Lightning Network basato a sua volta su Bitcoin.
Il principio è lo stesso per tutte. Si confeziona lo smart contract scrivendo le necessarie righe di codice di programmazione che contengono le istruzioni da eseguire, e poi lo si carica sulla blockchain in modo che i nodi possano eseguire quelle istruzioni.
Per farle eseguire è sufficiente eseguire una transazione da o verso l’indirizzo dello smart contract.
Visto che si tratta di reti decentralizzate, completamente o parzialmente, si ha pressoché la certezza assoluta non solo che quel codice venga eseguito, ma anche che faccia solo ed esattamente ciò che viene scritto nelle istruzioni inserite nello smart contract. Per questo motivo è stato chiamato “contratto” anche se tecnicamente non lo è. Il termine “intelligente” invece, si riferisce al fatto che viene eseguito da una rete informatica.
A cosa servono
Ad esempio con gli smart contract si possono creare exchange decentralizzati, app decentralizzate, e qualsiasi altro programma che sia eseguibile utilizzando il codice supportato dalle singole reti.
In questo modo tali programmi sfruttano la sicurezza, l’affidabilità e l’accessibilità delle varie blockchain, garantendo funzionalità peer-to-peer libere e non censurabili. Proprio il fatto di non richiedere necessariamente l’intervento o la gestione di un intermediario li rende estremamente potenti, anche se a volte in passato è capitato che, soprattutto a causa di errori più o meno involontari, non abbiano funzionato come ci si aspettava.
Un’altra caratteristica peculiare è che, le reti essendo pubbliche, anche i codici degli smart contract lo sono. Chiunque può esaminarli per capire esattamente come funzionano, e ciò significa che anche gli hacker possono farlo alla ricerca di punti deboli da sfruttare per attacchi informatici.
Oltretutto uno smart contract una volta caricato su una blockchain decentralizzata non può essere modificato nemmeno dai suoi autori, quindi si ha pressoché la certezza assoluta che farà sempre ciò per cui è stato progettato. Tuttavia è sempre possibile caricarne altri, da usare in sostituzione oppure in aggiunta a quelli vecchi.
Utilizzando ad esempio uno smart contract per creare un DEX, gli utenti potranno scambiarsi token tra di loro senza dover passare o fare affidamento su alcun intermediario, in modo totalmente libero ed anonimo.
Anche le stablecoin si basano su smart contract, rendendo quindi privo di limiti o censure il loro utilizzo all’interno della rete decentralizzata su cui lo smart contract è stato creato.
Da notare che spesso in questi specifici casi vengono creati più smart contract su diverse blockchain in modo da rendere questi token utilizzabili su diverse reti.
La natura opensource e permissionless delle blockchain decentralizzate fa sì che assolutamente chiunque possa creare e pubblicare uno smart contract. Ovviamente però questo non significa che verrà sicuramente utilizzato da qualcuno, anche perché su ogni transazione ci saranno comunque da pagare delle fee.
Gli smart contract all’interno di diverse blockchain
Il linguaggio di programmazione più utilizzato è Solidity su Ethereum, ma diverse reti supportano diversi linguaggi.
Esistono tuttavia degli smart contract che seguono logiche leggermente differenti. Sono quelli che vengono caricati su reti non realmente decentralizzate, anche se tendenzialmente questi non vengono considerati a tutti gli effetti smart contract.
Infatti su una rete non decentralizzata vengono a mancare alcune caratteristiche di base degli smart contract, come il fatto di essere trustless, permissionless ed incensurabili. Spesso però viene utilizzato il termine “smart contract” anche in questi casi, sebbene in modo decisamente improprio.