Aller au contenu

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.

Complexity test

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

Iterations: 0

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.

AppareilPerformanceTemps pour Résoudre
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

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.