Nimue est une bibliothèque agnostique de hachage qui croit aux oracles aléatoires. Il facilite la rédaction de protocoles de pièces publiques multi-rondes. Il fournit une API générique pour générer les pièces aléatoires du vérificateur et le hasard. Le projet a les caisses suivantes:
nimue
: la bibliothèque de base, avec des liaisons pour group
et ark-ff
. Cette caisse fournit les traits de base pour les bases de hachage sur les fonctions de compression et les fonctions de hachage à base d'éponge , à la fois via l'API Digest
de Rust et une API de permutation (plus à grain fin et efficace)nimue-pow
: une extension pour les défis calculés via le broyage / la preuve de travail;nimue-poseidon
: une mise en œuvre du travail en cours de la fonction de hachage Poseidon (dans Arkworks).nimue-anemoi
: une mise en œuvre du travail en cours de la fonction de hachage ANEMOI (dans Arkworks);Génération automatique de transcription. Nimue est livré avec des batteries incluses pour le sérialisation / désérialisation des éléments algébriques tels que les éléments de terrain / groupe dans Arkworks et Zkcrypto. Les utilisateurs peuvent en construire le haut via des traits d'extension.
Prise en charge de la fonction de hachage personnalisée. Pour construire une transformée de fiat-shamir sécurisée, l'exigence minimale est une fonction de permutation sur un ensemble qui prend en charge le codage des octets. Cela peut être un u8
représentant
Rétro-compatibilité. Nous avons une interface héritée pour toute fonction de hachage qui satisfait le trait digest::Digest
, comme sha2
et blake2
.
Prétraitement . Dans les SNARKS récursifs, minimiser le nombre d'invocations de hachage tout en maintenant la sécurité est cruciale. Nous proposons des outils pour le prétraitement de la transcription (c'est-à-dire l'état de la transformation Fiat-Shamir) pour atteindre cet objectif.
Génération de hasard privée . Il est essentiel d'éviter de fournir deux défis différents pour le même message de prover. Nous faisons de notre mieux pour l'éviter en attachant l'aléatoire du prover à la transcription du protocole, sans rendre la preuve déterministe.
Consultez la documentation et quelques examples/
.