Funzionamento della blockchain

Completato

Ora che sono state presentate le nozioni di base sulla blockchain, se ne osserverà il funzionamento dietro le quinte. Queste informazioni possono essere utili per decidere se la blockchain è adatta per lo scenario.

In che modo vengono distribuiti i dati?

Questo scenario prevede più aziende. Nel caseificio potrebbe essere presente un database centralizzato. Tuttavia, nessuno dei partecipanti vuole essere l'autorità centrale. È possibile usare la blockchain come libro mastro distribuito. L'uso di una blockchain elimina la necessità di un'autorità centrale. Ogni partecipante con un nodo blockchain ha anche una copia del libro mastro, in modo che possa eseguire attività di controllo e integrazione con i propri sistemi. Tuttavia, il fatto di possedere il proprio nodo non è un requisito per le aziende. I nodi possono essere condivisi tra partner.

Ogni nodo è connesso ad altri nodi tramite una rete blockchain. Ad esempio, Dalia Pelayo Farms, l'azienda produttrice di gelati e le gelaterie hanno ognuna un nodo che gestiscono. Contoso West e Contoso East sono partner distinti che condividono la stessa società madre. Contoso ha un nodo. Non è necessaria una relazione uno-a-uno tra nodi e aziende.

Several participant blockchain nodes connected by a network.

Modifica dello stato

I dati in una blockchain rappresentano lo stato. Questo è il motivo per cui token digitali come le criptovalute sono adatti per la blockchain. Se si considera la proprietà della valuta fisica, una moneta può trovarsi solo nella tasca di una sola persona per volta. Il proprietario della tasca in cui si trova la moneta ha lo stato di proprietà. Se si dà la moneta a un amico, lo stato di proprietà passa all'amico che possiede ora la moneta. In questo scenario le spedizioni si spostano attraverso la catena di approvvigionamento. La responsabilità del prodotto deve essere trasferita. I dati più interessanti sono la parte responsabile, la temperatura e la conformità o meno del prodotto.

La blockchain usa transazioni per modificare lo stato dei dati da un valore a un altro. Ad esempio, è necessario verificare se il gelato è conservato sottozero. Durante una spedizione di gelati un sensore temperatura segnala periodicamente la temperatura. La temperatura segnalata è una transazione inviata a un nodo delle transazioni della blockchain.

Example transaction from an IoT temperature sensor. The transaction sets the temperature to -2° celsius in the ledger.

Nello scenario relativo ai gelati, quando una spedizione viene inviata attraverso la catena di approvvigionamento, viene inviata una transazione ogni volta che lo stato cambia. Ad esempio, la figura mostra le transazioni per una tipica spedizione allo stabilimento di produzione dei gelati. Ogni transazione modifica la parte responsabile o la temperatura. Lo stato corrente del libro mastro è costituito dalle transazioni applicate in ordine.

List of transactions in order that change the responsible party and temperature. The combination of transactions result in a ledger state based on the order of transaction changes.

Quando si invia una transazione, questa viene inviata a un nodo della transazione della blockchain. Si supponga che Dalia Pelayo Farms invii una spedizione di latte tramite Contoso West Shipping. Il sistema di spedizione di Dalia Pelayo Farm invia una transazione al nodo blockchain dell'azienda di spedizione. La transazione aggiorna la responsabilità della spedizione dal caseificio a Contoso West Shipping.

A transaction from the farmer being sent to the farmer's blockchain node.

La blockchain invia la transazione attraverso tutta la rete blockchain. Ogni nodo ottiene una copia della transazione.

A transaction being copied to all participant blockchain node peers.

Ogni nodo elabora la transazione, ma richiede comunque la convalida usando un meccanismo di consenso. Il consenso permette la coerenza e l'attendibilità per i libri mastri distribuiti.

Come confidare nella coerenza dei dati del libro mastro?

In una rete distribuita è difficile determinare cosa è vero, perché le modifiche ai dati devono essere eseguite in tutti i nodi. Che cosa succede se il nodo dello stabilimento di produzione dei gelati non riceve una transazione di spedizione? Come fa a sapere se il latte è stato spedito dal caseificio? Cosa accade se il camion refrigerato dell'azienda si guasta e il latte si deteriora? L'azienda di spedizione può modificare il proprio libro mastro per evitare la responsabilità?

La blockchain usa un meccanismo di consenso per convalidare e confermare i dati su tutti i nodi blockchain. Il consenso permette a tutti i nodi decentralizzati di passare allo stesso stato. Nel trasferire valore o responsabilità, l'ordine è importante. Ad esempio, se si trasferisce la proprietà di un'automobile a un amico, non è possibile trasferirne la proprietà anche a un collega di lavoro. Questo problema è noto come doppia spesa e può essere risolto dal consenso. Il consenso garantisce l'ordine corretto delle transazioni e l'integrità della blockchain. Come parte del consenso, un gruppo di transazioni viene convalidato come blocco e la rete deve concordare l'inserimento o meno del blocco nella blockchain.

Consensus mechanism agrees on validated transactions across nodes. Each blockchain node writes the latest validated block to the blockchain.

Sono disponibili diversi algoritmi di consenso per la blockchain, tra cui Proof of Work, Proof of Stake e Proof of Authority. Ogni algoritmo risolve la coerenza in modo diverso. In termini semplici, il consenso permette al libro mastro distribuito di raggiungere uno stato comune.

Che cos'è un blocco?

