Pular para o conteúdo

Complexidade

A “complexidade” no mecanismo de prova de trabalho refere-se ao nível de esforço computacional necessário por um cliente para resolver o desafio apresentado pelo servidor. A complexidade é controlada ajustando o valor máximo do número aleatório gerado pelo servidor durante a criação do desafio.

A configuração da complexidade serve como uma medida para equilibrar a segurança contra abusos/spam automatizados e a experiência do usuário. Ao controlar a faixa do número gerado aleatoriamente, o sistema ajusta a dificuldade da tarefa computacional exigida do cliente.

Complexity test

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

Iterations: 0

Ajustando a complexidade

A complexidade pode ser ajustada modificando os valores mínimo e máximo do número secreto gerado aleatoriamente no servidor. Um valor máximo mais baixo cria um desafio menos complexo, exigindo menos iterações computacionais para o cliente encontrar uma solução correspondente. Por outro lado, um valor máximo mais alto aumenta a complexidade, exigindo mais recursos computacionais e tempo do cliente.

Considerações

  • Impacto na performance

    Maior complexidade pode aumentar significativamente a carga computacional nos dispositivos dos clientes, potencialmente impactando a experiência do usuário.

  • Dispositivos de baixo custo versus dispositivos de alto custo

    O que leva menos de um segundo em um novo iPhone, pode levar 30 segundos em um celular Android de baixo custo. Teste com dispositivos físicos típicos dos seus usuários.

  • Compromissos de segurança

    Menor complexidade pode reduzir a segurança contra ataques automatizados, mas pode melhorar a acessibilidade do usuário.

Práticas recomendadas

  • Complexidade dinâmica

    Implemente um sistema dinâmico que adapte a complexidade com base na carga do servidor ou no comportamento do usuário, garantindo um equilíbrio entre segurança e usabilidade.

  • Testes e otimização

    Realize testes rigorosos para determinar um nível de complexidade ideal que previna abusos sem sobrecarregar excessivamente usuários legítimos.