Zum Inhalt springen

Komplexität

Die “Komplexität” im Proof-of-Work-Mechanismus bezieht sich auf den Grad des Rechenaufwands, den ein Client benötigt, um die vom Server präsentierte Herausforderung zu lösen. Die Komplexität wird durch Anpassung des maximalen Werts der von Server während der Herausforderungserstellung generierten Zufallszahl gesteuert.

Die Einstellung der Komplexität dient als Maßnahme, um Sicherheit gegen automatischen Missbrauch/Spam und Benutzererfahrung auszubalancieren. Indem das System den Bereich der zufällig generierten Zahl kontrolliert, passt es die Schwierigkeit der vom Client benötigten Rechenaufgabe an.

Complexity test

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

Iterations: 0

Anpassen der Komplexität

Die Komplexität kann angepasst werden, indem die Mindest- und Höchstwerte der zufällig generierten Geheimzahl auf der Serverseite geändert werden. Ein niedriger maximaler Wert schafft eine weniger komplexe Herausforderung, die weniger Rechenschleifen für den Client erfordert, um eine passende Lösung zu finden. Umgekehrt erhöht ein höherer maximaler Wert die Komplexität und erfordert mehr Rechenressourcen und Zeit vom Client.

Überlegungen

  • Leistungseinfluss

    Höhere Komplexität kann die Rechenlast auf Client-Geräten erheblich erhöhen und möglicherweise die Benutzererfahrung beeinträchtigen.

  • Niedrig- versus Hochleistungsgeräte

    Was auf einem neuen iPhone weniger als eine Sekunde dauert, könnte auf einem Einsteiger-Android-Telefon 30 Sekunden dauern. Testen Sie mit physischen Geräten, die für Ihre Nutzer typisch sind.

  • Sicherheitskompromisse

    Eine niedrigere Komplexität könnte die Sicherheit gegen automatisierte Angriffe verringern, jedoch die Benutzerzugänglichkeit verbessern.

Empfohlene Vorgehensweisen

  • Dynamische Komplexität

    Implementieren Sie ein dynamisches System, das die Komplexität basierend auf der Serverlast oder dem Benutzerverhalten anpasst und so ein Gleichgewicht zwischen Sicherheit und Benutzerfreundlichkeit gewährleistet.

  • Tests und Optimierungen

    Führen Sie gründliche Tests durch, um ein optimales Komplexitätsniveau zu bestimmen, das Missbrauch verhindert, ohne legitime Benutzer übermäßig zu belasten.