¿Cómo usar la capacidad zksnarks de Ethereum?

Pregunta simple pero no pude encontrar la respuesta en ningún lado...

¿Cómo usar la capacidad zksnarks de Ethereum para realizar un envío completamente anónimo de Eter de una billetera a otra?

Respuestas (1)

Una respuesta completa tomaría mucho tiempo y espacio, y la situación general en este momento es que no hay una manera fácil de usar los precompilados de zkSNARK.

El esquema general es el siguiente:

  1. Construya un circuito usando la biblioteca de gadgets libsnark
  2. Genere una clave de prueba y verificación, y exporte la clave de verificación a un contrato como el ejemplo de Christian Reitwiessner
  3. Generar pruebas usando libsnark
  4. Enviar pruebas para contratar

Esto deja fuera muchos detalles, pero es difícil encontrar un buen ejemplo que recorra todos los pasos.


Alternativamente, puede intentar usar ZoKrates , que proporciona un lenguaje de alto nivel que compila hasta zkSNARKs para Ethereum. Esto hace que sea bastante fácil de usar, pero el gran problema es que el lenguaje no es tan expresivo como el C ++ que se usa en libsnark, por lo que construir cosas como operaciones SHA3 o EC no es práctico.

Recomendaría probar ZoKrates primero y luego pasar a libsnark si necesita funciones más avanzadas.

¿ZoKrates no es solo para contratos inteligentes? No me importa la ejecución de contratos inteligentes. Necesito enviar Ether de A a B de manera que B no pueda saber que el Ether proviene de A.
Casi todo en Ethereum es un contrato inteligente. El lema es "Ethereum no tiene funciones", si desea una función, cree un contrato inteligente.
Sí, pero en realidad, Ether es la criptomoneda nativa de Ethereum. Puede enviar Ether sin que se ejecute un contrato inteligente. Por lo que entiendo, ZoKrates se trata solo de la ejecución anónima de contratos inteligentes: no se puede usar para enviar Ether de forma anónima.
Mi punto es que no hay ninguna función en la que pueda enviar ether de forma anónima. Si desea enviar ETH de forma anónima, debe crear un contrato inteligente que actúe como un proxy y maneje todas las operaciones de emparejamiento de EC.
Luego, debe explicar en su respuesta que zksnarks es solo para contratos inteligentes y puede usarse para enviar Ether de forma anónima solo a través de contratos inteligentes... No directamente.
E incluso en ese caso, la cantidad de ether transferida dentro de una transacción sería pública, ¿verdad?