L’Empowerment della Certificazione CBA©: Valore e Vantaggi della Verificabilità sulla Blockchain

Daniele De Faveri
11 min readJan 16, 2024

--

Sono ora un Analista Blockchain Certificato dal @DECInstitute, vi racconto come la certificazione acquisisce ulteriore valore dalla sua verificabilità sulla blockchain Bitcoin

English Version Available HERE; Versione inglese dell’articolo disponibile qui.

La mia certificazione CBA©

TL;DR; La capacità di verificare la mia certificazione direttamente sulla blockchain di Bitcoin è una pietra miliare. Non solo rappresenta l’autenticità del mio traguardo, ma dimostra anche l’evoluzione delle certificazioni nell’era Web3. In questo articolo approfondisco l’importanza di tale verificabilità e gli step per verificare l’autenticità di un certificato come il CBA©

Nell’articolo vedremo come è tecnicamente possibile andare ad identificare la transazione Bitcoin e il legame con il certificato (troverete la procedura Javascript inclusa), anche se non nascondo fin da ora che il processo di verifica di dettaglio, quando sono voluto andare a collegare tutti i pezzi dal mio certificato alla transazione onchain e ritorno, è piuttosto ostico e non lineare e semplice come mi attendevo, richiedendo di utilizzare un po’ di codice javascript, cosa che invece è immediata nella verifica dal sito della pubblicazione della certificazione (anche se manca il link diretta alla transazione onchain e inserendo quindi un elemento di “fiducia” non desiderato).

Introduzione

Nell’era della trasparenza e dell’affidabilità, ottenere la certificazione CHARTERED BLOCKCHAIN ANALYST dal DEC Institute rappresenta il riconoscimento formale delle mie competenze nel campo delle tecnologie emergenti e delle transazioni digitali sicure. Oltre a esplorare rapidamente l’utilità e il significato personale di questa certificazione, ciò che realmente mi affascina e che vi voglio raccontare è la sua verificabilità sulla blockchain di Bitcoin e come si fa a verificare un certificato rilasciato sulla chain di Bitcoin.

Tale certificazione, infatti, sfrutta una delle potenzialità del web3 per dare maggiore facilità di verificabilità sia del certificato che dell’emettitore del certificato stesso, nonchè immutabilità e non falsificabilità.

Il CBA© del DEC Institute in breve

La certificazione CHARTERED BLOCKCHAIN ANALYST (CBA) del DEC Institute, un consorzio internazionale di istituti di istruzione superiore e operatori del settore blockchain, mira a certificare una serie di conoscenze e competenze approfondite nel campo della blockchain, del Web3 e delle tecnologie distribuite. Questo programma di certificazione è progettato per colmare il gap di professionisti professionisti capaci di comprendere, analizzare e implementare le tecnologie blockchain in vari settori, dal finanziario all’aziendale, dalla salute alla logistica e oltre.

L’obiettivo è di valutare i partecipanti sulle competenze necessarie per valutare, sviluppare e gestire applicazioni blockchain, promuovendo la comprensione di concetti avanzati come la crittografia, i contratti intelligenti, la sicurezza delle reti e le implicazioni legali e regolamentari delle tecnologie blockchain.

La particolarità della certificazione, infatti, è la copertura multidisciplinare dell’ambito dei registri distribuiti andando a verificare le conoscenze del candidato sia di tipo tecnologico, nonchè di Business ed Economia dando anche largo spazio alla componente Legale e Regolamentare, quest’ultima ancora particolarmente in cambiamento nel cercare la corretta caratterizzazione di queste nuove tecnologie.

Devo dire che la certificazione risulta tutt’altro che una formalità, il booklet di riferimento richiede svariati ambiti di approfondimento e studio obbligatori nonchè facoltativi e l’esame stesso risulta alquanto ostico nell’andare a verificare le peculiarità degli ambiti trattati.

Devo ammettere che anche per un professionista come me che da anni segue l’ambito blockchain principalmente da un punto di vista tecnico, l’esame richiede di approfondire in modo spinto tutti gli ambiti nonchè affrontare in modo serio ed approfondito le implicazioni di business e legali/regolamentari che si pongono davanti all’utilizzo dei registri distribuiti nei vari settori; l’esame risulta davvero complesso e richiede dedizione e preparazione approfondita.

Quello che mi ha lasciato particolarmente sorpreso è però l’argomento di questo articolo, ossia il fatto che una volta ottenuta la certificazione questa venga emessa per consentirne la verifica tramite la blockchain Bitcoin, andiamo dunque a vedere cosa questo voglia dire, che differenze ci siano rispetto ad altri token assimilabili emessi in abito web3 e quale sia il percorso per la verifica stessa della certificazione.

