Salta ai contenuti

Complessità

La “complessità” nel meccanismo del proof-of-work si riferisce al livello di sforzo computazionale richiesto da un client per risolvere la sfida presentata dal server. La complessità è controllata regolando il valore massimo del numero casuale generato dal server durante la creazione della sfida.

Impostando la complessità si bilancia la sicurezza contro l’abuso/spam automatizzato e l’esperienza utente. Controllando l’intervallo del numero generato casualmente, il sistema regola la difficoltà del compito computazionale richiesto dal client.

Complexity test

Adjust the number of iterations and test the computational complexity on your device.

Iterations: 0

Regolazione della complessità

La complessità può essere regolata modificando i valori minimi e massimi del numero segreto generato casualmente sul lato del server. Un valore massimo inferiore crea una sfida meno complessa, richiedendo meno iterazioni computazionali per il client per trovare una soluzione corrispondente. Al contrario, un valore massimo più alto aumenta la complessità, richiedendo più risorse computazionali e tempo da parte del client.

Benchmark delle Prestazioni

Questi benchmark illustrano il tempo richiesto da diversi dispositivi per risolvere una sfida ALTCHA. La tabella seguente mostra il numero di calcoli (operazioni) che ogni dispositivo può eseguire al secondo e il tempo corrispondente per risolvere una sfida con una complessità di 100.000. Un numero maggiore di operazioni al secondo indica migliori prestazioni.

DispositivoPrestazioniTempo per Risolvere
MacBook Pro M3-Pro (2023)3 ops/s0,33 sec
iPhone 12 mini (2020)1,2 ops/s0,83 sec
AWS EC2 (c6a.xlarge)1 ops/s1 sec
Samsung Galaxy A14 (2023)0,4 ops/s2,5 sec
AWS Lambda (1GB)0,12 ops/s8 sec

Considerazioni

  • Impatto sulle performance

    Una maggiore complessità potrebbe aumentare significativamente il carico computazionale sui dispositivi client, influenzando potenzialmente l’esperienza utente.

  • Dispositivi di fascia bassa rispetto a dispositivi di fascia alta

    Ciò che richiede meno di un secondo su un nuovo iPhone, potrebbe richiedere 30 secondi su uno smartphone Android di fascia bassa. Testare con dispositivi fisici tipici dei vostri utenti.

  • Compromessi di sicurezza

    Una complessità inferiore potrebbe ridurre la sicurezza contro gli attacchi automatizzati ma potrebbe migliorare l’accessibilità dell’utente.

Pratiche consigliate

  • Complessità dinamica

    Implementare un sistema dinamico che adatta la complessità in base al carico del server o al comportamento dell’utente, garantendo un equilibrio tra sicurezza e usabilità.

  • Test e ottimizzazione

    Condurre test approfonditi per determinare un livello di complessità ottimale che prevenga l’abuso senza sovraccaricare eccessivamente gli utenti legittimi.