Tutte le competenze

09

Blockchain e Web3

Su una catena il codice non si corregge con una patch: quello che è scritto è quello che vale, e vale soldi veri. Per questo qui la parte più lunga del lavoro non è scrivere i contratti, è dimostrare che fanno solo quello che devono.

Il codice è denaro, quindi si dimostra

Test unitari come base, poi analisi statica su tutti i contratti, fuzzing sulle invarianti (proprietà che non devono mai rompersi, provate con migliaia di sequenze casuali) ed esecuzione simbolica e verifica formale sulle regole critiche.

Sono strumenti che trovano cose diverse: l’analisi statica i modelli sbagliati noti, il fuzzing le sequenze che nessuno avrebbe scritto a mano, la verifica formale prova che una regola vale per tutti gli input possibili e non solo per quelli testati.

Aggiornabile ma non arbitrario

I contratti che devono poter evolvere usano proxy aggiornabili, ma ogni modifica passa da un ritardo obbligatorio: chi tiene i fondi ha il tempo di vedere cosa sta per cambiare e di uscire. I contratti che non devono cambiare — la moneta, il wrapper — restano immutabili e senza ruoli privilegiati.

Sui prelievi valgono limiti espliciti (per esempio una quota massima giornaliera) e il pattern pull invece di push: è il paziente a ritirare, così un destinatario che si comporta male non blocca tutti gli altri.

Una catena è anche infrastruttura

Dietro un Layer 2 ci sono processi che devono restare in piedi: sequencer, nodo RPC pubblico, componente che pubblica i lotti sul livello sottostante, explorer, indicizzazione e monitoraggio. È lavoro di sistemi tanto quanto di Solidity, con reti separate per sviluppo, testnet e mainnet.

Portfolio

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

Manora

Piattaforma Layer 2 con moneta nativa di gas

  • Sette contratti in Solidity 0.8.28 su base OpenZeppelin 5: moneta a offerta fissa immutabile, wrapper, pricer per il rimborso del batch poster, vesting con cliff, tesoreria con prelievi ritardati e limite giornaliero, staking a cinque livelli con sconti sulle commissioni di gas dal 10% al 70%.
  • Base astratta comune con proxy UUPS, timelock di 48 ore su tutti gli aggiornamenti, controllo dei ruoli e pausa di emergenza.
  • 487 test automatici con copertura al 99,4% delle istruzioni; verifica formale con esecuzione simbolica (27 test su 29) e SMT solver (50 regole su 51), fuzzing delle invarianti dello staking (4 su 4), analisi statica senza veri positivi.
  • Rete su Arbitrum Nitro con moneta di gas personalizzata: il deposito sul livello sottostante conia moneta nativa sulla catena, con chain id distinti fra sviluppo e mainnet per la protezione dal replay.
  • Script di deploy in fasi con manifesto JSON e controlli di verifica successivi, più pacchetto di documenti per l’audit esterno.
  • Solidity 0.8.28
  • OpenZeppelin 5
  • Hardhat
  • Foundry
  • Halmos
  • Certora
  • Echidna
  • Slither
  • Arbitrum Nitro

Ti serve questo?

Raccontami il problema e ti dico come lo affronterei — e se non è il caso di farlo, te lo dico lo stesso.

Parliamone