L’importanza della Verificabilità sulla Blockchain

L’importanza di poter verificare un certificato su una Blockchain, in particolare su una come Bitcoin, risulterà subito evidente a chi negli ultimi anni ha affrontato percorsi di certificazione sia tradizionali che in particolare sui sistemi MOOC che forniscono la possibilità di attestare le proprie competenze negli ambiti più diversi.

La blockchain, come registro distribuito e immutabile, consente a chiunque di accedere e verificare le informazioni registrate. Questo rende la verifica delle certificazioni un processo trasparente e accessibile al pubblico, eliminando la necessità di dipendere da terze parti per autenticare le qualifiche.

L’immutabilità della blockchain elimina il rischio di contraffazione o manipolazione delle informazioni. Le certificazioni immagazzinate sulla blockchain non possono essere modificate retroattivamente, garantendo l’integrità dei dati nel tempo. Ciò fornisce un livello di sicurezza e fiducia senza precedenti, essenziale in settori in cui l’attendibilità delle credenziali è cruciale.

Con l’evoluzione verso un mondo sempre più digitale, le certificazioni sulla blockchain si pongono come un’infrastruttura fondamentale per il futuro delle credenziali professionali. L’integrazione delle certificazioni nella blockchain apre la strada a soluzioni innovative e automatizzate per la gestione delle credenziali, consentendo la portabilità, l’aggiornamento in tempo reale e la convalida delle qualifiche in modo sicuro e affidabile.

Per salvaguardare la privacy nonché lo spazio nei blocchi della blockchain i servizi come quello utilizzato dal DEC Institute vanno a salvare un hash dei metadati del certificato sulla catena Bitcoin così che nessuna informazione personale o privata venga scritta sulla blockchain.

La verifica del mio certificato CBA©

Per qualunque ente che voglia verificare l’autenticità del mio certificato sarà quindi semplice procedere alla verifica dello stesso; dalla pagina del mio certificato QUI potrà visualizzare il certificato ed accedere alla sezione di verifica

Accesso alla verifica on chain del certificato

Qui troverà la possibilità di accedere ai dettagli della verifica; innanzitutto è subito visibile che la qualifica arriva da un ente erogatore verificato e che il certificato è coerente con l’hash di quando il certificato stesso è stato emesso.

Vediamo che è riportato il numero del blocco Bitcoin in cui è registrato l’hash del mio certificato; possiamo andare a verificare su un block explorer Bitcoin il blocco in oggetto:

il blocco Bitcoin 822997 dove è registrato l’hash del il mio certificato

Prima di tutto possiamo vedere che il blocco è stato minato il 26 Dicembre 2023 dal miner AntPool (una delle principali pool di mining su Bitcoin) e la transazione di registrazione dell’hash del certificato è insieme ad altre 4137 transazioni presenti nel blocco.

Non è però immediatamente identificabile quale sia la transazione associata, il servizio, infatti, come si legge nel post di dettaglio, utilizza un’altra blockchain per aggregare altre informazioni insieme e generare un merkle tree di queste informazioni per andare, quindi, a pubblicare nella transazione il solo merkle root (per approfondimenti ulteriori rimandiamo all’articolo di dettaglio del DEC Institute).

La complessità di verificare la transazione sulla blockchain Bitcoin

A questo punto mi sarei aspettato di poter effettivamente verificare che l’hash del mio certificato fosse visibile e collegato ad una transazione Bitcoin e la cosa fosse facilmente identificabile e leggibile (questo mi avrebbe convinto dell’effettiva registrazione del certificato a basso livello); come visto sopra la validazione della transazione fa effettivamente uso del servizio Accredible (dove viene salvata la certificazione) nonchè della chain/servizio chainpoint .

Brevemente, senza voler essere esaustivi e formali, il servizio chainpoint utilizza un merkle tree di vari certificati da registrare sulla blockchain (ricevuti da Accredible) e va a registrare il merkle root nella transazione Bitcoin, ritornando i valori della transazione Bitcoin per “collegare” il tutto.

Apparentemente ci aspetteremmo, quindi, di riuscire a verificare facilmente questo link tra certificato e blockchain, ma come vedremo è tutt’altro che semplice e questo mi genera non poche perplessità di cui discuterò nelle conclusioni.

Veniamo quindi al processo per la verifica del certificato in Bitcoin; come prima cosa dovremo andare a vedere il certificato in formato Json tramite le API di Accredible; per fare questo serve recuperare il codice associato al nostro certificato dall’URL del certificato:

