← Tutte le competenze

07

Blockchain

Registri verificabili e token, quando servono davvero

Serve a poche aziende, e va detto: nella maggior parte dei casi un database fatto bene risolve lo stesso problema costando molto meno. Quando invece serve davvero un registro che nessuno può riscrivere, il lavoro cambia natura.

Prima del rilascio
  1. Modello delle minacceAttori, confini di fiducia e dove si muovono i fondi
  2. TestLe proprietà che non devono mai rompersi, scritte come regole
  3. Analisi automaticaGli errori noti, cercati su tutti i contratti a ogni modifica
  4. Sequenze casualiMigliaia di combinazioni che nessuno scriverebbe a mano
  5. Verifica matematicaLa regola dimostrata per tutti i valori possibili, non solo per quelli provati
  6. Audit esternoObbligatorio prima della produzione: il codice vale soldi veri

Il codice vale soldi, quindi si dimostra

Test come base, poi analisi automatica su tutti i contratti, prove con migliaia di sequenze casuali sulle proprietà che non devono mai rompersi, e verifica matematica sulle regole critiche.

Sono strumenti che trovano cose diverse: l’analisi automatica riconosce gli errori noti, le sequenze casuali trovano combinazioni che nessuno avrebbe scritto a mano, la verifica matematica dimostra che una regola vale per tutti i valori possibili e non solo per quelli provati.

Aggiornabile ma non arbitrario

I contratti che devono poter evolvere passano da un ritardo obbligatorio prima di ogni modifica: chi tiene i fondi ha il tempo di vedere cosa sta per cambiare e di uscire. Quelli che non devono cambiare restano immutabili e senza poteri speciali.

Sui prelievi valgono limiti espliciti, e chi ha diritto a qualcosa se la ritira invece di riceverla: così un destinatario che si comporta male non blocca tutti gli altri.

Una catena è anche infrastruttura

Dietro una rete ci sono processi che devono restare in piedi: chi ordina le transazioni, il nodo pubblico, il componente che pubblica i dati sulla catena sottostante, l’esploratore e il monitoraggio. È lavoro di sistemi tanto quanto di contratti.

Prima domanda: vi serve davvero?

Nella maggior parte dei casi la risposta è no, e conviene sentirselo dire da chi la costruisce. Un database ben fatto, con registro delle modifiche in sola aggiunta e backup verificati, risolve il novantacinque per cento dei problemi di tracciabilità a una frazione del costo e senza legarvi a un ecosistema in movimento.

Serve davvero quando il registro deve essere verificabile da soggetti che non si fidano l’uno dell’altro e nessuno di loro può essere il custode: consorzi, filiere con più attori, strumenti che rappresentano valore trasferibile. Se le parti si fidano di voi, non serve.

Quando la risposta è no ve lo diciamo, e proponiamo la strada più economica. È l’unico modo in cui la risposta contraria, quando arriva, vale qualcosa.

Il costo che nessuno mette a preventivo

Non è lo sviluppo dei contratti: è la verifica. Su un progetto serio la parte di prove, analisi e dimostrazione formale pesa quanto la scrittura, a volte di più. È la ragione per cui i preventivi bassi in questo campo sono un segnale, non un affare.

C’è poi il costo dell’audit esterno, che va messo a bilancio dall’inizio: nessuna organizzazione seria mette in produzione contratti che gestiscono valore senza una revisione indipendente. E c’è la manutenzione, perché anche una catena cambia: aggiornamenti del protocollo, versioni dei nodi, dipendenze da rivedere.

Cosa resta fuori dalla catena

Quasi tutto. Sulla catena vanno le poche cose che devono essere verificabili da tutti e non modificabili da nessuno: la prova che un evento è accaduto, il trasferimento di un diritto, il saldo di uno strumento. Tutto il resto — anagrafiche, documenti, dati personali — resta fuori, in sistemi normali.

È anche un obbligo pratico prima che una scelta di stile: un dato personale scritto su una catena pubblica non si cancella più, e questo entra in rotta di collisione con il diritto alla cancellazione. Il modo corretto è tenere fuori il dato e metterci al più un’impronta che permette di verificarlo senza rivelarlo.

Con cosa lavoriamo, e come lo verifichiamo

In questo campo lo stack conta meno della pipeline di verifica: sono strumenti che trovano cose diverse, e servono tutti.

  • Contratti

    • Solidity
    • OpenZeppelin
    • proxy aggiornabili
    • ritardo obbligatorio sulle modifiche

    Si parte da librerie usate e riviste da migliaia di progetti invece di riscrivere primitive delicate. Quello che deve poter evolvere passa da un ritardo dichiarato prima di ogni modifica; quello che non deve cambiare resta immutabile e senza poteri speciali.

  • Prove

    • Hardhat
    • Foundry
    • copertura del codice
    • scenari di attacco

    Le prove non verificano solo che funzioni: verificano che non funzioni quando non deve. Buona parte dei casi scritti riproduce tentativi di abuso, non usi corretti.

  • Verifica

    • Halmos
    • Certora
    • Echidna
    • Slither
    • Mythril

    Strumenti che trovano cose diverse: l’analisi automatica riconosce gli errori noti, le sequenze casuali trovano combinazioni che nessuno scriverebbe a mano, la dimostrazione formale prova che una regola vale per tutti i valori possibili e non solo per quelli provati.

  • Rete

    • Arbitrum Nitro
    • nodo pubblico
    • esploratore
    • monitoraggio
    • Docker

    Dietro una catena ci sono processi che devono restare in piedi come qualsiasi altro sistema: chi ordina le transazioni, il nodo che risponde alle interrogazioni, il componente che pubblica i dati sul livello sottostante. È lavoro di sistemi tanto quanto di contratti.

Portfolio

Cosa abbiamo fatto, progetto per progetto, su questa competenza.

Manora

Rete Layer 2 con moneta di gas propria

  • Sette contratti su base OpenZeppelin: moneta a offerta fissa immutabile, wrapper, rimborso dei costi di pubblicazione, distribuzione con maturazione progressiva, tesoreria con prelievi ritardati e tetto giornaliero, staking a cinque livelli con sconti sulle commissioni dal 10% al 70%.
  • Base comune aggiornabile con ritardo obbligatorio di 48 ore su ogni modifica, controllo dei ruoli e blocco d’emergenza.
  • 487 test automatici con copertura al 99,4% delle istruzioni; verifica matematica su 27 proprietà di 29 e su 50 regole di 51, sequenze casuali sulle invarianti dello staking, analisi automatica senza veri positivi.
  • Rete su Arbitrum Nitro con moneta di gas personalizzata e identificativi distinti fra sviluppo e produzione per la protezione dai replay.
  • Rilascio in fasi con manifesto e controlli successivi, più un pacchetto di tredici documenti per gli auditor esterni.
  • Solidity
  • OpenZeppelin
  • Hardhat
  • Foundry
  • Docker
  • Arbitrum Nitro

Ti serve questo?

Raccontaci il problema e vi diciamo come lo affronteremmo — e se non è il caso di farlo, ve lo diciamo lo stesso.

Parliamone