Linee guida per la verifica dei protocolli di picchettamento

Linee guida per la verifica dei protocolli di picchettamento

Tempo per leggere: 6 verbale

In questo blog, abbiamo delineato il concetto di protocolli di staking di liquidità e linee guida di audit per i protocolli di staking. Le linee guida coprono una serie di punti vulnerabili come meccanismi di prelievo, errori di arrotondamento, chiamate esterne, logica delle commissioni, loop, strutture, durata dello staking, ecc. Questo post sul blog sarà un utile riferimento per l'audit dei protocolli di staking e può aiutarti a identificare potenziali bug .

Cos'è lo staking di liquidità?

Lo staking di liquidità consente agli utenti di mettere in gioco le proprie partecipazioni in criptovaluta e guadagnare premi senza sacrificare la liquidità. Invece di bloccare le proprie monete per un periodo prestabilito, gli utenti possono ricevere un gettone liquido che rappresenta le loro attività in stake. Questo token può essere scambiato o utilizzato come qualsiasi altra criptovaluta, consentendo agli utenti di utilizzare le proprie risorse a loro piacimento, continuando a guadagnare premi per lo staking.

Linee guida per l'auditing dei protocolli di staking PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Ad esempio, hai 100 ETH che vuoi scommettere sulla rete Ethereum. Invece di bloccare il tuo ETH per un periodo prestabilito, puoi utilizzare un servizio di staking di liquidità come Lido per puntare il tuo ETH e ricevere in cambio un token liquido chiamato stETH. Con stETH, puoi ancora scambiare o utilizzare i tuoi ETH in stake mentre guadagni premi per lo staking.

Iniziamo con l'auditing dei contratti di staking:

Esaminare tutte le specifiche di audit disponibili prima di iniziare con il codice del contratto. Potrebbe essere sotto forma di white paper, file README o qualcos'altro. Questi ti daranno un'idea di cosa conterrà il codice del contratto.

Quando si esamina il documento delle specifiche di audit per il contratto di picchettamento, cercare questi punti:

  • Tipi di tasse basate e loro calcoli.
  • Meccanismo di ricompensa per i token in stake
  • Poteri del titolare
  • Il contratto conterrà ETH?
  • Quali token conterrà il contratto?
  • Contratto originale da cui è biforcuto

Verificare che le specifiche corrispondano al codice. Inizia con commissioni e tokenomics, seguiti dalla convalida dell'autorità del proprietario. Verificare che tutti i premi e i valori delle commissioni siano conformi alla documentazione.

Punti vulnerabili da cercare?

1. Meccanismo di prelievo del premio:

Verifica che il meccanismo delle ricompense dei token in stake sia correttamente implementato e che le ricompense siano distribuite in modo equo e proporzionale a tutti gli staker. I progetti possono distribuire le ricompense in due modi: automaticamente, periodicamente o su richiesta degli utenti stessi. Una funzione di prelievo può essere implementata e personalizzata secondo la logica di business del protocollo.
Di seguito sono riportati alcuni punti di controllo:

  • Controlla se un utente è in grado di prelevare più della sua ricompensa + l'importo puntato.
  • Verificare la presenza di overflow/underflow nel calcolo dell'importo
  • Verifica se determinati parametri possono avere un impatto negativo sui premi durante il calcolo.
  • Se in questa funzione viene utilizzato block.timestamp o block.number. Controlla se può essere sfruttato in qualche modo.

2. Logica tariffaria:

Se il deposito e il prelievo sono soggetti a una commissione, verificare che nessun singolo utente possa aggirare la commissione. Inoltre, prestare attenzione a eventuali potenziali problemi di overflow o underflow. Solo l'amministratore o il proprietario dovrebbe essere autorizzato a modificare le impostazioni tariffarie. Verificare inoltre che sia stata fissata una soglia per i corrispettivi massimi, evitando che l'amministratore possa fissarla ad un importo eccessivamente elevato.

3. Meccanismo di conio/bruciatura del token LP:

Verificare se i meccanismi di conio e masterizzazione sono stati implementati correttamente. Una funzione di masterizzazione dovrebbe invertire tutte le modifiche di stato apportate da una funzione mint. Inoltre, è fondamentale verificare che gli utenti ricevano la quantità appropriata di token durante la prima puntata, quando il pool è vuoto.

La logica delle funzioni di conio e masterizzazione può essere verificata matematicamente per scoprire eventuali vulnerabilità nascoste. Inoltre, l'offerta totale di token LP coniati non dovrebbe superare le attività in stake.

4. Errori di arrotondamento:

Anche se alcuni piccoli errori di arrotondamento sono in genere inevitabili e non preoccupanti, possono crescere in modo significativo quando è possibile moltiplicarli. Cerca i casi limite in cui si può trarre profitto dagli errori di arrotondamento puntando e annullando ripetutamente.