il codice del mio certificato che dovremo usare nelle API

Il mio codice risulta essere:

db612f19–451d-48fe-b523–82ea7f95acd8

A questo punto dovremo andare ad interrogare le API di Accredible per vedere tecnicamente il Json del certicicato, interrogando la API con il nostro codice certificato:

https://api.accredible.com/v1/credentials/blockchain_data/db612f19-451d-48fe-b523-82ea7f95acd8

Estratto del Json della mia certificazione

Possiamo vedere che ritroviamo il riferimento al blocco Bitcoin in cui è registrata la transazione

Riferimento al blocco Bitcoin in cui è registrata la transazione

Il Json riporta i dettagli della certificazione e del certificatore e tutte le caratteristiche che vedevamo direttamente nella pagina del certificato, come la data di emissione, registrazione e scadenza, l’ente emettitore etc.

Il Json è composto essenzialmente da 2 sezioni:

  • credential_json_data: contiene i dettagli della certificazione che vengono inviati agli altri servizi per la registrazione in blockchain
  • receipt: è la ricevuta della registrazione in blockchain da parte del servizio di chainpoint al quale viene sottomesso il json del certificato

La documentazione di Accredible dice che del Json del certificato viene effettuato un hash (che assieme al certificato viene salvato nei loro archivi), ma non ho trovato in documentazione come e esattamente su quali dati venga effettuato questo hash; non sono quindi stato in grado di replicarlo; assumiamo che l’hash sia quello che si trova nella receipt, questo mi sembra ragionevole perché permetterebbe di collegare il certificato alla ricevuta, ma non sono riuscito a replicare questo passaggio).

Analizzando la componente di ricevuta del Json vediamo che ci sono alcune informazioni significative, come il blocco Bitcoin in cui è stato registrato, ma come detto sopra, non troviamo la transazione e dei codici di registrazione in Bitcoin ed il valore di ritorno.

Dobbiamo, quindi, sfruttare le librerie di chainpoint per estrarre queste informazioni prima di essere in grado di identificare la vera e propria transazione in Bitcoin.

Riporto come nota che questo passaggio è tutt’altro che esplicito e chiaro nelle documentazioni di Chainpoint e Accredible e che ha richiesto svariate ore di approfondimento e test per arrivare a creare il codice funzionante che documento qui; per ogni dettaglio suggerisco di aprire delle issue direttamente sul github di Chainpoint dove ho trovato già alcune issue documentate che mi hanno aiutato a trovare la soluzione che vi propongo.

Dovremo andare ad effettuare un parsing della ricevuta Json tramite le librerie javascript; estraiamo quindi dal Json solo la componente di ricevuta e la salviamo in un file Json, andremo quindi a farne il parse tramite il seguente codice:

const chainpointParse = require('chainpoint-parse')
const fs = require('fs')
const chpBinary = require('chainpoint-binary')

// Valid proof in JS Object, Buffer, Hex String, or Base64 String form
let jsonSample = fs.readFileSync('./receipt.chp.json', 'utf-8')
let chainpointProofObject = chpBinary.objectToBinarySync(JSON.parse(jsonSample))

try {
let result = chainpointParse.parse(chainpointProofObject)
console.log(JSON.stringify(result));
} catch (error) {
console.error(`An error has occurred: ${error.message}`)
}

Otteniamo il seguente Json di risposta che è l’elaborazione della prova per ottenere le componenti di dettaglio che ne fanno parte:

{
"branches" : [
{
"anchors" : [],
"branches" : [
{
"anchors" : [
{
"anchor_id" : "be5e19aa548870e720991e98259654eb677bbf608a391b179e197cacb95981f5",
"expected_value" : "d8bc635eb8182b016f442f70fa600dd269d91ad0be3d83b977f3b7224f75dafb",
"type" : "cal",
"uris" : [
"http://18.220.31.138/calendar/be5e19aa548870e720991e98259654eb677bbf608a391b179e197cacb95981f5/data"
]
}
],
"branches" : [
{
"anchors" : [
{
"anchor_id" : "822997",
"expected_value" : "20b5550c61bc77fb07dc90b7b219f291816eff70050dc2a156408490808ea51b",
"type" : "btc",
"uris" : [
"http://18.220.31.138/calendar/63ead386d83ed711b3bab8d645958879761be46aa9c5fa024177026541035e5f/data"
]
}
],
"btcTxId" : "a3b3d1dca2f9c012f8b32ab6efa30ad3144981f6c6cf66ce90f6f326c9ac2637",
"label" : "btc_anchor_branch",
"opReturnValue" : "1bfa44c6906a400d5063255c2b00bb42bd41c4226cfb161f290373817885c2c1",
"rawTx" : "01000000017917986240ff3b474b68f5526a290dd05d2ae4c7bf61365a0692f85f8df821220000000000ffffffff02155f54010000000016001419a775d1abdc6ee15ffffa84cecd49930b5cc5fd0000000000000000226a201bfa44c6906a400d5063255c2b00bb42bd41c4226cfb161f290373817885c2c100000000"
}
],
"label" : "cal_anchor_branch"
}
],
"label" : "aggregator"
}
],
"hash" : "c481e296fb8406293c6678ae393fa4bb18f09a44d96d512af4d11971ef270651",
"hash_received" : "2023-12-26T06:24:03Z",
"proof_id" : "01HJJCPT2SFMYG813WAVN4QZS8"
}

