O que é o hash MiMC?
Hash MiMC é uma construção de hash criptográfico projetada para ser eficiente em sistemas de prova de conhecimento zero e outros ambientes de circuitos aritméticos.MiMC significa Minimal Multiplicative Complexity (complexidade multiplicativa mínima).O nome reflete o principal objetivo do projeto: usar muito poucas operações de multiplicação em comparação com funções hash tradicionais quando representadas em circuitos.No universo cripto, o hash MiMC é mais frequentemente discutido como uma função hash compatível com ZK para SNARKs, STARKs, sistemas MPC e aplicações blockchain voltadas à privacidade.O registro do artigo sobre MiMC da ASIACRYPT 2016 descreve MiMC como uma proposta de cifras de bloco e funções hash criptográficas com baixa complexidade multiplicativa.
Ao contrário de SHA-256 ou Keccak, MiMC não foi projetado principalmente para obter alta velocidade de hashing em softwares comuns executados em CPUs.Ele foi projetado para ambientes em que cada restrição de multiplicação pode aumentar o custo da geração de provas.Isso torna MiMC importante para sistemas blockchain que usam provas de conhecimento zero para comprovar afirmações sem revelar dados privados.Por que o hash MiMC é importante no mercado cripto
O hash MiMC é importante porque muitas aplicações cripto precisam usar hashes em circuitos de conhecimento zero.Um circuito de conhecimento zero pode precisar provar que um usuário conhece um segredo, possui um compromisso, pertence a uma árvore de Merkle ou segue uma regra de contrato inteligente sem revelar a entrada oculta.Funções hash tradicionais podem ser caras nesses circuitos porque suas operações bit a bit não são naturalmente baratas em muitos sistemas de prova de corpos finitos.MiMC foi projetado para funcionar naturalmente sobre corpos finitos, os ambientes matemáticos usados por muitos sistemas de prova.A página de referência do MiMC explica que MiMC é uma família de cifras de bloco e funções hash projetada especificamente para aplicações SNARK.
Isso é útil porque um circuito de hash mais barato pode reduzir o tempo de geração de provas, diminuir os custos de prova e tornar aplicações de privacidade mais práticas.O hash MiMC ajudou a moldar a categoria mais ampla de funções hash compatíveis com ZK.Mesmo quando são escolhidas funções hash compatíveis com ZK mais recentes, MiMC continua importante por ser um sistema historicamente consolidado, estudado e amplamente citado.Como funciona o hash MiMC
O hash MiMC é construído com operações algébricas simples sobre um corpo finito.Um corpo finito é um conjunto matemático no qual adição, subtração, multiplicação e divisão seguem regras modulares estritas.A ideia central é aplicar repetidamente uma função de potência simples com constantes de rodada e valores semelhantes a chaves.A página de referência do MiMC descreve o componente central como a função
Algumas implementações usam outros expoentes, como
O circuito MiMCSponge da circomlib implementa MiMC-2n/n como uma função hash usando uma construção sponge.
Hash MiMC e complexidade multiplicativa mínima
Complexidade multiplicativa mínima significa que o projeto busca reduzir o número de operações de multiplicação necessárias para expressar a função.Isso importa porque muitos sistemas de prova de conhecimento zero medem o custo do circuito pelo número de restrições semelhantes a multiplicações.Em um ambiente de programação convencional, uma função hash bit a bit pode ser rápida e prática.Em um circuito ZK, operações bit a bit podem ficar caras porque o circuito precisa provar que cada operação foi realizada corretamente.MiMC usa uma aplicação algébrica simples de potência, que pode ser representada com menos restrições.O registro do artigo sobre MiMC explica que a baixa complexidade multiplicativa foi motivada por aplicações de MPC, criptografia totalmente homomórfica e provas de conhecimento zero, nas quais cálculos lineares são relativamente baratos.Em termos simples, MiMC tenta reduzir a parte mais cara da prova.Por isso, MiMC é chamado de compatível com ZK, e não apenas de rápido.Hash MiMC e provas de conhecimento zero
As provas de conhecimento zero permitem que uma parte prove que uma afirmação é verdadeira sem revelar os dados privados que a fundamentam.O hash MiMC pode ser usado em provas de conhecimento zero quando a afirmação envolve compromissos, caminhos de Merkle, nullifiers ou dados de conta ocultos.O artigo AMAZE sobre a aceleração do MiMC, de 2024, descreve MiMC como uma função hash compatível com ZK consolidada, com estrutura algébrica simples e adequada a aplicações ZKP.
Um circuito ZK pode incluir MiMC para provar que uma entrada secreta corresponde ao hash de um compromisso público.Também pode usar MiMC para provar que uma folha pertence a uma árvore de Merkle sem revelar publicamente todo o caminho.Como MiMC é compatível com cálculos aritméticos, pode reduzir o número de restrições em comparação com funções hash projetadas principalmente para desempenho de software em nível de bits.Menos restrições podem tornar a geração de provas mais rápida e barata.Isso é especialmente importante em sistemas blockchain, nos quais o tempo de prova e o custo de verificação podem afetar a experiência real do usuário.Hash MiMC e SNARKs
SNARKs são sistemas de prova de conhecimento zero que frequentemente representam cálculos como circuitos aritméticos.Em muitos cenários SNARK, as restrições de multiplicação são caras em comparação com adições e operações com constantes.O artigo de pesquisa sobre funções hash compatíveis com ZK explica que, em cenários SNARK baseados em R1CS, o custo é determinado pelo número de restrições.
MiMC foi projetado para manter esse número baixo.Isso torna MiMC atraente para circuitos SNARK que precisam realizar hashing repetidas vezes.O hashing repetido é comum em provas de árvores de Merkle, sistemas de transferências privadas, sistemas de credenciais e sistemas de associação anônima.Uma pequena economia por hash pode resultar em uma economia grande quando um circuito calcula centenas ou milhares de hashes.O valor do MiMC em SNARKs vem do uso de matemática que o sistema de prova consegue expressar naturalmente.Hash MiMC e STARKs
STARKs são outra família de sistemas de prova de conhecimento zero que usa rastros de execução algébricos e restrições polinomiais.MiMC também pode ser discutido em contextos STARK, pois tem uma estrutura algébrica simples de rodadas.A página de referência do MiMC está hospedada em um site mais amplo sobre criptografia simétrica compatível com SNARK, STARK e MPC.Em sistemas no estilo STARK, o grau das restrições e o tamanho do rastro de execução podem afetar bastante o desempenho.Uma função de rodada simples baseada em potências pode ser mais fácil de expressar do que uma função hash tradicional com muitas operações de bits.Isso não significa que MiMC seja sempre a melhor escolha de hash para STARK.Significa que MiMC faz parte de uma família mais ampla de primitivas criptográficas orientadas à aritmetização.Os desenvolvedores devem escolher a função hash mais adequada ao sistema de prova, ao corpo, ao nível de segurança e à maturidade da implementação.Hash MiMC e corpos finitos
O hash MiMC opera sobre corpos finitos, e não sobre números inteiros ilimitados comuns.Um corpo finito fornece ao circuito um universo matemático fixo, em que os valores dão a volta em torno do tamanho de um corpo primo ou binário.A página de referência do MiMC informa que os cálculos do MiMC ocorrem em
Hash MiMC e constantes de rodada
As constantes de rodada são valores fixos adicionados durante as rodadas da permutação ou cifra MiMC.Elas ajudam a impedir que as rodadas sejam simétricas ou previsíveis demais.Boas constantes devem ser geradas de forma transparente, para que desenvolvedores e auditores possam confiar que não foram escolhidas de maneira maliciosa.Muitas implementações geram constantes a partir de strings-semente públicas, usando uma função hash padrão.O artigo de pesquisa sobre funções hash compatíveis com ZK observa que as implementações costumam gerar constantes de rodada do MiMC a partir de strings como
Hash MiMC e construção sponge
Uma construção sponge é uma forma comum de criar uma função hash a partir de uma permutação.Ela tem uma fase de absorção e uma fase de extração.Durante a absorção, os valores de entrada são misturados a uma parte do estado interno.Durante a extração, valores de saída são produzidos a partir do estado transformado.O artigo de pesquisa sobre funções hash compatíveis com ZK explica que o hash MiMC se baseia na estrutura sponge, na qual blocos de mensagem são absorvidos em uma parte do estado e transformados por uma permutação MiMC.Construções sponge são úteis porque podem aceitar entradas de tamanho variável e oferecer saídas de tamanho flexível.Em circuitos cripto, isso pode ajudar a transformar vários elementos do corpo em um único compromisso ou resumo.No entanto, parâmetros sponge como taxa, capacidade, tamanho do corpo e número de rodadas precisam ser escolhidos com cuidado.Hash MiMC vs. SHA-256
Hash MiMC e SHA-256 são funções hash criptográficas, mas são otimizadas para ambientes diferentes.SHA-256 é amplamente usado em softwares tradicionais, hardware e sistemas Proof of Work.O hash MiMC é otimizado para circuitos aritméticos e sistemas de prova baseados em corpos finitos.Um circuito SHA-256 pode exigir muitas restrições porque SHA-256 usa operações bit a bit, rotações e lógica booleana.Um circuito MiMC pode ser muito mais barato em muitos ambientes SNARK porque suas operações correspondem à aritmética de corpos finitos.Isso não significa que MiMC deva substituir SHA-256 em todos os casos.Significa que MiMC pode ser mais adequado quando é preciso comprovar um hash dentro de um circuito ZK.Para hashing de arquivos off-chain comum ou compatibilidade amplamente padronizada, funções hash tradicionais ainda podem ser mais apropriadas.Hash MiMC vs. Keccak
Keccak é amplamente usado como primitiva hash geral em sistemas de contratos inteligentes no estilo Ethereum.MiMC geralmente é escolhido quando o desenvolvedor precisa de hashing eficiente dentro de um circuito de conhecimento zero.A compatibilidade com Keccak pode ser útil para corresponder à lógica existente de endereços, assinaturas ou contratos.A eficiência do MiMC pode ser útil para provar relações entre dados ocultos em circuitos aritméticos.Se o projeto exigir tanto compatibilidade quanto provas eficientes, um desenvolvedor pode usar Keccak fora do circuito e MiMC dentro dele.Essa divisão precisa ser projetada com cuidado, pois funções hash diferentes geram compromissos e premissas de confiança diferentes.Os usuários não devem presumir que um resumo MiMC e um resumo Keccak são intercambiáveis.A escolha certa depende de onde o hash é calculado e do que precisa ser verificado.Hash MiMC vs. Poseidon
MiMC e Poseidon são funções hash compatíveis com ZK.MiMC é mais antigo e tem importância histórica.Poseidon é uma função hash mais recente, orientada à aritmetização, frequentemente escolhida em sistemas ZK modernos porque pode ser mais eficiente para determinadas entradas e sistemas de prova.O artigo de pesquisa sobre funções hash compatíveis com ZK descreve MiMC como a primeira função hash compatível com ZK e informa que outras funções mais novas foram propostas posteriormente.Isso não torna MiMC obsoleto em todos os casos.Significa que os desenvolvedores devem comparar a análise de segurança, o custo do circuito, o suporte das bibliotecas, o histórico de auditoria, a compatibilidade com o corpo e as expectativas do ecossistema.Protocolos existentes podem manter MiMC por compatibilidade com compromissos e raízes de Merkle já implementados.Novos protocolos podem escolher outra função hash compatível com ZK após testes de desempenho e auditoria.Hash MiMC em árvores de Merkle
O hash MiMC é frequentemente usado em árvores de Merkle dentro de sistemas de conhecimento zero.Uma árvore de Merkle agrupa muitos valores em uma única raiz, aplicando hash repetidamente a pares de nós.Um usuário pode provar que uma folha pertence à árvore apresentando um caminho de Merkle.Em um circuito ZK, o usuário pode provar que o caminho é válido sem revelar dados privados desnecessários.Se o circuito usar um hash tradicional com muitas operações de bits em cada nível da árvore, a prova pode ficar cara.O uso de MiMC pode reduzir o custo de restrições em cada etapa do hashing.Por isso, MiMC aparece em projetos de privacidade, identidade, votação e provas de associação.A segurança da árvore de Merkle ainda depende de hashing correto, construção correta da árvore e restrições corretas no circuito.Hash MiMC em compromissos
Um compromisso permite que um usuário fixe um valor sem revelá-lo imediatamente.O hash MiMC pode ser usado para criar compromissos a partir de valores secretos e aleatoriedade.Por exemplo, um protocolo pode calcular o hash de uma nota secreta, de uma chave de proprietário e de um salt aleatório para gerar um compromisso público.Mais tarde, o usuário pode provar que conhece os dados ocultos dentro de um circuito ZK.Se o hash e o protocolo forem projetados corretamente, o compromisso público não revela a entrada secreta.Esse padrão é comum em sistemas cripto que preservam a privacidade.MiMC ajuda porque o hash do compromisso pode ser verificado com eficiência dentro do circuito.Um esquema de compromisso ainda precisa incluir aleatoriedade suficiente para evitar ataques de adivinhação contra valores secretos pequenos.Hash MiMC em nullifiers
Um nullifier é um valor usado para impedir gasto duplo ou reivindicações duplicadas sem revelar o segredo original.O hash MiMC pode ajudar a derivar um nullifier de uma chave secreta, nota ou valor de identidade.O protocolo pode publicar o nullifier quando uma ação privada é realizada.Outros usuários podem verificar se o mesmo nullifier já apareceu.A prova de conhecimento zero pode mostrar que o nullifier foi derivado corretamente sem revelar o segredo subjacente.Isso é importante para transferências privadas, reivindicações privadas e ações anônimas de associação.Se o hashing do nullifier estiver incorreto, os usuários podem gastar duas vezes ou perder privacidade.MiMC pode tornar as verificações de nullifier eficientes, mas toda a lógica do protocolo ainda precisa ser auditada cuidadosamente.Hash MiMC em contratos inteligentes
Contratos inteligentes podem verificar provas que envolvem compromissos ou raízes de Merkle com hash MiMC.O contrato talvez não recalcule cada valor oculto, mas pode verificar uma prova gerada a partir de um circuito que incluiu operações MiMC.Alguns contratos também podem implementar MiMC diretamente, caso precisem calcular hashes on-chain.MiMC on-chain pode ser útil quando um contrato precisa de uma função hash compatível com ZK que use aritmética de corpos finitos.No entanto, implementar criptografia em contratos inteligentes é arriscado, pois pequenos erros podem comprometer a segurança.Quando possível, os desenvolvedores devem preferir bibliotecas revisadas e implementações auditadas.Também devem verificar se a função on-chain corresponde exatamente à função do circuito.Uma divergência entre MiMC no circuito e MiMC no contrato pode fazer as provas falharem ou criar brechas de segurança.Hash MiMC e Circom
Circom é uma linguagem usada para escrever circuitos aritméticos para provas de conhecimento zero.O repositório circomlib contém modelos reutilizáveis de circuitos para primitivas criptográficas e outros componentes.
A circomlib inclui uma implementação do circuito MiMCSponge.Isso importa porque muitos desenvolvedores de ZK usam bibliotecas de circuitos em vez de escrever cada primitiva do zero.O uso de bibliotecas pode reduzir o tempo de desenvolvimento, mas não elimina a necessidade de auditorias.Os desenvolvedores precisam confirmar se a versão da biblioteca, os parâmetros, as restrições e o corpo correspondem ao projeto do protocolo.Também devem evitar copiar trechos desatualizados de tutoriais antigos sem verificar o comportamento atual da biblioteca.No desenvolvimento ZK, uma função de biblioteca só é segura quando é usada corretamente no circuito completo.Hash MiMC e circuitos sub-restringidos
Um circuito sub-restringido é um circuito ZK que não impõe completamente o cálculo que afirma comprovar.Esse é um dos riscos mais graves ao usar MiMC ou qualquer função hash em um circuito.O tutorial de auditoria ZK sobre uma falha de restrição no hash MiMC descreve um caso em que faltava uma restrição no circuito de hash MiMC, pois foi usado um operador de atribuição em vez de um operador de restrição.
O problema não era que o projeto matemático do MiMC estivesse automaticamente comprometido.O problema era que o circuito não restringia a saída ao cálculo de hash pretendido.Essa lição é importante para todos os protocolos ZK.Uma função hash robusta não protege um protocolo se o circuito não a impõe de fato.Desenvolvedores ZK devem testar as restrições, realizar auditorias e, quando viável, usar verificações formais ou baseadas em propriedades.Propriedades de segurança do hash MiMC
O hash MiMC foi projetado para oferecer propriedades de segurança criptográfica, como resistência a colisões e resistência à pré-imagem, conforme os parâmetros escolhidos.Resistência a colisões significa que deve ser difícil encontrar duas entradas diferentes com a mesma saída de hash.Resistência à pré-imagem significa que deve ser difícil recuperar uma entrada a partir da saída do hash.Resistência à segunda pré-imagem significa que deve ser difícil encontrar outra entrada que corresponda à saída de hash de uma entrada conhecida.Essas propriedades dependem da variante MiMC exata, do corpo, do expoente, do número de rodadas, das constantes e do modo de construção.A página de referência do MiMC afirma que, até a análise ali listada, não havia sido encontrada uma quebra contra MiMC-n/n ou MiMC-p/p com todas as rodadas, embora observe problemas em algumas variantes de cifra de bloco Feistel.Os desenvolvedores não devem reduzir o número de rodadas para economizar restrições sem uma justificativa criptográfica sólida.Alterar parâmetros sem avaliação especializada pode enfraquecer a segurança.Hash MiMC e número de rodadas
O número de rodadas é a quantidade de vezes que a função de rodada MiMC é aplicada.Mais rodadas geralmente aumentam a resistência à criptoanálise, mas também elevam o custo do circuito.Menos rodadas podem melhorar o desempenho, mas talvez reduzam a segurança.As escolhas de parâmetros do MiMC geralmente se baseiam no tamanho do corpo, no expoente, na análise de segurança e no tipo de construção.A implementação MiMCSponge da circomlib inclui comentários que mostram um cálculo do número de rodadas para um corpo primo e uma escolha específica de expoente.Isso não significa que toda implementação MiMC deva usar o mesmo número de rodadas sem análise.O número de rodadas deve corresponder ao corpo, ao expoente, à construção e ao nível de segurança exatos.O protocolo deve documentar seus parâmetros MiMC para que auditores e usuários possam verificá-los.Hash MiMC e expoentes
O expoente é a potência usada na função não linear de rodada, como
O projeto original do MiMC costuma ser explicado com
O artigo de pesquisa sobre funções hash compatíveis com ZK observa que, em alguns corpos, a S-box
Hash MiMC e separação de domínio
Separação de domínio significa garantir que a mesma função hash não seja reutilizada de forma ambígua para diferentes finalidades do protocolo.Um protocolo pode usar MiMC para compromissos, nullifiers, nós de Merkle e valores de desafio.Se todos esses usos compartilharem o mesmo formato de entrada sem separação, poderão ocorrer colisões inesperadas ou confusão no protocolo.A separação de domínio pode usar prefixos fixos, tags, constantes diferentes, chaves distintas ou formatos de entrada estruturados.O método exato deve ser compatível com o sistema de prova e com a representação do corpo.Uma boa separação de domínio facilita auditorias do protocolo.Ela também reduz a possibilidade de que um valor válido em um contexto seja reutilizado de forma perigosa em outro.MiMC é uma primitiva; protocolos seguros exigem um projeto cuidadoso das entradas usadas com ela.Hash MiMC e codificação de elementos do corpo
Em geral, o hash MiMC recebe elementos do corpo, não strings de texto arbitrárias diretamente.Isso cria uma questão de codificação.Os desenvolvedores precisam decidir como bytes, endereços, valores, identificadores e chaves públicas serão convertidos em elementos do corpo.Uma codificação inadequada pode causar ambiguidade, truncamento, estouro ou confusão entre protocolos.Por exemplo, duas sequências de bytes diferentes não devem ser mapeadas acidentalmente para a mesma sequência de elementos do corpo, a menos que o protocolo permita isso deliberadamente.Quando necessário, o tamanho da entrada deve ser codificado ou tornado inequívoco de outra forma.As implementações devem concordar sobre endianness, preenchimento, redução pelo módulo e limites do corpo.Muitos erros em implementações MiMC resultam de falhas de integração, e não da ideia central do hash.Hash MiMC e desempenho
O hash MiMC é eficiente em circuitos aritméticos porque minimiza operações caras semelhantes a multiplicações.Isso pode reduzir o tempo de geração de provas e o tamanho do circuito.O artigo AMAZE de 2024 afirma que funções hash criptográficas padrão, como SHA-2, podem ser ineficientes em ambientes ZKP e que funções hash compatíveis com ZK são criadas pensando na eficiência de ZKP.O mesmo artigo apresenta implementações de MiMC otimizadas para hardware em aplicações ZK e relata melhorias de desempenho em relação a implementações padrão para CPU em seu ambiente de teste.Isso mostra que MiMC continua relevante nas pesquisas atuais sobre hardware ZK e desempenho.No entanto, o desempenho deve ser medido no sistema de destino real.Uma função hash eficiente em um sistema de prova pode não ser ideal em outro.Os testes de desempenho devem incluir tempo do provador, custo do verificador, número de restrições, memória, maturidade da implementação e histórico de auditoria.Hash MiMC e requisitos de auditoria
O hash MiMC deve ser auditado quando usado em sistemas cripto de produção.Os auditores devem analisar os parâmetros matemáticos, as restrições do circuito, a codificação das entradas, a separação de domínio, a linguagem de implementação e a lógica de verificação do contrato inteligente.Devem confirmar que a saída do circuito está restrita ao cálculo MiMC pretendido.Devem comparar vetores de teste entre o código off-chain, o código do circuito e o código on-chain.Devem verificar se as constantes foram geradas e armazenadas corretamente.Devem confirmar se o número de rodadas corresponde ao corpo e ao expoente.Devem testar casos extremos, como entradas zero, elementos máximos do corpo, entradas repetidas e dados de tamanho variável.Uma primitiva criptográfica só é segura quando toda a implementação é segura.Hash MiMC e vetores de teste
Vetores de teste são exemplos conhecidos de entrada e saída usados para verificar se uma implementação funciona corretamente.As implementações MiMC devem publicar ou incluir vetores de teste da variante exata usada.Os vetores de teste ajudam desenvolvedores a comparar implementações em circuito, JavaScript, Rust, Solidity ou em sistemas de prova de backend.Se duas implementações produzirem saídas diferentes para as mesmas entradas, pelo menos uma delas usa parâmetros diferentes ou contém um erro.Os vetores de teste devem incluir entradas comuns, entradas zero, valores de fronteira e exemplos de sponge com várias entradas.Também devem especificar o corpo, o expoente, o número de rodadas, as constantes, a ordem de entrada, a ordem de saída e a codificação.Sem vetores de teste, é mais difícil detectar erros de integração.Em sistemas ZK, vetores de teste fazem parte das práticas básicas de engenharia.Hash MiMC e segurança de carteiras cripto
A maioria dos usuários de criptomoedas não interage diretamente com o hash MiMC.Eles podem usar aplicações que dependem de MiMC em circuitos ZK ocultos.Uma carteira pode exibir apenas uma etapa de geração de provas, uma ação de reivindicação ou uma ação de transação privada.Os usuários não devem precisar fornecer frases-semente ou chaves privadas para aprender sobre MiMC ou usar uma aplicação ZK.As orientações da FTC sobre golpes com criptomoedas alertam que golpistas usam oportunidades falsas e pedidos de pagamento em cripto para roubar fundos.
Os usuários devem ter cuidado com geradores de provas falsos, ferramentas de privacidade falsas e páginas falsas de suporte a carteiras.Uma aplicação ZK legítima não deve pedir que os usuários revelem frases de recuperação da carteira.O hash MiMC é uma ferramenta criptográfica, não um motivo para confiar segredos da carteira a softwares desconhecidos.Hash MiMC e contexto tributário
O hash MiMC, por si só, não cria um evento tributável.É uma primitiva criptográfica usada em softwares e protocolos.No entanto, transações realizadas por meio de aplicações ZK que usam MiMC podem envolver ativos digitais.A página oficial do IRS sobre ativos digitais informa que transações com ativos digitais talvez precisem ser declaradas e que a renda proveniente deles pode ser tributável.
Ao usar aplicações cripto, os usuários devem guardar registros de transferências, swaps, reivindicações, recompensas, taxas, horários, endereços de carteira e hashes de transação.Ferramentas voltadas à privacidade podem dificultar a manutenção de registros pessoais se os usuários não guardarem seus próprios dados.Os usuários não devem presumir que uma transação de conhecimento zero elimina obrigações de declaração.Quem realiza atividades cripto de valor significativo deve consultar um profissional tributário qualificado.Benefícios do hash MiMC
O hash MiMC pode reduzir o custo do hashing em muitos circuitos de conhecimento zero.Ele usa aritmética simples de corpos finitos, que se adapta bem às restrições no estilo SNARK.Seu objetivo de projeto, centrado na baixa complexidade multiplicativa, é claro.Pode ser usado em árvores de Merkle, compromissos, nullifiers e provas privadas de associação.É estudado desde sua publicação na ASIACRYPT 2016.Há implementações práticas em bibliotecas de circuitos ZK.Continua relevante em pesquisas atuais sobre aceleração ZK.Seu principal benefício é permitir hashing criptográfico eficiente quando o hash precisa ser comprovado dentro de um circuito aritmético.Riscos e limitações do hash MiMC
O hash MiMC não é um substituto universal para todas as funções hash.É menos padronizado em ambientes de software gerais do que funções hash tradicionais amplamente utilizadas.Exige escolhas cuidadosas de parâmetros para o corpo, o expoente, o número de rodadas, as constantes e a construção.Pode ser inseguro se o desenvolvedor copiar uma implementação sem compreender o corpo de destino.Pode ser inseguro se o circuito for sub-restringido.Pode ser inseguro se as implementações off-chain e on-chain não corresponderem exatamente.Em alguns sistemas de prova modernos, pode ser menos eficiente do que funções hash compatíveis com ZK mais recentes.A maior limitação é que a segurança do MiMC depende do uso correto, e não apenas do nome “MiMC”.Como avaliar o hash MiMC em um projeto cripto
Comece verificando qual variante MiMC o projeto usa.Analise o corpo finito, o expoente, o número de rodadas, as constantes, a taxa, a capacidade e o tamanho da saída.Verifique se a implementação vem de uma biblioteca revisada ou de código personalizado.Procure vetores de teste públicos compatíveis com as implementações do circuito e do contrato inteligente.Verifique se o projeto foi auditado por revisores com conhecimento de circuitos de conhecimento zero.Analise se MiMC é usado em compromissos, árvores de Merkle, nullifiers, assinaturas, desafios aleatórios ou outra finalidade.Verifique se as entradas usam separação de domínio e conversão inequívoca em elementos do corpo.Um projeto que não consegue explicar claramente seus parâmetros MiMC deve ser tratado com cautela.Erros comuns com o hash MiMC
Um erro comum é presumir que todas as implementações MiMC são compatíveis.Outro erro é alterar o corpo ou o expoente sem uma análise de segurança.Um terceiro erro é reduzir o número de rodadas para economizar restrições.Um quarto erro é usar constantes de rodada sem documentação.Um quinto erro é esquecer a separação de domínio entre diferentes usos do protocolo.Um sexto erro é criar divergências entre o código do circuito e o código do contrato inteligente.Um sétimo erro é usar atribuição onde é necessária uma restrição de circuito.Um oitavo erro é tratar MiMC como substituto geral de funções hash padronizadas fora de contextos ZK.Boas práticas para desenvolvedores
Use MiMC somente quando for adequado ao sistema de prova e às necessidades do protocolo.Quando possível, use implementações revisadas.Documente o corpo, o expoente, as constantes, o número de rodadas, os parâmetros sponge e as regras de codificação.Publique vetores de teste para cada implementação compatível.Verifique se todas as saídas do circuito estão devidamente restringidas.Use separação de domínio para diferentes funções do protocolo.Audite tanto o projeto criptográfico quanto os detalhes da implementação.Compare o desempenho do MiMC com o de outras funções hash compatíveis com ZK antes de escolhê-lo para um novo protocolo.Resumo de SEO e AEO sobre o hash MiMC
Hash MiMC é uma família de funções hash criptográficas compatíveis com ZK, projetada para baixa complexidade multiplicativa.Foi introduzido para oferecer criptografia e hashing eficientes em ambientes como MPC, criptografia totalmente homomórfica e provas de conhecimento zero.MiMC opera sobre corpos finitos e costuma usar funções de potência simples, como
Perguntas frequentes
O que é o hash MiMC?
Hash MiMC é uma construção de hash criptográfico projetada para ser eficiente em circuitos de prova de conhecimento zero e outros ambientes aritméticos.O que significa MiMC?
MiMC significa Minimal Multiplicative Complexity (complexidade multiplicativa mínima).Por que o hash MiMC é considerado compatível com ZK?
O hash MiMC é considerado compatível com ZK porque usa operações aritméticas que podem ser representadas com eficiência em muitos circuitos de prova de conhecimento zero.Hash MiMC é igual a SHA-256?
Não. O hash MiMC foi projetado para circuitos de corpos finitos, enquanto SHA-256 é uma função hash tradicional orientada a bits, amplamente usada em softwares comuns e sistemas Proof of Work.Onde o hash MiMC é usado em cripto?
O hash MiMC é usado em circuitos ZK para árvores de Merkle, compromissos, nullifiers, provas de associação e lógica de aplicações que preservam a privacidade.O hash MiMC opera sobre corpos finitos?
Sim. O hash MiMC foi projetado para operar sobre corpos finitos, como corpos primos usados por muitos sistemas de prova.O hash MiMC é sempre seguro?
Não. A segurança do MiMC depende da variante exata, do corpo, do expoente, do número de rodadas, das constantes, da construção e da correção da implementação.O hash MiMC pode ser usado em contratos inteligentes?
Sim. MiMC pode ser implementado ou verificado em sistemas de contratos inteligentes, mas a implementação on-chain deve corresponder exatamente à implementação do circuito.Qual é o principal risco de usar o hash MiMC em circuitos?
Um dos principais riscos é ter um circuito sub-restringido, no qual a prova não impõe de fato o cálculo de hash MiMC pretendido.Novos projetos ZK devem sempre usar o hash MiMC?
Não. Novos projetos ZK devem comparar MiMC com outras funções hash compatíveis com ZK e escolher com base em segurança, desempenho, compatibilidade com o corpo, suporte das bibliotecas e necessidades de auditoria.Conclusão
Hash MiMC é uma primitiva criptográfica importante na história e na prática dos sistemas cripto de conhecimento zero.Foi projetado para reduzir o custo do hashing em circuitos aritméticos, minimizando operações com muitas multiplicações.Isso o torna útil em SNARKs, projetos relacionados a STARKs, sistemas MPC, compromissos, árvores de Merkle, nullifiers e provas privadas de associação.A força do MiMC vem de sua álgebra simples sobre corpos finitos e de seu foco na eficiência ZK.Seu risco decorre do fato de que todos os parâmetros e detalhes de implementação são importantes.Uma implementação MiMC precisa escolher o corpo, o expoente, o número de rodadas, as constantes, os parâmetros sponge, a codificação das entradas e a separação de domínio corretos.Um circuito ZK que usa MiMC também precisa restringir o cálculo corretamente.Para os usuários, MiMC geralmente é invisível, pois funciona dentro do sistema de prova da aplicação.Para os desenvolvedores, MiMC é uma ferramenta poderosa que exige engenharia cuidadosa e auditoria.A melhor forma de entender o hash MiMC é como uma função hash especializada e compatível com ZK, que ajuda protocolos cripto a comprovar cálculos privados com eficiência, mas somente quando seus parâmetros e restrições de circuito são implementados com precisão.Você também pode gostar
HOT
Criptomoedas que estão em alta atualmente e ganhando atenção significativa do mercado
TOP volume
As criptomoedas com o maior volume de negociação
Recém-adicionados
Criptomoedas listadas recentemente que estão disponíveis para negociação

