La jerarquía del código de la biblioteca libsnark es muy clara. libsnark también ofrece una imagen completa de los algoritmos relacionados con SNARK, varias relaciones, lenguaje, sistema de prueba. Para generar mejor los circuitos R1CS, libsnark abstrae la protoplaca y el dispositivo, lo cual es conveniente para que los desarrolladores construyan circuitos rápidamente. Antes de leer el código de muestra, lea detenidamente el análisis del código fuente de libsnark: Prueba de conocimiento cero: análisis del código fuente de libsnark
Lo único que lamento es que libsnark no dio un ejemplo completo de construcción de circuitos. Los principiantes que quieren construir sus propios circuitos están un poco confundidos al principio.
Para que sea más fácil para los principiantes escribir sus propios circuitos, un colega escribió un ejemplo de cómo construir un circuito basado en libsnark y generar y verificar el circuito:
https://github.com/StarLI-Trampilla/libsnark_sample
BNB Chain lanzará la solución de expansión de prueba de conocimiento cero zkBNB mainnet a finales de año: noticias del 8 de septiembre, BNB Chain anunció que lanzó la solución de expansión basada en prueba de conocimiento cero zkBNB testnet el 2 de septiembre, lo que permite a los desarrolladores comenzar creación de aplicaciones, planes para lanzar la red principal a finales de año. Según BNBChain, zkBNB tiene como objetivo proporcionar una velocidad de transacción más rápida, una finalización más rápida y tarifas de gas más bajas, lo que es un gran avance para que BNBChain alcance escala.
Según la introducción, las características de zkBNB incluyen: soporte para pago integrado rápido y intercambio atómico, utilizando el innovador intercambio AMM integrado y el grupo de liquidez para casos de uso de DeFi, los activos digitales se negociarán automáticamente sin permiso; TPS alcanza 5000-10000 ; mercado NFT incorporado y servicio API; servicio de nombre de dominio incorporado, etc. [2022/9/8 13:15:41]
Los principiantes pueden desarrollar sus propios circuitos basados en este ejemplo. Se elige un árbol de Merkle como ejemplo de circuito porque la estructura de datos del árbol de Merkle se usa mucho en la aplicación de pruebas de conocimiento cero.
a16z anunció el lanzamiento de una herramienta de recopilación de lanzamientos desde el aire utilizando tecnología de prueba de conocimiento cero: Jinse Finance informó que la firma de capital de riesgo criptográfico a16z anunció en su sitio web oficial el lanzamiento de una herramienta de recopilación de lanzamientos aéreos utilizando tecnología de prueba de conocimiento cero, que permite que los proyectos criptográficos proteger a los contribuyentes cuando emiten lanzamientos desde el aire a los contribuyentes activos Abordar la privacidad, especialmente si los tokens se lanzan desde el aire en función de la actividad del usuario fuera de la cadena.
Específicamente, los destinatarios potenciales de airdrop pueden proporcionar mensajes (llamados "compromisos") a través de canales públicos (como Telegram, Discord, Twitter o Signal); el airdropper luego crea un árbol Merkle al combinar estos compromisos. Los posibles destinatarios pueden reclamar su parte del airdrop al proporcionar una prueba Merkle de conocimiento cero de que son el autor del compromiso en el árbol, sin revelar cuál.
Según a16z, reclamar tokens de esta manera mezcla la dirección pública del destinatario con las de todos los demás usuarios con derecho al airdrop, protegiendo así su anonimato. [2022/3/28 14:21:12]
Este ejemplo construye un circuito de verificación de un camino Merkle, genera y verifica pruebas. La profundidad del árbol merkle es 3 y el cálculo del árbol merkle utiliza la función hash sha256. La estructura del código es relativamente clara y main.cpp en el directorio merkle es la función principal. El merklecircuit.h bajo el directorio de circuitos es la implementación del circuito. Todo el proyecto está compilado con cmake.
Monero completó la auditoría de código Bulletproofs+ del sistema de prueba de conocimiento cero: el 15 de febrero, Monero tuiteó oficialmente que había completado la auditoría de código Bulletproofs+ del sistema de prueba de conocimiento cero. Noticias anteriores, el código Bulletproofs+ del sistema de prueba de conocimiento cero fue aprobado para su uso en el protocolo Monero. Posteriormente, el plan oficial es recaudar 90,3 XMR para la auditoría Bulletproofs+ del sistema de prueba de conocimiento cero. [2021/2/15 19:49:05]
El circuito se llama MerkleCircuit y se basa principalmente en dos dispositivos: merkle_authentication_path_variable y merkle_tree_check_read_gadget. merkle_authentication_path_variable proporciona una ruta en el árbol Merkle. merkle_tree_check_read_gadget comprueba que dado un nodo hoja, se puede calcular la raíz correcta.
El código del sistema de prueba de conocimiento cero Bulletproofs+ está aprobado para usarse en el protocolo Monero: el 30 de diciembre, Monero tuiteó y anunció que el código del sistema de prueba de conocimiento cero Bulletproofs+ ahora tiene licencia y puede usarse en el protocolo Monero para reemplazar los sistemas existentes de prueba de conocimiento cero Hay Bulletproofs. El nuevo sistema permitirá estructuras de transacciones de Monero más pequeñas, transacciones de billetera más rápidas y una verificación de red más rápida. Además, el funcionario afirmó que el código es funcional e incluye pruebas del algoritmo subyacente, y debe ser revisado por un tercero si se considera su implementación en la actualización de la red Monero en el futuro. [2020/12/30 16:04:23]
Para implementar un circuito, implemente principalmente dos funciones de interfaz:
generate_r1cs_constraints: genera R1CS, el circuito es relativamente simple, solo deja que los dos dispositivos dependientes generen R1CS.
La organización de investigación y desarrollo a prueba de conocimiento cero StarkWare lanzó un servicio de función de retraso verificable basado en STARK: La organización de investigación y desarrollo a prueba de conocimiento cero StarkWare lanzó un servicio de función de retraso verificable (VDF) basado en STARK VeeDo en la red principal de Ethereum. VDF es una función que se puede calcular para proporcionar retraso y retardo de tiempo. La primera aplicación que StarkWare pretende resolver con VeeDo es una prueba de concepto (PoC) para la aleatoriedad no desechable y sin confianza en Ethereum. Actualmente, el PoC se ha activado en la red principal. Además, StarkWare todavía está investigando TimeLock y el mecanismo PoW de próxima generación.
Nota: En julio de 2018, StarkWare recibió una subvención de $4 millones de la Fundación Ethereum para desarrollar tecnologías y funciones hash compatibles con STARK y proporcionar código fuente abierto para el ecosistema. STARK permitirá que las cadenas de bloques se escalen de forma masiva (por ejemplo, fragmentación) con privacidad y seguridad poscuántica. (Medio)[2020/6/24]
generar_r1cs_testigo - asigna valores a todas las variables. En este circuito, las variables que deben asignarse son raíz, hoja (nodo hoja), la ruta de Merkel que coincide con el nodo hoja y la información de la dirección correspondiente a la ruta de Merkel (es decir, la posición del nodo en cada capa). , izquierda o derecha) .
La parte más complicada de todo el circuito es el constructor del circuito, la aplicación de variables y la creación de dispositivos. Entre ellos, el punto clave es la función set_input_sizes. En el marco de libsnark, se utiliza un modelo simple para distinguir entre variables públicas y privadas. A través de la función set_input_sizes, establezca las primeras variables como variables públicas.
pb.set_input_sizes(root_digest->digest_size); es decir, la variable abierta de este circuito es el número de bits de raíz.
Después de determinar la implementación del circuito, observe la función principal, cómo generar y verificar la prueba.
Algunos tipos requeridos para el cálculo del árbol merkle se definen en la función principal:
El valor predeterminado de FieldT es el Fr de la curva elíptica bn256, y el cálculo del árbol de Merkle utiliza el algoritmo sha256.
Configuración 3.1
Implementó la función generate_read_keypair para generar pk/vk. Eche un vistazo más de cerca a la función generate_read_keypair, la lógica es simple y clara: construya MerkleCircuit, después de generar R1CS, llame a r1cs_gg_ppzksnark_generator para generar pk/vk.
pk se almacena en el archivo merkle_pk.raw y vk se almacena en merkle_vk.raw.
3.2 probar
La lógica de prueba primero construye un árbol de Merkle completo a partir de los parámetros de entrada y selecciona la ruta de Merkle en función de la entrada. La prueba es generada por la función generate_read_proof. La lógica de la función también es relativamente clara:
Construya MerkleCircuit y establezca el valor de cada variable después de generar R1CS. Luego genere una prueba a través de r1cs_gg_ppzksnark_prover.
3.3 Verificar
Sobre la base de conocer vk, prueba e información pública (raíz), llame a la interfaz de r1cs_gg_ppzksnark_verifier_strong_IC para completar la verificación. Esta es la lógica de la función verificar_lectura_prueba.
Antes de compilar, sincronice la biblioteca libsnark de la que depende el proyecto:
git submodule update --init --recursive4.1 compilar
mkdir build; cd build; cmake .. Una vez completada la compilación, el archivo ejecutable de merkle se generará en el directorio de merkle.
4.2 Configuración de confianza
./merkle setup4.3 generar prueba
./merkle prove [data1] [data2] [data3] [data4] [data5] [data6] [data7] [data8] [index]prove El comando debe proporcionar los 8 nodos de hoja del árbol merkle original de 3 capas y especificar la ruta correspondiente al nodo de hoja que debe probarse (índice especificado).
4.4 Verificación
./merkle verificar [raíz] Entre ellos, la información raíz es la información raíz impresa durante el proceso de generación en prueba (también información pública). Si se pasa la verificación, significa que hay una ruta merkle que puede generar root, aunque no hay información específica sobre la ruta.
Resumen:
El nivel de código de la biblioteca libsnark es muy claro, y el protoboard y el gadget están abstractos, lo que es conveniente para que los desarrolladores construyan circuitos rápidamente. Este artículo da un ejemplo de un circuito completo desarrollado en base a la biblioteca libsnark. El ejemplo implementa la verificación de una ruta Merkle de un árbol Merkle de 3 capas. Entre ellos, el árbol Merkle adopta la función hash de sha256.
Tags:
El Tribunal de Apelación de Singapur rechazó la apelación de Quoine el lunes. En la primera disputa legal del país relacionada con las criptomonedas.
El precio cayó ayer por debajo de la línea de tendencia alcista, lo que marcó el comienzo de una rápida caída.
Con respecto al tema de si Bitcoin se convertirá en una herramienta de almacenamiento de valor.
La jerarquía del código de la biblioteca libsnark es muy clara. libsnark también ofrece una imagen completa de los algoritmos relacionados con SNARK, varias relaciones, lenguaje.
BTC volvió a caer por debajo de los $7600: los datos de Huobi Global muestran que BTC ha vuelto a caer por debajo de los $7600 y ahora está en $7591,22, un aumento intradiario del 0,6%. El mercado fluctúa mucho.
Recientemente, BTC sufrió una caída de varios días y el precio cayó de $ 10 000 a alrededor de 8 500. Casi no hubo un rebote en todo el proceso. Muchos inversores minoristas se han asustado del mercado de seguimiento.
Zhang Tiecheng, Director del Departamento de Ciencia y Tecnología de la Administración Estatal de Divisas y Director del Centro de Supervisión de Datos Comerciales de DivisasEn los últimos años.