Nimue es una biblioteca de hash-agnóstico que cree en los oráculos aleatorios. Facilita la escritura de protocolos de monedas públicas de ronda múltiple. Proporciona una API genérica para generar las monedas aleatorias del verificador y la aleatoriedad Prover. El proyecto tiene las siguientes cajas:
nimue
: La biblioteca central, con enlaces para group
y ark-ff
. Esta caja proporciona los rasgos básicos para las bases de hashes en las funciones de compresión y las funciones hash basadas en la esponja , tanto a través de la API genérica Digest
de Rust y una API de función de permutación (más eficiente y eficiente)nimue-pow
: una extensión para los desafíos calculados a través de la molienda / prueba de trabajo;nimue-poseidon
: una implementación de trabajo en progreso de la función de hash Poseidon (en Arkworks).nimue-anemoi
: una implementación de trabajo en progreso de la función anemoi hash (en Arkworks);Generación de transcripción automática. Nimue viene con baterías incluidas para los elementos algebraicos de serialización/deserialización, como elementos de campo/grupo en Arkworks y ZkCrypto. Los usuarios pueden construir la parte superior a través de rasgos de extensión.
Admite la función hash personalizada. Para construir una transformación segura de Fiat-Shamir, el requisito mínimo es una función de permutación sobre algún conjunto que admite la codificación de bytes. Puede ser un u8
que representa
Retro-compatibilidad. Tenemos una interfaz heredada para cualquier función hash que satisfaga el rasgo digest::Digest
, como sha2
y blake2
.
Preprocesamiento . En Snarks recursivos, minimizar el número de invocaciones hash mientras se mantiene la seguridad es crucial. Ofrecemos herramientas para preprocesar la transcripción (es decir, el estado de la transformación Fiat-Shamir) para lograr este objetivo.
Generación de aleatoriedad privada . Es vital evitar proporcionar dos desafíos diferentes para el mismo mensaje Prover. Hacemos todo lo posible para evitarlo atando la aleatoriedad de Prover a la transcripción del protocolo, sin hacer que la prueba sea determinista.
Consulte la documentación y algunos examples/
.