Nimue ist eine Hash-Agnostic-Bibliothek, die an zufällige Orakel glaubt. Es erleichtert das Schreiben von öffentlichen Münzprotokollen mit mehreren Runden. Es bietet eine generische API zum Erzeugen der zufälligen Münzen des Verifizierers und der Zufälligkeit des Provers. Das Projekt hat die folgenden Kisten:
nimue
: Die Kernbibliothek mit Bindungen für group
und ark-ff
. Diese Kiste bietet die grundlegenden Merkmale für Hashes-Basen auf Komprimierungsfunktionen und auf Schwamm basierenden Hash-Funktionen , sowohl über die generische Digest
API von Rust als auch eine (feinkörnigere und effizientere) Permutationsfunktion APInimue-pow
: Eine Erweiterung für Herausforderungen, die durch Schleifen / Proof-of-Works berechnet wurden;nimue-poseidon
: Eine Arbeit in der Arbeit im Umsetzung der Poseidon-Hash-Funktion (in ArkWorks).nimue-anemoi
: Eine Arbeit in Arbeit, die die Anemoi-Hash-Funktion (in ArkWorks) implementiert;Automatische Transkriptionserstellung. Nimue wird mit Batterien geliefert, die zur Serialisierung/Deserialisierung algebraischer Elemente wie Feld-/Gruppenelemente in ArkWorks und Zkcrypto enthalten sind. Benutzer können die Spitze über Erweiterungsmerkmale erstellen.
Unterstützen Sie die benutzerdefinierte Hash -Funktion. Um eine sichere Fiat-Shamir-Transformation aufzubauen, ist die minimale Anforderung eine Permutationsfunktion über einen Satz, der die Byte-Codierung unterstützt. Es kann ein u8
sein, der darstellt
Retro-Kompatibilität. Wir haben eine ältere Schnittstelle für jede Hash -Funktion, die das digest::Digest
-Merkmal wie sha2
und blake2
erfüllt.
Vorverarbeitung . Bei rekursiven Schnuppen ist die Minimierung der Anzahl der Hash -Aufrufe gleichzeitig die Sicherheit von entscheidender Bedeutung. Wir bieten Tools zur Vorverarbeitung des Transkripts (dh dem Zustand der Fiat-Shamir-Transformation), um dieses Ziel zu erreichen.
Private Zufälligkeitserzeugung . Es ist wichtig, zwei verschiedene Herausforderungen für dieselbe Prover -Nachricht zu vermeiden. Wir tun unser Bestes, um dies zu vermeiden, indem wir die Prover die Zufälligkeit mit dem Protokolltranskript festhalten, ohne den Beweis deterministisch zu machen.
Schauen Sie sich die Dokumentation und einige examples/
.