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.
- Solidity
- OpenZeppelin UUPS
- Hardhat
- Foundry
- fuzzing
- analisi statica
- verifica formale
- L2 Arbitrum Orbit
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