Complexité
La “complexité” dans le mécanisme de preuve de travail fait référence au niveau d’effort computationnel requis par un client pour résoudre le défi présenté par le serveur. La complexité est contrôlée en ajustant la valeur maximale du nombre aléatoire généré par le serveur lors de la création du défi.
Le réglage de la complexité sert de mesure pour équilibrer la sécurité contre les abus/spam automatisés et l’expérience utilisateur. En contrôlant la plage du nombre généré aléatoirement, le système ajuste la difficulté de la tâche computationnelle requise du client.
Adjust the number of iterations and test the computational complexity on your device.
Ajustement de la complexité
La complexité peut être ajustée en modifiant les valeurs minimale et maximale du nombre secret généré aléatoirement du côté du serveur. Une valeur maximale plus basse crée un défi moins complexe, nécessitant moins d’itérations computationnelles pour que le client trouve une solution correspondante. À l’inverse, une valeur maximale plus élevée augmente la complexité, exigeant plus de ressources computationnelles et de temps de la part du client.
Indicateurs de Performance
Ces benchmarks illustrent le temps nécessaire pour que différents appareils résolvent un défi ALTCHA. Le tableau ci-dessous montre le nombre de calculs (opérations) que chaque appareil peut effectuer par seconde et le temps correspondant pour résoudre un défi avec une complexité de 100 000. Un plus grand nombre d’opérations par seconde indique une meilleure performance.
Appareil | Performance | Temps pour Résoudre |
---|---|---|
MacBook Pro M3-Pro (2023) | 3 ops/s | 0,33 sec |
iPhone 12 mini (2020) | 1,2 ops/s | 0,83 sec |
AWS EC2 (c6a.xlarge) | 1 ops/s | 1 sec |
Samsung Galaxy A14 (2023) | 0,4 ops/s | 2,5 sec |
AWS Lambda (1GB) | 0,12 ops/s | 8 sec |
Considérations
-
Impact sur les performances
Une complexité plus élevée peut augmenter significativement la charge computationnelle sur les appareils des clients, impactant potentiellement l’expérience utilisateur.
-
Appareils bas de gamme versus haut de gamme
Ce qui prend moins d’une seconde sur un nouvel iPhone peut prendre 30 secondes sur un téléphone Android bas de gamme. Testez avec des appareils physiques typiques pour vos utilisateurs.
-
Compromis de sécurité
Une complexité plus faible peut réduire la sécurité contre les attaques automatisées mais peut améliorer l’accessibilité des utilisateurs.
Pratiques recommandées
-
Complexité dynamique
Mettez en place un système dynamique qui adapte la complexité en fonction de la charge du serveur ou du comportement de l’utilisateur, assurant un équilibre entre sécurité et convivialité.
-
Tests et optimisation
Menez des tests approfondis pour déterminer un niveau de complexité optimal qui empêche les abus sans surcharger excessivement les utilisateurs légitimes.