Un blocco è un cluster di dati all'interno della blockchain in cui sono archiviate le informazioni sulle transazioni. Il numero di transazioni in un blocco è in genere basato sul tempo. Ad esempio, la figura mostra un blocco contenente le transazioni che si sono verificate negli ultimi 10 minuti.

Example of several transactions representing a block. The order of transactions result in a given state.

Attraverso il consenso, i blocchi convalidati vengono aggiunti alla blockchain in ogni nodo. Poiché tutti i nodi hanno gli stessi blocchi nella catena, il libro mastro è coerente in tutta la rete. Di conseguenza, tutti i nodi contengono gli stessi dati convalidati in base a un ordine concordato.

Come confidare nell'immutabilità del libro mastro?

Si potrebbe pensare che quando si ha il controllo del libro mastro nel proprio nodo, sia possibile modificare solo i dati nella propria copia. Come può essere immutabile?

La blockchain usa un hash crittografico per creare un collegamento tra blocchi. Collegando i blocchi, l'ordine delle transazioni può essere concordato tramite l'algoritmo di consenso. Un hash crittografico è un algoritmo che esegue il mapping di dati di dimensioni arbitrarie a una rappresentazione di bit a dimensione fissa. È possibile considerarlo un'impronta digitale elettronica. Bitcoin usa l'algoritmo hash SHA-256. Se si usa una funzione hash SHA-256 in un documento di 100 pagine, l'output della funzione è un valore hash a 256 bit. Se si modifica un solo carattere nel documento e quindi è stato rigenerato l'hash, l'output è un valore hash a 256 bit diverso. A questo punto, si supponga di usare un blocco come input per la funzione hash. L'output è un valore hash univoco per i dati nel blocco.

A block is sent through a hash function and a cryptographic hash is generated.

La blockchain usa gli hash per rilevare se sono state apportate modifiche ai blocchi. Includendo il valore hash del blocco precedente durante la generazione dell'hash del blocco successivo, i blocchi vengono concatenati tramite hash.

A block includes the previous block's hash when generating it's hash. Including the previous hash links the blocks together.

La blockchain fornisce l'attendibilità usando hash per dimostrare che la cronologia dei dati non è stata modificata. Includendo l'hash del blocco precedente durante la creazione di un nuovo blocco, viene creata una catena non modificabile di transazioni in ordine.

Three blocks linked together by the previous block's hash

Se viene modificato uno dei blocchi nella catena, l'hash dei blocchi successivi è diverso. Di conseguenza, la convalida individua la discrepanza.

Logica attendibile

La blockchain permette di archiviare dati coerenti e che possono essere ritenuti attendibili. Come si aggiunge la logica per ottenere lo stesso scopo in ogni nodo?

In questo scenario è necessaria la logica per trasferire la responsabilità del prodotto da un partecipante a un altro. È anche necessario usare i dati del sensore temperatura IoT per determinare se la temperatura è troppo alta.

Un'applicazione decentralizzata (DApp) è un'applicazione in un sistema di calcolo distribuito. Questo modulo è incentrato sull'uso del protocollo di blockchain Ethereum. Le DAapp Ethereum sono note anche come contratti intelligenti. Un contratto intelligente contiene la logica eseguita come parte di una transazione. In Ethereum la logica viene programmata usando un linguaggio di programmazione denominato Solidity.

I contratti intelligenti vengono distribuiti nella blockchain e per farvi riferimento viene usato un indirizzo. Per usare un contratto intelligente, è necessario creare un'istanza. Un'istanza di contratto intelligente contiene i dati sullo stato e la logica del programma. In questo scenario un'istanza di contratto intelligente contiene dati come il partecipante responsabile, la località e l'indicazione riguardo alla conformità o meno della temperatura del prodotto. È possibile eseguire funzioni per trasferire la responsabilità o ricevere i dati di telemetria sulla temperatura per l'istanza.

Components of a smart contract include address, logic, and data.

Quando la responsabilità di un prodotto viene trasferita a un'altra parte, viene eseguita una transazione. La logica del contratto intelligente aggiorna i dati sullo stato. Nello scenario relativo ai gelati, il sistema di spedizione dello stabilimento di produzione crea un'istanza di contratto intelligente per una nuova spedizione di gelati. Il sistema di spedizione dello stabilimento invia una transazione che chiama la funzione TransferResponsibility per trasferire la responsabilità della spedizione a Contoso East Shipping. La rete blockchain invia la transazione a tutti i nodi. La logica del contratto intelligente viene eseguita in ogni nodo.

A smart contract transaction is sent to one node and copied to the other peer nodes.

Che cosa accade se durante la spedizione l'unità di refrigerazione si guasta e la temperatura dei gelati va sopra lo zero? Un sensore temperatura IoT monitora la temperatura dei gelati e invia periodicamente transazioni. Se la temperatura è sopra lo zero, la logica del contratto intelligente contrassegna la spedizione come non conforme.

A smart contract transaction executes logic to set the shipment to out of compliance due to the temperature. The transaction is copied and executed on other peer nodes.

Poiché la transazione è inclusa in una catena di blocchi, è presente un record non modificabile del momento in cui la spedizione è diventata non conforme. La gelateria può rifiutare la consegna ed evitare problemi di sicurezza alimentare.

Analogamente ai dati nella blockchain, un contratto intelligente non è modificabile. Una volta distribuita, la logica non può essere modificata. Di conseguenza, è possibile confidare nell'esecuzione della stessa logica del contratto intelligente in tutti i nodi. Tutte le modifiche al codice richiedono la distribuzione di un nuovo contratto intelligente in un nuovo indirizzo.