¿Qué es el hash MiMC?
MiMC Hash es una construcción de hash criptográfico diseñada para ser eficiente dentro de sistemas de pruebas de conocimiento cero y otros entornos basados en circuitos aritméticos.MiMC significa Minimal Multiplicative Complexity (complejidad multiplicativa mínima).El nombre refleja su principal objetivo de diseño: utilizar muy pocas operaciones de multiplicación, en comparación con las funciones hash tradicionales, al representarlas dentro de circuitos.En el mundo cripto, MiMC Hash suele mencionarse como una función hash compatible con ZK para SNARK, STARK, sistemas MPC y aplicaciones blockchain centradas en la privacidad.La ficha del artículo de MiMC de ASIACRYPT 2016 describe MiMC como una propuesta de cifrado por bloques y funciones hash criptográficas con baja complejidad multiplicativa.
A diferencia de SHA-256 o Keccak, MiMC no se diseñó principalmente para ofrecer velocidad de hash en software convencional que se ejecuta en CPU.Se diseñó para entornos en los que cada restricción de multiplicación puede aumentar el coste de generar pruebas.Esto convierte a MiMC en una herramienta importante para sistemas blockchain que utilizan pruebas de conocimiento cero para demostrar afirmaciones sin revelar datos privados.Por qué MiMC Hash es importante en el mundo cripto
MiMC Hash es importante porque muchas aplicaciones cripto necesitan usar funciones hash dentro de circuitos de conocimiento cero.Un circuito de conocimiento cero puede tener que demostrar que un usuario conoce un secreto, posee un compromiso, pertenece a un árbol de Merkle o cumple una regla de un contrato inteligente, sin revelar la información oculta.Las funciones hash tradicionales pueden resultar costosas en estos circuitos, ya que sus operaciones bit a bit no son baratas de forma natural en muchos sistemas de pruebas sobre campos finitos.MiMC se diseñó para funcionar de forma natural sobre campos finitos, que son los entornos matemáticos utilizados por muchos sistemas de pruebas.La página de referencia de MiMC explica que MiMC es una familia de cifrados por bloques y funciones hash diseñada específicamente para aplicaciones SNARK.
Esto resulta útil porque un circuito hash más barato puede reducir el tiempo de generación de pruebas, abaratar la generación y hacer más prácticas las aplicaciones de privacidad.MiMC Hash contribuyó a dar forma a la categoría más amplia de funciones hash compatibles con ZK.Aunque se elijan funciones hash más recientes compatibles con ZK, MiMC sigue siendo importante por su madurez histórica, el estudio al que se ha sometido y las numerosas referencias que existen sobre ella.Cómo funciona MiMC Hash
MiMC Hash se construye a partir de operaciones algebraicas sencillas sobre un campo finito.Un campo finito es un conjunto matemático en el que la suma, la resta, la multiplicación y la división siguen reglas modulares estrictas.La idea central es aplicar repetidamente una función de potencia sencilla junto con constantes de ronda y valores similares a claves.La página de referencia de MiMC describe el componente principal como la función
Algunas implementaciones utilizan otros exponentes, como
El circuito MiMCSponge de circomlib implementa MiMC-2n/n como hash mediante una construcción sponge.
MiMC Hash y la complejidad multiplicativa mínima
La complejidad multiplicativa mínima significa que el diseño intenta reducir el número de operaciones de multiplicación necesarias para expresar una función.Esto es importante porque muchos sistemas de pruebas de conocimiento cero miden el coste del circuito mediante restricciones similares a multiplicaciones.En un entorno de programación normal, una función hash bit a bit puede ser rápida y práctica.En un circuito ZK, las operaciones bit a bit pueden resultar costosas porque hay que demostrar que cada una se ha realizado correctamente.MiMC utiliza una aplicación algebraica de potencias sencilla que puede representarse con menos restricciones.La ficha del artículo de MiMC explica que la motivación para reducir la complejidad multiplicativa surgió de aplicaciones MPC, de cifrado totalmente homomórfico y de pruebas de conocimiento cero, donde los cálculos lineales son relativamente baratos.En pocas palabras, MiMC intenta reducir el tamaño de la parte más costosa de la prueba.Por eso se denomina compatible con ZK y no simplemente rápida.MiMC Hash y las pruebas de conocimiento cero
Las pruebas de conocimiento cero permiten a una parte demostrar que una afirmación es verdadera sin revelar los datos privados que la sustentan.MiMC Hash puede utilizarse dentro de pruebas de conocimiento cero cuando la afirmación incluye compromisos, rutas de Merkle, nullifiers o datos ocultos de una cuenta.El artículo AMAZE de 2024, sobre la aceleración de MiMC, describe MiMC como una función hash madura y compatible con ZK, con una estructura algebraica sencilla adecuada para aplicaciones ZKP.
Un circuito ZK puede incluir MiMC para demostrar que una entrada secreta genera el hash de un compromiso público.También puede utilizarla para demostrar que una hoja pertenece a un árbol de Merkle sin revelar públicamente la ruta completa.Como MiMC es compatible con las operaciones aritméticas, puede reducir el número de restricciones frente a funciones hash diseñadas principalmente para rendir bien en software a nivel de bits.Un menor número de restricciones puede acelerar y abaratar la generación de pruebas.Esto es especialmente importante en sistemas blockchain, donde el tiempo de generación de pruebas y el coste de verificación pueden afectar a la experiencia real de los usuarios.MiMC Hash y los SNARK
Los SNARK son sistemas de pruebas de conocimiento cero que suelen representar los cálculos como circuitos aritméticos.En muchos entornos SNARK, las restricciones de multiplicación son costosas en comparación con las sumas y las operaciones con constantes.El artículo de investigación sobre funciones hash compatibles con ZK explica que, en los entornos SNARK basados en R1CS, el coste viene determinado por el número de restricciones.
MiMC se diseñó para mantener bajo ese número de restricciones.Esto hace que resulte atractiva para circuitos SNARK que necesitan calcular hashes repetidamente.El cálculo repetido de hashes es común en pruebas de árboles de Merkle, sistemas de transferencias privadas, sistemas de credenciales y sistemas de pertenencia anónima.Un pequeño ahorro por cada hash puede convertirse en un ahorro importante cuando un circuito calcula cientos o miles de hashes.El valor de MiMC para los SNARK se debe a que utiliza matemáticas que el sistema de pruebas puede expresar de forma natural.MiMC Hash y los STARK
Los STARK son otra familia de sistemas de pruebas de conocimiento cero que utiliza trazas de ejecución algebraicas y restricciones polinómicas.MiMC también se analiza en contextos STARK por su sencilla estructura algebraica de rondas.La página de referencia de MiMC se aloja en un sitio más amplio sobre criptografía simétrica compatible con SNARK, STARK y MPC.En sistemas de estilo STARK, el grado de las restricciones y el tamaño de la traza de ejecución pueden afectar mucho al rendimiento.Una función de ronda basada en potencias sencillas puede ser más fácil de expresar que una función hash tradicional con muchas operaciones de bits.Esto no significa que MiMC sea siempre la mejor opción de hash para STARK.Significa que MiMC pertenece a una familia más amplia de primitivas criptográficas orientadas a la aritmetización.Los desarrolladores deben elegir la función hash que mejor se adapte al sistema de pruebas, el campo, el nivel de seguridad y la madurez de la implementación.MiMC Hash y los campos finitos
MiMC Hash opera sobre campos finitos, no sobre números enteros ordinarios sin límite.Un campo finito proporciona al circuito un universo matemático fijo en el que los valores dan la vuelta al llegar al tamaño de un campo primo o binario.La página de referencia de MiMC indica que sus cálculos tienen lugar en
MiMC Hash y las constantes de ronda
Las constantes de ronda son valores fijos que se suman durante las rondas de la permutación o el cifrado MiMC.Ayudan a evitar que las rondas sean demasiado simétricas o predecibles.Conviene generar estas constantes de forma transparente para que los desarrolladores y auditores puedan confiar en que no se eligieron con fines maliciosos.Muchas implementaciones generan constantes a partir de cadenas semilla públicas mediante una función hash estándar.El artículo de investigación sobre funciones hash compatibles con ZK señala que las implementaciones suelen generar constantes de ronda de MiMC a partir de cadenas como
MiMC Hash y la construcción sponge
Una construcción sponge es una forma habitual de crear una función hash a partir de una permutación.Consta de una fase de absorción y otra de extracción.Durante la absorción, los valores de entrada se mezclan en una parte del estado interno.Durante la extracción, se generan valores de salida a partir del estado transformado.El artículo de investigación sobre funciones hash compatibles con ZK explica que MiMC Hash se basa en el esquema sponge: los bloques del mensaje se absorben en una parte del estado y se transforman con una permutación MiMC.Los diseños sponge resultan útiles porque admiten entradas de longitud variable y longitudes de salida flexibles.En circuitos cripto, pueden servir para convertir varios elementos de un campo en un único compromiso o resumen.Sin embargo, hay que elegir cuidadosamente parámetros sponge como la tasa, la capacidad, el tamaño del campo y el número de rondas.MiMC Hash frente a SHA-256
MiMC Hash y SHA-256 son funciones hash criptográficas, pero se optimizan para entornos distintos.SHA-256 se utiliza ampliamente en software, hardware y sistemas Proof of Work convencionales.MiMC Hash está optimizada para circuitos aritméticos y sistemas de pruebas sobre campos finitos.Un circuito SHA-256 puede requerir muchas restricciones porque SHA-256 utiliza operaciones bit a bit, rotaciones y lógica booleana.En muchos entornos SNARK, un circuito MiMC puede ser mucho menos costoso porque sus operaciones encajan con la aritmética de campos.Esto no significa que MiMC deba sustituir a SHA-256 en todos los casos.Significa que MiMC puede ser una opción más adecuada cuando el hash debe demostrarse dentro de un circuito ZK.Para calcular hashes de ficheros off-chain de uso general o mantener compatibilidad con estándares ampliamente extendidos, las funciones hash tradicionales pueden seguir siendo más apropiadas.MiMC Hash frente a Keccak
Keccak se utiliza ampliamente como primitiva hash de uso general en los sistemas de contratos inteligentes de estilo Ethereum.Por lo general, se elige MiMC cuando un desarrollador necesita calcular hashes de forma eficiente dentro de un circuito de conocimiento cero.La compatibilidad con Keccak puede ser útil para ajustarse a la lógica existente de direcciones, firmas o contratos.La eficiencia de MiMC puede resultar útil para demostrar relaciones entre datos ocultos en circuitos aritméticos.Si el diseño necesita compatibilidad y generación eficiente de pruebas, un desarrollador puede utilizar Keccak fuera del circuito y MiMC dentro de él.Esta separación debe diseñarse con cuidado, ya que las funciones hash distintas generan compromisos y supuestos de confianza diferentes.Los usuarios no deben suponer que un resumen MiMC y uno Keccak son intercambiables.La opción adecuada depende de dónde se calcule el hash y de qué deba verificarse.MiMC Hash frente a Poseidon
MiMC y Poseidon son funciones hash compatibles con ZK.MiMC es más antigua y tiene importancia histórica.Poseidon es una función hash más reciente, orientada a la aritmetización, que se suele elegir en sistemas ZK modernos porque puede ser más eficiente para ciertos tipos de entrada y sistemas de pruebas.El artículo de investigación sobre funciones hash compatibles con ZK describe MiMC como la primera función hash de este tipo e indica que después se propusieron funciones más recientes.Esto no significa que MiMC haya quedado obsoleta en todos los casos.Significa que los desarrolladores deben comparar los análisis de seguridad, el coste del circuito, el soporte de las bibliotecas, el historial de auditorías, la compatibilidad con el campo y las expectativas del ecosistema.Los protocolos existentes pueden conservar MiMC por compatibilidad con compromisos y raíces de Merkle ya implementados.Los protocolos nuevos pueden elegir otra función hash compatible con ZK después de realizar pruebas de rendimiento y revisar las auditorías.MiMC Hash en árboles de Merkle
MiMC Hash se utiliza a menudo en árboles de Merkle dentro de sistemas de conocimiento cero.Un árbol de Merkle agrupa muchos valores en una raíz mediante el cálculo repetido del hash de pares de nodos.Un usuario puede demostrar que una hoja pertenece al árbol mostrando una ruta de Merkle.En un circuito ZK, puede demostrar que la ruta es válida sin revelar datos privados innecesarios.Si el circuito utiliza una función hash convencional con muchas operaciones de bits en cada nivel del árbol, la prueba puede resultar costosa.El uso de MiMC puede reducir el coste en restricciones de cada paso de hash.Por eso MiMC aparece en diseños de privacidad, identidad, votación y pruebas de pertenencia.La seguridad del árbol de Merkle sigue dependiendo de que el hash y la construcción del árbol sean correctos y de que las restricciones del circuito estén bien definidas.MiMC Hash en los compromisos
Un compromiso permite a un usuario fijar un valor sin revelarlo de inmediato.MiMC Hash puede utilizarse para crear compromisos a partir de valores secretos y aleatoriedad.Por ejemplo, un protocolo puede calcular el hash de un valor de nota secreto, una clave del propietario y una sal aleatoria para generar un compromiso público.Más adelante, el usuario puede demostrar que conoce los datos ocultos dentro de un circuito ZK.Si el hash y el protocolo están bien diseñados, el compromiso público no revela la entrada secreta.Este patrón es habitual en los sistemas cripto que preservan la privacidad.MiMC resulta útil porque el hash del compromiso puede comprobarse de forma eficiente dentro del circuito.El esquema de compromiso debe incluir suficiente aleatoriedad para evitar ataques de adivinación contra valores secretos pequeños.MiMC Hash en los nullifiers
Un nullifier es un valor que se utiliza para evitar el doble gasto o las reclamaciones duplicadas sin revelar el secreto original.MiMC Hash puede ayudar a derivar un nullifier a partir de una clave secreta, una nota o un dato de identidad.El protocolo puede publicar el nullifier cuando se realiza una acción privada.Otros usuarios pueden comprobar que ese mismo nullifier no se haya publicado anteriormente.La prueba de conocimiento cero puede demostrar que el nullifier se ha derivado correctamente sin revelar el secreto subyacente.Esto es importante para las transferencias privadas, las reclamaciones privadas y las acciones de pertenencia anónimas.Si el hash de los nullifiers es incorrecto, los usuarios podrían gastar dos veces o perder privacidad.MiMC puede hacer más eficientes las comprobaciones de nullifiers, pero es necesario auditar cuidadosamente toda la lógica del protocolo.MiMC Hash en los contratos inteligentes
Los contratos inteligentes pueden verificar pruebas que incluyan compromisos o raíces de Merkle calculados con MiMC Hash.Es posible que el contrato no vuelva a calcular cada valor oculto, pero puede verificar una prueba generada a partir de un circuito que incluía operaciones MiMC.Algunos contratos también pueden implementar MiMC directamente si necesitan calcular hashes on-chain.MiMC on-chain puede resultar útil cuando un contrato necesita una función hash compatible con ZK que utilice aritmética de campos.Sin embargo, implementar criptografía en contratos inteligentes es arriesgado, ya que pequeños errores pueden comprometer la seguridad.Cuando sea posible, los desarrolladores deben preferir bibliotecas revisadas e implementaciones auditadas.También deben verificar que la función on-chain coincida exactamente con la función del circuito.Una discrepancia entre MiMC en el circuito y en el contrato puede hacer que fallen las pruebas o crear brechas de seguridad.MiMC Hash y Circom
Circom es un lenguaje para escribir circuitos aritméticos destinados a pruebas de conocimiento cero.El repositorio circomlib contiene plantillas de circuito reutilizables para primitivas criptográficas y otros componentes.
circomlib incluye una implementación del circuito MiMCSponge.Esto es importante porque muchos desarrolladores ZK utilizan bibliotecas de circuitos en lugar de escribir cada primitiva desde cero.El uso de bibliotecas puede reducir el tiempo de desarrollo, pero no elimina la necesidad de realizar auditorías.Los desarrolladores deben asegurarse de que la versión de la biblioteca, los parámetros, las restricciones y el campo coincidan con el diseño del protocolo.También deben evitar copiar fragmentos obsoletos de tutoriales antiguos sin comprobar el comportamiento actual de la biblioteca.En el desarrollo ZK, una función de biblioteca solo es segura cuando se utiliza correctamente en el circuito completo.MiMC Hash y los circuitos con restricciones insuficientes
Un circuito con restricciones insuficientes es un circuito ZK que no impone por completo el cálculo que afirma demostrar.Este es uno de los riesgos más graves al utilizar MiMC o cualquier otra función hash dentro de un circuito.El tutorial de auditoría ZK sobre un error de restricciones en MiMC Hash describe un caso en el que al circuito de MiMC Hash le faltaba una restricción porque se utilizó un operador de asignación en vez de uno de restricción.
El problema no era que el diseño matemático de MiMC estuviera roto automáticamente.El problema era que el circuito no restringía la salida al cálculo hash previsto.Esta lección es importante para todos los protocolos ZK.Una función hash robusta no puede proteger un protocolo si el circuito no exige realmente su uso.Los desarrolladores ZK deben probar las restricciones, realizar auditorías y, cuando sea viable, utilizar comprobaciones formales o basadas en propiedades.Propiedades de seguridad de MiMC Hash
MiMC Hash está diseñada para ofrecer propiedades de seguridad criptográfica, como resistencia a colisiones y resistencia a la preimagen, con los parámetros elegidos.La resistencia a colisiones significa que debería resultar difícil encontrar dos entradas distintas con la misma salida hash.La resistencia a la preimagen significa que debería resultar difícil recuperar una entrada a partir de una salida hash.La resistencia a la segunda preimagen significa que debería resultar difícil encontrar una entrada distinta que coincida con la salida hash de una entrada conocida.Estas propiedades dependen de la variante MiMC concreta, el campo, el exponente, el número de rondas, las constantes y el modo de construcción.La página de referencia de MiMC indica que, según el análisis que recoge, hasta entonces no se había encontrado un ataque contra MiMC-n/n o MiMC-p/p con todas sus rondas, aunque señala problemas en algunas variantes de cifrado por bloques Feistel.Los desarrolladores no deben reducir el número de rondas para ahorrar restricciones sin una justificación criptográfica sólida.Modificar parámetros sin una revisión experta puede debilitar la seguridad.MiMC Hash y el número de rondas
El número de rondas es la cantidad de veces que se aplica la función de ronda de MiMC.Un mayor número de rondas suele aumentar la resistencia al criptoanálisis, pero también eleva el coste del circuito.Menos rondas pueden mejorar el rendimiento, pero reducir la seguridad.La elección de los parámetros MiMC suele basarse en el tamaño del campo, el exponente, el análisis de seguridad y el tipo de construcción.La implementación MiMCSponge de circomlib incluye comentarios con el cálculo del número de rondas para un campo primo y un exponente específicos.Esto no significa que todas las implementaciones MiMC deban utilizar el mismo número sin analizarlo.El número de rondas debe corresponder al campo, el exponente, la construcción y el objetivo de seguridad exactos.El protocolo debe documentar sus parámetros MiMC para que los auditores y los usuarios puedan verificarlos.MiMC Hash y los exponentes
El exponente es la potencia utilizada en la función de ronda no lineal, como
El diseño original de MiMC suele explicarse con
El artículo de investigación sobre funciones hash compatibles con ZK señala que, en ciertos campos, la S-box
MiMC Hash y la separación de dominios
La separación de dominios consiste en evitar que una misma función hash se reutilice de forma confusa para distintas finalidades dentro de un protocolo.Un protocolo puede utilizar MiMC para compromisos, nullifiers, nodos de Merkle y valores de desafío.Si todos esos usos comparten el mismo formato de entrada sin separación, podrían aparecer colisiones inesperadas o confusiones entre partes del protocolo.La separación de dominios puede utilizar prefijos fijos, etiquetas, constantes distintas, claves diferentes o formatos de entrada estructurados.El método exacto debe adaptarse al sistema de pruebas y a la representación del campo.Una buena separación de dominios facilita las auditorías del protocolo.También reduce la posibilidad de que un valor válido en un contexto se reutilice de forma peligrosa en otro.MiMC es una primitiva; para que un protocolo sea seguro, se necesita diseñar cuidadosamente las entradas que utiliza.MiMC Hash y la codificación de elementos del campo
MiMC Hash suele procesar elementos de un campo, no cadenas de texto arbitrarias directamente.Esto plantea una cuestión de codificación.Los desarrolladores deben decidir cómo convertir bytes, direcciones, importes, identificadores y claves públicas en elementos del campo.Una codificación deficiente puede generar ambigüedad, truncamiento, desbordamiento o confusión entre protocolos.Por ejemplo, dos conjuntos de bytes distintos no deberían transformarse accidentalmente en la misma secuencia de elementos del campo, salvo que el protocolo lo permita de forma deliberada.Cuando sea necesario, la longitud de la entrada debe codificarse o hacerse inequívoca de otra forma.Todas las implementaciones deben coincidir en el orden de bytes, el relleno, la reducción módulo y los límites del campo.Muchos errores de MiMC se deben a fallos de integración, no a la idea central de la función hash.MiMC Hash y el rendimiento
MiMC Hash es eficiente en circuitos aritméticos porque minimiza las operaciones costosas similares a multiplicaciones.Esto puede reducir el tiempo de generación de pruebas y el tamaño del circuito.El artículo AMAZE de 2024 afirma que las funciones hash criptográficas estándar, como SHA-2, pueden ser ineficientes en entornos ZKP y que las funciones hash compatibles con ZK se crean teniendo en cuenta la eficiencia en ZKP.El mismo artículo presenta implementaciones de MiMC optimizadas para hardware en aplicaciones ZK e informa de mejoras de rendimiento frente a implementaciones estándar en CPU en el entorno de prueba utilizado.Esto demuestra que MiMC sigue siendo relevante en la investigación actual sobre hardware ZK y rendimiento.Sin embargo, el rendimiento debe medirse en el sistema de destino real.Una función hash eficiente en un sistema de pruebas puede no ser óptima en otro.Las pruebas de rendimiento deben incluir el tiempo del prover, el coste del verifier, el número de restricciones, la memoria, la madurez de la implementación y el historial de auditorías.MiMC Hash y los requisitos de auditoría
MiMC Hash debe auditarse cuando se utiliza en sistemas cripto de producción.Los auditores deben revisar los parámetros matemáticos, las restricciones del circuito, la codificación de entradas, la separación de dominios, el lenguaje de implementación y la lógica de verificación del contrato inteligente.Deben confirmar que la salida del circuito está restringida al cálculo MiMC previsto.Deben comparar los vectores de prueba del código off-chain, el código del circuito y el código on-chain.Deben comprobar que las constantes se generan y almacenan correctamente.Deben verificar que el número de rondas corresponda al campo y al exponente.Deben probar casos límite como entradas cero, elementos máximos del campo, entradas repetidas y datos de longitud variable.Una primitiva criptográfica solo es segura si toda la implementación lo es.MiMC Hash y los vectores de prueba
Los vectores de prueba son ejemplos conocidos de entradas y salidas que sirven para verificar que una implementación funciona correctamente.Las implementaciones MiMC deben publicar o incluir vectores de prueba para la variante exacta que utilizan.Estos vectores ayudan a comparar una implementación en circuito, JavaScript, Rust, Solidity o el backend del prover.Si dos implementaciones producen salidas distintas para las mismas entradas, al menos una utiliza parámetros diferentes o contiene un error.Los vectores de prueba deben incluir entradas normales, entradas cero, valores límite y ejemplos sponge con múltiples entradas.También deben especificar el campo, el exponente, el número de rondas, las constantes, el orden de las entradas y las salidas y la codificación.Sin vectores de prueba, resulta más difícil detectar errores de integración.En los sistemas ZK, los vectores de prueba forman parte de las prácticas básicas de ingeniería.MiMC Hash y la seguridad de las wallets cripto
La mayoría de los usuarios cripto no interactúan directamente con MiMC Hash.Pueden utilizar aplicaciones que recurran a MiMC dentro de circuitos ZK ocultos.Una wallet quizá solo muestre un paso de generación de pruebas, una acción de reclamación o una transacción privada.Los usuarios no deberían tener que proporcionar frases semilla o claves privadas para informarse sobre MiMC o utilizar una aplicación ZK.La guía de la FTC sobre estafas cripto advierte de que los estafadores utilizan oportunidades falsas y solicitudes de pagos en criptomonedas para robar fondos.
Los usuarios deben tener cuidado con los generadores de pruebas falsos, las herramientas de privacidad fraudulentas y las páginas falsas de soporte de wallets.Una aplicación ZK legítima no debería pedir a los usuarios que revelen sus frases de recuperación.MiMC Hash es una herramienta criptográfica, no un motivo para confiar secretos de la wallet a software desconocido.MiMC Hash y el contexto fiscal
MiMC Hash por sí misma no genera un hecho imponible.Es una primitiva criptográfica utilizada dentro de software y protocolos.Sin embargo, las transacciones realizadas a través de aplicaciones ZK que utilizan MiMC pueden implicar activos digitales.La página oficial del IRS sobre activos digitales indica que quizá haya que declarar las transacciones con estos activos y que sus ingresos pueden estar sujetos a impuestos.
Al utilizar aplicaciones cripto, los usuarios deben llevar registros de transferencias, swaps, reclamaciones, recompensas, comisiones, marcas de tiempo, direcciones de wallet y hashes de transacción.Las herramientas centradas en la privacidad pueden dificultar el mantenimiento de registros personales si los usuarios no guardan sus propios datos.Los usuarios no deben suponer que una transacción de conocimiento cero elimina las obligaciones de información.Quienes realicen actividades cripto de valor significativo deberían consultar a un profesional fiscal cualificado.Ventajas de MiMC Hash
MiMC Hash puede reducir el coste de calcular hashes dentro de muchos circuitos de conocimiento cero.Utiliza operaciones sencillas sobre campos finitos que encajan bien con las restricciones de estilo SNARK.Tiene un objetivo de diseño claro, centrado en reducir la complejidad multiplicativa.Puede utilizarse en árboles de Merkle, compromisos, nullifiers y pruebas privadas de pertenencia.Se estudia desde su publicación en ASIACRYPT 2016.Cuenta con implementaciones prácticas en bibliotecas de circuitos ZK.Sigue siendo relevante en la investigación actual sobre aceleración ZK.Su principal ventaja es permitir un cálculo hash eficiente cuando hay que demostrarlo dentro de un circuito aritmético.Riesgos y limitaciones de MiMC Hash
MiMC Hash no es un sustituto universal de todas las funciones hash.Está menos estandarizada en entornos de software general que las funciones hash tradicionales de uso extendido.Sus parámetros —el campo, el exponente, el número de rondas, las constantes y la construcción— deben elegirse con cuidado.Puede ser insegura si un desarrollador copia una implementación sin entender el campo de destino.También puede ser insegura si el circuito no impone suficientes restricciones.Puede ser insegura si las implementaciones off-chain y on-chain no coinciden exactamente.En algunos sistemas de pruebas modernos puede resultar menos eficiente que otras funciones hash compatibles con ZK más recientes.Su principal limitación es que la seguridad de MiMC depende de que se utilice correctamente, no solo de que se llame «MiMC».Cómo evaluar MiMC Hash en un proyecto cripto
Empieza por comprobar qué variante de MiMC utiliza el proyecto.Revisa el campo finito, el exponente, el número de rondas, las constantes, la tasa, la capacidad y la longitud de salida.Comprueba si la implementación procede de una biblioteca revisada o de código personalizado.Busca vectores de prueba públicos que coincidan con las implementaciones del circuito y del contrato inteligente.Comprueba si el proyecto ha sido auditado por especialistas en circuitos de conocimiento cero.Revisa si MiMC se utiliza para compromisos, árboles de Merkle, nullifiers, firmas, desafíos aleatorios u otra finalidad.Comprueba si las entradas se codifican con separación de dominios y una conversión inequívoca a elementos del campo.Conviene desconfiar de un proyecto que no pueda explicar con claridad sus parámetros MiMC.Errores habituales al usar MiMC Hash
Un error común es suponer que todas las implementaciones MiMC son compatibles.Otro es cambiar el campo o el exponente sin revisar la seguridad.Un tercer error es reducir el número de rondas para ahorrar restricciones.Un cuarto error es utilizar constantes de ronda no documentadas.Un quinto error es olvidar la separación de dominios entre distintos usos del protocolo.Un sexto error es hacer que el código del circuito y el del contrato inteligente no coincidan.Un séptimo error es utilizar una asignación cuando se necesita una restricción del circuito.Un octavo error es tratar MiMC como sustituto de uso general de las funciones hash estandarizadas fuera del contexto ZK.Buenas prácticas para desarrolladores
Utiliza MiMC solo cuando se adapte a las necesidades del sistema de pruebas y del protocolo.Siempre que sea posible, utiliza implementaciones revisadas.Documenta el campo, el exponente, las constantes, el número de rondas, los parámetros sponge y las reglas de codificación.Publica vectores de prueba para cada implementación admitida.Verifica que todas las salidas del circuito estén correctamente restringidas.Aplica separación de dominios a las distintas funciones del protocolo.Audita tanto el diseño criptográfico como los detalles de implementación.Antes de elegir MiMC para un protocolo nuevo, compara su rendimiento con el de otras funciones hash compatibles con ZK.Resumen SEO y AEO de MiMC Hash
MiMC Hash es una familia de funciones hash criptográficas compatibles con ZK, diseñada para ofrecer una baja complejidad multiplicativa.Se introdujo para cifrar y calcular hashes de forma eficiente en entornos como MPC, el cifrado totalmente homomórfico y las pruebas de conocimiento cero.MiMC opera sobre campos finitos y suele utilizar funciones de potencia sencillas como
Preguntas frecuentes
¿Qué es MiMC Hash?
MiMC Hash es una construcción de hash criptográfico diseñada para ser eficiente en circuitos de pruebas de conocimiento cero y otros entornos aritméticos.¿Qué significa MiMC?
MiMC significa Minimal Multiplicative Complexity (complejidad multiplicativa mínima).¿Por qué se dice que MiMC Hash es compatible con ZK?
MiMC Hash se considera compatible con ZK porque utiliza operaciones aritméticas que pueden representarse de forma eficiente en muchos circuitos de pruebas de conocimiento cero.¿MiMC Hash es igual que SHA-256?
No. MiMC Hash está diseñada para circuitos sobre campos finitos, mientras que SHA-256 es una función hash tradicional basada en bits, utilizada ampliamente en software convencional y sistemas Proof of Work.¿Dónde se utiliza MiMC Hash en el mundo cripto?
MiMC Hash se utiliza en circuitos ZK para árboles de Merkle, compromisos, nullifiers, pruebas de pertenencia y lógica de aplicaciones que preservan la privacidad.¿MiMC Hash opera sobre campos finitos?
Sí. MiMC Hash está diseñada para operar sobre campos finitos, como los campos primos utilizados por muchos sistemas de pruebas.¿MiMC Hash es siempre segura?
No. La seguridad de MiMC depende de la variante concreta, el campo, el exponente, el número de rondas, las constantes, la construcción y la corrección de la implementación.¿Se puede utilizar MiMC Hash en contratos inteligentes?
Sí. MiMC puede implementarse o verificarse en sistemas de contratos inteligentes, pero la implementación on-chain debe coincidir exactamente con la del circuito.¿Cuál es el principal riesgo al usar MiMC Hash en circuitos?
Un riesgo importante es que el circuito no tenga suficientes restricciones y, por tanto, la prueba no imponga realmente el cálculo MiMC previsto.¿Todos los proyectos ZK nuevos deberían utilizar MiMC Hash?
No. Los proyectos ZK nuevos deben comparar MiMC con otras funciones hash compatibles con ZK y elegir en función de la seguridad, el rendimiento, la compatibilidad con el campo, el soporte de bibliotecas y las necesidades de auditoría.Conclusión
MiMC Hash es una primitiva criptográfica importante en la historia y la práctica de los sistemas cripto de conocimiento cero.Se diseñó para reducir el coste de calcular hashes dentro de circuitos aritméticos minimizando las operaciones con multiplicaciones.Esto la hace útil en SNARK, diseños relacionados con STARK, sistemas MPC, compromisos, árboles de Merkle, nullifiers y pruebas privadas de pertenencia.La fortaleza de MiMC reside en su sencilla álgebra sobre campos finitos y su objetivo de ofrecer eficiencia ZK.Su riesgo radica en que todos los parámetros y detalles de implementación son importantes.Una implementación MiMC debe elegir correctamente el campo, el exponente, el número de rondas, las constantes, los parámetros sponge, la codificación de entradas y la separación de dominios.Además, el circuito ZK que utiliza MiMC debe imponer correctamente el cálculo.Para los usuarios, MiMC suele pasar desapercibida porque se ejecuta dentro del sistema de pruebas de la aplicación.Para los desarrolladores, es una herramienta potente que exige una implementación cuidadosa y una revisión mediante auditorías.La mejor forma de entender MiMC Hash es como una función hash especializada y compatible con ZK que ayuda a los protocolos cripto a demostrar cálculos privados de forma eficiente, siempre que sus parámetros y restricciones de circuito se implementen con precisión.También te puede interesar
WhatsMiner M30S++
Dominios Web3
Proyectos Web3
POPULAR
Criptomonedas de moda que están acaparando la atención del mercado
Volumen TOP
Las criptomonedas con mayor volumen de trading
Recién Añadidos
Criptomonedas recientemente listadas y disponibles para operar

