scrypt fue diseñado para usar una gran cantidad de memoria, y si no se usara toda esa memoria, sería mucho más lento calcularlos. De cualquier manera, contrarresta los ataques de hardware personalizados, donde no suele haber tanta memoria disponible.
Estaba pensando, ¿por qué molestarme en permitir un intercambio de memoria de tiempo? ¿No sería mejor utilizar una función hash con un estado interno muy grande (que se puede ajustar) por supuesto? El tamaño del estado interno determina los requisitos de memoria y el número de rondas es el factor de trabajo.