Nimue é uma biblioteca de hash-agnóstica que acredita em oráculos aleatórios. Facilita a redação de protocolos de moedas públicas de várias rodadas. Ele fornece uma API genérica para gerar as moedas aleatórias do verificador e a aleatoriedade do provador. O projeto tem as seguintes caixas:
nimue
: A biblioteca principal, com ligações para group
e ark-ff
. Esta caixa fornece as características básicas para bases de hashes sobre funções de compressão e funções de hash baseadas em esponja , tanto através da API genérica Digest
genérico de Rust quanto uma API de função de permutação (mais refinada e eficiente)nimue-pow
: Uma extensão para desafios calculados via moagem / prova de trabalho;nimue-poseidon
: um trabalho em andamento Implementação da função Hash Poseidon (no Arkworks).nimue-anemoi
: um trabalho em andamento implementação da função de hash anemoi (no Arkworks);Geração de transcrição automática. O NIMUE vem com baterias incluídas para serializar/desserializante elementos algébricos, como elementos de campo/grupo no Arkworks e Zkcrypto. Os usuários podem criar o topo por meio de características de extensão.
Suporte a função de hash personalizada. Para construir uma transformação segura de Fiat-Shamir, o requisito mínimo é uma função de permutação sobre algum conjunto que suporta codificação de bytes. Pode ser um u8
representando
Retro-compatibilidade. Temos uma interface herdada para qualquer função de hash que satisfaz o traço digest::Digest
, como sha2
e blake2
.
Pré -processamento . Em snarks recursivos, minimizar o número de invocações de hash, mantendo a segurança é crucial. Oferecemos ferramentas para pré-processamento da transcrição (ou seja, o estado da transformação Fiat-Shamir) para atingir esse objetivo.
Geração de aleatoriedade privada . É vital evitar oferecer dois desafios diferentes para a mesma mensagem de provador. Fazemos o possível para evitá -lo vinculando a aleatoriedade do prover à transcrição do protocolo, sem fazer a prova determinística.
Confira a documentação e alguns examples/
.