Vediamo che nel Json abbiamo due ancoraggi, uno a Bitcoin e uno a Calendar (la blockchain di Chainpoint); se guardiamo la sezione Bitcoin possiamo trovare l’esatta transazione Bitcoin che stiamo cercando:

“btcTxId” : “a3b3d1dca2f9c012f8b32ab6efa30ad3144981f6c6cf66ce90f6f326c9ac2637”

Questa transazione è visibile su un Bitcoin explorer:

la transazione di registrazione del nostro certificato

La transazione è contenuta effettivamente nel blocco 822997 che avevamo individuato prima; il campo expected_value che rappresenta il markle_root sottomesso non è immediatamente verificabile per la differente codifica tra chainpoint e Bitcoin (little endian vs big endian).

Anche questa cosa mi lascia da pensare, perchè, se non erro nell’interpretazione della documentazione, questo dovrebbe proprio essere il valore dell’hash del certificato che viene registrato in blockchain e ci permette di dire che il certificato stesso è quello registrato; oltrepassiamo questo punto confidando di poterlo approfondire e verificare in un secondo momento.

Troviamo però il campo opReturnValue che è il valore ritornato dal Bitcoin per la registrazione del merkle root:

“opReturnValue” : “1bfa44c6906a400d5063255c2b00bb42bd41c4226cfb161f290373817885c2c1”,

Questo è il valore di ritorno che riusciamo a ritrovare nella transazione Bitcoin e nella ricevuta collegata al certificato, che permette di verificare l’effettiva registrazione della certificazione su Bitcoin:

Abbiamo quindi verificato, con non poche difficoltà, che la transazione è presente in Bitcoin e che fa riferimento all’hash del nostro certificato; per verificare l’autenticità della transazione avremmo anche potuto direttamente utilizzare le librerie per verificare la prova, ma questo ci avrebbe comunque limitato nella visibilità sui reali dati blockchain.

Conclusioni

In conclusione rinnovo la mia soddisfazione per aver conseguito la certificazione CBA©, un riconoscimento che abbiamo verificato essere immutabilmente registrato sulla blockchain Bitcoin, garantendo così la sua autenticità e certificazione inalterabile nel tempo.

Tuttavia, il processo di verifica, per coloro che desiderano andare oltre la semplice conferma attraverso l’interfaccia grafica di Accredible, si presenta come un’impresa ostica. Non solo dal punto di vista tecnico, ma anche in termini di effettiva tracciabilità nella blockchain. A mio avviso, questa difficoltà limita ancora l’adozione piena delle certificazioni on-chain. La verifica dovrebbe consentire un’analisi immediata on-chain senza dover riporre la fiducia in elementi intermedi della catena di certificazione, riducendo la necessità di affidarsi completamente alla fiducia (trustless).

Esistono alternative come i POAP, gli NFT o le inscription per registrare certificati on-chain, ciascuna con i propri vantaggi e criticità, intendo esplorare ulteriormente questi tipi di certificati in un futuro articolo dedicato.

Rimango quindi felice di aver raggiunto questa certificazione, di aver potuto verificarne la validità in Bitcoin, ma rimane la perplessità di un percorso di verifica di dettaglio manuale piuttosto ostico e non trasparente in tutte le sue componenti dovuto a una tecnologia che ancora deve raggiungere il suo completo sviluppo; questo nulla toglie però all’apprezzamento dei servizi che sono stati implementati finora e alla volontà del DEC Institute di fornire una certificazione che sia scritta e verificabile su Bitcoin.

--

--

Daniele De Faveri

Explorer of Web3's Transformative Realm, Data Strategist and Chartered Blockchain Analyst