Cosa sono gli smart contract

I contratti intelligenti sono programmi eseguibili, spesso costruiti in linguaggi di programmazione informatica di alto livello, per esprimere una logica commerciale arbitraria o criteri predefiniti per attivare il trasferimento di valore.

Ethereum è stata la prima Blockchain a consentire la creazione di contratti intelligenti, inaugurando un’era di rapida innovazione per affrontare alcune delle sfide più difficili nella tecnologia e nella società.

I nodi della blockchain eseguono contratti intelligenti come conseguenza dell’elaborazione delle transazioni effettuate dall’utente: la transazione blockchain ha dunque una funzione smart contract di destinazione definita, un payload contenente i valori di input della chiamata di funzione, sempre digitalmente firmata da chi la presenta.

A sua volta, una transazione può essere pubblicata a qualsiasi nodo della rete blockchain, che la trasmette a tutta la rete, garantendo che tutti i nodi siano in grado di vederla.

Ad un certo punto, ogni nodo elabora la transazione usando il software eseguibile nello smart contract di destinazione. Se la transazione ha successo, lo stato interno della blockchain viene cambiato. Uno smart contract può anche rifiutare la transazione come non riuscita se l’input è ritenuto non valido: in questo caso, lo stato non viene modificato.

Un quorum di nodi della blockchain deve eseguire i contratti intelligenti in modo indipendente. Le blockchain, al contrario dei database tradizionali, sono infatti decentralizzate. Dunque, ogni nodo della rete considera che gli altri sono possibilmente malevoli e non si “fida” mai degli stati mantenuti da altri nodi della rete. Di contro, ogni nodo mantiene il suo database di stati elaborando transazioni con un codice di contratto intelligente.

Ma come fa il metodo di esecuzione separato di ogni nodo a garantire che tutti i nodi finiscano nello stesso stato?

È relativamente semplice: tutti i nodi devono avere lo stesso stato iniziale, valori di input e logica di esecuzione. Lo stato finale sarà pertanto identico solo se tutti e tre i pezzi sono identici.

La Blockchain, con hash collegati che riflettono l’intera lista di transazioni (valori di input) e stati attuali (stato iniziale), è cruciale per creare consenso tra i nodi blockchain.

Infine, diversi protocolli blockchain usano vari approcci per assicurare che lo stesso codice smart contract venga eseguito per convalidare la transazione.

In Ethereum, il codice dello smart contract viene immediatamente conservato on-chain. In altri casi il codice del contratto viene conservato off-chain, come nel caso di Hyperledger Fabric e Corda, altre due tecnologie Blockchain per scopri commerciali.

Ciò premesso, quasi tutti i protocolli blockchain sono costruiti su un paradigma concettuale di trasferimento di stato. Ogni contratto intelligente sostiene il proprio set di stati. Tranne che per i puri trasferimenti di valore che non richiedono smart contract, la maggior parte delle transazioni caricate su una blockchain hanno come target uno smart contract.

Quando una transazione viene completata, lo stato dello smart contract di destinazione viene aggiornato. Uno smart contract può a sua volta chiamare in causa un altro smart contract per interrogare o aggiornare lo stato del contratto a valle.

Se le cose sopra esposte dovrebbero essere ancora troppo difficili da digerire, prova a pensare agli smart contract come a funzioni di programma:

  • input,
  • logica per elaborare gli input,

A sua volta, l’esecuzione di un contratto intelligente si traduce spesso in stati aggiornati. La logica contenuta negli smart contract determina se una transazione è legittima o meno.

Esempi di una transazione errata possono includere la mancata operatività sul giusto livello dello stato iniziale, mentre solo le transazioni legittime causano l’aggiornamento degli stati.

A seconda del design della blockchain, inoltre, le transazioni non valide vengono respinte dalla rete e non incluse nella blockchain oppure incluse ma segnate come non riuscite.

I contratti intelligenti possono anche pubblicare eventi per tenere informato il mondo esterno. Quando il blocco contenente la transazione viene impegnato nella blockchain del nodo, ad essere avvisati potrebbero essere anche eventi esterni.

Per esempio, uno smart contract potrebbe avere più di una funzione pubblica che una transazione potrebbe invocare. Ogni funzione può aggiornare lo stato o semplicemente restituire lo stato più recente. Se lo stato deve essere cambiato, deve essere pertanto fatto come parte di una transazione e passare attraverso l’intero ciclo della transazione.

A causa della natura decentralizzata dell’architettura blockchain, le transazioni devono essere gestite tramite un meccanismo di consenso per garantire che tutte le copie conservate dai nodi partecipanti della rete blockchain abbiano record identici. Ma d’altra parte, interrogare lo stato più recente senza aggiornarlo può essere realizzato molto più rapidamente e coinvolge solo un singolo nodo della rete. Qualsiasi nodo con lo smart contract caricato localmente può fare una query e restituire il risultato leggendo dal database di stato tenuto localmente.

Leave a Reply

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

Chiudi