Capire come funziona blockchain, con PHP e JSON

Ispirato da questo articolo decido di sperimentare un po' con l'idea di BlockChain e di implementarne una, anche se ridotta all'essenziale.

Cos'è una BlockChain

Questa la definizione di BlockChain di wikipedia

La blockchain è una struttura dati che consiste in elenchi crescenti di record, denominati "blocchi", collegati tra loro in modo sicuro utilizzando la crittografia. Ogni blocco contiene un hash crittografico del blocco precedente, un timestamp e dati di transazione. Poiché ogni blocco contiene informazioni sul blocco precedente, questi formano effettivamente una catena con ogni blocco aggiuntivo che si collega a quelli precedenti. Di conseguenza, le transazioni blockchain sono irreversibili in quanto, una volta registrate, i dati in un determinato blocco non possono essere modificati retroattivamente senza alterare tutti i blocchi successivi. wikipedia

Le blockchain commerciali sono distribuite, cioè i dati sono replicati in più nodi in rete e sincronizzate continuamente, cosa che porta a numerose complessità che non approfondirò ora.

Questo è il formato dati del file di "registro"(ledger) che userò nel programma di test, una lista di array associativi serializzate in JSON: [ { "content": "test data 1", "time": "2023-02-21 18:49:25", "check": "dc88cc549ed5fcb452fa9591dd32777602cc1007705a248c29cbb2be5d982b37" }, { "content": "test data 2", "time": "2023-02-21 18:49:28", "check": "6e2792b619ae1e6b02a4e9b2cf50b3716eafc9243ec9bf41a4e10a7f22e8566c" }, ]

Questo il mio programma di test(CLI) che ho salvato in un file "MiniChain.php":

Si esegue da terminale con:

php MiniChain.php <azione> <file_ledger.json>

Come si usa e cosa può fare

verificare una blockchain nel formato specifico di questo esperimento, cioè stabilere se i dati non sono stati alterati

php MiniChain.php verify ./test.json
BlockChain is valid

aggiungere una entry alla struttura dati

php MiniChain.php add ./test.json
Content to add: sssdddfff
data added

A cosa serve?

Le caratteristiche che accomunano i sistemi sviluppati con le tecnologie della blockchain e dei registri distribuiti sono: digitalizzazione dei dati, decentralizzazione, disintermediazione, tracciabilità dei trasferimenti, trasparenza/verificabilità, immutabilità del registro e programmabilità dei trasferimenti. Grazie a tali caratteristiche, la blockchain è considerata pertanto un'alternativa in termini di sicurezza, affidabilità, trasparenza e costi alle banche dati e ai registri gestiti in maniera centralizzata da autorità riconosciute e regolamentate (pubbliche amministrazioni, banche, assicurazioni, intermediari di pagamento, ecc.). wikipedia

La crittografia assicura che i dati(sezione content e time) di questo file non siano alterabili senza lasciare traccia. Questa proprietà rende il "registro" potenzialmente molto utile: perché soggetti interessati a scambiarsi assets o servizi possono fidarsi dei dati registrati senza dover ricorrere, quindi retribuire, a una autorità garante terza.

L'applicazione di blockchain può dare luogo a modelli di business nuovi e competitivi, non possibili con le modalità tradizionali.


Tags:
PHP BlockChain

Blog Disclaimer:

Le opinioni espresse nel mio blog sono solo questo: mie opinioni.

In nessun modo rappresento le opinioni dei miei clienti in questa sede.