Per determinare se gli errori di arrotondamento possono accumularsi in modo sostanziale in un periodo di tempo prolungato, possiamo calcolare matematicamente l'intervallo dei possibili errori di arrotondamento.

5. Durata del picchettamento:

Assicurarsi che i calcoli della durata del picchettamento nel contratto siano in linea con la logica aziendale specificata. Verifica che gli utenti non possano riscattare i premi prima che la durata dello staking sia terminata ignorando i controlli di durata. Inoltre, controlla se la durata dello staking può essere sfruttata da un utente malintenzionato per ottenere più premi.

6. Chiamate esterne e gestione dei token:

La maggior parte delle chiamate esterne riguarderà i contratti token. Quindi, dobbiamo determinare quali tipi di token gestirà il contratto di staking. È essenziale controllare le chiamate esterne per eventuali errori e attacchi di rientro. Token deflazionistici o token con commissioni di trasferimento, come Safemoon, possono rappresentare un problema se la loro logica non è implementata correttamente.

7. Controlli sulle manipolazioni dei prezzi:

La manipolazione dei prezzi tramite un prestito flash è uno degli hack più frequenti sui progetti DeFi. Potrebbero esserci situazioni in cui attori malintenzionati possono utilizzare prestiti flash per manipolare i prezzi durante lo staking o l'unstaking di grandi quantità di token. Esamina attentamente le funzioni di staking e unstaking per evitare scenari limite che potrebbero provocare attacchi di manipolazione dei prezzi basati su prestiti flash e perdita di fondi di altri utenti.

8. Alcuni controlli aggiuntivi:

  • Loop: Se la logica del contratto prevede il looping su array, è importante assicurarsi che il limite del gas di blocco non venga superato. Ciò può verificarsi quando la dimensione dell'array è molto grande, quindi dovresti esaminare quali funzioni potrebbero aumentare la dimensione dell'array e se un utente potrebbe sfruttarlo per causare un attacco DoS. Controlla questo rapporto.
  • Strutture: I contratti di picchettamento utilizzano il tipo struct per archiviare i dati dell'utente o del pool. Quando si dichiara o si accede a una struttura all'interno di una funzione, è importante specificare se utilizzare "memoria" o "archiviazione". Potrebbe aiutarci a risparmiare un po' di benzina. Per ulteriori informazioni, fare riferimento a questo articolo.
  • Front-running: cerca eventuali scenari in cui gli attori malintenzionati potrebbero gestire qualsiasi transazione a proprio vantaggio.
  • Funzioni Visibilità/ Controlli controllo accessi: Qualsiasi funzione dichiarata esterna o pubblica è accessibile a chiunque. Pertanto, è importante garantire che nessuna funzione pubblica possa eseguire azioni sensibili. È fondamentale verificare che il protocollo di staking abbia implementato controlli adeguati per impedire l'accesso non autorizzato sia alle monete in staking che all'infrastruttura del sistema.
  • Rischi di centralizzazione: È importante non conferire poteri eccessivi al proprietario. Se l'indirizzo dell'amministratore è compromesso, potrebbe causare danni significativi al protocollo. Verificare che i privilegi di proprietario o amministratore siano appropriati e assicurarsi che il protocollo disponga di un piano per la gestione delle situazioni in cui le chiavi private di un amministratore vengono trapelate.
  • Gestione ETH/WETH: I contratti spesso includono una logica specifica per la gestione di ETH. Ad esempio, quando msg.value > 0, un contratto può convertire ETH in WETH pur consentendo la ricezione diretta di WETH. Quando un utente specifica WETH come valuta ma invia ETH con la chiamata, ciò può interrompere alcune invarianti e portare a un comportamento errato.

Finora abbiamo discusso i protocolli di staking della liquidità e le linee guida di auditing per tali protocolli. In poche parole, lo staking di liquidità consente agli utenti di guadagnare premi di staking senza sacrificare la liquidità. Abbiamo delineato i punti vulnerabili nei contratti di staking a cui i revisori devono prestare attenzione, come i meccanismi di prelievo, la logica delle commissioni, il meccanismo di conio/bruciatura dei token LP, gli errori di arrotondamento, la durata dello staking, le chiamate esterne e i controlli sulla manipolazione dei prezzi. 

Raccomandiamo ai revisori di esaminare i documenti delle specifiche di audit, abbinare le specifiche al codice e controllare le tariffe e la convalida tokenomics. Si consigliano inoltre controlli aggiuntivi, ad esempio il looping su array, la specifica della memoria o dell'archiviazione per i dati di tipo struct e gli scenari front-running. Queste linee guida saranno utili per controllare i protocolli di picchettamento e aiutare a identificare potenziali bug.


11 Visualizzazioni

Timestamp:

Di più da quillhash