Vai al contenuto principale

Aiuta ad aggiornare questa pagina

🌏

C'è una nuova versione di questa pagina, ma al momento è solo in inglese. Aiutaci a tradurre l'ultima versione.

Traduci la pagina
Visualizza in inglese

Nessun bug qui!🐛

Questa pagina non è stata tradotta. Per il momento, è stata intenzionalmente lasciata in inglese.

Elenco di controllo di sicurezza per gli smart contract

smart contract
sicurezza
Solidity
Intermedio
✍️Trailofbits
📚Creare contratti sicuri
📆7 settembre 2020
⏱️3 minuti letti

Elenco di controllo per lo sviluppo di smart contract

Ecco un processo d'alto livello che consigliamo di seguire per la scrittura degli smart contract.

Verifica i problemi di sicurezza noti:

  • Revisiona i tuoi contratti con Slither. Ha oltre 40 rilevatori integrati per le vulnerabilità comuni. Eseguilo a ogni check-in con il nuovo codice e assicurati di ottenere un report pulito (o usa la modalità triage per silenziare certi problemi).
  • Revisiona i tuoi contratti con Crytic. Controlla 50 problemi non verificati da Slither. Crytic può aiutare il tuo team a prevenire problemi, facendo affiorare facilmente le questioni di sicurezza nelle richieste pull su GitHub.

Considera le funzionalità speciali del tuo contratto:

  • I tuoi contratti sono aggiornabili? Revisiona il tuo codice di aggiornabilità per i difetti con slither-check-upgradeability o Crytic. Abbiamo documentato 17 modi in cui gli aggiornamenti possono andare male.
  • I tuoi contratti pretendono di esser conformi agli ERC? Controllali con slither-check-erc. Questo strumento identifica istantaneamente le deviazioni da sei specifiche comuni.
  • Hai test unitari su Truffle? Arricchiscili con slither-prop. Genera automaticamente una robusta suite di proprietà di sicurezza per le funzionalità di ERC20 in base al tuo codice specifico.
  • Integri con token di terze parti? Revisiona il nostro elenco di controllo di integrazione del token prima di affidarti a contratti esterni.

Ispeziona visivamente le funzionalità di sicurezza critiche del tuo codice:

  • Revisiona l'editore di Slither, inheritance-graph. Evita shadowing involontari e problemi di linearizzazione di C3.
  • Revisiona l'editore di Slither, function-summary. Segnala la visibilità della funzione e i controlli d'accesso.
  • Revisiona l'editore di Slither, vars-and-auth. Segnala i controlli d'accesso sulle variabili di stato.

Documenta le proprietà di sicurezza critiche e usa generatori di test automatizzati per valutarle:

  • Impara a documentare le proprietà di sicurezza per il tuo codice. All'inizio è difficile, ma è l'attività in assoluto più importante per ottenere un buon risultato. È anche un prerequisito per usare qualsiasi tecnica avanzata in questo tutorial.
  • Definisci le proprietà di sicurezza in Solidity, per l'uso con Echidna e Manticore. Concentrati sulla tua macchina di stato, controlli d'accesso, operazioni aritmetiche, interazioni esterne e conformità agli standard.
  • Definisci le proprietà di sicurezza con l'API di Python di Slither. Concentrati su eredità, dipendenze della variabile, controlli d'accesso e altri problemi strutturali.
  • Esegui i tuoi test di proprietà a ogni commit con Crytic. Crytic può consumare e valutare i test di proprietà di sicurezza in modo che tutti nel team possano facilmente vedere che passano su GitHub. I testi falliti possono bloccare i commit.

Infine, ricordati dei problemi che gli strumenti automatizzati non possono facilmente trovare:

  • Mancanza di privacy: tutti gli altri possono vedere le tue transazioni mentre sono accodate nel pool
  • Transazioni in esecuzione frontale
  • Operazioni crittografiche
  • Interazioni rischiose con componenti esterni della DeFi

Chiedi aiuto

Orari lavorativi di Ethereum: ogni martedì pomeriggio. Queste sessioni 1 a 1 di un'ora sono un'opportunità per farci domande sulla sicurezza, la risoluzione dei problemi usando i nostri strumenti e la ricezione di feedback dagli esperti sul tuo approccio corrente. Ti aiuteremo ad arrivare in fondo a questa guida.

Unisciti al nostro Slack: Empire Hacking. Siamo sempre disponibili nei canali #crytic ed #ethereum se hai domande.

Ultima modifica: , Invalid DateTime
Modifica la pagina

Questa pagina è stata utile?